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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3924|回復: 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. }
復制代碼





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

使用道具 舉報

沙發
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);
        }
}
回復

使用道具 舉報

5#
ID:239880 發表于 2017-10-16 13:19 | 只看該作者
刷新問題
回復

使用道具 舉報

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

謝謝
回復

使用道具 舉報

7#
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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本超碰 | 国产精品视频久久 | 91一区二区三区 | 亚洲日日夜夜 | 亚洲一区中文字幕 | 午夜视频在线观看一区二区 | 成人福利网站 | 国产精品久久久久久久久久三级 | 超碰最新在线 | 日本视频一区二区 | 午夜精品久久久 | 中文字幕在线观看成人 | 国产精品视频网站 | 天天爽天天操 | 国产精品美女久久久久久免费 | 日韩欧美三区 | 欧美国产精品 | 欧美高清视频 | 国产精品色 | 一区二区不卡视频 | 久久这里只有精品首页 | 日本国产精品视频 | 777777777亚洲妇女 | 日韩av免费在线观看 | 天天亚洲 | h视频免费观看 | 98久久| 日本视频在线播放 | 亚州精品天堂中文字幕 | 精品久久久久一区二区国产 | 高清黄色 | 欧美狠狠操 | 午夜免费视频 | 欧美日韩精品一区 | 国产精品不卡 | 亚洲免费观看视频网站 | 国产综合久久久久久鬼色 | 久久久一二三 | 国产精品一区久久久久 | 精品一区二区久久久久久久网站 | 亚洲国产精品久久久 |