资源描述:
《实验四单片机秒表设计.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、微控制器实验报告四班级:15自动化学号:姓名:指导教师:李素敏实验四秒表设计一.实验目的(1)掌握利用单片机定时器实现定时。(2)熟悉单片机与数码管的接口技术及数码管动态显示的控制过程。(3)熟悉单片机与键盘的接口技术及按键识别过程。(4)学会如何编制含数码管显示,定时器中断及按键控制等多种功能的综合程序,体会大型程序的编制和调试技巧。二.实验内容1、用6位数码管显示秒表时间,最左边2位显示分,中间2位显示秒,最右边2位显示秒的小数位(0.00~0.99秒),秒与小数位之间要显示小数点。2、两个按键:(
2、1)计时/停止按键:首次按下从0开始计时,再次按下暂停计时,之后每次按下按键实现‘继续计时、暂停计时,继续计时、暂停计时……’。(继续计时即从上次暂停时的时间开始继续计时)(2)复位按键:按下后全部清0,等待下次按下‘计时/停止按键’时重新开始计时。三.实验仪器PC机、单片机四.实验步骤1.编写程序2.生成hex文件3.将程序烧录至单片机4.调试程序,知道得出正确的实验结果五.实验结果与分析实验代码如下:#include#defineucharunsignedchar#defineui
3、ntunsignedintsbitdula=P2^6;sbitwela=P2^7;sbitkey=P3^4;sbitreset=P3^5;Unsignedchardisplay1,display2,display3,display4,display5,display6,min,sec,decimal;unsignedcharflag=0;unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数码管显示0
4、~9不带小数unsignedcharcodetable2[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};//数码管显示0~9带小数//延时函数voiddelay(unsignedinti){unsignedintj,k;for(j=i;j>0;j--)for(k=125;k>0;k--);}//判断按键是否按下voidKEY(){if(key==0){delay(10);if(key==0)//按键消抖{flag++;if(flag==1)/
5、/按下一次,计数开始计数{TR0=1;//定时器TO开始工作if(flag==2)//按下两次,计数暂停{TR0=0;//定时器T0停止flag=0;//计数标志清零}}}if(reset==0)//复位键按下{delay(10);if(reset==0){TR0=0;//T0停止计时flag=0;//所有数据清零min=0;sec=0;decimal=0;display1=0;display2=0;display3=0;display4=0;display5=0;display6=0;}}}}//显示
6、函数voidshow(){display1=min/10;//分十位display2=min%10;//分个位display3=sec/10;//秒十位display4=sec%10;//秒个位display5=decimal/10;//小数十位display6=decimal%10;//小数个位dula=0;P0=table[display1];dula=1;dula=0;wela=0;P0=0xfe;wela=1;wela=0;delay(2);P0=table[display2];dula=1;d
7、ula=0;P0=0xfd;wela=1;wela=0;delay(2);P0=table2[display3];dula=1;dula=0;P0=0xfb;wela=1;wela=0;delay(2);P0=table[display4];dula=1;dula=0;P0=0xf7;wela=1;wela=0;delay(2);P0=table[display5];dula=1;dula=0;P0=0xef;wela=1;wela=0;delay(2);P0=table[display6];dula=
8、1;dula=0;P0=0xdf;wela=1;wela=0;delay(2);P0=0x80;dula=1;dula=0;P0=0xf7;wela=1;wela=0;delay(2);}voidmain(){TMOD=0x01;TH0=(65536-10000)/256;//向定时器写入初值的高8位TL0=(65536-10000)%256;//向TL0写入初值的低八位EA=1;//总中断允许ET0=1;//允许定时器T0工作TR0=0;