您的位置 首页 数字

数码管电子钟

主要元器件:89C52RC,74HL138,四位数码管两个,独立按钮三个,排线,杜邦线原理:利用定时计数器定时50ms,每20次为一秒,产生一次中断,

首要元器件89C52RC,74HL138,四位数码管两个,独立按钮三个,排线,杜邦线

原理:使用守时计数器守时50ms,每20次为一秒,发生一次中止,在中止函数中,对秒数加一,当秒数加满60后清零,分数加一,同理可得分数和时数直接安靖联系。数码管的显现选用动态扫描法,至于怎么对按键进行实时呼应,参阅程序部分。
阐明:因为本程序软件部分既不是很杂乱也不是很简单,故选用C51编写,硬件原理图暂缺。软件部分如下,本程序仅供QQ老友中从事嵌入式作业的叔叔和大哥们参阅,修正。
结语:向广阔大哥大叔们表示感谢,在此也多谢导师的指引,青见必定不负所望,仰视星空,兢兢业业,五月份自己工作较多,估量没有时刻和你们评论一些问题,等待咱们暑假的大飞机项目。告嵌入式同胞们,我的一些上位机软件和硬件自学笔记在我的嵌入式服务器中,用户名和暗码现已给你们了。空间上的仅仅备份,我们无需来我空间,直接登录服务器即可,下次有空决定为我的宝马做一个速度计和里程表,期望有爱好的去我服务器评论。
附录:代码下载:http://www.51hei.com/f/smgpp.rar部分代码:#include#define uchar unsigned char#define uint unsigned int#define delaytime 4//译码器的操控位sbit LA=P2^2;sbit LB=P2^3;sbit LC=P2^4;//键盘的操控位sbit SetMode=P2^5;sbit Plus=P2^6;sbit Minus=P2^7;sbit duanxuan=P1^0;//键盘的状况位bit Sethour,Setmin,Setsec;//时刻数据位uchar hour,min,sec,count,state;//共阳数码管数字0~9的码值uchar code table[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};void show();void display_wei(uchar wei){wei=wei-1;LA=wei%2;LB=(wei/2)%2;LC=(wei/2/2)%2;}void display_duan(uchar duan){duanxuan=1;P3=duan;duanxuan=0;    }void init(){EA=1;TH0=(65536-50000)/256;TL0=(65536-50000)%256;ET0=1;TMOD=0x01;TR0=1;hour=0;min=0;sec=0;count=0;Sethour=0;Setmin=0;Setsec=0;state=1;}void timer() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;count++;if(count==10)state=~state;if(count==20){state=~state;count=0;sec++;}if(sec==60){sec=0;min++;}if(min==60){min=0;hour++;}if(hour==24)hour=0;}void delay(uint ms){unsigned char i;while(ms--){for(i=0;i<120;i++);}}void show(){      if(Sethour==1&&Setmin==0&&Setsec==0&&state==1){display_wei(1);display_duan(table[10]);delay(delaytime);display_wei(2);display_duan(table[10]);delay(delaytime);}else{display_wei(1);display_duan(table[hour%100/10]);delay(delaytime);display_wei(2);display_duan(table[hour%10]);delay(delaytime);}display_wei(3);display_duan(0x40);delay(delaytime);if(Sethour==1&&Setmin==1&&Setsec==0&&state==1){display_wei(4);display_duan(table[10]);delay(delaytime);display_wei(5);display_duan(table[10]);delay(delaytime);}else{display_wei(4);display_duan(table[min%100/10]);delay(delaytime);display_wei(5);display_duan(table[min%10]);delay(delaytime);}display_wei(6);display_duan(0x40);delay(delaytime);if(Sethour==1&&Setmin==1&&Setsec==1&&state==1){display_wei(7);display_duan(table[10]);delay(delaytime);display_wei(8);display_duan(table[10]);delay(delaytime);}else{display_wei(7);display_duan(table[sec%100/10]);delay(delaytime);display_wei(8);display_duan(table[sec%10]);delay(delaytime);}}void process_Plus(){if(Plus==0){delay(7);if(Plus==0){while(show(),Plus==0)delay(7);if(Sethour==1&&Setmin==0&&Setsec==0)hour++;if(Sethour==1&&Setmin==1&&Setsec==0)min++;if(Sethour==1&&Setmin==1&&Setsec==1)sec=0;}}}void process_Minus(){if(Minus==0){delay(7);if(Minus==0){while(show(),Minus==0)delay(7);if(Sethour==1&&Setmin==0&&Setsec==0){     hour--;if(hour==255)hour=23;}if(Sethour==1&&Setmin==1&&Setsec==0){min--;if(min==255)min=59;}if(Sethour==1&&Setmin==1&&Setsec==1){sec=0;}     }}}void main(){init();while(show(),process_Plus(),process_Minus(),1){if(SetMode==0){delay(10);if(SetMode==0){while(show(),SetMode==0);delay(10);if(SetMode==1){if(Sethour==0&&Setmin==0&&Setsec==1){Sethour=0;Setmin=0;Setsec=0;}if(Sethour==1&&Setmin==1&&Setsec==1){Sethour=0;Setmin=0;Setsec=1;}if(Sethour==1&&Setmin==1&&Setsec==0)Setsec=1;if(Sethour==1&&Setmin==0&&Setsec==0)Setmin=1;if(Sethour==0&&Setmin==0&&Setsec==0)Sethour=1;}                                 }}}     }

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/shuzi/255384.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部