#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
/*******************************************************************************
* 函数名 :UsartInit()
* 函数功能 :设置串口
* 输入 : 无
* 输出 : 无
*******************************************************************************/
int i,m,j,l;
unsigned char SendByte;
code smgduan[17]={0x80,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示.~F的值
char x[17]={'.','0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
char a[5];
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
void UsartInit()
{
SCON=0X50; //设置为工作方式1
TMOD=0X20; //设置计数器工作方式2
PCON=0X80; //波特率加倍
TH1=0XF3; //计数器初始值设置,注意波特率是4800的
TL1=0XF3;
ES=1; //打开接收中断
EA=1; //打开总中断
TR1=1; //打开计数器
}
/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void delay(int u)
{
while(u--);
}
void main()
{
UsartInit(); // 串口初始化
while(1);
{
for(m=0;m<19;m++)
{
if(x[m]==SBUF)
{
a[l]=smgduan[m];
}
}
}
for(j=4;j>=0;j--)
{
switch(j) //位选,选择点亮的数码管,
{
case(0):
LSA=0;LSB=0;LSC=0; break;//显示第0位
case(1):
LSA=1;LSB=0;LSC=0; break;//显示第1位
case(2):
LSA=0;LSB=1;LSC=0; break;//显示第2位
case(3):
LSA=1;LSB=1;LSC=0; break;//显示第3位
case(4):
LSA=0;LSB=0;LSC=1; break;//显示第4位
}
P0=a[l];//发送段码
delay(100); //间隔一段时间扫描
P0=0x00;//消隐
}
}
/*******************************************************************************
* 函数名 : Usart() interrupt 4
* 函数功能 : 串口通信中断函数
* 输入 : 无
* 输出 : 无
*******************************************************************************/
void Usart() interrupt 4
{
for(i=0;i<5;i++)
{
a[i]=(int) SendByte;
SBUF=a[i];
RI = 0;//清除接收中断标志位
while(!TI); //等待发送数据完成
TI=0; //清除发送完成标志位
}
}
|