找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2803|回復(fù): 1
收起左側(cè)

STC15W408AS單片機+max7219程序原理圖 顯示時間,日期,溫度 可以自動亮度

[復(fù)制鏈接]
ID:766492 發(fā)表于 2021-3-19 13:16 | 顯示全部樓層 |閱讀模式
顯示芯片用max7219 ,時鐘芯片采用DS1302.溫度芯片采用18b20 ,光敏電阻采用4516

附原理圖,和程序代碼,
新建文件夾IMG_20210319_130505.jpg 新建文件夾IMG_20210319_130459.jpg 新建文件夾IMG_20210319_130456.jpg 新建文件夾IMG_20210319_130451.jpg 新建文件夾IMG_20210319_130442.jpg 新建文件夾IMG_20210319_130436.jpg

單片機源程序如下:
  1. #include "all.h"
  2. //======================================
  3. void Write_Max7219_byte(char DATA)           
  4. {  
  5.         char i;      
  6.         Max7219_pinCS=0;                //CS=0有效,CS=1鎖存   
  7.         for(i=8;i>=1;i--)  
  8.           {         
  9.             Max7219_pinCLK=0;  
  10.             Max7219_pinDIN=DATA&0x80; //&10000000, 編譯器對位操作的理解:非0即為1  
  11.             DATA=DATA<<1;  
  12.             Max7219_pinCLK=1;       //上升沿把數(shù)據(jù)送出去  
  13.            }                                   
  14. }  
  15. //-------------------------------------------  
  16. /*向M第一片MAX7219寫入數(shù)據(jù)*/  
  17. void Write_Max7219_1(char add1,char dat1)  
  18. {   
  19.      Max7219_pinCS=0;
  20.      Write_Max7219_byte(add1);           //寫入地址,即數(shù)碼管編號
  21.      Write_Max7219_byte(dat1);               //寫入數(shù)據(jù),即數(shù)碼管顯示數(shù)字   
  22.      Max7219_pinCS=1;                          
  23. }  
  24. //===========================================
  25. //初始化
  26. void Init_MAX7219()  
  27. {         
  28. Write_Max7219_1(0x09, 0xff);       //譯碼方式:BCD碼  
  29. //Write_Max7219_1(0x0a, 0xf0);       //亮度   
  30. Write_Max7219_1(0x0b, 0x05);       //掃描界限;8個數(shù)碼管顯示  
  31. Write_Max7219_1(0x0c, 0x01);       //掉電模式:0,普通模式:1  
  32. Write_Max7219_1(0x0f, 0x00);       //顯示測試:1;測試結(jié)束,正常顯示:0  
  33. }
復(fù)制代碼
  1. #include "all.h"
  2. //*************************************************************
  3. //主晶振在20-35之間
  4. //低于20MHZ 溫度無法使用
  5. //自用晶振35MHZ
  6. //=================================================================
  7. //IO口初始化
  8. void io_init()
  9. {
  10. P1M0&=0x00;P1M1&=0x00; //P3口,準雙
  11. P3M0&=0x00;P3M1&=0x00; //P1口,準雙
  12. }
  13. //=================================
  14. //max7219顯示
  15. void max7219_xs()//max7219xs
  16. {
  17.         static uint i;
  18.         i++;
  19.         if(i>2000)
  20.         {
  21.         Write_Max7219_1(1,TIME[2]>>4);  //顯示時高位
  22.         Write_Max7219_1(2,TIME[2]&0X0F);  //顯示時低位不帶小數(shù)點,
  23.         Write_Max7219_1(3,TIME[1]>>4);//顯示分高位
  24.         Write_Max7219_1(4,TIME[1]&0X0F);//顯示分低位
  25.         Write_Max7219_1(5,TIME[0]>>4);//顯示秒高位
  26.   Write_Max7219_1(6,TIME[0]&0x0f);//顯示秒。低位
  27.         }
  28.   if(i>4000)
  29.         {
  30.                          i=0;P15=1;
  31.         Write_Max7219_1(1,TIME[2]>>4);  //顯示時高位
  32.         Write_Max7219_1(2,((TIME[2]&0X0F)|0x80));  //顯示時低位,帶小數(shù)點,
  33.         Write_Max7219_1(3,TIME[1]>>4);//顯示分高位
  34.         Write_Max7219_1(4,TIME[1]&0X0F);//顯示分低位
  35.         Write_Max7219_1(5,TIME[0]>>4);//顯示秒高位
  36.   Write_Max7219_1(6,TIME[0]&0x0f);//顯示秒。低位
  37.         }

  38. }



  39. void WDT_CONTR_allog() //看門狗定時器 2.5s定時
  40. {
  41.    WDT_CONTR=0x36;
  42. }
  43. void main()
  44. {
  45.         io_init(); //io口初始化
  46.   Init_MAX7219(); //max7219初 始化
  47.         anjian();//主按鍵使用,屏蔽所有功能無法使用
  48.         adc_init();        //adc調(diào)節(jié)亮度初始化
  49.         Ds1302Init();  //ds1302初始化賦值初始時間
  50.         while(1)
  51.         {
  52.                  Ds1302ReadTime(); //ds1302讀取        
  53.                  WDT_CONTR_allog();//看門狗定時器
  54.                  adc_ld();  //亮度調(diào)節(jié)
  55.                  anjian_0();//顯示時間
  56.                  anjian_1();//顯示日期
  57.                  anjian_2();//顯示周
  58.                  anjian_3();//判斷一次
  59.                  anjian_4();//顯示溫度
  60.                  anjian_5();//調(diào)整年
  61.                  anjian_6();//調(diào)整月
  62.                  anjian_7();//調(diào)整日
  63.                  anjian_8();//調(diào)整時
  64.                  anjian_9();//調(diào)整分
  65.                  anjian_10();//調(diào)整秒
  66.                  anjian_11();//調(diào)整周
  67.                  anjian_12();//返回顯示時間
  68.                  anjian_k3(); //返回顯示時間
  69.                
  70.                

  71.         }
  72. }
復(fù)制代碼


所有資料51hei提供下載:
原理圖.rar (18.53 KB, 下載次數(shù): 50)
程序.rar (91.28 KB, 下載次數(shù): 37)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:28992 發(fā)表于 2021-3-20 04:35 | 顯示全部樓層
非常感謝您的分享 好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表