单片机数码管,从键盘输入一个数字,要求在数码管上显示
时间: 2023-05-20 08:01:55 浏览: 110
51单片机使用8个数码管,在8个数码管上分别显示“12345678”这八个数字。
5星 · 资源好评率100%
您好,以下是单片机数码管显示数字的代码:
#include <reg52.h> // 引入 8051 单片机头文件
sbit LSA = P2^2; // 定义数码管位选引脚
sbit LSB = P2^3;
sbit LSC = P2^4;
sbit DIO = P2^0; // 定义数码管数据引脚
sbit CLK = P2^1; // 定义数码管时钟引脚
unsigned char code table[] = { // 数码管显示表
0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f
};
void delay(unsigned int i) { // 延时函数
while(i--);
}
void write(unsigned char dat) { // 写入数据到数码管
unsigned char i;
for(i = 0; i < 8; i++) {
CLK = 0;
DIO = dat & 0x01;
dat >>= 1;
CLK = 1;
}
}
void select(unsigned char n) { // 选择数码管
switch(n) {
case 0: LSA = 0; LSB = 0; LSC = 0; break;
case 1: LSA = 1; LSB = 0; LSC = 0; break;
case 2: LSA = 0; LSB = 1; LSC = 0; break;
case 3: LSA = 1; LSB = 1; LSC = 0; break;
case 4: LSA = 0; LSB = 0; LSC = 1; break;
case 5: LSA = 1; LSB = 0; LSC = 1; break;
case 6: LSA = 0; LSB = 1; LSC = 1; break;
case 7: LSA = 1; LSB = 1; LSC = 1; break;
}
}
void main() {
unsigned char i, j, k;
while(1) {
k = 0;
for(i = 0; i < 8; i++) { // 循环读取 8 个数码管的数据
select(i); // 选择数码管
write(table[k]); // 写入数据到数码管
delay(100); // 延时
k++;
}
}
}
以上代码可以实现从键盘输入一个数字,然后在数码管上显示。具体实现方法可以参考代码注释。
阅读全文