顯示芯片用max7219 ,時鐘芯片采用DS1302.溫度芯片采用18b20 ,光敏電阻采用4516
附原理圖,和程序代碼,
新建文件夾IMG_20210319_130505.jpg (3.06 MB, 下載次數: 69)
下載附件
2021-3-19 13:08 上傳
新建文件夾IMG_20210319_130459.jpg (2.88 MB, 下載次數: 66)
下載附件
2021-3-19 13:08 上傳
新建文件夾IMG_20210319_130456.jpg (3.02 MB, 下載次數: 91)
下載附件
2021-3-19 13:08 上傳
新建文件夾IMG_20210319_130451.jpg (2.79 MB, 下載次數: 77)
下載附件
2021-3-19 13:08 上傳
新建文件夾IMG_20210319_130442.jpg (3.04 MB, 下載次數: 55)
下載附件
2021-3-19 13:08 上傳
新建文件夾IMG_20210319_130436.jpg (2.79 MB, 下載次數: 82)
下載附件
2021-3-19 13:08 上傳
單片機源程序如下:
- #include "all.h"
- //======================================
- void Write_Max7219_byte(char DATA)
- {
- char i;
- Max7219_pinCS=0; //CS=0有效,CS=1鎖存
- for(i=8;i>=1;i--)
- {
- Max7219_pinCLK=0;
- Max7219_pinDIN=DATA&0x80; //&10000000, 編譯器對位操作的理解:非0即為1
- DATA=DATA<<1;
- Max7219_pinCLK=1; //上升沿把數據送出去
- }
- }
- //-------------------------------------------
- /*向M第一片MAX7219寫入數據*/
- void Write_Max7219_1(char add1,char dat1)
- {
- Max7219_pinCS=0;
- Write_Max7219_byte(add1); //寫入地址,即數碼管編號
- Write_Max7219_byte(dat1); //寫入數據,即數碼管顯示數字
- Max7219_pinCS=1;
- }
- //===========================================
- //初始化
- void Init_MAX7219()
- {
- Write_Max7219_1(0x09, 0xff); //譯碼方式:BCD碼
- //Write_Max7219_1(0x0a, 0xf0); //亮度
- Write_Max7219_1(0x0b, 0x05); //掃描界限;8個數碼管顯示
- Write_Max7219_1(0x0c, 0x01); //掉電模式:0,普通模式:1
- Write_Max7219_1(0x0f, 0x00); //顯示測試:1;測試結束,正常顯示:0
- }
復制代碼- #include "all.h"
- //*************************************************************
- //主晶振在20-35之間
- //低于20MHZ 溫度無法使用
- //自用晶振35MHZ
- //=================================================================
- //IO口初始化
- void io_init()
- {
- P1M0&=0x00;P1M1&=0x00; //P3口,準雙
- P3M0&=0x00;P3M1&=0x00; //P1口,準雙
- }
- //=================================
- //max7219顯示
- void max7219_xs()//max7219xs
- {
- static uint i;
- i++;
- if(i>2000)
- {
- Write_Max7219_1(1,TIME[2]>>4); //顯示時高位
- Write_Max7219_1(2,TIME[2]&0X0F); //顯示時低位不帶小數點,
- Write_Max7219_1(3,TIME[1]>>4);//顯示分高位
- Write_Max7219_1(4,TIME[1]&0X0F);//顯示分低位
- Write_Max7219_1(5,TIME[0]>>4);//顯示秒高位
- Write_Max7219_1(6,TIME[0]&0x0f);//顯示秒。低位
- }
- if(i>4000)
- {
- i=0;P15=1;
- Write_Max7219_1(1,TIME[2]>>4); //顯示時高位
- Write_Max7219_1(2,((TIME[2]&0X0F)|0x80)); //顯示時低位,帶小數點,
- Write_Max7219_1(3,TIME[1]>>4);//顯示分高位
- Write_Max7219_1(4,TIME[1]&0X0F);//顯示分低位
- Write_Max7219_1(5,TIME[0]>>4);//顯示秒高位
- Write_Max7219_1(6,TIME[0]&0x0f);//顯示秒。低位
- }
- }
- void WDT_CONTR_allog() //看門狗定時器 2.5s定時
- {
- WDT_CONTR=0x36;
- }
- void main()
- {
- io_init(); //io口初始化
- Init_MAX7219(); //max7219初 始化
- anjian();//主按鍵使用,屏蔽所有功能無法使用
- adc_init(); //adc調節亮度初始化
- Ds1302Init(); //ds1302初始化賦值初始時間
- while(1)
- {
- Ds1302ReadTime(); //ds1302讀取
- WDT_CONTR_allog();//看門狗定時器
- adc_ld(); //亮度調節
- anjian_0();//顯示時間
- anjian_1();//顯示日期
- anjian_2();//顯示周
- anjian_3();//判斷一次
- anjian_4();//顯示溫度
- anjian_5();//調整年
- anjian_6();//調整月
- anjian_7();//調整日
- anjian_8();//調整時
- anjian_9();//調整分
- anjian_10();//調整秒
- anjian_11();//調整周
- anjian_12();//返回顯示時間
- anjian_k3(); //返回顯示時間
-
-
- }
- }
復制代碼
所有資料51hei提供下載:
原理圖.rar
(18.53 KB, 下載次數: 50)
2021-3-19 13:15 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
程序.rar
(91.28 KB, 下載次數: 37)
2021-3-19 13:15 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|