📄 按键设置数码管.c
字号:
#include "reg51.h"
#define SEG_NUM P2 //段码接口
#define KEY_IO P0 //4*4矩阵键盘的接口
sbit SEL_GE =P1^0; //个位数码管位选
sbit SEL_SHI=P1^2; //十位数码管位选
sbit SEL_BAI=P1^4; //百位数码管位选
unsigned int N; //片选数码管的位数个位为0,百位为2
unsigned int REG_NUM[3]; //显示缓存:存3个数码管对应段码,依次为个十百位
unsigned int CODE_NUM[10] = {
0xbb, /*0*/
0x88, /*1*/
0xd3, /*2*/
0xda, /*3*/
0xe8, /*4*/
0x7a, /*5*/
0x7b, /*6*/
0x98, /*7*/
0xfb, /*8*/
0xfa /*9*/
};
void delay(int i); //延时
int MatrixKey() ; //按键扫描
void Scan_disp(void); //显示扫描函数
void Convert(unsigned int NUM_SHOW); //缓存区处理函数
int num=0;
unsigned int buf=0;
unsigned char pf;
//=============================================================
// 语法格式: int main();
// 实现功能: 主函数
// 参数: 无
// 返回值: 无
//=============================================================
int main(void)
{
Convert(0);
TMOD=0x20;
TH1=0xe6;
TL1=0xe6;
PCON=0x00;
TR1=1;
SCON=0x50;
while(1)
{
while(RI==0)
{
buf=SBUF;
Convert(buf);
Scan_disp();
delay(6);
}
RI=0;
Scan_disp();
delay(6);
}
}
void delay(int i)
{
int j;
for(;i>0;i--)
for(j=110;j>0;j--);
}
//=============================================================
// 语法格式: void Scan_disp(void);
// 实现功能: 扫描显示器件
// 参数: 无
// 返回值: 无
//=============================================================
void Scan_disp(void)
{
SEG_NUM = 0x0000; //清段码输出
SEL_GE = 0;
SEL_SHI = 0;
SEL_BAI = 0;
switch(N)
{
case 0: SEL_GE = 1;SEG_NUM = REG_NUM[0]; break; //片选个位数码管并输出对应缓存
case 1: SEL_SHI = 1;SEG_NUM = REG_NUM[1]; break; //片选十位数码管并输出对应缓存
case 2: SEL_BAI = 1;;SEG_NUM = REG_NUM[2]; break; //片选百位数码管并输出对应缓存
default:break;
}
N++;
if(N >= 3) N = 0; //使始终在0~4循环
}
//=============================================================
// 语法格式: void Convert(unsigned int);
// 实现功能: 更新显示缓存,提取整数的个、十、百位并转换为数码管段码,更新到缓存REG_NUM[]
// 参数: NUM_SHOW:需要提取并转换的整数
// 返回值: 无
//=============================================================
void Convert(unsigned int NUM_SHOW)
{
REG_NUM[0] = CODE_NUM[NUM_SHOW%10]; //提取个位
REG_NUM[1] = CODE_NUM[NUM_SHOW/10%10]; //提取十位
REG_NUM[2] = CODE_NUM[NUM_SHOW/100%10]; //提取百位
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -