标题:
51单片机中断简易电子时钟设计,这个应该是我感觉最简单的了,没有其它复杂电路
[打印本页]
作者:
iebfkrwfi
时间:
2020-12-26 18:50
标题:
51单片机中断简易电子时钟设计,这个应该是我感觉最简单的了,没有其它复杂电路
e99c2583a7a7bf3625a9cfc317da2545.png
(46.43 KB, 下载次数: 30)
下载附件
2020-12-26 19:09 上传
#include <reg52.h>
unsigned char Seg_CC_Data[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char Seg_CC_Position[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
void DelayTime10ms(unsigned int DelayValue);
void Seg_Display_Second(unsigned char DisData,unsigned char Seg_Number);
void Seg_Display_Minute(unsigned char DisData,unsigned char Seg_Number);
void Seg_Display_Hour(unsigned char DisData,unsigned char Seg_Number);
unsigned char Count=0;
unsigned char Second=45;
unsigned char Minute=58;
unsigned char Hour=10;
void main()
{
TMOD=0x01;
EA=1;
ET0=1;
PT0=1;
TH0=(65536-50000)/256; //??×°??êy3??μ
TL0=(65536-50000)%256; //??×°??êy3??μ
TR0=1;
for(;;)
{
Seg_Display_Second(Second,2);
Seg_Display_Minute(Minute,2);
Seg_Display_Hour(Hour,2);
}
}
void DelayTime10ms(unsigned int DelayValue){
unsigned int a,b;
for(a =0 ;a < DelayValue; a++)
for(b =0 ;b < 1828; b++);
}
void Seg_Display_Second(unsigned char DisData,unsigned char Seg_Number)
{
unsigned char i=0;
for(i=0;i<Seg_Number;i++)
{
P2=Seg_CC_Position[i];
P0=Seg_CC_Data[DisData%10];
DisData=DisData/10;
DelayTime10ms(1);
}
}
void Seg_Display_Minute(unsigned char DisData,unsigned char Seg_Number)
{
unsigned char i=0;
for(i=2;i<Seg_Number+2;i++)
{
P2=Seg_CC_Position[i];
P0=Seg_CC_Data[DisData%10];
DisData=DisData/10;
DelayTime10ms(1);
}
}
void Seg_Display_Hour(unsigned char DisData,unsigned char Seg_Number)
{
unsigned char i=0;
for(i=4;i<Seg_Number+4;i++)
{
P2=Seg_CC_Position[i];
P0=Seg_CC_Data[DisData%10];
DisData=DisData/10;
DelayTime10ms(1);
}
}
void Irq_Timer_0() interrupt 1 //?D??·t??3ìDò
{
TH0=(65536-50000)/256; //??×°??êy3??μ
TL0=(65536-50000)%256; //??×°??êy3??μ
if(Count++==20)
{
Count=0;
if(++Second==60)
{
Second=0;
if(++Minute==60)
{
Minute=0;
if(++Hour==24)
{Hour=0;}
}
}
}
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1