基于51单片机的数码管时钟(带闹钟调时秒表)_第1页
基于51单片机的数码管时钟(带闹钟调时秒表)_第2页
基于51单片机的数码管时钟(带闹钟调时秒表)_第3页
基于51单片机的数码管时钟(带闹钟调时秒表)_第4页
基于51单片机的数码管时钟(带闹钟调时秒表)_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精品文档/* * * * * * * * * * * *基于51单片机的数码管时钟程序 * * * * * * * * * * * * * */#include#define uint unsigned int #define uchar unsigned charsbit dula=P26;/申明u1锁存器的锁存端sbit wela=P27;/申明u2锁存器的锁存端sbit key1=P30; /功能键sbit key2=P31;/增大键sbit key3=P32;/减小键sbit key4=P33;/秒表查看键sbit beep=P23;/蜂鸣端uchar num,num1,num2,nu

2、mm;uchar numf,num,nums,num;uchar s,s1,f,f1,m,m1;uchar ns,ns1,nf,nf1;uchar numns,numnf;uchar dingshi;void display(uchar m,uchar m1,ucharf,uchar f1,uchar s,uchar s1);void display1(uchar nf,uchar nf1,uchar ns,uchar ns1);void key();void key1();void alram();void di();void delayms(xms);void T0_time() inte

3、rrupt 1;void miaobiao();uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x77,0x7c,0x39,0x5e,0x79,0x71;/*主函数void main()*/int main() TMOD=0X01;TH0=(65536-46080)/256;TL0=(65536-46080)%256;EA=1;ET0=1;TR0=1;nums=12;numf=0;num2=0;num=0;while(1) if(dingshi=0) keyscan(); display(m,m1,f,f1,s,s1); alarm(); els

4、e miaobiao(); keyscan1(); display1(nf,nf1,ns,ns1); return 0;/*蜂鸣器函数 di()*/void di() beep=0; delayms(100); beep=1;/*按键调时函数key()*/void keyscan() if(key1=0) delayms(10);if(key1=0) nums+;if(nums=24);nums=0;while(!key1);di();display(m,m1,f,f1,s,s1); if(key2=0) delayms(10);if(key2=0) numf+;if(numf=24);num

5、f=0;while(!key2);di();display(m,m1,f,f1,s,s1); if(key3=0) delayms(10);if(key3=0)dingshi=dingshi; while(!key1);di();display(m,m1,f,f1,s,s1); /*按键设定闹钟函数keyscan1();*/void keyscan1() if(key1=0) delayms(10);if(key1=0) numns+;if(numns=24);numns=0;while(!key1);di();display1(nf,nf1,ns,ns1); if(key2=0) delay

6、ms(10);if(key2=0) numnf+;if(numnf=24);numnf=0;while(!key2);di();display1(nf,nf1,ns,ns1); if(key3=0) delayms(10);if(key3=0)dingshi=0; while(!key1);di();display1(nf,nf1,ns,ns1); /*闹钟函数alram()*/void alram() if(nums=numns)&(numnf=numf) beep=0; /*秒表函数miaobiao()*/void miaobiao() if(key4=0) delayms(100);if

7、(key4=0) while(!key4); di(); displaym(uchar m,uchar m1); /*正常显示函数display()*/void display(uchar m,uchar m1,ucharf,uchar f1,uchar s,uchar s1) dula=1;P0=tablem1/秒位第1位dula=0;PO=0xff;/ 送入位选信号前关闭所有显示,防止打开位选锁存时wela=1;P0=0xef;wela=0;delayms(10);dula=1;P0=tablem; /秒第2位dula=0;P0=0xff;wela=1;P0=0xdf;wela=0;del

8、ayms(100)dula=1;P0=tablef1; /分第1位 dula=0;P0=0xff;wela=1;P0=0xfb;wela=0;delayms(100)dula=1;P0=tablef; /分第2位 dula=0;P0=0xff;wela=1;P0=0xf7;wela=0;delayms(10) dula=1;P0=tables1; /时第1位dula=0;P0=0xff;wela=1;P0=0xfe;wela=0;delayms(100) dula=1;P0=tables; /时第2位 dula=0;P0=0xff;wela=1;P0=0xfd;wela=0;delayms(1

9、0)/* 调时闹钟显示函数display1()*/void display1(uchar nf,uchar nf1,uchar ns,uchar ns1) nf1=numnf/10; nf=numnf%10; ns1=nums/10; ns=nums%10; dula=1; P0=tablenf1;/分第1位 dula=0; P0=0xff; wela=1; P0=0xfb;/待改参数 wela=0; delayms(10); dula=1; P0=tablenf;/分第2位 dula=0; P0=0xff; wela=1; P0=0xf7;/待改参数 wela=0; delayms(10);

10、 dula=1; P0=tablens1;/时第1位 dula=0; P0=0xff; wela=1; P0=0xfe;/待改参数 wela=0; delayms(10); dula=1; P0=tablens;/时第2位 dula=0; P0=0xfd; wela=1; P0=0xff;/待改参数 wela=0; delayms(10);/* 秒表显示函数displaym()*/void displaym(uchar m,uchar m1) dula=1; P0=tablem1;/秒位第一位 dula=0; P0=0xff; wela=1; P0=0Xbf; wela=0; delayms(10); dula=1; P0=tablem; dula=0; P0=0xff; wela=1; P0=0X7f; wela=0; delayms(10);/* 中断服务函数 void T0_time() interrupt 1*/void T0_time() interrupt 1 TH0=(65536-45872)/256; /46080 TL0=(65536-45872)%256; num2+; if(num2=20) num+; num2=0; m=num%10; m1=num/10; f=numf%10; f1=numf/10; s=nu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论