




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验十一 电子时钟(综合实验)一、实验目的 掌握按键、显示器的使用方法、定时器的原理二、实验内容数码管显示可调钟表(无定时功能),用到开发板中矩阵键盘的上三排按键。若要更改时钟初始值(即时钟校准,因为时钟初始值全为0),可先按下矩阵键盘中的S16键(第三排第三列),此时时钟会暂停。然后按S6-S15中的键修改矫正当前值,S6-S15分别先后对应数字0到9。矫正完后,按下S17(第三排最后一个),时钟可继续工作。三、实验电路四、实验程序#include#define uchar unsigned charsbit dula=P26;sbit wela=P27;sbit beep=P23;unsigned char j,k,a1,a0,b1,b0,c1,c0,s,f,m,key=10,temp,qq;uchar shi20,shi10,fen20,fen10,miao20,miao10,new,ok=1,wei;unsigned int pp;unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;void delay(unsigned char i) for(j=i;j0;j-) for(k=125;k0;k-);void display(uchar shi2,uchar shi1,uchar fen2,uchar fen1,uchar miao2,uchar miao1) dula=0; P0=tableshi2; dula=1; dula=0; wela=0; P0=0xfe; wela=1; wela=0; delay(5); P0=tableshi1|0x80; dula=1; dula=0; P0=0xfd; wela=1; wela=0; delay(5); P0=tablefen2; dula=1; dula=0; P0=0xfb; wela=1; wela=0; delay(5); P0=tablefen1|0x80; dula=1; dula=0; P0=0xf7; wela=1; wela=0; delay(5); P0=tablemiao2; dula=1; dula=0; P0=0xef; wela=1; wela=0; delay(5); P0=tablemiao1; dula=1; dula=0; P0=0xdf; wela=1; wela=0; delay(5);void keyscan0() P3=0xfb; temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(10); if(temp!=0xf0) temp=P3; switch(temp) case 0xbb: ok=0; break; case 0x7b: ok=1; break; void keyscan() P3=0xfe; temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(10); if(temp!=0xf0) temp=P3; switch(temp) case 0xee: key=0; wei+; break; case 0xde: key=1; wei+; break; case 0xbe: key=2; wei+; break; case 0x7e: key=3; wei+; break; while(temp!=0xf0) temp=P3; temp=temp&0xf0; beep=0; beep=1; P3=0xfd; temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(10); if(temp!=0xf0) temp=P3; switch(temp) case 0xed: key=4; wei+; break; case 0xdd: key=5; wei+; break; case 0xbd: key=6; wei+; break; case 0x7d: key=7; wei+; break; while(temp!=0xf0) temp=P3; temp=temp&0xf0; beep=0; beep=1; P3=0xfb; temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(10); if(temp!=0xf0) temp=P3; switch(temp) case 0xeb: key=8; wei+; break; case 0xdb: key=9; wei+; break; while(temp!=0xf0) temp=P3; temp=temp&0xf0; beep=0; beep=1; void main()TMOD=0x01;TH0=(65536-46080)/256;/ 由于晶振为11.0592,故所记次数应为46080,计时器每隔50000微秒发起一次中断。TL0=(65536-46080)%256;/46080的来历,为50000*11.0592/12ET0=1;EA=1;while(1)keyscan0();if(ok=1)TR0=1;wei=0;if(pp=20)pp=0;m+;if(m=60)m=0;f+;if(f=60)f=0;s+;if(s=24) /为24h一个循环,若要12h,只需在此改为12即可。s=0;a0=s%10;a1=s/10;b0=f%10;b1=f/10;c0=m%10;c1=m/10;display(a1,a0,b1,b0,c1,c0);elseTR0=0;keyscan();if(key!=10)switch(wei)case 1: if(key3)/小时最高位为2a1=key;elsewei-;break;case 2: if(a1=1|a1=0)a0=key;elseif(key5)a0=key; /当小时最高位为2时,低位最高为4break;case 3: if(key7)/分钟最高位为6b1=key;elsewei-;break;case 4: b0=key; break;case 5: if(key7)/秒最高位为6c1=key; elsewei-;break;case 6: c0=key; break;key=10;m=c1*10+c0;f
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论