挺容易的。供参考:
#include "reg51.h"
#include <absacc.h>
unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //数码管编码,共阳极。
unsigned char dat;
void Init_Com(void)
{
TMOD = 0x20; //定时器工作方式2,初值自动装入
PCON = 0x00; //波特率不增倍
SCON = 0x50; //串行工作方式设定
TH1 = 0xFd; //定时器初值高位
TL1 = 0xFd; //定时器初值低位
TR1 = 1; //启动定时器
}
/*函数功能ED数码管延时程序*/
void delay(void)
{
int k;
for(k=0;k<600;k++);
}
/*函数功能ED数码管显示程序*/
void display(int k)
{
P2=0xfe; //位选
P0=tab[k/1000]; //显示千位数字
delay(); //延时
P2=0xfd; //位选
P0=tab[k%1000/100]; //显示百位数字
delay(); //延时
P2=0xfb; //位选
P0=tab[k%100/10]; //显示十位数字
delay(); //延时
P2=0xf7; //位选
P0=tab[k%10]; //显示个位数字
delay(); //延时
P2=0xff; //位选
}
/*函数功能:主程序*/
void main()
{
P2=0xff; //端口初始化,关LED显示
P0=0xff;
Init_Com(); //调用串口初始化程序
while(1) //主循环
{
if ( RI ) //判断是否收到数据
{
dat = SBUF; //接收数据
RI = 0; //软件清除标志位
}
display(dat-48); //显示收到的数据
}
} |