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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3869|回復: 6
收起左側

數碼管有鬼影問題

[復制鏈接]
ID:228371 發表于 2017-10-15 11:22 | 顯示全部樓層 |閱讀模式
那個老師知道。或者那個大佬明白給我講解一下謝謝。為什么數碼管輸入5678顯示6785;5還有鬼影。

  1. #include <reg52.h>
  2. #include <intrins.h>

  3. #define uchar unsigned char
  4. #define uint unsigned  int
  5. #define AT24C02_ADDR  0xa0
  6. #define PCF8591_ADDR  0X90
  7. #define  MAIN_Fosc    11.0592
  8. sbit we = P2^7;
  9. sbit du = P2^6;
  10. sbit SDA = P2^0;
  11. sbit SCL = P2^1;


  12. void delay_5us()  
  13. {
  14.         _nop_();
  15. }
  16. void delay(uint ms)
  17. {
  18. uchar i;
  19.   do
  20.   {
  21.     i = MAIN_Fosc / 9600;
  22.            while(--i);
  23.   }
  24.   while(--ms);
  25. }
  26. unsigned char leddata[]={

  27.                 0x3F,  //"0"
  28.                 0x06,  //"1"
  29.                 0x5B,  //"2"
  30.                 0x4F,  //"3"
  31.                 0x66,  //"4"
  32.                 0x6D,  //"5"
  33.                 0x7D,  //"6"
  34.                 0x07,  //"7"
  35.                 0x7F,  //"8"
  36.                 0x6F,  //"9"
  37.                 0x77,  //"A"
  38.                 0x7C,  //"B"
  39.                 0x39,  //"C"
  40.                 0x5E,  //"D"
  41.                 0x79,  //"E"
  42.                 0x71,  //"F"
  43.                 0x76,  //"H"
  44.                 0x38,  //"L"
  45.                 0x37,  //"n"
  46.                 0x3E,  //"u"
  47.                 0x73,  //"P"
  48.                 0x5C,  //"o"
  49.                 0x40,  //"-"
  50.                 0x80,  //??
  51.                 0x00  //???

  52.                          };
  53. unsigned char ledbit[]={
  54.                                                                                                         0xfe, //w1
  55.                                                                                                         0xfd, //w2
  56.                                                                                                         0xfb, //w3
  57.                                                                                                         0xf7, //w4
  58.                                                                                                         0xef, //w5
  59.                                                                                                         0xdf, //w6
  60.                                                                                                         0xbf, //w7
  61.                                                                                                         0x7f, //w8
  62.                       };
  63. void display(uint i)
  64. {
  65.    uint b,s,g,q;
  66.    q = i/1000;
  67.    b = i%1000/100;
  68.    s = i%100/10;
  69.    g = i%10;
  70.         
  71.   du = 1;
  72.         P0 = leddata[q];
  73.         du = 0;
  74.         delay(10);

  75.         we = 1;
  76.         P0 = 0xfe;
  77.         we = 0;
  78.         P0 = 0xff;
  79.                
  80.         du = 1;
  81.         P0 = leddata[b] ;
  82.         du = 0;
  83.         delay(5);

  84.         we = 1;
  85.         P0 = 0xfd
  86.         we = 0;
  87.         P0 = 0xff;

  88.         du = 1;
  89.         P0 = leddata[s];
  90.         du = 0;
  91.         delay(5);

  92.         we = 1;
  93.         P0 = 0xfb;
  94.         we = 0;
  95.         P0 = 0xff;

  96.         du = 1;
  97.         P0 = leddata[g];
  98.         du = 0;
  99.         delay(5);

  100.         we = 1;
  101.         P0 = 0xf7;
  102.         we = 0;
  103.         P0 = 0xff;
  104. }
  105. void main()
  106. {
  107.   while        (1)
  108.   {
  109.     display(5678);
  110.   }
  111. }
復制代碼





回復

使用道具 舉報

ID:179958 發表于 2017-10-15 18:28 | 顯示全部樓層
這個用定時器定時1ms,然后每ms對一個數碼管進行一次刷新,這樣更好吧
要去除鬼影,在刷新下一個數碼管之前,先P0=0xFF可P0=0x00吧,程序就不細看了,,,,,
回復

使用道具 舉報

ID:123289 發表于 2017-10-15 23:56 | 顯示全部樓層
掃描時序未合理規劃安排。
回復

使用道具 舉報

ID:213173 發表于 2017-10-16 09:08 | 顯示全部樓層
本帖最后由 wulin 于 2017-10-16 10:22 編輯

