-
大小: 7KB文件類(lèi)型: .c金幣: 1下載: 0 次發(fā)布日期: 2021-05-24
- 語(yǔ)言: 其他
- 標(biāo)簽: 51單片機(jī)??實(shí)時(shí)時(shí)鐘??1602??
資源簡(jiǎn)介
基于51單片機(jī)1602顯示 實(shí)時(shí)時(shí)鐘 利用單片機(jī)內(nèi)部定時(shí)器做時(shí)鐘,帶有按鍵控制,具有停止時(shí)間,加減時(shí)間顯示的功能。閏年補(bǔ)償
代碼片段和文件信息
#include
#define?uchar??unsigned?char
#define?uint?unsigned?int
sbit?lcdrs=P2^5;
sbit?lcdrw=P2^6;
sbit?lcden=P2^7;
sbit?s1=P3^2;
sbit?s2=P3^3;
sbit?s3=P3^4;
uchar?code?table[]={“2012?00?00“};
uchar?code?table1[]={“00:00:00“};
uchar?numflags1num;
int?miaofenshiriyuenian;
void?delay(uint?z)
{
uint?xy;
for(x=z;x>0;x--)
{
for(y=147;y>0;y--);
}
}
void?write_control(uchar?con)//寫(xiě)控制字
{?
P0=con;
lcdrs=0;//rs=0控制
lcdrw=0;
lcden=0;
delay(5);
lcden=1;
delay(5);
}
void?write_data(uchar?dt)//寫(xiě)數(shù)據(jù)
{
P0=dt;
lcdrs=1;//rs=1數(shù)據(jù)
lcdrw=0;
lcden=0;
delay(5);
lcden=1;
delay(5);
}
void?init()//初始化??屏幕顯示??定時(shí)器初值
{
nian=2012;
write_control(0x01);//控制初始??1602
write_control(0x38);
write_control(0x0c);
write_control(0x06);
write_control(0xd0);
write_control(0x80);//初始化顯示內(nèi)容?2012?3?28
for(num=0;num<10;num++)
write_data(table[num]);
write_control(0x80+0x40);//?00:00:00
for(num=0;num<8;num++)
write_data(table1[num]);
TMOD=0x01;
TH0=(65536-5000)/256;//5ms
TL0=(65536-5000)%256;
EA=1;
ET0=1;
TR0=1;
}
void?write_sfm(uchar?adduchar?date)//寫(xiě)入?時(shí)分秒?的數(shù)值
{
uchar?shige;
shi=date/10;
ge=date%10;
write_control(0x80+0x40+add);
write_data(0x30+shi);//求?個(gè)位??十位的ASCIIA碼??進(jìn)而顯示
write_data(0x30+ge);
}
void?write_yr(uchar?add1uchar?date1)//寫(xiě)入?月日?的數(shù)值
{
uchar?shige;
shi=date1/10;
ge=date1%10;
write_control(0x80+add1);
write_data(0x30+shi);//求?個(gè)位??十位的ASCIIA碼??進(jìn)而顯示
write_data(0x30+ge);
}
void?write_nian(uchar?add2uint?date2)//寫(xiě)入?年?的數(shù)值
{
uchar?qianbaishige;
qian=date2/1000;
bai=date2/100%10;
shi=date2/10%10;
ge=date2%10;
write_control(0x80+add2);//求?千百十個(gè)位??的ASCIIA碼??進(jìn)而顯示
write_data(0x30+qian);
write_data(0x30+bai);
write_data(0x30+shi);
write_data(0x30+ge);
}
void?timer0()??interrupt?1//定時(shí)器中斷程序??計(jì)時(shí)顯示
{
TH0=(65536-5000)/256;//5ms???5.42534722222222222
TL0=(65536-5000)%256;
flag++;
if(flag==184)//1秒
{
flag=0;
miao++;
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
fen=0;
shi++;
if(shi==24)
{
shi=0;
ri++;
if((ri>31)&&((yue==1)||(yue==3)||(yue==5)||(yue==7)||(yue==8)||(yue==10)||(yue==12)))
{
ri=1;
yue++;
if(yue==12)
{
yue=1;
nian++;
write_nian(0nian);
}
write_yr(5yue);
}
if((ri==31)&&((yue==4)||(yue==6)||(yue==9)||(yue==11)))
{
ri=1;
yue++;
if(yue==12)
{
yue=1;
nian++;
write_nian(0nian);
}
write_yr(5yue);
}
if((ri==30)&&(yue==2))
{
if(nian%4==0)
{
if(nian%100==0)
{
if(nian%400==0)
{
ri=1;
yue++;
if(yue==12)
{
yue=1;
nian++;
write_nian(0nian);
}
writ
評(píng)論
共有 條評(píng)論