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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2385|回復: 5
打印 上一主題 下一主題
收起左側

單片機動態數碼管問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:688769 發表于 2020-2-3 15:59 來自手機 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
看了普中的教學視頻,想顯示20.20.720.6
改了一下LSA的值,但是顯示變成了如圖
以下是代碼
小白求答!
#include "REG52.H"
typedef unsigned char u8;
typedef unsigned int u16;

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;

u8 code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                          0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

       
        void delay(u16 i)
        {
                while(i--);
        }
        void DigDisplay()
        {
                u8 i;
                for(i=0;i<8;i++)
                {
                        switch(i)
                        {
                                case(0):
                                        LSA=0;LSB=1;LSC=0;break;
                                case(1):
                                        LSA=0;LSB=0;LSC=0;break;
                                case(2):
                                        LSA=0;LSB=1;LSC=0;break;
                                case(3):
                                        LSA=0;LSB=0;LSC=0;break;
                                case(4):
                                        LSA=1;LSB=1;LSC=1;break;
                                case(5):
                                        LSA=0;LSB=1;LSC=0;break;
                                case(6):
                                        LSA=0;LSB=0;LSC=0;break;
                                case(7):
                                        LSA=0;LSB=1;LSC=1;break;
                        }
                        P0=smgduan[i];
                        delay(100);
                        P0=0x00;
                }
        }
        void main()
        {
                while(1)
                {
                        DigDisplay();
                }
        }

1580716609743.jpg (798.41 KB, 下載次數: 132)

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

使用道具 舉報

沙發
ID:213173 發表于 2020-2-3 17:29 | 只看該作者
位碼不可以隨意改動,想改變顯示字符只能改段碼。
  1. #include "REG52.H"
  2. typedef unsigned char u8;
  3. typedef unsigned int u16;

  4. sbit LSA=P2^2;
  5. sbit LSB=P2^3;
  6. sbit LSC=P2^4;

  7. u8 code smgduan[]={0x3f|0x80,/*0+點*/0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  8.                           0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

  9. u8 data dis_buf[8]={2,0,2,0,7,2,0,6};//20.20.720.6
  10.         
  11. void delay(u16 i)
  12. {
  13.         while(i--);
  14. }
  15. void DigDisplay()
  16. {
  17.         u8 i;
  18.         for(i=0;i<8;i++)
  19.         {
  20.                 switch(i)
  21.                 {
  22.                         case(0):
  23.                                 LSA=1;LSB=1;LSC=1;break;
  24.                         case(1):
  25.                                 LSA=0;LSB=1;LSC=1;break;
  26.                         case(2):
  27.                                 LSA=1;LSB=0;LSC=1;break;
  28.                         case(3):
  29.                                 LSA=0;LSB=0;LSC=1;break;
  30.                         case(4):
  31.                                 LSA=1;LSB=1;LSC=0;break;
  32.                         case(5):
  33.                                 LSA=0;LSB=1;LSC=0;break;
  34.                         case(6):
  35.                                 LSA=1;LSB=0;LSC=0;break;
  36.                         case(7):
  37.                                 LSA=0;LSB=0;LSC=0;break;
  38.                 }
  39.                 P0=smgduan[dis_buf[i]];
  40.                 delay(100);
  41.                 P0=0x00;
  42.         }
  43. }
  44. void main()
  45. {
  46.         while(1)
  47.         {
  48.                 DigDisplay();
  49.         }
  50. }
復制代碼




回復

使用道具 舉報

板凳
ID:642838 發表于 2020-2-3 20:20 | 只看該作者
switch的case幾種狀態都重復了,顯示不亂才怪
回復

使用道具 舉報

地板
ID:235200 發表于 2020-2-3 20:58 | 只看該作者
把20.20.720.6對應的段碼:0x5b,0xbf,0x5b,0xbf,0x07,0x5b,0xbf,0x7d作為數組,
                              case(0):
                                        LSA=0;LSB=0;LSC=0;break;
                                case(1):
                                        LSA=1;LSB=0;LSC=0;break;
                                case(2):
                                        LSA=0;LSB=1;LSC=0;break;
                                case(3):
                                        LSA=1;LSB=1;LSC=0;break;
                                case(4):
                                        LSA=0;LSB=0;LSC=1;break;
                                case(5):
                                        LSA=1;LSB=0;LSC=1;break;
                                case(6):
                                        LSA=0;LSB=1;LSC=1;break;
                                case(7):
                                        LSA=1;LSB=1;LSC=1;break;
                        }
