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

QQ登錄

只需一步,快速開始

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

關(guān)于總線驅(qū)動(dòng)數(shù)碼管問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
為什么用總線方式不能驅(qū)動(dòng)數(shù)碼管?請(qǐng)內(nèi)行人指導(dǎo)下,程序如下:
#include <intrins.h>
#include <absacc.h>
#define uchar unsigned char
#define uint unsigned int

#define Lcd_com0   XBYTE[0xfff8]
#define Lcd_com1   XBYTE[0xfff9]
#define Lcd_com2   XBYTE[0xfffA]
#define Lcd_com3   XBYTE[0xfffB]
#define Lcd_com4   XBYTE[0xfffC]
#define Lcd_com5   XBYTE[0xfffD]
#define Lcd_com6   XBYTE[0xfffE]
#define Lcd_com7   XBYTE[0xfffF]


bit flag_2ms;
sbit led=P1^0;
uchar code DSY_CODE[]={        0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 };

void T0int(void)
{
         TMOD=0X01;
        TH0=(65536-2000)/256;
        TL0=(65536-2000)%256;
        EA=ET0=TR0=1;
}

void T0sev(void) interrupt 1
  {
    TH0=(65536-2000)/256;
        TL0=(65536-2000)%256;
        flag_2ms=1;
  }

void display(void)
  {
   static uchar k;
   switch(k)
     {
      case 0:Lcd_com0=0xff;Lcd_com0=DSY_CODE[k];break;
          case 1:Lcd_com1=0xff;Lcd_com1=DSY_CODE[k];break;
          case 2:Lcd_com2=0xff;Lcd_com2=DSY_CODE[k];break;
          case 3:Lcd_com3=0xff;Lcd_com3=DSY_CODE[k];break;
          case 4:Lcd_com4=0xff;Lcd_com4=DSY_CODE[k];break;
          case 5:Lcd_com5=0xff;Lcd_com5=DSY_CODE[k];break;
          case 6:Lcd_com6=0xff;Lcd_com6=DSY_CODE[k];break;
          case 7:Lcd_com7=0xff;Lcd_com7=DSY_CODE[k];break;
  
           }
   k=++k%8;
  }

void main(void)
{        uint cnt;
    T0int();        
        while(1)
         {  
          if(flag_2ms)
            {
                 flag_2ms=0;
                 display();
                 if(++cnt>200){led=!led;cnt=0;}
                }

         }
}

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

使用道具 舉報(bào)

沙發(fā)
ID:328014 發(fā)表于 2021-3-21 20:53 | 只看該作者
缺電路圖 無法分析吧?有大神能猜測(cè)出這是用的什么驅(qū)動(dòng)芯片嗎?
回復(fù)

使用道具 舉報(bào)

板凳
ID:275826 發(fā)表于 2021-3-21 21:58 | 只看該作者
51hei團(tuán)團(tuán) 發(fā)表于 2021-3-21 20:53
缺電路圖 無法分析吧?有大神能猜測(cè)出這是用的什么驅(qū)動(dòng)芯片嗎?

就是74LS373和74LS138

Snipaste_2021-03-21_21-56-02.png (96.77 KB, 下載次數(shù): 104)

Snipaste_2021-03-21_21-56-02.png
回復(fù)

使用道具 舉報(bào)

地板
ID:275826 發(fā)表于 2021-3-21 22:00 | 只看該作者
51hei團(tuán)團(tuán) 發(fā)表于 2021-3-21 20:53
缺電路圖 無法分析吧?有大神能猜測(cè)出這是用的什么驅(qū)動(dòng)芯片嗎?

你好,就是74373和74138
回復(fù)

使用道具 舉報(bào)

5#
ID:275826 發(fā)表于 2021-3-21 22:02 | 只看該作者
這是電路圖

Snipaste_2021-03-21_21-56-02.png (96.77 KB, 下載次數(shù): 116)

Snipaste_2021-03-21_21-56-02.png
回復(fù)

使用道具 舉報(bào)

6#
ID:213173 發(fā)表于 2021-3-22 06:24 | 只看該作者

樓主的硬件電路和軟件的設(shè)計(jì)都有問題,按樓主的意圖修改如下:


  1. #include <AT89X52.H>
  2. #include <intrins.h>
  3. #include <absacc.h>
  4. #define uchar unsigned char
  5. #define uint unsigned int

  6. #define Lcd_com   P0
  7. //#define Lcd_com0   XBYTE[0xfff8]
  8. //#define Lcd_com1   XBYTE[0xfff9]
  9. //#define Lcd_com2   XBYTE[0xfffA]
  10. //#define Lcd_com3   XBYTE[0xfffB]
  11. //#define Lcd_com4   XBYTE[0xfffC]
  12. //#define Lcd_com5   XBYTE[0xfffD]
  13. //#define Lcd_com6   XBYTE[0xfffE]
  14. //#define Lcd_com7   XBYTE[0xfffF]

  15. sbit led =P1^0;
  16. sbit wela=P1^1;                        //位
  17. sbit dula=P1^2;                        //段

  18. bit flag_2ms;

  19. uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

  20. void T0int(void)
  21. {
  22.         TMOD=0X01;
  23.         TH0=(65536-2000)/256;
  24.         TL0=(65536-2000)%256;
  25.         EA=ET0=TR0=1;
  26. }

  27. void T0sev(void) interrupt 1
  28. {
  29.         TH0=(65536-2000)/256;
  30.         TL0=(65536-2000)%256;
  31.         flag_2ms=1;
  32. }

  33. void display(void)
  34. {
  35.         static uchar k;
  36.         wela=0;
  37.         Lcd_com=DSY_CODE[k];
  38.         dula=1;
  39.         dula=0;
  40.         Lcd_com=k;
  41.         wela=1;
  42.         k=++k%8;
  43. }

  44. void main(void)
  45. {
  46.         uint cnt;
  47.         T0int();
  48.         while(1)
  49.         {  
  50.                 if(flag_2ms)
  51.                 {
  52.                         flag_2ms=0;
  53.                         display();
  54.                         if(++cnt>200)
  55.                         {
  56.                                 led=!led;
  57.                                 cnt=0;
  58.                         }
  59.                 }
  60.         }
  61. }
復(fù)制代碼



回復(fù)

使用道具 舉報(bào)

7#
ID:275826 發(fā)表于 2021-3-22 11:49 | 只看該作者
wulin 發(fā)表于 2021-3-22 06:24
樓主的硬件電路和軟件的設(shè)計(jì)都有問題,按樓主的意圖修改如下:

謝謝。我希望采用總線擴(kuò)展形式驅(qū)動(dòng),你這個(gè)好像是端口分時(shí)驅(qū)動(dòng)方式。但還是謝謝你
回復(fù)

使用道具 舉報(bào)

8#
ID:332444 發(fā)表于 2021-3-22 15:26 | 只看該作者
鎖存器用于存儲(chǔ)段值或存儲(chǔ)位值道理都是一樣的,所以2個(gè)電路圖都可以實(shí)現(xiàn).
回復(fù)

使用道具 舉報(bào)

9#
ID:275826 發(fā)表于 2021-3-22 16:02 | 只看該作者
xianfajushi 發(fā)表于 2021-3-22 15:26
鎖存器用于存儲(chǔ)段值或存儲(chǔ)位值道理都是一樣的,所以2個(gè)電路圖都可以實(shí)現(xiàn).

想用總線驅(qū)動(dòng)方式,程序會(huì)簡單很多
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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