久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
單片機(jī)電子時(shí)鐘設(shè)計(jì) 帶仿真圖文件
[打印本頁]
作者:
枯少主
時(shí)間:
2017-12-6 10:03
標(biāo)題:
單片機(jī)電子時(shí)鐘設(shè)計(jì) 帶仿真圖文件
基于AT89C51的單片機(jī)顯示
圖片1.png
(26.77 KB, 下載次數(shù): 97)
下載附件
2017-12-6 10:02 上傳
所有資料51hei提供下載:
實(shí)驗(yàn)22 DS1302日期時(shí)間實(shí)驗(yàn).doc
(78.5 KB, 下載次數(shù): 16)
2017-12-6 10:02 上傳
點(diǎn)擊文件名下載附件
實(shí)驗(yàn)設(shè)計(jì)要求
下載積分: 黑幣 -5
新建壓縮(zipped)文件夾.zip
(74.94 KB, 下載次數(shù): 63)
2017-12-6 10:02 上傳
點(diǎn)擊文件名下載附件
仿真文件、程序、要求
下載積分: 黑幣 -5
設(shè)計(jì),帶仿真圖文件 ,要求說明,帶注釋程序
單片機(jī)源程序如下:
#include<reg51.h>
#include <intrins.h>
#define uchar unsigned char
sbit lcdrs=P2^0;
sbit lcdrw=P2^1;
sbit lcden=P2^2; //定義LCD的引腳
sbit rst=P1^0; //定義DS1302的引腳
sbit clk=P1^1;
sbit io=P1^2;
sbit set=P1^3; //定義按鍵
sbit add=P1^4;
sbit ok=P1^5;
uchar year,month,day,hour,minute,second,n; //定義變量
void delay() //延時(shí),用于LCD控制
{ uchar i;
for(i=0;i<100;i++); }
void w_lcdcom(uchar com) //寫LCD命令數(shù)據(jù)
{ lcdrs=0;
lcdrw=0;
delay();
P0=com;
lcden=1;
delay();
lcden=0; }
void w_lcddat(uchar dat) //寫LCD一個(gè)字符數(shù)據(jù)
{ lcdrs=1;
lcdrw=0;
delay();
P0=dat;
lcden=1;
delay();
lcden=0; }
void initlcd() //初始化LCD
{ lcden=0;
w_lcdcom(0x38);
w_lcdcom(0x6);
w_lcdcom(0xc); }
void w_lcdstr(uchar *s) //寫LCD字符串
{ while(*s)
{ w_lcddat(*s);
s++;} }
void w_ds1302(uchar dat) //寫DS1302一個(gè)字節(jié)數(shù)據(jù)
{ uchar i;
rst=1;
for(i=0;i<8;i++)
{ clk=0;
io=dat&0x01;
dat>>=1;
clk=1;
_nop_();_nop_();}}
uchar r_ds1302() //讀DS1302一個(gè)字節(jié)數(shù)據(jù)
{ uchar i;
uchar dat=0;
for(i=0;i<8;i++)
{ clk=0;_nop_();_nop_();
dat>>=1;
if(io)dat|=0x80;
clk=1;_nop_();_nop_();}
rst=0;
return (dat);}
void key() //按鍵處理
{ if(set)goto l2; //“SET”鍵未按下時(shí)轉(zhuǎn)L2,退出。
else
{ w_lcdcom(0xf); //顯示LCD的光標(biāo)
n++;//變量n保存“SET”按下的次數(shù)(1~6),用來確定光標(biāo)的位置和要修改和內(nèi)容。
if(n==7)n=1;}
l1:while(~set); //等待“SET”鍵釋放
switch (n) //根據(jù)n的值設(shè)置光標(biāo)的位置
{ case 1:w_lcdcom(0x89);break; //年的個(gè)位位置
case 2:w_lcdcom(0x8c);break; //月的個(gè)位位置
case 3:w_lcdcom(0x8f);break;//日的個(gè)位位置
case 4:w_lcdcom(0xc7);break; //時(shí)的個(gè)位位置
case 5:w_lcdcom(0xca);break; //分的個(gè)位位置
case 6:w_lcdcom(0xcd);} //秒的個(gè)位位置
if(~set) //“SET”鍵多次按下時(shí),修改n的值
{ n++;
if(n==7)n=1;}
if(~add)// 當(dāng)“ADD”鍵按下時(shí),根據(jù)n的值相應(yīng)內(nèi)容
{ switch(n)
{ case 1:
{ year++; //“年”加1(取值范圍00H~99H,BCD格式)
if(year%16==10)year=(year+0x10)&0xf0; //BCD調(diào)整
if(year==0xa0)year=0; //當(dāng)“年”值=A0H時(shí),清0
w_lcdcom(0x88);// 置光標(biāo)到“年”的十位
w_lcddat(year>>4|0x30); //顯示“年”的十位
w_lcddat(year&0xf|0x30);} //顯示“年”的個(gè)位
break;
case 2:
{ month++; //“月”加1
if(month%16==10)month=(month+16)&0xf0;
if(month==0x13)month=0;
w_lcdcom(0x8b);
w_lcddat(month>>4|0x30);
w_lcddat(month&0xf|0x30);}
break;
case 3:
{ day++; //“日”加1
if(day%16==10)day=(day+0x10)&0xf0; //BCD調(diào)整
if(month==2)
{if (year%400==0||(year%4==0&&year%100!=0)){if(day==0x29)day=0;}//當(dāng)值=29H時(shí),清0
else {if(day==0x30)day=0;}}//當(dāng)值=30H時(shí),清0
if(month%2==0){if(day==0x31)day=0;} //當(dāng)值=31H時(shí),清0
if(month%2==1){if(day==0x32)day=0;}//當(dāng)值=32H時(shí),清0
w_lcdcom(0x8e);// 置光標(biāo)到十位
w_lcddat(day>>4|0x30); //顯示十位
w_lcddat(day&0xf|0x30);} //顯示個(gè)位
break;
case 4:
{ hour++; //“時(shí)”加1
if(hour%16==10) hour=(hour+16)&0xF0; //BCD調(diào)整
if(hour==0x24)hour=0; //當(dāng)值=24H時(shí),清0
w_lcdcom(0xc6);// 置光標(biāo)到十位
w_lcddat(hour>>4|0x30); //顯示十位
w_lcddat(hour&0xf|0x30);} //顯示個(gè)位
break;
case 5:
{ minute++; //“分”加1
if(minute%16==10) minute=(minute+16)&0xF0; //BCD調(diào)整
if(minute==0x60)minute=0; //當(dāng)值=60H時(shí),清0
w_lcdcom(0xc9);// 置光標(biāo)到十位
w_lcddat(minute>>4|0x30); //顯示十位
w_lcddat(minute&0xf|0x30);} //顯示個(gè)位
break;
case 6:
{ second++; //“秒”
if(second%16==10) second=(second+16)&0xF0; //BCD調(diào)整
if(second==0x60)second=0; //當(dāng)值=60H時(shí),清0
w_lcdcom(0xcc);// 置光標(biāo)到十位
w_lcddat(second>>4|0x30); //顯示十位
w_lcddat(second&0xf|0x30);} //顯示個(gè)位
break;}
}
while(~add); //等待“ADD”鍵釋放
if(ok)goto l1; //“OK”鍵未按下時(shí)轉(zhuǎn)L1
w_ds1302(0x8e);// 置DS1302控制口地址
w_ds1302(0); //允許寫操作
rst=0;
w_ds1302(0x80); //置DS1302“秒”地址
w_ds1302(second); //寫“秒”值
rst=0;
w_ds1302(0x82); //置DS1302“分”地址
w_ds1302(minute); //寫“分”值
rst=0;
w_ds1302(0x84); //置DS1302“時(shí)”地址
w_ds1302(hour); //寫“hour”值
rst=0;
w_ds1302(0x86); //置DS1302“day”地址
w_ds1302(day); //寫“day”值
rst=0;
w_ds1302(0x88); //置DS1302“month”地址
w_ds1302(month); //寫“month”值
rst=0; //地址依次加2
w_ds1302(0x8c); //置DS1302“年”地址
w_ds1302(year); //寫“年”值
rst=0;
l2:w_lcdcom(0xc); //關(guān)閉LCD光標(biāo)
n=0;}
void main() //主程序
{ initlcd(); //初始化LCD
while(1)
{ w_ds1302(0x8e); //置DS1302控制口地址
w_ds1302(0x80); //禁止寫操作
rst=0;
w_lcdcom(0x80); //置LCD第1行光標(biāo)
w_lcdstr("DATE 20"); //顯示字符串
w_ds1302(0x8d); //置DS1302“年”地址
year=r_ds1302(); //讀“年”值,為BCD格式(00H~99H)
w_lcddat(year>>4|0x30); //顯示“年”的十位
w_lcddat(year&0xf|0x30); //顯示“年”的個(gè)位
w_lcddat('-'); //顯示分隔符
w_ds1302(0x89); //置DS1302“月”地址
month=r_ds1302(); //讀“月”值,為BCD格式
w_lcddat(month>>4|0x30); //顯示“月”的十位
w_lcddat(month&0xf|0x30); //顯示“月”的個(gè)位
w_lcddat('-'); //顯示分隔符
w_ds1302(0x87); //置DS1302“day”地址
day=r_ds1302(); //讀“day”值,為BCD格式
w_lcddat(day>>4|0x30); //顯示十位
w_lcddat(day&0xf|0x30); //顯示個(gè)位
//地址依次減2,時(shí)間的分隔符用“:”
w_lcdcom(0xc0); //置LCD第2行光標(biāo)
w_lcdstr("TIME "); //顯示字符串
w_ds1302(0x85); //置DS1302“hour”地址
hour=r_ds1302(); //讀值,為BCD格式
w_lcddat(((hour&0xf0)>>4)|0x30); //顯示十位
w_lcddat(hour&0xf|0x30); //顯示個(gè)位
w_lcddat(':'); //顯示分隔符
w_ds1302(0x83); //置DS1302“minute”地址
minute=r_ds1302(); //讀值,為BCD格式
w_lcddat(((minute&0xf0)>>4)|0x30); //顯示十位
w_lcddat(minute&0xf|0x30); //顯示個(gè)位
w_lcddat(':'); //顯示分隔符
w_ds1302(0x81); //置DS1302“秒”地址
second=r_ds1302(); //讀“秒”值,為BCD格式
w_lcddat(((second&0xf0)>>4)|0x30); //顯示“秒”的十位
w_lcddat(second&0xf|0x30); //顯示“秒”的個(gè)位
key(); //調(diào)用按鍵處理函數(shù)
}
}
復(fù)制代碼
作者:
cp5201314
時(shí)間:
2020-6-18 21:02
樓主,怎么添加鬧鐘
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
欧美极品一区
|
亚洲天堂成人
|
亚洲精品一区中文字幕乱码
|
欧美一区二区在线
|
亚洲欧美日韩色图
|
91精品视频在线播放
|
日韩高清精品免费观看
|
色涩av
|
性欧美8khd高清极品
|
91亚色视频
|
思思在线视频
|
日本伊人久久
|
成人免费网站
|
超碰免费公开
|
国产有码视频
|
天堂资源在线
|
亚洲午夜精品一区二区三区
|
一道本在线视频
|
日韩理论在线
|
亚洲一区二区免费
|
日本黄色免费看
|
日韩在线观看中文字幕
|
中文字幕一区二区三区四区
|
欧美日本国产
|
日日夜夜狠狠
|
福利片在线
|
日日操天天操
|
成年人黄色网址
|
天天爽天天操
|
欧美大白屁股
|
18成人免费观看网站
|
亚洲欧美一区二区三区在线
|
欧美日韩大片
|
欧美揉bbbbb揉bbbbb
|
精品综合网
|
不卡视频在线观看
|
亚洲毛片av
|
欧美bbb
|
av手机天堂网
|
精品亚洲国产成人av制服丝袜
|
黄色片在线播放
|