Discuz! Board

 找回密碼
 立即註冊
搜索
熱搜: 活動 交友 discuz
查看: 115|回復: 0

單片機壆習——用ds1302制作一個精密電子鍾,按鍵調節

[複製鏈接]

873

主題

877

帖子

2689

積分

管理員

Rank: 9Rank: 9Rank: 9

積分
2689
發表於 2018-6-13 11:48:37 | 顯示全部樓層 |閱讀模式
void write_byte(uchar dat)//寫入一個字節
{
uchar i;
ACC=dat;
for(i=8;i>0;i--)
{
ds1302_io=acc0;
ds1302_sclk=1;
ds1302_sclk=0;
ACC=ACC>>1;
}
}
uchar read_byte() //讀出一個字節
{
uchar i;
for(i=8;i>0;i--)
{
ACC=ACC>>1;
acc7=ds1302_io;
ds1302_sclk=1;
ds1302_sclk=0;
}
return(ACC);
}
return(temp);
}
void set_ds1302(uchar *pClock)//設寘ds1302的時間
{
uchar i;
uchar add=0x80;
EA=0;
s_write(0x8e,0x00);
for(i=7;i>0;i--)
{
s_write(add,*pClock);
pClock++;
add+=2;
}
s_write(0x8e,0x80);
EA=1;
}
void rw_ds1302() //讀寫ds1302
{
EA=0;
sec=s_read(0x81);
write_time(8,sec);
write_com(0x80+0x40+9);
min=s_read(0x83);
write_time(5,min);
write_com(0x80+0x40+6);
hour=s_read(0x85);
write_time(2,hour);
write_com(0x80+0x40+3);
week=s_read(0x8b);
write_xingqi(week);
write_com(0x80+0x0d);
day=s_read(0x87);
write_riqi(8,day);
write_com(0x80+9);
month=s_read(0x89);
write_riqi(5,month);
write_com(0x80+6);
year=s_read(0x8d);
write_riqi(2,year);
write_com(0x80+3);
EA=1;
}
void write_com(uchar com) //寫命令子函數
{
lcde=0;
lcdrw=0;
lcdrs=0;
delay(1);
lcde=1;
delay(1);
P0=com;
delay(1);
lcde=0;
}
void write_data(uchar dat)//寫數据子函數
{
lcde=0;
lcdrw=0,宜蘭親子民宿包棟;
lcdrs=1;
delay(1);
lcde=1;
delay(1);
P0=dat;
delay(1);
lcde=0;
}
void init()
{
s_write(0x90,0xa5);
set_ds1302(time);
delay(5);
lcde=0; //LCD1602初始化
le=0;
leden=0;
write_com(0x38);
delay(100);
write_com(0x38);
delay(50);
write_com(0x38);
delay(10);
write_com(0x08);
write_com(0x01);
write_com(0x0c);
write_com(0x80);
題目:用ds1302制作一個精密的電子時鍾,且實現按鍵調節時間
for(num=0;num0;j--)
for(i=250;i>0;i--) ;
}
}
}

#include
#include
#define uchar unsigned char
#define uint unsigned int
#define DEC2BCD(X) ((X/10) //用於將十進制轉成BCD碼的宏
#define BCD2DEC(X) (((X&0x70)>>4)*10 + (X&0x0F)) //用於將BCD碼轉成十進制的宏
void write_com(uchar com);
void write_data(uchar dat);
void init();
void write_time(uchar add,uchar dat);
void write_riqi(uchar add,uchar dat);
void write_xingqi(uchar dat);
void write_byte(uchar dat);
uchar read_byte();
void s_write(uchar add,uchar dat);
void s_write(uchar add,uchar dat);
uchar s_read(uchar add);
void set_ds1302(uchar *pClock);
void rw_ds1302();
void keyscan();
void main()//main函數
{
s_write(0x8e,0x80);
init();
P0=0xff;
while(1)
{
keyscan();
if(flag==0){
rw_ds1302();
}
回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

Archiver|手機版|小黑屋|台灣自行車用品製造廠論壇  

鐵皮屋, 高雄當舖, 高雄機車借款, LED, 照明, 燈飾, 燈管, 燈具, 字幕機, 電視牆, 燈具, 崁燈, 燈籠, 燈泡, 露營燈, 警示燈, 投影燈, 頭燈, 車燈, 大燈, 汽車百貨, 電池, 電源, 變壓器, 電子材料, 宜蘭民宿 佛牌, 台中搬家, 禮品, 贈品, 印章, 鐵門, 採光罩, 高雄招牌, 中壢當鋪, 中壢汽車借款, 中壢機車借款, 楊梅當鋪, 平鎮當鋪, 隔空減脂, 被動元件, 電感器, 租遊覽車, 台中汽車借款, 台中機車借款, 外牆防水, 台中當舖, 貴金屬回收, 高雄借錢, 人工植牙, 電感器, 高雄當舖, 三民區當舖, 指紋鎖, 電子鎖, 台中搬家公司, 電子鎖, 放大鏡

GMT+8, 2019-3-20 10:25 , Processed in 0.063049 second(s), 5 queries , File On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表