单片机原理及应用实验报告 2

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

(2010—2011学年第二学期)实验报告课程名称《单片机原理及应用》专业班级姓名学号指导教师所在学院信息科技学院2011年6月目录实验项目一输入/输出端口的基本应用实验项目二定时/计数器的基本应用实验项目三中断系统的基本应用实验项目四LED数码管的基本应用实验项目五单片机键盘的基本应用实验项目六单片机串口通讯实验实验项目七ADC0808的基本应用实验项目把基于AT89C51的简单电子万年历2实验项目一输入/输出端口的基本应用1.实验目的2.⑴了解MCS-51单片机的输入/输出端口的基本工作原理与使用方法;⑵掌握MCS-51单片机的延时函数的时间估算方法。2.实验内容实现与单片机某一端口相连的发光二极管的闪烁控制,要点亮0.2s,熄灭0.2s;3.实验电路框图4.实验任务分析⑴硬件电路说明设置AT89C51的震荡频率为6MHZ,它的机器周期为2us,发光二极管接在P1.0端口,当P1.0端口上为低电平则led亮,否则为灭。⑵软件设计说明用三个FOR循环来延时,通过延时函数来延迟灯亮灭的时间。5.实验流程框图36.实验过程记录⑴实验过程⑵问题及解决方法如何表示P1.0,如何延时0.2s,怎样才能让函数永远循环?解决方法:用sbitP1_0=P1^0表示P1.0。开始P1.0输出“1”,L1熄灭延迟0.2sP1.0输出“0”,L1点亮延迟0.2s4用三个FOR循环用来延时。用while(1),循环条件永远为真,以下程序永远运行下去。7.实验总结⑴#defineucharunsignedchar#defineuintunsignedchar可以简便。⑵延时函数可以用用三个FOR循环加空语句。8.成绩评定附录实验源程序/****预处理部分****/#includereg52.h#defineucharunsignedchar#defineuintunsignedchar/****变量的定义****/sbitP1_0=P1^0;/****子函数部分****/voiddelay_ms(intx){uchari,j,k;//定义三个无符号字符型变量for(i=0;ix;i++)//三个FOR循环用来延迟for(j=2;j0;j--)for(k=248;k0;k--);}/****主函数部分****/voidmain(void){while(1)5{P1_0=1;//P1口输出高电平,让LED点暗delay_ms(200);//延迟200MSP1_0=0;//P1口输出低电平,让LED点亮delay_ms(200);//延迟200MS}}/****中断函数部分****/实验项目二定时/计算器的基本应用1.实验目的⑴掌握MCS-51定时/计数器的基本工作原理与使用方法;⑵了解MCS-51单片机的中断服务程序的基本设计方法。2.实验内容用定时器T0实现与P1.0端口相连的发光二极管以1Hz的频率闪烁用定时器T1实现与P1.1端口相连的发光二极管以2Hz的频率闪烁。3.实验电路框图64.实验任务分析⑴硬件电路说明设置系统的时钟频率为12MHZ,利用定时/器计数器T0编程实现。将两个LED分别接在P1.0,P1.1上。⑵软件设计说明从P1.0输出周期为1s的方波,只需P1.0每隔0.5s取反一次,从P1.1输出周期为2s的方波,只需P1.0每隔1s取反一次。当系统时钟为12MHZ,定时器/计数器T0工作于方式一,最大的定时时间为65536us,TH0=(65536-50000)/256;TL0=(65536-50000)%256;P1.0每循环10次取反一次,P1.1每循环20次取反一次。5.实验流程框图76.实验过程记录⑴实验过程⑵问题及解决方法系统只能循环一次,不能反复循环。解决方法:将num1,num2赋予原值开始开启定时器中断设置T0工作方式,置计数初值0.5s到?发光状态取反另一发光二极管状态取反等待中断1s到?进入中断二个计数器加1返回87.实验总结⑴学会了用查询方式来定时。当计数溢出时,TF0为1;⑵学会用TH0=(65536-50000)/256;TL0=(65536-50000)%256;来确定初值的第四位,高四位。(3)学会了定时器/计数器的初始化。①确定工作方式,对TMOD赋值。②计算定时或计数的初值,将初值写入TH0,TL0或TH1,TL1。③根据需要开启定时器/计数器中断,对IE寄存器赋值。④启动定时器/计数器工作,将TR0或TR1置“1”。8.成绩评定附录实验源程序/**********预处理部分**********/#includereg51.h#defineucharunsignedchar#defineuintunsignedint/**********变量定义部分**********/sbitled1=P1^0;sbitled2=P1^1;/**********子函数部分**********/voidtimer0_init(){TMOD=0x01;//设置定时器0为为工作方式1TH0=(65536-50000)/256;//设置初值TL0=(65536-50000)%256;TR0=1;}/**********主函数部分**********/voidmain(void){ucharnum1=0,num2=0;timer0_init();while(1){do{}while(!TF0);//等待直到查询计数溢出9num1++;num2++;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TF0=0;if(num1=10){led1=!led1;//发光管状态取反num1=0;//num1清零,从新再计}if(num2=20)//1s时间到{led2=!led2;//发光管状态取反num2=0;//num2清零,从新再计}}}/**********中断函数部分**********/实验项目三中断系统的基本应用1.实验目的⑴掌握MCS-51中断系统的基本工作原理与使用方法;⑵掌握MCS-51单片机的中断服务程序的基本设计方法。2.实验内容基本部分:在P2端口接8个LED灯,用定时器T0,采用中断方式,每隔1s使点亮的LED增加1个;当8个LED全部点亮后,重新开始下一个循环。提高部分:在P3.2端口接一个按键开关,由它来控制以上LED的循环点亮,要求也采用中断控制方式。3.实验电路框图104.实验任务分析⑴硬件电路说明在P2端口接8个LED灯,用定时器T0,采用中断方式,系统的震荡周期为12MHz,它的机器周期为1us.⑵软件设计说明每隔1s使点亮的LED增加1个;当8个LED全部点亮后,重新开始下一个循环。当系统时钟为12MHZ,定时器/计数器T0工作于方式一,最大的定时时间为65536us,TL0=(65536-50000)%256;TH0=(65536-10000)/256;一经过100次中断,P2向左移动个0;5.实验流程框图116.实验过程记录⑴实验过程TO中断入口TCNT加1TCNT=nSEC加1TCNT=400吗?SEC=100吗?中断返回处理SEC并显示SEC=012⑵问题及解决方法系统一开始只有一个循环,一个循环结束后不能回到起点。解决方法:if(P2==0x00){P2=0x7f;}使得系统重新从第一个灯开始循环点亮。7.实验总结⑴学会用中断函数来计时。(2)学会用依次向左移0来循环点亮小灯8.成绩评定13附录实验源程序/*******预处理部分**********/#includereg51.h#defineucharunsignedchar#defineuintunsignedint/**********变量定义部分**********/ucharnum1;/**********子函数部分**********/void_init_timer0(){TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;ET0=1;EA=1;TR0=1;}/**********主函数部分**********/voidmain(void){init_timer0();P2=0xff;//P2端口设置初值while(1){if(P2==0x00)//8个灯循环后,再回到第一个灯{P2=0x7f;}if(num1==100)//1s到{num1=0;//num1清零,重新计时P2=P21;//向左移一个灯}}}/**********中断函数部分**********/voidint_timer0(void)interrupt1{num1++;TH0=(65536-10000)/256;//重置初值TL0=(65536-10000)%256;}14实验项目四LED数码管的基本应用1.实验目的⑴了解LED数码管的基本工作原理与使用范围;⑵掌握LED数码管静态显示程序的基本设计方法;⑶掌握LED数码管动态显示程序的基本设计方法;2.实验内容基本部分:用LED数码管设计一个0—99秒的计数器,LED的显示方式可以采用静态显示方式实现;提高部分:用LED数码管设计一个0—99.99秒的计数器,LED的显示方式采用动态显示方式实现。3.实验电路框图154.实验任务分析⑴硬件电路说明⑵软件设计说明5.实验流程框图6.实验过程记录⑴实验过程⑵问题及解决方法开始秒计数器加1计时器是否到99计数器清零分离出十位和个位显示NY16怎么实现0—99依次增加?将各位十位用延迟函数分开显示。7.实验总结⑴知道了P0=0xff;P2=0x00;是消影,使显示更加清楚。⑵用switc(i&0x01)case语句来控制AT89C51的P2^0,P2^1是输出高电平还是低电平。8.成绩评定附录实验源程序/****预处理部分****/#includereg51.h/****变量定义****/unsignedchari,second;unsignedseg_table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};/****子函数部分****/voidtimer0_init(){TMOD=0x01;//设置定时器0为为工作方式1TH0=(65534-2000)/256;//设置初值TL0=(65534-2000)%256;EA=1;//开启中断ET0=1;//开启定时器0中断TR0=1;//开启定时器}/****主函数部分****/voidmain(void){timer0_init();second=00;while(1){switch(i&0x01)//个位十位分开显示{case0:{P0=0xff;P2=0x00;P0=seg_table[second%10];P2=0x02;}break;case1:{P0=0xff;P2=0x00;P0=seg_table[second/10];P2=0x01;}break;default:break;17}}}/****中断函数****/voidtimer0_int()interrupt1{TH0=(65536-2000)/256;//重置初值TL0=(65536-2000)%256;i++;if(i==250)second++;if(second==100)second=0;//时间到100秒是清零}实验项目五单片机键盘的基本应用1.实验目的⑴了解独立式键盘的基本工作原理与使用范围;⑵掌握独立式键盘的识别方法、软件消抖的原理;⑶掌握独立式键盘程序的基本设计方法。2.实验内容基本部分:在MCS-51的P3.2管脚接一独立按键,再P1端口接8个LED,要求用按键来控制LED的循环点亮;提高部分:将基本部分中LED的点亮方式改为闪烁。3.实验电路框图184.实验任务分析⑴硬件电路说明让8盏LED灯分别接在AT89C51的P1端口。P3.2接按键。⑵软件设计说明软件主要包括延时函数,移动函数,和一个主函数。移动函数用位运算,

1 / 38
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功