写一段程序使静态数码管显示按下k1k2数 码管数字加一,按下k3k4数码管数字减一,K1k3 控制数码管左四位,k2k4控制数码管右四位。 (加需要能加到100,减需要能减到-10)。
时间: 2023-04-02 12:02:16 浏览: 88
我可以回答这个问题。以下是程序代码:
#include <reg52.h>
sbit k1 = P1^; //定义按键k1
sbit k2 = P1^1; //定义按键k2
sbit k3 = P1^2; //定义按键k3
sbit k4 = P1^3; //定义按键k4
sbit dula = P2^6; //定义段选锁存器控制端
sbit wela = P2^7; //定义位选锁存器控制端
unsigned char code table[] = { //定义数码管显示~9的编码
xc, xf9, xa4, xb, x99, x92, x82, xf8, x80, x90
};
int num = ; //定义初始数字为
void delay(unsigned int i) { //延时函数
while(i--);
}
void display(int n) { //数码管显示函数
int i;
for(i = ; i < 8; i++) { //循环显示左右四位数码管
if(i == || i == 4) { //判断位选锁存器控制端
wela = ;
} else {
wela = 1;
}
P = table[n % 10]; //取余数显示对应数字
n /= 10; //除以10取整
dula = ; //段选锁存器控制端清零
delay(100); //延时
dula = 1; //段选锁存器控制端置1
P = xff; //清空数码管
}
}
void main() {
while(1) {
if(k1 == && k3 == 1) { //按下k1k3,左四位加一
num += 10;
if(num > 100) { //判断是否超过100
num = ;
}
}
if(k2 == && k4 == 1) { //按下k2k4,右四位加一
num++;
if(num > 99) { //判断是否超过100
num = ;
}
}
if(k3 == && k1 == 1) { //按下k1k3,左四位减一
num -= 10;
if(num < -10) { //判断是否小于-10
num = ;
}
}
if(k4 == && k2 == 1) { //按下k2k4,右四位减一
num--;
if(num < -9) { //判断是否小于-10
num = ;
}
}
display(num); //显示数字
}
}