找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機(jī)想實(shí)現(xiàn)兩位數(shù)碼管00-FF,兩個數(shù)字好像不能同時(shí)顯示似的,請大神幫忙看看程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
2黑幣
本人初學(xué)51單片機(jī)(用的慧靜電子HL-1 89C52開發(fā)板),只會數(shù)碼管0-9顯示,兩位,三位顯示不會玩,自己寫數(shù)碼管00-FF程序如下,D0-D7對應(yīng)單片機(jī)P0^0-P0^7,這個程序功能是可以實(shí)現(xiàn),但是數(shù)碼管變成先顯示10位,消失,再顯示個位,兩個數(shù)字好像不能同時(shí)顯示似的,希望高人指點(diǎn),幫忙看看程序那里不對,謝謝!

1.png (84.52 KB, 下載次數(shù): 85)

1.png

B.png (13.26 KB, 下載次數(shù): 77)

B.png

最佳答案

查看完整內(nèi)容

樓主這樣寫個位只能顯示10毫秒,十位顯示約1秒,視覺只能看的十位,個位微亮或看不到。改一下:
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:213173 發(fā)表于 2020-9-21 08:13 | 只看該作者
樓主這樣寫個位只能顯示10毫秒,十位顯示約1秒,視覺只能看的十位,個位微亮或看不到。改一下:
  1. #include<reg52.h>

  2. #define uint  unsigned int
  3. #define uchar unsigned char

  4. sbit dula=P2^6;
  5. sbit wela=P2^7;

  6. unsigned char code table[]={//共陰數(shù)碼管段碼"0~f-."
  7.                 0x3f,0x06,0x5b,0x4f,
  8.                 0x66,0x6d,0x7d,0x07,
  9.                 0x7f,0x6f,0x77,0x7c,
  10.                 0x39,0x5e,0x79,0x71,0x40,0x80};

  11. void delayms(uint xms)
  12. {
  13.         uint i,j;
  14.         for(i=xms;i>0;i--)
  15.                 for(j=110;j>0;j--);
  16. }

  17. void main()
  18. {
  19.         unsigned char i,j,k[2];
  20.         dula=0;
  21.         wela=0;
  22.         while(1)
  23.         {
  24.                 k[0]=table[j/16];
  25.                 k[1]=table[j%16];
  26.                 P0=0x00;dula=1;dula=0;//消隱
  27.                 if(i%2==0)// i=偶數(shù)顯示十位
  28.                 {
  29.                         P0=0xef;wela=1;wela=0;
  30.                         P0=k[0];dula=1;dula=0;               
  31.                 }
  32.                 else                // i=奇數(shù)數(shù)顯示個位
  33.                 {
  34.                         P0=0xdf;wela=1;wela=0;
  35.                         P0=k[1];dula=1;dula=0;               
  36.                 }
  37.                 i++;
  38.                 if(i>=200)//約1s
  39.                 {
  40.                         i=0;                       
  41.                         if(++j>=255)
  42.                                 j=0;
  43.                 }
  44.                 delayms(5);
  45.         }
  46. }

復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

板凳
ID:818740 發(fā)表于 2020-9-21 21:36 | 只看該作者
本帖最后由 zhujiangzhang 于 2020-9-21 21:45 編輯
wulin 發(fā)表于 2020-9-21 14:51
樓主這樣寫個位只能顯示10毫秒,十位顯示約1秒,視覺只能看的十位,個位微亮或看不到。改一下:

太棒了,真可以實(shí)現(xiàn)了,大概思路是什么?
              
回復(fù)

使用道具 舉報(bào)

地板
ID:213173 發(fā)表于 2020-9-22 05:58 | 只看該作者
zhujiangzhang 發(fā)表于 2020-9-21 21:36
太棒了,真可以實(shí)現(xiàn)了,大概思路是什么?

所謂動態(tài)顯示就是逐位分時(shí)顯示。受delayms(5)限制,主循環(huán)周期被約束在約5ms,也就是前5ms顯示十位,后5ms顯示個位,如此反復(fù)。由于速度很塊,人眼視覺殘留效應(yīng)感覺是同時(shí)顯示。如果顯示的位數(shù)多,每位顯示的時(shí)間要縮短,只要掌握 位數(shù)*每位顯示的時(shí)間<20ms,就不會感到閃爍。
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

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