微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 这个数码管显示不正常。。隐隐约约能看到显示的数字(.....

这个数码管显示不正常。。隐隐约约能看到显示的数字(.....

时间:10-02 整理:3721RD 点击:

  1. #include <reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. sbit dula=P2^6;
  5. sbit wela=P2^7;


  6. uchar code table[ ]={
  7.         0x3f,0x06,0x5b,0x4f,0x66,
  8.         0x6d,0x7d,0x07,0x7f,0x6f,
  9.       };
  10. uchar rcv_dat[2];
  11. uint  num,num1,num2,flag;
  12. uchar a1,a2,a3,a4,a5;

  13. delay(uint  ms)
  14. {
  15. uchar i,j;
  16. for(j=ms;j>0;j--)

  17.    for(i=0;i<110;i++);
  18. }
  19. void  disp( );

  20. void   URATinit( )
  21. {
  22.      TMOD=0x20;
  23.      SCON=0x50;
  24.      TH1=0xfd;
  25.      TL1=0xfd;
  26.      EA=1;
  27.      ES=1;
  28.      TR1=1;
  29. }

  30. void  main()
  31. {
  32.      URATinit( );   
  33.      while(1)
  34.        {
  35.       if(flag==1)
  36.         {
  37.         ES=0;//关闭串口中断
  38.         SBUF=num;
  39.         while(!TI);
  40.                 flag=0;

  41.         TI=0;
  42.         ES=1;
  43.         a1=num/10000;
  44.         a2=num%10000/1000;
  45.         a3=num%10000%1000/100;
  46.         a4=num%10000%1000%100/10;
  47.         a5=num%10000%1000%100%10;
  48.         disp( );
  49.         }
  50.        }
  51. }
  52. void disp(num)
  53. {
  54.    
  55.     dula=1;
  56.     P0=table[a1];
  57.     dula=0;
  58.     P0=0xff;
  59.     wela=1;
  60.     P0=0xfe;
  61.     wela=0;
  62.     delay(5);

  63.     dula=1;
  64.     P0=table[a2];
  65.     dula=0;
  66.     P0=0xff;
  67.     wela=1;
  68.     P0=0xfd;
  69.     wela=0;
  70.     delay(5);

  71.     dula=1;
  72.     P0=table[a3];
  73.     dula=0;
  74.     P0=0xff;
  75.     wela=1;
  76.     P0=0xfb;
  77.     wela=0;
  78.     delay(5);

  79.     dula=1;
  80.     P0=table[a4];
  81.     dula=0;
  82.     P0=0xff;
  83.     wela=1;
  84.     P0=0xf7;
  85.     wela=0;
  86.     delay(5);

  87.     dula=1;
  88.     P0=table[a5];
  89.     dula=0;
  90.     P0=0xff;
  91.     wela=1;
  92.     P0=0xef;
  93.     wela=0;
  94.     delay(5);
  95.    

  96. }

  97. void recv() interrupt 4
  98. {
  99.     uchar j;

  100.       if(RI)
  101.      {

  102.        RI=0;
  103.        rcv_dat[j++]=SBUF;
  104.        if(j>=2)
  105.            j=0;
  106.      }
  107.         num1=rcv_dat[0];
  108.         num1=num1<<8;
  109.         num2=rcv_dat[1];
  110.         num=num2+num1;
  111.         flag=1;
  112.    
  113. }

复制代码

求帮忙啊
实现的功能是这样的
我通过串口调试发送比如FFFF,数码管显示65535

你给延时加大点看看!

把你的图贴上来看一下

会不会是硬件问题呢?贴个图看看。

视觉问题,跟延迟有关,电平回到了才会亮既然亮了那坑定是延迟

哦哦哦

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top