欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
基于51單片機的萬年歷程序 一晚上誤差差不多十二秒
[打印本頁]
作者:
YSG
時間:
2019-3-16 13:52
標題:
基于51單片機的萬年歷程序 一晚上誤差差不多十二秒
基于51單片機的萬年歷,電路很簡單,程序三百多行。?烧{時,走了一晚上誤差差不多十二秒。有興趣的可以下載來做做,鬧鐘的那部分代碼懶得寫了有興趣的小伙伴可以加上去哦
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
原理圖.png
(103.84 KB, 下載次數: 72)
下載附件
2019-3-16 13:46 上傳
0.png
(9.46 KB, 下載次數: 65)
下載附件
2019-3-16 17:40 上傳
單片機源程序如下:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit RS=P2^7;
sbit RW=P2^6;
sbit EN=P2^5;
sbit buzzer=P2^4;
sbit DU=P2^0;
sbit WE=P2^1;
//*************************按鍵*************************
sbit key1=P1^0; //設置鍵*************
sbit key2=P1^4; //按鍵加***********
sbit key3=P3^0; //按鍵減*************
uchar code table[]="2019_03_07 THR";
uchar code table1[]="13:14:20";
uchar code table2[]="SUNMONTUSWENTHRFRISAT";
uchar code table3[]=">_<[]=_=";
uchar shi=15,fen=52,miao=0,time=0,week=4,ri=7,yue=3,nian=19,shiji=20;
uchar keyln;
//***********************延時函數***********************
void delay(uchar z)
{
uchar x;
while(z--)
{
for(x=110;x>0;x--);
}
}
//*********************寫指令函數************************
void write_com(uchar com)
{
RS=0;
RW=0;
P0=com;
delay(5);
EN=1;
delay(5);
EN=0;
}
//**********************寫數據函數**********************
void write_date(uchar date)
{
RS=1;
RW=0;
P0=date;
delay(5);
EN=1;
delay(5);
EN=0;
}
//*********************初始化函數************************
void init()
{
uchar num;
EN=0;
RS=0;
RW=0;
write_com(0x38); //液晶工作模式
write_com(0x0c); //開顯示不顯示光標
write_com(0x06); //屏幕不移動,光標自右移動
write_com(0x01); //清屏
write_com(0x80+1); //從第二個開始
for(num=0;num<14;num++)
{
write_date(table[num]);
delay(5);
}
write_com(0x80+0x40+4);
for(num=0;num<8;num++)
{
write_date(table1[num]);
delay(5);
}
write_com(0x80+0x40);
for(num=0;num<4;num++)
{
write_date(table3[num]);
delay(5);
}
write_com(0x80+0x40+0x0c);
for(num=4;num<8;num++)
{
write_date(table3[num]);
delay(5);
}
TMOD=0x01;
TH0=(65536-18451)/256;
TL0=(65536-18451)%256;
EA=1;
ET0=1;
TR0=1;
}
//*******************時分秒處理及顯示函數*****************
void jishi(uchar add,uchar haha)
{
uchar i,j;
i=haha/10;
j=haha%10;
write_com(0x80+0x40+add);
write_date(0x30+j);
write_com(0x80+0x40+add-1);
write_date(0x30+i);
}
//*****************日,月,年,世紀處理及顯示函數*********
void qingchun(uchar add,uchar haha)
{
uchar i,j;
i=haha/10;
j=haha%10;
write_com(0x80+add);
write_date(0x30+j);
write_com(0x80+add-1);
write_date(0x30+i);
}
//*********************星期顯示函數***********************
void xingqi(uchar z)
{
write_com(0x80+0x0c);
write_date(table2[3*z]);
write_com(0x80+0x0d);
write_date(table2[3*z+1]);
write_com(0x80+0x0e);
write_date(table2[3*z+2]);
}
//**********************閏年判斷函數*************
uchar nianer(uchar b,uchar c)
{
uchar d;
if(((c*100+b)%4==0&&(c*100+b!=0)||(c*100+b)%4==0))
d=1;
else
d=0;
return d;
}
//************************調時函數***************
void keyscan()
{
if(key1==0)
{
delay(1);
if(key1==0)
{
buzzer=0;
delay(5);
buzzer=1;
while(!key1);
keyln++;
if(keyln==9)
keyln=1; // 設置按鍵八個功能,秒,分,時,星期,日,月,年,返回;
switch(keyln)
{
case 1:write_com(0x80+0x40+0x0b);write_com(0x0f);TR0=0; break; //miao
case 2:write_com(0x80+0x40+8); break; //fen
case 3:write_com(0x80+0x40+5); break; //shi
case 4:write_com(0x80+0x0e); break; //week
case 5:write_com(0x80+0x0a); break; //ri
case 6:write_com(0x80+0x07); break; //yue
case 7:write_com(0x80+0x04); break; //nian
case 8:write_com(0x0c); TR0=1; break; //fanhui
}
}
}
if(keyln!=0)
{
if(key3==0) //下調鍵
{
delay(1);
if(key3==0)
{
buzzer=0;
delay(5);
buzzer=1;
while(!key3);
switch(keyln)
{
case 1:miao--;
if(miao==60) miao=0;
jishi(11,miao);break;
case 2:fen--;
if(fen==60) fen=0;
jishi(8,fen);break;
case 3:shi--;
if(shi==24) shi=0;
jishi(5,shi);break;
case 4:week--;
if(week==8) week=1;
xingqi(week);break;
case 5:ri--;
if(ri==32) ri=1;
qingchun(10,ri);break;
case 6:yue--;
if(yue==13) yue=1;
qingchun(7,yue);break;
case 7:nian--;
if(nian==100) nian=0;
qingchun(4,nian);break;
}
}
}
}
if(keyln!=0)
{
if(key2==0) //上調鍵
{
delay(1);
if(key2==0)
{
buzzer=0;
delay(5);
buzzer=1;
while(!key2);
switch(keyln)
{
case 1:miao++;
if(miao==60) miao=0;
jishi(11,miao);break;
case 2:fen++;
if(fen==60) fen=0;
jishi(8,fen);break;
case 3:shi++;
if(shi==24) shi=0;
jishi(5,shi);break;
case 4:week++;
if(week==8) week=1;
xingqi(week);break;
case 5:ri++;
if(ri==32) ri=1;
qingchun(10,ri);break;
case 6:yue++;
if(yue==13) yue=1;
qingchun(7,yue);break;
case 7:nian++;
if(nian==100) nian=0;
qingchun(4,nian);break;
}
}
}
}
}
//*******************每月天數=_=****************
uchar yueer(uchar e)
{
uchar f;
switch(e)
{
case 1:f=31;break;
case 2:f=28;break;
case 3:f=31;break;
case 4:f=30;break;
case 5:f=31;break;
case 6:f=30;break;
case 7:f=31;break;
case 8:f=31;break;
case 9:f=30;break;
case 10:f=31;break;
case 11:f=30;break;
case 12:f=31;break;
default: f=0;break;
}
return f;
}
//******************鬧鐘************************
//*********************大哥大*******************
void main()
{
DU=0;
WE=0;
init();
while(1)
{
keyscan();
if(time==50)
{
time=0;
miao++;
if(miao>=60)
{
miao=0;
fen++;
}
jishi(11,miao);
if(fen>=60)
{
fen=0;
shi++;
}
jishi(8,fen);
if(shi>=24)
{
shi=0;
week++;
ri++;
}
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
項目訓練.zip
(66.74 KB, 下載次數: 22)
2019-3-16 13:51 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1