標(biāo)題: 12位數(shù)碼管同時(shí)顯示單片機(jī)源代碼 仿真圖 數(shù)碼管閃爍問(wèn)題? [打印本頁(yè)]

作者: centch    時(shí)間: 2023-3-18 17:33
標(biāo)題: 12位數(shù)碼管同時(shí)顯示單片機(jī)源代碼 仿真圖 數(shù)碼管閃爍問(wèn)題?
利用片外RAM 擴(kuò)展12位數(shù)碼管,同時(shí)顯示,仿真不顯示,
實(shí)際電路顯示,但數(shù)碼管閃爍。求助,數(shù)碼管如何才能不
閃爍?程序有問(wèn)題?還是這種擴(kuò)展方式不行?求教各位。多謝了。

單片機(jī)源程序如下:
  1. #include<reg52.h>
  2. #include<absacc.h>
  3. #define hc273_U3 XBYTE[0x1fff]        //Y0:0x1fff(無(wú)關(guān)位用1),U1 74HC273 ,段碼        四位
  4. #define hc273_U6 XBYTE[0x7fff]        //Y3:0x7fff(無(wú)關(guān)位用1),U6 74Hc273 ,位選
  5. #define hc273_U5 XBYTE[0x5fff]        //Y2:0x5fff(無(wú)關(guān)位用1),U3 74HC273 ,段碼        四位
  6. #define hc273_U4 XBYTE[0x3fff]  //Y1:0x5fff(無(wú)關(guān)位用1),U1 74HC273 ,段碼        四位

  7. unsigned char code c[10] = {0x81,0xcf,0x92,0x86,0xcc,0xa4,0xa0,0x8f,0x80,0x84}; // 數(shù)碼管0-9段碼 共陽(yáng)數(shù)碼管(部分改動(dòng))
  8. unsigned char code w[5] = {0xfe,0xfd,0xfb,0xf7};//數(shù)碼管位碼
  9.                               
  10. void main()
  11. {
  12.   unsigned int t;
  13.   unsigned char i;
  14.   unsigned char PA = 0x01;
  15.   unsigned char a[4] = {2,3,4,5};
  16.   unsigned char b[4] = {7,8,0,9};
  17.   unsigned char e[4] = {1,6,8,3};
  18.   while(1)
  19.   {
  20.    
  21.         for(i=0;i<4;i++)
  22.         {
  23.          hc273_U3 = c[a[i]];
  24.          hc273_U4 = c[b[i]];
  25.          hc273_U5 = c[e[i]];
  26.          hc273_U6 = ~PA;
  27.      for(t=0;t<1000;t++);
  28.          PA<<=1;
  29.         }
  30.         PA = 0x01;
  31.   }
  32. }
復(fù)制代碼


1.jpg (370.01 KB, 下載次數(shù): 94)

1.jpg

作者: wulin    時(shí)間: 2023-3-18 20:57
給你一個(gè)示例參考
16位數(shù)碼管萬(wàn)年歷1302 仿真.rar (133.06 KB, 下載次數(shù): 23)


作者: centch    時(shí)間: 2023-3-18 21:39
wulin 發(fā)表于 2023-3-18 20:57
給你一個(gè)示例參考

多謝,下載來(lái)參考一下。
作者: xianfajushi    時(shí)間: 2023-3-18 21:52
如果使用排阻的話并且P0口又沒(méi)做其他事情的話用573毫無(wú)意義P0口應(yīng)接排阻
作者: centch    時(shí)間: 2023-3-18 22:24
xianfajushi 發(fā)表于 2023-3-18 21:52
如果使用排阻的話并且P0口又沒(méi)做其他事情的話用573毫無(wú)意義P0口應(yīng)接排阻

P0口為數(shù)據(jù)與地址(第位)復(fù)用口,273觸發(fā)器。我只畫了部分電路,按鍵復(fù)用P0口沒(méi)有畫出。
作者: centch    時(shí)間: 2023-3-18 22:25
xianfajushi 發(fā)表于 2023-3-18 21:52
如果使用排阻的話并且P0口又沒(méi)做其他事情的話用573毫無(wú)意義P0口應(yīng)接排阻

此圖應(yīng)屬于總線控制范疇
作者: xianfajushi    時(shí)間: 2023-3-19 08:42
centch 發(fā)表于 2023-3-18 22:25
此圖應(yīng)屬于總線控制范疇

