久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5597|回復: 2
打印 上一主題 下一主題
收起左側

51單片機 DS1302時鐘+MAX7219驅動數碼管顯示時間

[復制鏈接]
跳轉到指定樓層
樓主
初始時間設定為23-59-50蜂鳴器接P2^3腳,到00-00-00時,蜂鳴器響一秒
MAX7219用SPI總線和8*8靜態RAM控制數碼管,數碼管不用循環掃描動態顯示,數碼管不閃爍,無殘影。
避免了因數碼管動態掃描可能導致DS1302計時錯誤MAX7219自帶BCD譯碼,驅動數碼管顯示無需段碼和位碼表
  1. #include <reg52.h>
  2. #include <intrins.h>

  3. typedef unsigned char uchar;
  4. typedef unsigned int uint;

  5. sbit Max7219_pinDIN = P2^2;
  6. sbit Max7219_pinCS  = P2^1;
  7. sbit Max7219_pinCLK = P2^0;
  8. sbit TSCLK = P1^0;
  9. sbit TIO = P1^1;
  10. sbit TRST = P1^2;
  11. sbit beep = P2^3;
復制代碼

(如用74HC573驅動的數碼管)


51hei圖片_20210126225553.jpg (145.24 KB, 下載次數: 60)

實物圖

實物圖
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:328014 發表于 2021-1-27 01:25 | 只看該作者
完整程序能分享下嗎?
回復

使用道具 舉報

