|
帶日歷時鐘及溫度顯示的電子萬年歷 附件里面的程序不全 但是hex好使
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載):
單片機源程序如下:
- //-----------------------------------------------------------------
- // 名稱: 帶日歷時鐘及溫度顯示的電子萬年歷
- //-----------------------------------------------------------------
- // 說明: 本例使用了DS1302讀取日期時間,用TC72獲取溫度數據
- // 通過74HC595驅動數碼管顯示.
- //
- //-----------------------------------------------------------------
- #include <reg51.h>
- #include <intrins.h>
- #include <stdio.h>
- #include <string.h>
- #define INT8U unsigned char
- #define INT16U unsigned int
- const INT8U SEG_CODE[]= //0~9的段碼,攝氏度段碼(2字節),黑屏段碼,負號段碼
- { 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90,0xC6,0x9C,0xFF,0xBF};
- INT8U DateTime[7] = {5,4,3,2,1,5,12}; //假定時間12年1月2日,3點,4分5秒
- sbit DS = P3^0; //串行數據輸入
- sbit SH_CP = P3^1; //移位時鐘脈沖
- sbit ST_CP = P3^2; //輸出鎖存器控制脈沖
- extern void Init_DS1302();
- extern void GetDateTime();
- extern void SetDateTime();
- extern INT8U CurrDateTime[];
- extern void Config_TC72();
- extern float Read_TC72_Temperature();
- //所有數碼管的顯示緩沖(年有高2位固定為20),最后2位固定為攝氏度段碼索引
- INT8U disp_buff[21] = {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,10};
- //-----------------------------------------------------------------
- // 延時函數
- //-----------------------------------------------------------------
- void delay_ms(INT16U x) { INT8U t; while(x--) for(t = 0; t<120; t++);}
- //-----------------------------------------------------------------
- // 1字節數據串行輸入595子程序
- //-----------------------------------------------------------------
- void Serial_Input_595(INT8U d)
- {
- }
- //-----------------------------------------------------------------
- // 595并行輸出子程序
- //-----------------------------------------------------------------
- void Parallel_Output_595()
- {
- }
- //------------------------------------------------------------------
- // 主程序
- //------------------------------------------------------------------
- void main()
- {
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
01 帶日歷時鐘及溫度顯示的電子萬年歷.rar
(38.43 KB, 下載次數: 32)
2017-5-16 17:29 上傳
點擊文件名下載附件
|
|