找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3150|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

不到100行代碼,51單片機(jī)32位數(shù)碼管動(dòng)態(tài)掃描顯示

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
51單片機(jī)使用573鎖存器,32位數(shù)碼管動(dòng)態(tài)顯示,時(shí)間仿真顯示
51單片機(jī)到底能帶動(dòng)多少位數(shù)碼管呢?

本次演示proteus版本為8.6


單片機(jī)源程序如下:
  1. #include "AT89X52.H"

  2. /* */

  3. code unsigned char reg_code[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  4. code unsigned char reg_code1[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};   //陰碼  (共陰的數(shù)碼管的段碼)


  5. #define DELAY_N 1000


  6. unsigned char time[3] = {12,34,50};

  7. void show_time(void);
  8. void get_time(void);


  9. void main(void)
  10. {
  11.         unsigned short j;
  12.                
  13.         P2 = 0;
  14.         
  15.         P1_0 = 1;
  16.         P1_1 = 1;
  17.         P1_2 = 1;
  18.         
  19.         
  20.         P0 = reg_code1[1];
  21.         
  22.         
  23.         while(1)
  24.         {
  25.                 show_time();        

  26.                 get_time();    //獲取時(shí)間        
  27.         }
  28.         
  29. }


  30. void show_time(void)
  31. {
  32.         char i;
  33.         unsigned short j;
  34.         
  35.         unsigned char buf[8]={10,10,10,10,10,10,10,10};
  36.         unsigned char buf1[8]={1,2,3,4,5,6,7,8};
  37.         unsigned char buf2[8]={3,2,1,4,5,6,3,2};
  38.         
  39.         
  40.         
  41.         buf[0] = time[0]/10;
  42.         buf[1] = time[0]%10;   //除以10,得到余數(shù)
  43.         buf[3] = time[1]/10;
  44.         buf[4] = time[1]%10;
  45.         buf[6] = time[2]/10;
  46.         buf[7] = time[2]%10;
  47.         
  48.         for (i=0;i<8;i++)
  49.         {
  50.                 P2 = i<<2;
  51.         
  52.                 P1_0 = 1;   //讓P0的數(shù)據(jù)通過573
  53.                 P0 = reg_code1[buf[i]];
  54.                 P1_0 = 0;    //鎖住這個(gè)數(shù)據(jù),P0無法通過573

  55.                 //for(j=0;j<60000;j++);

  56.                
  57.                
  58.                 P1_1 = 1;
  59.                 P0 = reg_code1[buf1[i]];
  60.                 P1_1 = 0;    //鎖住這個(gè)數(shù)據(jù)

  61.         //        for(j=0;j<60000;j++);
  62.                
  63.                 P1_2 = 1;
  64.                 P0 = reg_code1[buf2[i]];
  65.                 P1_2 = 0;    //鎖住這個(gè)數(shù)據(jù)

  66.                
  67.                 for(j=0;j<200;j++);
  68.                 P0 = 0;   //熄滅所有的段
  69.                                 
  70.         }
  71. }



  72. //獲得時(shí)間
  73. void get_time(void)
  74. {
  75.         static unsigned char j;
  76.         
  77.         if(j++>50)
  78.         {
  79.                 j = 0;
  80.                 time[2]++;  //秒
  81.                 if(time[2] > 59)
  82.                 {
  83.                         time[2] = 0;
  84.                         time[1] ++;
  85.                         if(time[1] > 59)
  86.                         {
  87.                                 time[1] = 0;
  88.                                 time[0] ++;
  89.                                 if(time[0] > 23)
  90.                                 {
  91.                                         time[0] = 0;
  92.                                 }
  93.                         }
  94.                 }
  95.                
  96.         }
  97.         
  98. }
復(fù)制代碼

仿真代碼51hei下載地址:
5.32個(gè)數(shù)碼管顯示51-test.rar (99.17 KB, 下載次數(shù): 24)

評(píng)分

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

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:730135 發(fā)表于 2021-7-11 08:49 | 只看該作者
https://www.bilibili.com/video/BV1ph411Y7Hj?p=14,b站有全部的視頻講解,歡迎大家指教。
回復(fù)

使用道具 舉報(bào)

板凳
ID:57657 發(fā)表于 2021-7-11 10:54 | 只看該作者
能帶動(dòng)多少個(gè)取決于功率,10000位都可以。
回復(fù)

使用道具 舉報(bào)

地板
ID:97554 發(fā)表于 2021-7-11 16:30 | 只看該作者
不用說51,上世紀(jì)90年代接觸的KTV包房設(shè)備的點(diǎn)歌器,Intel的8031處理器,配合373鎖存,顯示30個(gè)數(shù)碼管,20個(gè)按鍵,串口數(shù)據(jù)發(fā)送接收……
回復(fù)

使用道具 舉報(bào)

5#
ID:886808 發(fā)表于 2021-9-14 19:30 來自觸屏版 | 只看該作者
npn 發(fā)表于 2021-7-11 10:54
能帶動(dòng)多少個(gè)取決于功率,10000位都可以。

看到你說的點(diǎn)歌器,我聯(lián)想到當(dāng)年用過的8031為主控芯片的程控電話。每天處理的電話無窮盡……。
同意你的觀點(diǎn),支持!!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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