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

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

QQ登錄

只需一步,快速開始

搜索
查看: 2627|回復(fù): 16
收起左側(cè)

單片機(jī)數(shù)碼管顯示程序 為什么1,2,5沒有顯示出來?而且順序是亂的

[復(fù)制鏈接]
ID:278457 發(fā)表于 2022-9-1 01:41 | 顯示全部樓層 |閱讀模式
調(diào)不出來
1.png
3.png
2.png
4.png
回復(fù)

使用道具 舉報(bào)

ID:824490 發(fā)表于 2022-9-1 07:36 | 顯示全部樓層
無語了~~~~這么個(gè)問題連續(xù)發(fā)了這么多貼。
你的代碼 有問題!
1、573的OE腳本來是為消隱而生的,你把它接地了。代碼中的消隱又是錯(cuò)的!
2、573的LE腳是電平觸了,不是邊沿觸發(fā),所以你的時(shí)序也有問題!
這個(gè)是匹配你電路圖的代碼,可以正常顯示,你試試:

  1. #include <reg51.h>
  2. #include <stdio.h>
  3. #include <intrins.h>

  4. sbit d1=P2^0;       //鎖存段碼
  5. sbit d2=P2^1;      // 鎖存位選

  6. unsigned  char dis_buf[8];  //顯示緩存
  7. unsigned char dig;            //位選
  8. unsigned code segout[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};    //0--9共陽段碼表

  9. void disp_8_num(void);

  10. void main(void)
  11. {
  12.     unsigned char i;
  13.     while (1)
  14.   {
  15.   
  16.     for(i=0;i<8;i++)  dis_buf[i]=i; //緩存刷新:01234567
  17.    
  18.      disp_8_num();  //顯示一幀
  19.     }
  20. }

  21. void disp_8_num()
  22. {
  23.       unsigned char i,j;   
  24.   
  25.      dig=0xfe;  //從第一位開始掃顯
  26.       for (i=0;i<8;i++)  //共8個(gè)位的數(shù)碼管
  27.       {
  28.       
  29.         P0=segout[dis_buf[i]];   //送段碼
  30.         d1=1;        
  31.         d1=0;
  32.      
  33.        P0=dig;    //送位碼      
  34.        d2=1;      
  35.        d2=0;

  36.        j=60;     //延時(shí)以穩(wěn)定顯示
  37.        while(j--);

  38.        P0=0xff;    //消隱位碼,段碼和位碼2選1或全選都可以
  39.        d2=1;
  40.        d2=0;
  41.       
  42.        P0=0x00;    //消隱段碼
  43.        d1=1;
  44.        d1=0;     
  45.         
  46.        dig= _crol_(dig,1); //準(zhǔn)備下一位的位碼
  47.         }
  48.   }
復(fù)制代碼



回復(fù)

使用道具 舉報(bào)

ID:824490 發(fā)表于 2022-9-1 07:50 | 顯示全部樓層
讓你把代碼或工程發(fā)上來也不做。。。。
也就是我閑的蛋疼,才會(huì)花時(shí)間畫圖、敲代碼、仿真了。。
這個(gè)是Proteus8.13的仿真工程,你看一下。

74HC573.rar (19.45 KB, 下載次數(shù): 5)

回復(fù)

使用道具 舉報(bào)

ID:155507 發(fā)表于 2022-9-1 08:00 | 顯示全部樓層
你的位碼不對(duì)

  1. #include <reg52.h>
  2. #define uchar unsigned char
  3. #define uint  unsigned int
  4. #define LEDPort P0
  5. uchar code duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00}; //數(shù)碼管段碼選表
  6. uchar code wei[] ={0xFE ,0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F};         //數(shù)碼管位碼
  7. sbit DU = P2^0;
  8. sbit WE = P2^1;

  9. void delay(int z)
  10. {
  11.         int x,y;
  12.         for(x=50;x>0;x--)
  13.             for(y=z;y>0;y--);
  14. }

  15. void main()
  16. {
  17.         while(1)  
  18.         {       
  19.         WE = 1;
  20.         LEDPort = wei[0];
  21.         WE = 0;
  22.         DU = 1;
  23.         LEDPort = duan[ 1];
  24.         DU = 0;
  25.         delay(2);
  26.        
  27.         WE = 1;
  28.         LEDPort = wei[1];
  29.         WE = 0;
  30.         DU = 1;
  31.         LEDPort = duan[ 2 ];
  32.         DU = 0;
  33.         delay(2);
  34.        
  35.         WE = 1;
  36.         LEDPort = wei[2];
  37.         WE = 0;
  38.         DU = 1;
  39.         LEDPort = duan[ 3];
  40.         DU = 0;
  41.         delay(2);
  42.        
  43.         WE = 1;
  44.         LEDPort = wei[3];
  45.         WE = 0;
  46.         DU = 1;
  47.         LEDPort = duan[ 4];
  48.         DU = 0;
  49.         delay(2);
  50.        
  51.         WE = 1;
  52.         LEDPort = wei[4];
  53.         WE = 0;
  54.         DU = 1;
  55.         LEDPort = duan[ 5 ];
  56.         DU = 0;
  57.         delay(2);
  58.        
  59.         WE = 1;
  60.         LEDPort = wei[5];
  61.         WE = 0;
  62.         DU = 1;
  63.         LEDPort = duan[ 6];
  64.         DU = 0;
  65.         delay(2);        
  66.        
  67.         WE = 1;
  68.         LEDPort = wei[6];
  69.         WE = 0;
  70.         DU = 1;
  71.         LEDPort = duan[ 7 ];
  72.         DU = 0;
  73.         delay(2);
  74.        
  75.         WE = 1;
  76.         LEDPort = wei[7];
  77.         WE = 0;
  78.         DU = 1;
  79.         LEDPort = duan[ 8];
  80.         DU = 0;
  81.         delay(2);
  82.         }
  83. }



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

