资源描述:
《《C语言编程实训》实训指导书三》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、语言编程实训实训》《C语言编程实训》实训指导书三实训指导书三适应专业:适应专业:应用电子技术广州康大职业技术学院自动化系十一月二0—0年--一月语言编程实训实训》《C语言编程实训》实训三八红旗手单片机时钟程序程序设计实训三八红旗手单片机时钟程序设计一、实训目的1.掌握LED显示、键盘、定时/计数器综合应用程序的设计方法;2.熟悉运用PROTEUSISIS仿真调试单片机吋钟程序的基本操作。二、实训设施PROTEUS计算机软件、PC机三、实训要求1.使用C语言编程,实现由单片机控制LED数码管显示时、分、秒的电子时钟,并具有用按键修改时钟参数的功能(采用2个按键)。2.写岀1000字以
2、上的实训总结报告(内容以单片机时钟程序设计及源程序清单为主)。四、实训内容1.设计单片机时钟硬件系统(1)学习单片机时钟工作原理①6位七段LED显示器(共阳极数码管),采用动态扫描的方法进行显示,即逐个循环点亮各位显示器。这样虽然在任一时刻只有一位显示器被点亮,但是由于间隔时间较短(不超过10毫秒),且人眼具有视觉残留效应,因此看起来与全部显示器持续点亮效果完全一样。②动态扫描时,单片机芯片的P1口(P1.0〜P1.5)输岀段控信号,P3口(P3.0〜P3.5)输出位控信号,当两口为高电平时,该字段就不显示;当两口为低屯平吋,就显示相应字段。③吋间校正的操作方法:两按键串联,接在单
3、片机芯片的P2.4与P2.5Z间,按下按键K1,可调整吩“按下按键K2,可调整“时”;o(2)使用PROTEL绘制电路原理图?从PROTEUS库中选取以下元器件:①7SEG-MPX2-CA(或7SEG-MPX6-CA):六位数码管②AT89C51:单片机③BUTTON:按键④CAP、CAP-ELEC:电容、电解电容⑤CRYSTAL:晶振⑥RES:电阻?放置元器件?放置电源和地(终端)?连线?元器件属性设置?电气检测绘制完全的电路原理如图3-1所示图3-1单片机电子时钟电路原理图2.学习识读单片机时钟程序程序j青单:#include<reg52.h>#include&l(
4、;reg52.h>#defineuintunsignedint#defineucharunsignedcharvoidkeys();sbitP3O=P3AO;sbitP31=P3A1;sbitP32=P3A2;sbitP33=P3A3;sbitP34=P3A4;sbitP35=P3A5;sbitkey=P2A4;sbitkeyl=P2A5;ucharcodetable
5、10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,Ox0x99,0x92,0x82,Oxf8,0x80,0x90};0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x
6、f8,0x80,0x90};-4-ucharhour=23,minute=59,second=0;uinta,b,dd,ee,gg,hh;staticcharcount=0;voiddelay(uintz){intx,y;for(x=z;x>0;x■—)for(x=z;x>O;x・・)for(y=l10;y>O;y…);for(y=110;y>O;y—);}voidint1()interrupt1using2{TH0=(65536TH0=(65536-50000)/256;TL0=(65536-50000)%256;TL0=(65536-50000)%256
7、;count++;}voidmain(){TMOD=0x01;TH0=(65536TH0=(65536-50000)/256;TL0=(65536TL0=(65536-50000)%256;EA=1;ET0=1;TRO=1;for(;;){a=hour/10;b=hour%10;dd=minute/10;ee=minute%10;gg=second/10;hh=second%10;keys();P3=0X00;Pl=table[a];P30=l;delay(l);P3=0X00;Pl=table
8、b
9、;P31=l;delay(l);P3=0X00;Pl=table[dd
10、;P32=
11、l;delay(l);-5-P3=0X00;Pl=table[ee];P33=l;delay(l);P3=0X00;Pl=table[gg];P34=l;delay(l);P3=0X00;Pl=table[hh
12、;P35=l;delay(l);if(count==20){count=0;second++;if(second==60){second=0;minute++;if(minute==60){minute=O;hour++;if(hour==24)hour=0;