📄 xiang.txt
字号:
#include "reg52.h"
#include "ps2.h"
#define THCO 0xee
#define TLCO 0x0
unsigned char code Duan[]={0x3F, 0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
//共阴极数码管,0-9段码表
unsigned char Data_Buffer[4]={0,0,0,0};
//四个数码管显示数值,数组变量定义
sbit P10=P1^0; //四个数码管的位码口定义
sbit P11=P1^1;
sbit P12=P1^2;
sbit P13=P1^3;
void main()
{
unsigned char okborad;
TMOD=0x20; //方式控制字
SCON=0x50;
TH1=0xfd; //设置波特率为9600
TL1=0xfd;
TR1=1; //开定时器1
TH0=THCO;
TL0=TLCO;
TR0=1;
ET0=1;
EA=1;
while(1)
{
if(KeyReadFromPS2(&okborad))//PS2扫描 且如果成功接收一个键盘通码,就转换成ASC2码
{
okborad=KeyValueToASCCII(okborad); //发送到串口
SBUF=okborad; //将转化后的数据发到串口
while(TI==0);
TI=0;
if(okborad>=0x30&&okborad<=0x39) //数字需显示到数码管上
{
Data_Buffer[0]=0;
Data_Buffer[1]=0;
Data_Buffer[2]=0;
Data_Buffer[3]=okborad-0x30;
}
}
}
}
void timer0() interrupt 1
{
static unsigned char Bit=0; //静态变量,退出程序后,值保留
TH0=THCO;
TL0=TLCO;
Bit++;
if(Bit>=4)Bit=0;
P1|=0x0f; //先关位码
P0=Duan[Data_Buffer[Bit]]; //开段码
switch(Bit) //送位码
{
case 0: P10=0;break;
case 1: P11=0;break;
case 2: P12=0;break;
case 3: P13=0;break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -