基于51單片機的實時時鐘,附上proteus仿真和源碼。
有調節時間的按鈕 可調時分秒
單片機源程序如下:
- #include <reg51.h>
- #include <intrins.h>
- #include "MAX7221.h"
- sbit DIN7221 = P2^0; //MAX7221的數據端
- sbit CS7221 = P2^1; //MAX7221的片選端
- sbit CLK7221 = P2^2; //MAX7221的時鐘端
- //MAX7221的寫子程序(addr芯片地址,Data寫入數據)
- void Wr_Max7221(unsigned char addr,unsigned char Data)
- {
- unsigned char i;
- CS7221=0; //片選有效
- for(i=0;i<8;i++) //寫8位地址
- {
- CLK7221=0; //時鐘低
- DIN7221=(addr&(0x80>>i))? 1:0; //先發高位,依次到低位
- _nop_();
- _nop_();
- CLK7221=1; //時鐘高,上升沿鎖數據
- _nop_();
- _nop_();
- }
-
- for(i=0;i<8;i++) //寫8位地址
- {
- CLK7221=0; //時鐘低
- DIN7221=(Data&(0x80>>i))? 1:0; //先發高位,依次到低位
- _nop_();
- _nop_();
- CLK7221=1; //時鐘高,上升沿鎖數據
- _nop_();
- _nop_();
- }
- CS7221=1; //片選無效
- }
- //MAX7221初始化程序
- void Init_Max7221(unsigned char mode,unsigned char intensity,unsigned char scanlimit,unsigned char shutdown)
- {
- Wr_Max7221(0x09,mode); //譯碼選擇,非BCD碼
- Wr_Max7221(0x0a,intensity); //亮度調節
- Wr_Max7221(0x0b,scanlimit); //顯示位數
- Wr_Max7221(0x0c,shutdown); //正常工作狀態,關斷模式
- }
- //MAX7221顯示子程序(由于此工程中未用到,所以注釋掉了)
- //void Disp_Max7221(unsigned char *buffer,unsigned char num)
- //{
- // unsigned char i;
- // for(i=0;i<num;i++) //數碼管顯示
- // {
- // Wr_Max7221(i+1,*(buffer+i)); //調mAX7221的寫子程序
- // }
- //}
復制代碼 Keil代碼與Proteus8.8仿真下載:
Proteus里面雙擊單片機重新選擇hex文件路徑"實時時鐘\C51\Objects"
實時時鐘.7z
(92.32 KB, 下載次數: 32)
2022-4-15 16:47 上傳
點擊文件名下載附件
|