#include<reg52.h> //库文件
#define uchar unsigned char//宏定义无符号字符型
#define uint unsigned int //宏定义无符号整型
/********************************************************************
初始定义
*********************************************************************/
code uchar seg7code[10]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //显示段码 数码管字跟
uchar wei[4]={0XEf,0XDf,0XBf,0X7f}; //位的控制端
uchar dat; //用于存储单片机接收发送缓冲寄存器SBUF里面的内容
uchar i;
/********************************************************************
延时函数
*********************************************************************/
void delay(uchar t)
{
uchar i,j;
for(i=0;i<t;i++)
{
for(j=13;j>0;j--);
{ ;
}
}
}
/********************************************************************
显示函数
*********************************************************************/
void Led(uchar date) //显示函数
{
/*****************数据转换*****************************/
uint z,x,c,v;
z=date/1000; //求千位
x=date%1000/100; //求百位
c=date%100/10; //求十位
v=date%10; //求个位
P2=0XFF;
P0=seg7code[z];
P2=wei[0];
delay(80);
P2=0XFF;
P0=seg7code[x];
P2=wei[1];
delay(80);
P2=0XFF;
P0=seg7code[c];
P2=wei[2];
delay(80);
P2=0XFF;
P0=seg7code[v];
P2=wei[3];
delay(80);
P2=0XFF;
}
/********************************************************************
键盘取值函数
*********************************************************************/
void Keyin(void)
{
i=8;
switch(dat)
{
case 1:i=0;break;
case 2:i=1;break;
case 4:i=2;break;
case 8:i=3;break;
case 16:i=4;break;
case 32:i=5;break;
case 64:i=6;break;
case 128:i=7;break;
default:break;
}
}
/********************************************************************
功能:串口初始化,波特率9600,方式1
*********************************************************************/
void Init_Com(void)
{
TMOD = 0x20;
PCON = 0x00;
SCON = 0x50;
TH1 = 0xFd;
TL1 = 0xFd;
TR1 = 1;
}
/********************************************************************
主函数
说明:串口发送十六进制数 01 02 04 08 10 20 40 80 (发送其他数字显示 8)
对应的数码管显示 0 1 2 3 4 5 6 7
*********************************************************************/
void main()
{
Init_Com();//串口初始化
while(1)
{
if( RI) //扫描判断是否接收到数据,
{
dat = SBUF; //接收数据SBUF赋与dat
RI=0;
Keyin();
SBUF=dat;
}
Led(i); //显示键盘函数所对应的数据
}
}
/********************************************************************
结束
*********************************************************************/
|