使用道具 舉報(bào)

ID:121859 發(fā)表于 2022-9-1 11:02 | 顯示全部樓層
只要共陰共陽沒有弄錯(cuò),先送位碼,再送段碼,就會(huì)正確顯示,不用消隱也可以的。
回復(fù)

使用道具 舉報(bào)

ID:824490 發(fā)表于 2022-9-1 11:06 | 顯示全部樓層
angmall 發(fā)表于 2022-9-1 08:00
你的位碼不對(duì)

你這個(gè)代碼,我在Proteus中運(yùn)行,顯示 亂碼。。
因?yàn)?73的LE是高電平觸發(fā)鎖存的,所以,你這個(gè)時(shí)序有點(diǎn)不對(duì):

        WE = 1;     //運(yùn)行之后
                          //這時(shí)573已發(fā)生鎖存,存的是上一次的LEDPort值
        LEDPort = wei[0]; //這個(gè)值要等到WE或DU為1時(shí)才會(huì)被鎖存。
        WE = 0;
        DU = 1;               //按邏輯,這個(gè)運(yùn)行過后LEDPort = wei[0];會(huì)被鎖存到段驅(qū)573里
        LEDPort = duan[ 1]; //而這個(gè)值會(huì)被鎖存到下一位的位驅(qū)573中。
        DU = 0;
        delay(2);


  歡迎探討~~
回復(fù)

使用道具 舉報(bào)

ID:824490 發(fā)表于 2022-9-1 11:14 | 顯示全部樓層
zhxiufan 發(fā)表于 2022-9-1 11:02
只要共陰共陽沒有弄錯(cuò),先送位碼,再送段碼,就會(huì)正確顯示,不用消隱也可以的。

“。。。。先送位碼,再送段碼。。。。。”

不用消隱的話,你顯示12345678時(shí), 顯示第1位“1”之后,第2位在刷顯時(shí)也會(huì)顯示“1”,之后才顯示“2”。
你分析一下~或單步跟蹤一下就能看出來了。
回復(fù)

使用道具 舉報(bào)

ID:278457 發(fā)表于 2022-9-1 13:20 | 顯示全部樓層
謝謝各位了
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2022-9-1 15:33 | 顯示全部樓層
無標(biāo)題.jpg

  1. #include <reg52.h>
  2. unsigned char code duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00}; //數(shù)碼管段碼
  3. sbit DU = P2^0;
  4. sbit WE = P2^1;

  5. void delay_ms(unsigned int t)//12T@12MHz
  6. {
  7.         unsigned int i,j;
  8.         for(i=t;i>0;i--)
  9.                 for(j=120;j>0;j--);
  10. }

  11. void main()
  12. {
  13.         unsigned char i;
  14.         while(1)  
  15.         {        
  16.                 P0=0x00;       DU=1;DU=0;//消隱       
  17.                 P0=~(0x01<<i); WE=1;WE=0;//段碼
  18.                 P0=duan[i];    DU=1;DU=0;//位碼
  19.                 i=++i%8;//循環(huán)計(jì)數(shù)
  20.                 delay_ms(1);//延時(shí)
  21.         }
  22. }

復(fù)制代碼



回復(fù)

使用道具 舉報(bào)

ID:155507 發(fā)表于 2022-9-1 18:48 | 顯示全部樓層
名字不是重點(diǎn) 發(fā)表于 2022-9-1 11:06
你這個(gè)代碼,我在Proteus中運(yùn)行,顯示 亂碼。。
因?yàn)?73的LE是高電平觸發(fā)鎖存的,所以,你這個(gè)時(shí)序有點(diǎn) ...

如果你比較 LE 和 CP 兩個(gè) Pin 你會(huì)發(fā)現(xiàn)它們是完全不同的,74HC573 只需要一個(gè)高電平來激活 D 鎖存器,而 74HC374 需要一個(gè)低到高電平的時(shí)鐘來鎖存 D 觸發(fā)器。
573:“當(dāng) LATCH ENABLE (LE) 引腳為高電平時(shí),Q 輸出跟隨 D 輸入。當(dāng) LE 變?yōu)榈碗娖綍r(shí),D 輸入端的數(shù)據(jù)將保留在輸出端”
574:“D 輸入的數(shù)據(jù)......在 CLOCK (CK) 輸入的正向轉(zhuǎn)換時(shí)傳輸?shù)?Q 輸出。”
回復(fù)