你的顯示程序延時位置不對,另外集中分解數據會耽誤時間使個位亮度大于其他位。給你改了一下,你試試。
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned  int
//#define AT24C02_ADDR  0xa0
//#define PCF8591_ADDR  0X90
#define  MAIN_Fosc    11.0592
sbit we = P2^7;
sbit du = P2^6;
//sbit SDA = P2^0;
//sbit SCL = P2^1;
/*
void delay_5us()  
{
        _nop_();
}
*/
void delay(uint ms)
{
        uchar i;
        do
        {
                i = MAIN_Fosc / 9600;
                while(--i);
        }
        while(--ms);
}

uchar leddata[]={

                0x3F,  //"0"
                0x06,  //"1"
                0x5B,  //"2"
                0x4F,  //"3"
                0x66,  //"4"
                0x6D,  //"5"
                0x7D,  //"6"
                0x07,  //"7"
                0x7F,  //"8"
                0x6F,  //"9"
                0x77,  //"A"
                0x7C,  //"B"
                0x39,  //"C"
                0x5E,  //"D"
                0x79,  //"E"
                0x71,  //"F"
                0x76,  //"H"
                0x38,  //"L"
                0x37,  //"n"
                0x3E,  //"u"
                0x73,  //"P"
                0x5C,  //"o"
                0x40,  //"-"
                0x80,  //??
                0x00  //???

                         };
uchar ledbit[]={
                            0xfe, //w1
                            0xfd, //w2
                            0xfb, //w3
                            0xf7, //w4
                            0xef, //w5
                            0xdf, //w6
                            0xbf, //w7
                            0x7f, //w8
                      };
void display(uint i)
{
//        uint b,s,g,q;
//        q = i/1000;
//        b = i%1000/100;
//        s = i%100/10;
//        g = i%10;
        P0 = leddata[i/1000];
        du = 1;
        du = 0;
        
        P0 = 0xfe;
        we = 1;
        we = 0;
        P0 = 0xff;
        delay(1);
        
        P0 = leddata[i%1000/100] ;
        du = 1;
        du = 0;
        
        P0 = 0xfd;
        we = 1;
        we = 0;
        P0 = 0xff;
        delay(1);
        
        P0 = leddata[i%100/10];
        du = 1;
        du = 0;
        
        P0 = 0xfb;
        we = 1;
        we = 0;
        P0 = 0xff;
        delay(1);
        
        P0 = leddata[i%10];
        du = 1;
        du = 0;        
        P0 = 0xf7;
        we = 1;
        we = 0;
        P0 = 0xff;
        delay(1);
}

void main()
{
        while(1)
        {
                display(5678);
        }
}
回復

使用道具 舉報

ID:239880 發表于 2017-10-16 13:19 | 顯示全部樓層
刷新問題
回復

使用道具 舉報

ID:228371 發表于 2017-10-22 13:14 | 顯示全部樓層
wulin 發表于 2017-10-16 09:08
你的顯示程序延時位置不對,另外集中分解數據會耽誤時間使個位亮度大于其他位。給你改了一下,你試試。
#i ...

謝謝
回復

使用道具 舉報

ID:1 發表于 2017-10-23 00:59 | 顯示全部樓層
這是我6年前些的 單片機數碼消隱問題的的解決方案:http://www.zg4o1577.cn/bbs/dpj-10971-1.html
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产a区 | 亚洲在线免费 | a欧美| 日韩一区av | 黄色中文字幕 | 中文字幕在线视频一区二区三区 | 91大神在线看 | 国产最新视频在线 | 亚洲欧美日韩中文在线 | 国产欧美精品一区二区色综合朱莉 | 日韩欧美在线播放 | 无码日韩精品一区二区免费 | 欧美一区二区三区在线看 | 亚洲精品久久久久中文字幕欢迎你 | 在线观看特色大片免费网站 | 国产成人精品一区二区三区 | 中文字幕国产视频 | 成人亚洲一区 | 三级在线观看 | 亚洲国产精品va在线看黑人 | 日韩在线免费视频 | 一区二区视频 | 91九色视频 | 国产成人一区二 | 欧美成年网站 | 国产精品精品视频一区二区三区 | 亚洲一区 | 91精品在线播放 | 午夜精品一区二区三区在线播放 | 91久久久久久久久 | 日韩av在线免费 | 国产一区三区视频 | 欧美日韩亚洲视频 | 国产精品美女久久久久久不卡 | 一级大黄 | 嫩草伊人 | 久久69精品久久久久久久电影好 | 特级黄一级播放 | 欧美成年人 | 台湾佬伊人 | 国产成人综合网 |