資源簡介
整個系統以STC89C51單片機為核心器件,配合電阻電容晶振等器件,構成單片機的最小系統。其它個模塊圍繞著單片機最小系統展開。其中包括,顯示設備使用1602液晶,可以同時顯示年、月、日、星期、時、分、秒等基本時間信息;時鐘模塊采用DS1302芯片,初始化之后,就會開始運行計算時間,單片機只需進行時間信息的讀取即可。本設計還有4個按鍵作為操作輸入設備,可以進行時間、鬧鐘的設置等,同時還有蜂鳴器模塊,用來實現鬧鐘的鬧鈴。最后是供電采用常用的USB 5V進行供電。

代碼片段和文件信息
#include?
#include?
#define?uchar?unsigned?char //?以后unsigned?char就可以用uchar代替
#define?uint??unsigned?int //?以后unsigned?int?就可以用uint?代替
sfr?ISP_DATA??=?0xe2; //?數據寄存器
sfr?ISP_ADDRH?=?0xe3; //?地址寄存器高八位
sfr?ISP_ADDRL?=?0xe4; //?地址寄存器低八位
sfr?ISP_CMD???=?0xe5; //?命令寄存器
sfr?ISP_TRIG??=?0xe6; //?命令觸發寄存器
sfr?ISP_CONTR?=?0xe7; //?命令寄存器
sbit?LcdRs_P????=?P2^7;???????//?1602液晶的RS管腳???????
sbit?LcdRw_P????=?P2^6;???????//?1602液晶的RW管腳?
sbit?LcdEn_P????=?P2^5;???????//?1602液晶的EN管腳
sbit?RST_P??????=?P1^3; //?時鐘芯片DS1302的RST管腳
sbit?SDA_P??????=?P1^2; //?時鐘芯片DS1302的SDA管腳
sbit?SCK_P??????=?P1^1; //?時鐘芯片DS1302的SCK管腳
sbit?KeySet_P???=?P3^2; //?設置時間按鍵
sbit?KeyClock_P?=?P3^3; //?設置鬧鐘按鍵
sbit?KeyDown_P??=?P3^4; //?減按鍵
sbit?KeyUp_P????=?P3^5; //?加按鍵
sbit?Buzzer_P???=?P2^0; //?蜂鳴器
uchar?TimeBuff[7]={16856183050}; //?時間數組,默認2016年8月5日,星期五,16:30:50
//?TimeBuff[0]?代表年份,范圍00-99
//?TimeBuff[1]?代表月份,范圍1-12
//?TimeBuff[2]?代表日期,范圍1-31
//?TimeBuff[3]?代表星期,范圍1-7,1是星期天,2是星期一...?...
//?TimeBuff[4]?代表小時,范圍00-23
//?TimeBuff[5]?代表分鐘,范圍00-59
//?TimeBuff[6]?代表秒鐘,范圍00-59
uchar?Clock_Hour; //?鬧鐘的小時
uchar?Clock_Minute; //?鬧鐘的分鐘
uchar?Clock_Swt; //?鬧鐘的開關
uchar?Buzzer_Flag=0; //?蜂鳴器工作標志
/*********************************************************/
//?單片機內部EEPROM不使能
/*********************************************************/
void?ISP_Disable()
{
ISP_CONTR?=?0;
ISP_ADDRH?=?0;
ISP_ADDRL?=?0;
}
/*********************************************************/
//?從單片機內部EEPROM讀一個字節,從0x2000地址開始
/*********************************************************/
unsigned?char?EEPROM_Read(unsigned?int?add)
{
ISP_DATA??=?0x00;
ISP_CONTR?=?0x83;
ISP_CMD???=?0x01;
ISP_ADDRH?=?(unsigned?char)(add>>8);
ISP_ADDRL?=?(unsigned?char)(add&0xff);
//?對STC89C51系列來說,每次要寫入0x46,再寫入0xB9ISP/IAP才會生效
ISP_TRIG??=?0x46; ???
ISP_TRIG??=?0xB9;
_nop_();
ISP_Disable();
return?(ISP_DATA);
}
/*********************************************************/
//?往單片機內部EEPROM寫一個字節,從0x2000地址開始
/*********************************************************/
void?EEPROM_Write(unsigned?int?addunsigned?char?ch)
{
ISP_CONTR?=?0x83;
ISP_CMD???=?0x02;
ISP_ADDRH?=?(unsigned?char)(add>>8);
ISP_ADDRL?=?(unsigned?char)(add&0xff);
ISP_DATA??=?ch;
ISP_TRIG??=?0x46;
ISP_TRIG??=?0xB9;
_nop_();
ISP_Disable();
}
/*********************************************************/
//?擦除單片機內部EEPROM的一個扇區
//?寫8個扇區中隨便一個的地址,便擦除該扇區,寫入前要先擦除
/*********************************************************/
void?Sector_Erase(unsigned?int?add) ??
{
ISP_CONTR?=?0x83;
ISP_CMD???=?0x03;
ISP_ADDRH?=?(unsigned?char)(add>>8);
ISP_ADDRL?=?(unsigned?char)(add&0xff);
ISP_TRIG??=?0x46;
ISP_TRIG??=?0xB9;
_nop_();
ISP_Disable();
}
/*********************************************************/
//?毫秒級的延時函數,time是要延時的毫秒數
/*********************************************************/
void?DelayMs(u
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2017-12-29?00:04??萬年歷\
?????文件???????23704??2017-09-12?21:50??萬年歷\main.c
?????目錄???????????0??2016-08-15?16:01??萬年歷\仿真\
?????文件???????92073??2016-08-09?23:10??萬年歷\仿真\Last?Loaded?simulation.DBK
?????文件???????92073??2016-08-09?23:17??萬年歷\仿真\simulation.DSN
?????文件?????????909??2016-08-15?16:01??萬年歷\仿真\simulation.PWI
?????文件???????27136??2016-08-10?00:01??萬年歷\元件清單.doc
?????目錄???????????0??2017-12-28?23:01??萬年歷\圖片\
?????文件???????45258??2017-09-12?22:12??萬年歷\圖片\仿真.PNG
?????文件?????1466564??2017-09-13?16:01??萬年歷\圖片\正面.jpg
?????文件?????1384554??2017-09-13?16:00??萬年歷\圖片\背面.jpg
?????文件??????838511??2017-09-12?22:51??萬年歷\圖片\調試.jpg
?????文件???????44371??2017-09-12?21:52??萬年歷\圖片\運行.PNG
?????目錄???????????0??2017-12-29?00:02??萬年歷\電路圖(原理圖和PCB圖)\
?????目錄???????????0??2017-12-29?00:02??萬年歷\電路圖(原理圖和PCB圖)\Altium?Designer格式\
?????文件??????152576??2016-09-19?21:15??萬年歷\電路圖(原理圖和PCB圖)\Altium?Designer格式\PCB.PcbDoc
?????文件???????87040??2016-08-15?16:13??萬年歷\電路圖(原理圖和PCB圖)\Altium?Designer格式\原理圖-1.SCHDOC
?????文件???????83968??2016-10-02?07:03??萬年歷\電路圖(原理圖和PCB圖)\Altium?Designer格式\原理圖-2.SCHDOC
?????目錄???????????0??2017-12-29?00:02??萬年歷\電路圖(原理圖和PCB圖)\Protel?99SE格式\
?????文件??????105440??2016-08-05?11:31??萬年歷\電路圖(原理圖和PCB圖)\Protel?99SE格式\PCB.pcb
?????文件???????27878??2016-08-15?16:08??萬年歷\電路圖(原理圖和PCB圖)\Protel?99SE格式\原理圖-1.sch
?????文件???????27364??2016-10-02?07:03??萬年歷\電路圖(原理圖和PCB圖)\Protel?99SE格式\原理圖-2.sch
?????目錄???????????0??2017-12-29?00:02??萬年歷\電路圖(原理圖和PCB圖)\word格式\
?????文件???????28672??2016-08-05?11:32??萬年歷\電路圖(原理圖和PCB圖)\word格式\PCB.doc
?????文件???????25088??2016-08-15?16:09??萬年歷\電路圖(原理圖和PCB圖)\word格式\原理圖-1.doc
?????文件???????24064??2016-10-02?07:03??萬年歷\電路圖(原理圖和PCB圖)\word格式\原理圖-2.doc
?????文件?????4133888??2017-12-28?23:02??萬年歷\課程設計報告.doc
- 上一篇:nginx依賴包nginx依賴包
- 下一篇:ZIGBEE技術手冊(粵嵌)
評論
共有 條評論