欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3148|回復: 8
收起左側

各位大佬看看為什么我的單片機數碼管無法正常顯示?

[復制鏈接]
ID:795538 發表于 2020-7-2 14:16 | 顯示全部樓層 |閱讀模式
51hei圖片20200702141453.png
#include<reg52.h>
              #include<intrins.h>
              #define uint unsigned int
              #define uchar unsigned char
              uchar temp,aa,nn;
              sbit rn=P2^0;                              
              sbit nb=P2^1;
              sbit gn=P2^2;
              sbit rw=P2^3;
              sbit dx=P2^4;
              sbit gw=P2^5;
              sbit shi=P3^6;
              sbit ge=P3^7;                            /*對要使用的單片機各個口進行定義*/
              bit flag=0;
              uchar code table[]={
              0x3f,0x06,0x5b,0x4f,
              0x66,0x6d,0x7d,0x07,
              0x7f,0x6f,0x77,0x7c,
              0x39,0x5e,0x79,0x71};         /*將數字0123456789的16進制數定義成數組用以顯示*/
              void delay(uint z);
              void disp(uint n);
              void nb_flash(void);
              void dx_flash(void);
              void  xint0();
              void timer0();
              void  LED_ON();
              void  xint1();
              void  LED_OFF();
              void nanbei();
              void dongxi();                 /*將所使用的子函數定義*/
              void main()
              {
                            uint num;
                            num=0;
                            aa=0;
                            TMOD=0x01;
                            TH0=(65536-50000)/256;
                            TL0=(65536-50000)%256;
                            EA=1;
                            ET0=1;
                            TR0=1;
                            EX0=1;
                            IT0=0;
                            EX1=1;
                            IT1=1;                       /*中斷初始化*/
                            while(1)
                            {
                                          nanbei();            
                                          nb_flash();
                                          dongxi();
                                          dx_flash();                /*主函數中顯示部分*/
        }
              }
              void delay(uint z)                    /*延時子函數*/
              {
                            uint x,y;
                            for(x=z;x>0;x--)
                                          for(y=110;y>0;y--);
              }
              void timer0() interrupt 1             /*定時器初始化*/
              {
                            TH0=(65536-50000)/256;
                            TL0=(65536-50000)%256;
                            aa++;
                            if(aa==18)
                            {
                                          aa=0;
                                          flag=1;
                            }            
              }
              void disp(uint n)                    /*顯示子函數*/
              {
                while(!flag)
                {
                              ge=0;
                              P0=table[n%10];
                              delay(50);
                              shi=1;ge=1;
                              shi=0;
                              P0=table[n/10];
                              delay(50);
                              shi=1;ge=1;
                 }
                if(flag==1)
                   flag=0;
              }
              void nanbei()                    /*南北方向的紅綠燈和數碼管顯示子函數*/
              {                            uint num;
                                          num=60;
                                          disp(num);
                                          while(num<=60&&num>0)
                                          {              num--;
                                               P2=0xde;
                                                           disp(num);                                         
                                          }
              }
              void dongxi()                     /*東西方向的紅綠燈和數碼管顯示子函數*/
              {                            uint num;                                         
                                          num=60;
                                          while(num<=60&&num>0)
                                          {              P2=0xf3;               
                                                        disp(num);
                                                        num--;
                                          }
              }
              void nb_flash(void)              /*南北方向的黃燈和數碼管顯示子函數*/
              {
                            uint a;
                            for(a=3;a>0;a--)
                            {              P2=0xdd;
                                          nb=1;
                                          delay(100);
                                          nb=0;
                                          disp(a);
                            }
              }
              void dx_flash(void)                /*東西方向的黃燈和數碼管顯示子函數*/
              {
                            uint a;
                            for(a=3;a>0;a--)
                            {              P2=0xeb;
                                          dx=1;
                                          delay(100);
                                          dx=0;
                                          disp(a);
                            }
              }
              void  xint0()  interrupt 2                     /*中斷定義*/
{            
              TH0=(65536-50000)/256;
              TL0=(65536-50000)%256;            
}               

回復

使用道具 舉報

ID:789121 發表于 2020-7-2 15:24 | 顯示全部樓層
數碼管用的是共陽的還是共陰的
回復

使用道具 舉報

ID:332444 發表于 2020-7-2 15:25 | 顯示全部樓層
看圖像好似數碼數據不對,取反一下試看 P0=~table[n%10];
回復

使用道具 舉報

ID:744327 發表于 2020-7-2 15:36 | 顯示全部樓層
如果數碼管是共陰極的,程序的延時子函數有問題,仿真軟件對延時要求很高。
回復

使用道具 舉報

ID:636538 發表于 2020-7-2 16:27 | 顯示全部樓層
無論是共陰還是共陽延時都是有問題,建議先靜態顯示一個一個調試
回復

使用道具 舉報

ID:795538 發表于 2020-7-2 17:12 | 顯示全部樓層
SKYLAR123 發表于 2020-7-2 16:27
無論是共陰還是共陽延時都是有問題,建議先靜態顯示一個一個調試

多謝,我去試試
回復

使用道具 舉報

ID:795538 發表于 2020-7-2 17:12 | 顯示全部樓層
不要黑 發表于 2020-7-2 15:24
數碼管用的是共陽的還是共陰的

共陰的。
回復

使用道具 舉報

ID:795538 發表于 2020-7-2 17:13 | 顯示全部樓層
烈火 發表于 2020-7-2 15:36
如果數碼管是共陰極的,程序的延時子函數有問題,仿真軟件對延時要求很高。

這樣啊 ,咋個改呢?
回復

使用道具 舉報

ID:795538 發表于 2020-7-2 17:24 | 顯示全部樓層
SKYLAR123 發表于 2020-7-2 16:27
無論是共陰還是共陽延時都是有問題,建議先靜態顯示一個一個調試

多謝帖吧大佬
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表