本想通过计算机向
单片机传送数据,然后在数码管上显示,同时单片机把接受到的数据传回给计算机,在串口助手上显示,但得到的现象跟预期不大一样,求大神指出编程问题所在。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,0x71};
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
uint temp=0,mm,nn,aa,flag;
void display(uchar bai);
void init();
void main()
{
init();
while(1)
{
if(flag==1)
{
ES=0;
SBUF=temp;
while(!T1);
ti=0;
ES=1;
flag=0;
}
display(temp);
}
}
void init()
{ SCON=0X50;
TMOD=0X20;
PCON=0X80;
TH1=0XF3;
TL1=0xF3;
EA=1;
TR1=1;
ES=1;
}
void display(uchar bai)
{
LSA=0,LSB=0,LSC=0;
P1=table[bai];
}
void chuangkou() interrupt 4
{
RI=0;
temp=SBUF;
flag=1;
}
因为串口发送/接收在HEX模式下是8位16进制数,一位数码管最多只能显示0~F,至少2位数码管显示00~FF,按十进制显示0~255至少需要3位数码管,并要把十六进制数转换成十进制。你用静态显示方式只能是所有相连的数码管显示相同数字。
一周热门 更多>