使用道具 舉報(bào)

ID:824490 發(fā)表于 2022-9-1 21:34 | 顯示全部樓層
angmall 發(fā)表于 2022-9-1 18:48
如果你比較 LE 和 CP 兩個(gè) Pin 你會(huì)發(fā)現(xiàn)它們是完全不同的,74HC573 只需要一個(gè)高電平來激活 D 鎖存器,而 ...

所以,573是電平觸發(fā)鎖存,在LE高電平之前,數(shù)據(jù)必需先準(zhǔn)備好:
  P0=data;  // 先備好數(shù)據(jù)
  LE=1;    // LE高電平時(shí),鎖存使能,P0口數(shù)據(jù)(即data)被存入573內(nèi)部,
                 //如果OE被接地,573此時(shí)的輸出將會(huì)是data;OE是高則573輸出高阻
  LE=0;    // LE低電平時(shí),鎖存失能,573內(nèi)部的數(shù)據(jù)不再受到P0口電平的影響,即保持原數(shù)據(jù)
而574是邊沿觸發(fā)鎖存,(在CP的上升沿,將D的狀態(tài)傳到Q),所以574要這樣(類似74HC595):
  CP=0;    // 拉低CP
  P0=data;//傳數(shù)據(jù)
  CP=1;      //拉高CP,產(chǎn)生一個(gè)上升沿
如果是這樣:
  P0=data;//傳數(shù)據(jù)
  CP=0;    // 拉低CP
  //// //可能在此處產(chǎn)生中斷
  CP=1;      //拉高CP,產(chǎn)生一個(gè)上升沿
也可以,但代碼不強(qiáng)壯,無法保證在CP=0之后的某種中斷,改變P0的值,當(dāng)中斷恢復(fù)后的CP=1,鎖存了錯(cuò)誤的數(shù)據(jù)
回復(fù)

使用道具 舉報(bào)

ID:278457 發(fā)表于 2022-9-2 01:45 | 顯示全部樓層
調(diào)試成功!太感謝了愛你們
回復(fù)

使用道具 舉報(bào)

ID:278457 發(fā)表于 2022-9-2 01:46 | 顯示全部樓層
angmall 發(fā)表于 2022-9-1 08:00
你的位碼不對(duì)

特別感謝你
回復(fù)

使用道具 舉報(bào)

ID:1023753 發(fā)表于 2022-9-2 08:02 | 顯示全部樓層
名字不是重點(diǎn) 發(fā)表于 2022-9-1 11:06
你這個(gè)代碼,我在Proteus中運(yùn)行,顯示 亂碼。。
因?yàn)?73的LE是高電平觸發(fā)鎖存的,所以,你這個(gè)時(shí)序有點(diǎn) ...

他應(yīng)該不需要鎖存  只是當(dāng)驅(qū)動(dòng)提供電流用
回復(fù)

使用道具 舉報(bào)

ID:883242 發(fā)表于 2022-9-2 13:35 | 顯示全部樓層

也感謝你
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2022-9-2 14:25 | 顯示全部樓層
haiyang201 發(fā)表于 2022-9-2 08:02
他應(yīng)該不需要鎖存  只是當(dāng)驅(qū)動(dòng)提供電流用

不鎖存,P0怎么復(fù)用分別控制段碼和位碼?你有什么高招分享出來。
回復(fù)

使用道具 舉報(bào)

ID:278457 發(fā)表于 2022-9-5 02:50 | 顯示全部樓層
angmall 發(fā)表于 2022-9-1 08:00
你的位碼不對(duì)

我調(diào)試出來了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产成人一区二区三区久久久 | 日韩精品一区二区三区在线播放 | 欧美一区二区三区大片 | 久久这里只有精品首页 | 看a网站 | 美日韩精品 | 免费黄色录像视频 | 免费久久精品 | 免费视频99 | 在线观看av中文字幕 | www.亚洲视频| 亚洲精品九九 | 欧美日韩在线视频一区 | 一级黄色录像片子 | 久久亚洲欧美日韩精品专区 | 婷婷免费视频 | 国内精品久久久久 | 亚洲黄色视屏 | 少妇一级淫片免费放播放 | 午夜视频一区二区 | 色婷婷亚洲一区二区三区 | 蜜臀91视频 | 中文字幕97| 欧美888 | 国产 日韩 欧美 中文 在线播放 | 日韩成人精品在线 | 国产激情一区二区三区 | 91av在线免费播放 | www.狠狠干 | 波多野结衣av中文字幕 | 在线观看亚洲精品 | 久久男人天堂 | 国产精品美女视频 | 网色| 精品一区二区在线观看 | 午夜视频免费在线观看 | 精品国产青草久久久久福利 | 成人影院在线观看 | 精品国产一区二区三区日日嗨 | av手机在线看| 国产精品2区 |