這是我大一做的51單片機電子時鐘設計,用了一個月時間,附件
制作出來的實物圖如下:
單片機程序源碼:
- #include "lcd1602.h"
- #include "key.h"
- #include "delay.h"
- #include "ds1302.h"
- uchar count;
- void Timer0Init(void) //10毫秒@12.000MHz
- {
- TMOD &= 0xF0; //設置定時器模式
- TMOD |= 0x01; //設置定時器模式
- TL0 = 0xF0; //設置定時初值
- TH0 = 0xD8; //設置定時初值
- TF0 = 0; //清除TF0標志
- ET0 = 1;
- EA = 1;
- }
- void init_system(void)
- {
- init_lcd1602();
- Timer0Init();
- write_string(NIAN_ADD-0X80,0,"20 - - ");
- write_string(SHI_ADD-0XC0,1," : : ");
- InitDS1302();
- }
- void main(void)
- {
- init_system();
- while(1)
- {
- if(flag==0&&flag_r==0)
- {
- fen = DS1302_Rdata(0x83);//從DS1302讀取分數據
- write_sfm(3,fen);
- shi = DS1302_Rdata(0x85);//從DS1302讀取時數據
- write_sfm(0,shi);
- ri = DS1302_Rdata(0x87); //從DS1302讀取日數據
- write_nyr(8,ri);
- yue = DS1302_Rdata(0x89);//從DS1302讀取月數據
- write_nyr(5,yue);
- nian = DS1302_Rdata(0x8d); //從DS1302讀取年數據
- write_nyr(2,nian);
- week = DS1302_Rdata(0x8b);//從DS1302讀取星期數據
- write_week(week);
- miao = DS1302_Rdata(0x81);//從DS1302讀取秒數據
- write_sfm(6,miao);
- write_sfm(0,shi); //鬧鈴
- write_nyr(8,ri);
- write_nyr(5,yue);
- write_nyr(2,nian);
- write_week(week);
- if(shi==ashi&&fen==afen&&miao==amiao)
- {
- TR0 = 1; //定時器0開始計時
- }
- keyscan();
- }
- keyscan();
- }
- }
- void timer0(void) interrupt 1
- {
- TL0 = 0xF0; //設置定時初值
- TH0 = 0xD8; //設置定時初值
- count++;
- if(count==50)
- {
- count=0;
- beep=~beep;
- }
- }
復制代碼
里包含電子時鐘的單片機源代碼,原理圖和PCB,都是自己原創,請大家多多指教
全部資料51hei下載地址:
電子時鐘(ds1302).7z
(1.79 MB, 下載次數: 73)
2018-12-24 17:46 上傳
點擊文件名下載附件
1602電子鐘源代碼.zip
(95.81 KB, 下載次數: 57)
2018-12-24 17:45 上傳
點擊文件名下載附件
DS1302N.pdf
(217.31 KB, 下載次數: 31)
2018-12-24 17:44 上傳
點擊文件名下載附件
ds1302cn.pdf
(205.99 KB, 下載次數: 27)
2018-12-24 17:44 上傳
點擊文件名下載附件
|