273和245同屬鎖存器,且273已經(jīng)分別控制了直接P0即可245可以不用。
作者: a185980800    時(shí)間: 2023-3-19 23:37
此回答來(lái)自gpt 3.5閃爍問(wèn)題可能來(lái)自于數(shù)據(jù)和位選信號(hào)同時(shí)改變導(dǎo)致的,可以考慮在更改數(shù)據(jù)之前先將位選信號(hào)置位,然后再更改數(shù)據(jù),最后才將位選信號(hào)清零。修改程序如下所示:  while (1) {     for (i = 0; i < 4; i++)     {         hc273_U6 = w[i]; // 先置位選信號(hào)         hc273_U3 = c[a[i]];         hc273_U4 = c[b[i]];         hc273_U5 = c[e[i]];         for (t = 0; t < 1000; t++);         hc273_U6 = 0xFF; // 清除位選信號(hào)     } } 此外,還需要注意以下幾點(diǎn)。  在使用絕對(duì)地址訪問(wèn)外部RAM時(shí),需要確保地址線連接正確,否則會(huì)導(dǎo)致無(wú)法訪問(wèn)到RAM中的數(shù)據(jù)。  如果數(shù)碼管閃爍問(wèn)題依然存在,可以考慮增加延時(shí)時(shí)間或者使用定時(shí)器實(shí)現(xiàn)定時(shí)刷新。
作者: xianfajushi    時(shí)間: 2023-3-20 05:32
用3片鎖存器分別控制段=控制位只有4速度可以說(shuō)是很快的時(shí)間很好安排,若段是共用的則是控制位為12速度稍慢時(shí)間也不是不能安排,因?yàn)殒i存器是并行數(shù)據(jù),若是用串行傳送數(shù)據(jù)則更慢,數(shù)碼管閃爍原因基本就是時(shí)間安排問(wèn)題。
作者: centch    時(shí)間: 2023-3-20 21:53
a185980800 發(fā)表于 2023-3-19 23:37
此回答來(lái)自gpt 3.5閃爍問(wèn)題可能來(lái)自于數(shù)據(jù)和位選信號(hào)同時(shí)改變導(dǎo)致的,可以考慮在更改數(shù)據(jù)之前先將位選信號(hào) ...

多謝您的指點(diǎn),按照您說(shuō)的方法,修改了程序,閃爍還存在。我再試試定時(shí)中斷。
作者: centch    時(shí)間: 2023-3-20 21:55
xianfajushi 發(fā)表于 2023-3-19 08:42
273和245同屬鎖存器,且273已經(jīng)分別控制了直接P0即可245可以不用。

由于電流超出,用245做了電流緩沖。
作者: centch    時(shí)間: 2023-3-20 21:57
xianfajushi 發(fā)表于 2023-3-20 05:32
用3片鎖存器分別控制段=控制位只有4速度可以說(shuō)是很快的時(shí)間很好安排,若段是共用的則是控制位為12速度稍慢 ...

可能需要嚴(yán)格的時(shí)序,數(shù)碼管才會(huì)不閃,調(diào)試中;多謝。
作者: xianfajushi    時(shí)間: 2023-3-26 08:51


作者: xianfajushi    時(shí)間: 2023-3-26 18:10
本帖最后由 xianfajushi 于 2023-3-27 09:23 編輯
centch 發(fā)表于 2023-3-20 21:55
由于電流超出,用245做了電流緩沖。

數(shù)字芯片中74系列07緩沖器有40毫安電流可以選用。如我上圖電路就可以使用緩沖器擴(kuò)大電流給12位數(shù)碼段,而位電流則直接273夠用不需擴(kuò)流當(dāng)然要擴(kuò)流也是可以的,這樣算起來(lái)也就使用8個(gè)緩沖器,或許會(huì)問(wèn)74*07是對(duì)電源開(kāi)集電路,對(duì)于共陰數(shù)碼管接位直接上即可,對(duì)于段怎么弄,很簡(jiǎn)單的加上拉電阻即可,若不滿意那就復(fù)雜些添加PNP基極電阻4.7K射極限流電阻247即可從仿真可以調(diào)節(jié)射極電阻大小值達(dá)到調(diào)節(jié)電流目標(biāo)。

作者: centch    時(shí)間: 2023-3-30 16:16
有道理,實(shí)驗(yàn)一下,多謝。
作者: 15031773670    時(shí)間: 2023-4-9 20:32
哈哈。我只想說(shuō)用1640根本就沒(méi)有那么多的麻煩事。TM1640可以驅(qū)動(dòng)1-16位也不會(huì)閃。也省單片機(jī)的資源。之前發(fā)過(guò)一個(gè)文章。應(yīng)該里面有代碼。
作者: xianfajushi    時(shí)間: 2023-4-9 20:54
我初學(xué)編程時(shí)就到論壇1是看看別人是怎么寫的,2是有機(jī)會(huì)就回復(fù)力所能及的,有一次好像是回復(fù)不怎樣,有人奚落我一邊呆著去,我問(wèn)什么意思,答“哪涼快哪呆著去”,然而這種人我覺(jué)得不值一提,沒(méi)那么了不起,反而是沒(méi)見(jiàn)識(shí)鄙陋的表現(xiàn),其實(shí)學(xué)單片機(jī)我也是一樣來(lái)看看別人是怎么寫的,不是賦值粘貼的,最重要的是自己思考推敲才要緊,其實(shí)這種驅(qū)動(dòng)沒(méi)什么特別的,多動(dòng)腦子就有辦法,很簡(jiǎn)單的,不是什么很難的時(shí)序。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1