板凳
ID:669393 發表于 2021-1-27 09:44 | 只看該作者
51hei團團 發表于 2021-1-27 01:25
完整程序能分享下嗎?
  1. #include <reg52.h>
  2. #include <intrins.h>

  3. typedef unsigned char uchar;
  4. typedef unsigned int uint;

  5. sbit Max7219_pinDIN = P2^2;
  6. sbit Max7219_pinCS  = P2^1;
  7. sbit Max7219_pinCLK = P2^0;
  8. sbit TSCLK = P1^0;
  9. sbit TIO = P1^1;
  10. sbit TRST = P1^2;
  11. sbit beep = P2^3;
  12. void delay(uint z)
  13. {
  14.         uint x,y;
  15.         for(x = z; x > 0; x--)
  16.                 for(y = 114; y > 0 ; y--);                
  17. }
  18. void Write_Max7219_byte(uchar DATA)         
  19. {
  20.         uchar i;                   
  21.         for(i=8;i>=1;i--)
  22.         {       
  23.                 Max7219_pinCLK=0;                                       
  24.                 Max7219_pinDIN=DATA&0x80;
  25.                 DATA=DATA<<1;
  26.                 Max7219_pinCLK=1;
  27.         }                                 
  28. }
  29. void Write_Max7219(uchar address,uchar dat)
  30. {
  31.      Max7219_pinCS=0;
  32.          Write_Max7219_byte(address);           //寫入地址,即數碼管編號
  33.      Write_Max7219_byte(dat);               //寫入數據,即數碼管顯示數字
  34.          Max7219_pinCS=1;                        
  35. }

  36. void Init_MAX7219(void)
  37. {
  38.         Write_Max7219(0x09, 0xff);       //譯碼方式:BCD碼
  39.         Write_Max7219(0x0a, 0x03);       //亮度
  40.         Write_Max7219(0x0b, 0x07);       //掃描界限;4個數碼管顯示
  41.         Write_Max7219(0x0c, 0x01);       //掉電模式:0,普通模式:1
  42.         Write_Max7219(0x0f, 0x01);       //顯示測試:1;測試結束,正常顯示:0
  43. }

  44. void display(uchar hour, uchar min, uchar sec )
  45. {
  46.         uchar hour1, hour2, min1, min2, sec1, sec2;

  47.         hour1 =  hour / 10 % 10;
  48.         hour2 = hour % 10;

  49.         min1 =  min / 10 % 10;
  50.         min2 = min % 10;

  51.         sec1 =  sec / 10 % 10;
  52.         sec2 = sec % 10;

  53.         Write_Max7219(1,sec2);
  54.         Write_Max7219(2,sec1);
  55.         Write_Max7219(3,0x0A);          //顯示-
  56.         Write_Max7219(4,min2);
  57.         Write_Max7219(5,min1);
  58.         Write_Max7219(6,0x0A);
  59.         Write_Max7219(7,hour2);
  60.         Write_Max7219(8,hour1);
  61. }
  62. //寫DS1302數據
  63. void Write_DS1302_Data(uchar cmd, uchar dat)
  64. {
  65.         uchar i;
  66.         TRST = 0;
  67.         TSCLK = 0;
  68.         TRST = 1;
  69.         for(i=0;i<8;i++)
  70.         {
  71.                 TSCLK = 0;
  72.                 TIO = cmd & 0x01;        //從低到高寫數據
  73.                 TSCLK = 1;
  74.                 cmd >>= 1;
  75.         }
  76.         for(i=0;i<8;i++)
  77.         {
  78.                 TSCLK = 0;
  79.                 TIO = dat & 0x01;
  80.                 TSCLK = 1;
  81.                 dat >>= 1;
  82.         }               
  83. }
  84. //讀DS1302數據
  85. uchar Read_DS1302_Data(uchar cmd)
  86. {
  87.         uchar i, dat;
  88.         TRST = 0;
  89.         TSCLK = 0;
  90.         TRST = 1;
  91.         for(i=0;i<8;i++)
  92.         {
  93.                 TSCLK = 0;
  94.                 TIO = cmd & 0x01;
  95.                 TSCLK = 1;
  96.                 cmd >>= 1;       
  97.         }
  98.         for(i=0;i<8;i++)
  99.         {
  100.                 TSCLK = 0;
  101.                 dat >>= 1;
  102.                 if(TIO) dat |= 0x80;
  103.                 TSCLK = 1;
  104.         }       
  105.         return dat;
  106. }

  107. uchar BCD_Chg_Data(uchar dat)
  108. {
  109.         uchar dat1, dat2;
  110.         dat1 = dat / 16;
  111.         dat2 = dat % 16;
  112.         dat2 = dat2 + dat1*10;       
  113.         return dat2;
  114. }
  115. void Init_DS1302()
  116. {
  117.         Write_DS1302_Data(0x8e, 0);                    //清除寫保護
  118.         Write_DS1302_Data(0x80, 0x50);        //秒
  119.         Write_DS1302_Data(0x82, 0x59);        //分
  120.         Write_DS1302_Data(0x84, 0x23);        //時
  121.         Write_DS1302_Data(0x8e, 0x80);                //打開寫保護
  122. }
  123. void main()
  124. {
  125.         uchar sec, min, hour;
  126.         Init_MAX7219();
  127.         delay(1000);
  128.         Write_Max7219(0x0f, 0x00);
  129.         Init_DS1302();
  130.         while(1)
  131.         {
  132.                 Write_DS1302_Data(0x8e, 0);       
  133.                 sec = BCD_Chg_Data(Read_DS1302_Data(0x81));         //讀寄存器
  134.                 min = BCD_Chg_Data(Read_DS1302_Data(0x83));
  135.                 hour = BCD_Chg_Data(Read_DS1302_Data(0x85));
  136.                 Write_DS1302_Data(0x8e, 0x80);
  137.                 display(hour, min, sec);
  138.                 if(hour==0 && min==0 && sec==0)
  139.                 {
  140.                         beep = 0;
  141.                         delay(1000);
  142.                         beep = 1;
  143.                 }
  144.         }
  145. }





復制代碼

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

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

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美二区乱c黑人 | 天天干天天操天天看 | 超碰在线免费公开 | 日本在线你懂的 | a级片在线观看 | 九九久视频| 日韩av在线播| 亚洲一页 | 日本黄色大片免费看 | 2018国产大陆天天弄 | 亚洲久久一区 | 99综合网 | 色欧美综合 | 亚洲成人自拍 | 啪啪av | 欧洲精品久久久久毛片完整版 | 伊人免费网 | 91天堂网| 人妖一区 | 新疆少妇videos高潮 | 国产精品区二区三区日本 | 中文字幕欧美一区 | 亚洲午夜精品一区二区三区他趣 | 国产一区二区三区四区在线观看 | 99福利视频 | 欧美日产国产成人免费图片 | 久久久亚洲| 国内精品视频一区二区三区 | 国产一区二区三区 | 国产一区二区三区 | 亚洲一二视频 | 日韩在线不卡 | 国产清纯白嫩初高生在线播放视频 | 国产亚洲精品美女久久久久久久久久 | 日韩毛片免费看 | 亚洲欧洲精品一区 | 精品精品视频 | av中文字幕网站 | 免费观看一区二区三区毛片 | 欧美成人一区二免费视频软件 | 亚洲国产自产 |