求用51单片机串口方式0接两个74LS164显示数码管,0-99动态显示(用C语言)
//*************************************//
// 74HC164串口显示实验 proteu仿真 //
// PBG 2012-6-11 //
//*************************************//
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90};
sbit k1=P3^6;//加键定义
sbit k2=P3^7;//减键定义
uchar a;
void delay(uint x)//延时50ms
{
uchar i;
while(x--);
for(i=0;i<110;i++);
}
void key()//按键函数
{
if(k1==0)
{
delay(2);
if(k1==0)
{
a++;
if(a==99)
a=0;
}
while(!k1);//松手检测
TXD=1;//按键按下松手后发送
}
if(k2==0)
{
delay(2);
if(k2==0)
{
a--;
if(a==-1)
a=0;
}
while(!k2);//松手检测
TXD=1;//按键按下松手后发送
}
}
void main()
{
SCON=0X00;//设定定时器为移位寄存器模式
TXD=1;//初始化
while(1)
{
key();
SBUF=table[a%10];//把个位送到SBUF
while(!TI); //等待发送是否完毕
TI=0; //置发送标志为零
SBUF=table[a/10];//把十位送到SBUF
while(!TI);//等待发送是否完毕
TI=0;//置发送标志为零
TXD=0;//置时钟为零,否则不停发送,显示乱码
}
}