這樣改了就可實現
回復

使用道具 舉報

5#
ID:375003 發表于 2020-2-3 22:56 | 只看該作者
我幫你弄好了.#include "REG52.H"
typedef unsigned char u8;
typedef unsigned int u16;

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
u8 a=0,b=1,c=2,d=3,e=4,f=5,g=6,h=7;//使用八個數進行位置確定

u8 code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                          0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};


void delay(u16 i)
{
        while(i--);
}
void DigDisplay()
{
        u8 i;
        for(i=0;i<8;i++)
        {
                switch(i)
                {
                        case(0):
                                LSA=0;LSB=1;LSC=0;break;
                        case(1):
                                LSA=0;LSB=0;LSC=0;break;
                        case(2):
                                LSA=0;LSB=1;LSC=0;break;
                        case(3):
                                LSA=0;LSB=0;LSC=0;break;
                        case(4):
                                LSA=1;LSB=1;LSC=1;break;
                        case(5):
                                LSA=0;LSB=1;LSC=0;break;
                        case(6):
                                LSA=0;LSB=0;LSC=0;break;
                        case(7):
                                LSA=0;LSB=1;LSC=1;break;
                }
                P0=smgduan[i];
                delay(100);
                P0=0x00;
        }
}

void display()
{
        u8 j;
        for(j=0;j<8;j++)
        {
        switch(j)         //位選,選擇點亮的數碼管,
        {
            case(0):
                    LSA=0;LSB=0;LSC=0;P0=smgduan[a] ;break;//
            case(1):
                    LSA=1;LSB=0;LSC=0; P0=smgduan[b];break;//
            case(2):
                    LSA=0;LSB=1;LSC=0; P0=smgduan[c];break;
            case(3):
                    LSA=1;LSB=1;LSC=0; P0=smgduan[d];break;//
            case(4):
                    LSA=0;LSB=0;LSC=1; P0=smgduan[e];break;//
            case(5):
                    LSA=1;LSB=0;LSC=1; P0=smgduan[f];break;//
            case(6):
                    LSA=0;LSB=1;LSC=1; P0=smgduan[g];break;//
            case(7):
                    LSA=1;LSB=1;LSC=1; P0=smgduan[h];break;//
        }
                delay(100);
                P0=0x00;
        }
}

void main()
{
        while(1)
        {
             display();
              //  DigDisplay();
        }
}

問題顯示.JPG (34.48 KB, 下載次數: 128)

你開發板上的結果

你開發板上的結果

正確的顯示.JPG (45.17 KB, 下載次數: 132)

改好后的效果

改好后的效果
回復

使用道具 舉報

6#
ID:375003 發表于 2020-2-3 23:12 | 只看該作者
wulin 發表于 2020-2-3 17:29
位碼不可以隨意改動,想改變顯示字符只能改段碼。

0加點真是經典,站在初學者的角度,別太搞好了,給他啟發就可以了.
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 992人人草| 日日夜夜精品免费视频 | 国际精品鲁一鲁一区二区小说 | 天天色影视综合 | 日韩中文字幕在线观看 | 亚洲一区精品在线 | 国产一区二区精品在线观看 | a级毛片免费高清视频 | 五月花丁香婷婷 | 激情欧美一区二区三区中文字幕 | 午夜免费网 | 中文字幕乱码一区二区三区 | 亚洲精品久久久久国产 | 偷拍第一页 | 色又黄又爽网站www久久 | 三级视频在线观看电影 | 免费人成在线观看网站 | 在线观看涩涩视频 | 国产日韩欧美在线观看 | 国产精品2区 | 伊人网国产| 欧美精品一区二区三区四区五区 | 午夜精品三区 | 精品综合久久久 | 日韩视频在线一区 | 国产高清视频 | 福利片在线 | 国产欧美一区二区三区久久手机版 | 国产一区二区久久 | 久久精品这里 | 91看片免费 | 91高清视频在线观看 | 91av在线看| 成人网在线观看 | 久久久久久久久久性 | 欧美亚洲日本 | 日韩电影中文字幕 | 在线免费观看a级片 | 国产99免费视频 | 玖玖视频国产 | 蜜桃av一区二区三区 |