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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

51單片機 DS1302時鐘+MAX7219驅(qū)動數(shù)碼管顯示時間

查看數(shù): 5679 | 評論數(shù): 2 | 收藏 2
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時間: 2021-1-26 23:03

正文摘要:

初始時間設(shè)定為23-59-50蜂鳴器接P2^3腳,到00-00-00時,蜂鳴器響一秒 MAX7219用SPI總線和8*8靜態(tài)RAM控制數(shù)碼管,數(shù)碼管不用循環(huán)掃描動態(tài)顯示,數(shù)碼管不閃爍,無殘影。 避免了因數(shù)碼管動態(tài)掃描可能導(dǎo)致DS1302計時錯 ...

回復(fù)

ID:669393 發(fā)表于 2021-1-27 09:44
  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);           //寫入地址,即數(shù)碼管編號
  33.      Write_Max7219_byte(dat);               //寫入數(shù)據(jù),即數(shù)碼管顯示數(shù)字
  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個數(shù)碼管顯示
  41.         Write_Max7219(0x0c, 0x01);       //掉電模式:0,普通模式:1
  42.         Write_Max7219(0x0f, 0x01);       //顯示測試:1;測試結(jié)束,正常顯示: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數(shù)據(jù)
  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;        //從低到高寫數(shù)據(jù)
  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數(shù)據(jù)
  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);                    //清除寫保護(hù)
  118.         Write_DS1302_Data(0x80, 0x50);        //秒
  119.         Write_DS1302_Data(0x82, 0x59);        //分
  120.         Write_DS1302_Data(0x84, 0x23);        //時
  121.         Write_DS1302_Data(0x8e, 0x80);                //打開寫保護(hù)
  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. }





復(fù)制代碼

評分

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

查看全部評分

ID:328014 發(fā)表于 2021-1-27 01:25
完整程序能分享下嗎?

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产毛片久久久久久久久春天 | 国产精品九九 | 拍戏被cao翻了h承欢 | 日韩av资源站 | 在线电影日韩 | 中文字幕国产 | 视频在线h | 国产精品国产精品国产专区不片 | 日韩国产中文字幕 | 国产中文字幕在线 | 欧美日韩网站 | 在线观看免费观看在线91 | av黄色在线播放 | 国产精品一区二区三区在线 | 青青久久 | 精品视频一区二区三区 | 中文字幕中文字幕 | 国产高潮好爽受不了了夜夜做 | 成人午夜激情 | 国产精品久久久久久久 | 美女啪啪国产 | 日韩视频福利 | 久久伊人影院 | 黄色免费在线网址 | 欧美福利一区 | 四虎影院新网址 | av播播| 亚洲综合在线播放 | 成年免费大片黄在线观看一级 | 国产成人jvid在线播放 | 中文二区 | 亚洲瑟瑟| 欧美精品欧美精品系列 | 日本 欧美 国产 | www.狠狠操 | 欧美精品二区 | 久久99精品久久久久久秒播九色 | 国产精品视频二区三区 | 久久综合激情 | 天天看天天干 | 99久久久久久99国产精品免 |