电路和仿真时的图片我都附上了。
请各位大侠指正!!
我在串口调试助手上输入72, 但是为什么数码管没有变化呢??
程序如下:
#include<reg52.h> //包函8051 内部资源的定义
#define uchar unsigned char
#define uint unsigned int
unsigned char dat; //用于存储
单片机接收发送缓冲寄存器SBUF里面的内容
sbit shiwei=P2^6; //十位选通定义
sbit baiwei=P2^5; //百位选通定义
sbit gewei=P2^7; //百位选通定义
uchar code table[]=
{
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,
}; //1~10
void delay(uint z) //延时程序
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}//end of delay
void LED() //LED显示接收到的数据(十进制)
{
gewei=0;
P0=table[dat%10];
delay(10);
gewei=1;
shiwei=0;
P0=table[dat/10];
delay(10);
shiwei=1;
baiwei=0;
P0=table[dat/100];
delay(10);
baiwei=1;
}
void init_com(void) //功能:串口初始化,波特率9600,方式1/////////
{
TMOD = 0x20;//定时器1,工作方式一
PCON = 0x00;//
SCON = 0x50;//串行工作方式1,允许串行口接收
TH1 = 0xFd;//波特率9600bit/s
TL1 = 0xFd;
TR1 = 1;//启动定时器1
EA=1;//开总中断
ES=1;//允许串行口中断
}
/////主程序功能:实现接收数据并把接收到的数据原样发送回去///////
void main()
{
init_com();//串口初始化
while(1)
{
if ( RI ) //扫描判断是否接收到数据,
{
dat = SBUF; //接收数据SBUF赋与dat
RI=0; //RI 清零。
SBUF = dat; //在原样把数据发送回去(接收数据为发送数据的ASCII码,如发送q显示为113)
}
LED(); //显示接收到的数据
}//end of while
}//end of main
shiwei=0;
P0=table[dat%100/10];
一周热门 更多>