这个数码管显示不正常。。隐隐约约能看到显示的数字(.....
时间:10-02
整理:3721RD
点击:
- #include <reg52.h>
- #define uint unsigned int
- #define uchar unsigned char
- sbit dula=P2^6;
- sbit wela=P2^7;
- uchar code table[ ]={
- 0x3f,0x06,0x5b,0x4f,0x66,
- 0x6d,0x7d,0x07,0x7f,0x6f,
- };
- uchar rcv_dat[2];
- uint num,num1,num2,flag;
- uchar a1,a2,a3,a4,a5;
- delay(uint ms)
- {
- uchar i,j;
- for(j=ms;j>0;j--)
- for(i=0;i<110;i++);
- }
- void disp( );
- void URATinit( )
- {
- TMOD=0x20;
- SCON=0x50;
- TH1=0xfd;
- TL1=0xfd;
- EA=1;
- ES=1;
- TR1=1;
- }
- void main()
- {
- URATinit( );
- while(1)
- {
- if(flag==1)
- {
- ES=0;//关闭串口中断
- SBUF=num;
- while(!TI);
- flag=0;
- TI=0;
- ES=1;
- a1=num/10000;
- a2=num%10000/1000;
- a3=num%10000%1000/100;
- a4=num%10000%1000%100/10;
- a5=num%10000%1000%100%10;
- disp( );
- }
- }
- }
- void disp(num)
- {
-
- dula=1;
- P0=table[a1];
- dula=0;
- P0=0xff;
- wela=1;
- P0=0xfe;
- wela=0;
- delay(5);
- dula=1;
- P0=table[a2];
- dula=0;
- P0=0xff;
- wela=1;
- P0=0xfd;
- wela=0;
- delay(5);
- dula=1;
- P0=table[a3];
- dula=0;
- P0=0xff;
- wela=1;
- P0=0xfb;
- wela=0;
- delay(5);
- dula=1;
- P0=table[a4];
- dula=0;
- P0=0xff;
- wela=1;
- P0=0xf7;
- wela=0;
- delay(5);
- dula=1;
- P0=table[a5];
- dula=0;
- P0=0xff;
- wela=1;
- P0=0xef;
- wela=0;
- delay(5);
-
- }
- void recv() interrupt 4
- {
- uchar j;
- if(RI)
- {
-
- RI=0;
- rcv_dat[j++]=SBUF;
- if(j>=2)
- j=0;
- }
- num1=rcv_dat[0];
- num1=num1<<8;
- num2=rcv_dat[1];
- num=num2+num1;
- flag=1;
-
- }
求帮忙啊
实现的功能是这样的
我通过串口调试发送比如FFFF,数码管显示65535
你给延时加大点看看!
把你的图贴上来看一下
会不会是硬件问题呢?贴个图看看。
视觉问题,跟延迟有关,电平回到了才会亮既然亮了那坑定是延迟
哦哦哦