您的位置 首页 解答

使用51单片机制造的电子时钟

最近研究起来了单片机,用的是国产STC98C52芯片。STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flas…

最近研究起来了单片机,用的是国产STC98C52芯片。

STC89C52是STC公司出产的一种低功耗、高性能CMOS8位微操控器,具有 8K 在体系可编程Flash存储器。STC89C52运用经典的MCS-51内核,但做了许多的改善使得芯片具有传统51单片机不具备的功用。在单芯片上,具有灵敏的8 位CPU 和在体系可编程Flash,使得STC89C52为很多嵌入式操控运用体系供给高灵敏、超有用的解决方案。

买了很长时刻了但是一向在那里放着,今日从头拿出来写了一段电子时钟的C++程序,运用充电宝供电,当作电子时钟挺不错的。

功用:

4个七段数码管作为时钟显现的主体两个显现小时,两个显现分钟,8个LED灯作为秒数的业绩,4个独立按键分别为hour+1,hour+10,minute+1,minute+10。


查询LED电路,接入端为P1^0到P1^7。


数码管采用了驱动芯片,接入端为P2^0到P2^3。


按键的接入端如图所示。

有了各种电路的接入端,咱们运用keil进行编程。

/* * Copyright (c) 2015,烟台大学计算机学院 * All right reserved. * 作者:邵帅 * 文件:temp.c* 完结时刻:2015年05月29日 */  #include #define uchar unsigned char sbit P2_0 = P2^0;sbit P2_1 = P2^1;sbit P2_2 = P2^2;sbit P2_3 = P2^3;sbit key1=P3^5;//按键sbit key2=P3^4;sbit key3=P3^3;sbit key4=P3^2;static unsigned char second,minute,hour;unsigned int tcount;unsigned char m;uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};void delay(uchar i){uchar j,k; for(j=i;j>0;j--)for(k=125;k>0;k--);}void display(){P0=table[hour/10];P2_0 = 0;delay(5);P2_0 = 1;P0=(table[hour%10]& 0x7f);P2_1 = 0;delay(5);P2_1 = 1;P0=table[minute/10];P2_2 = 0;delay(5);P2_2 = 1;P0=table[minute%10];P2_3 = 0;delay(5);P2_3 = 1;}void main(void){unsigned int  a;TMOD=0x02;TH0=0x06;TL0=0x06;TR0=1;ET0=1;EA=1;while(1){if(key1==0){if(key1==0)	  //结语按键被按下{while(!key1);//松手检测hour++;}}if(key2==0){if(key2==0)	 {while(!key2);hour=hour+10;}}if(key3==0){if(key3==0)	{while(!key3);minute++;}}if(key4==0){if(key4==0)	  {while(!key4);minute=minute+10;}}	for(a=100;a>0;a--){display();}}}void t0(void) interrupt 1 using 0 {	tcount++;if(tcount==4000){tcount=0;second++;if(second==60){second=0;minute++;if(minute==60){minute=0;hour++;if(hour==24){hour=0;}}}P1=~P1;}}

打包成hex文件,进行烧录。

运转单片机!

原本方案运用小米的盒子当外壳的,后来发现盒子有点小,就先裸机了,横竖5V电不着~

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部