当前位置: 代码迷 >> 单片机 >> 利用51单片机制造的电子时钟
  详细解决方案

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

热度:376   发布时间:2016-04-28 14:43:13.0
利用51单片机制作的电子时钟

最近研究起来了单片机,用的是国产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 <reg52.h>#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电不着~


@ Mayuko

  相关解决方案