单片机 独立按键显示0到99
时间: 2023-05-24 20:07:27 浏览: 98
这是一个简单的单片机程序,使用了两个7段LED数码管和两个独立按键,实现了0到99的数字显示功能。代码使用C语言编写,适用于8051系列单片机。
```
#include <reg52.h>
sbit KEY1 = P1^0; //定义按键1引脚
sbit KEY2 = P1^1; //定义按键2引脚
sbit LATCH = P3^4; //定义锁存信号引脚
sbit DATA = P3^5; //定义数据信号引脚
sbit CLK = P3^6; //定义时钟信号引脚
unsigned char code SEG_TAB[] = { //定义数码管显示表
0xC0, //0
0xF9, //1
0xA4, //2
0xB0, //3
0x99, //4
0x92, //5
0x82, //6
0xF8, //7
0x80, //8
0x90 //9
};
void delay(unsigned int i) //延时函数
{
unsigned int j;
for(j=0;j<i;j++);
}
void display(unsigned char num) //数码管显示函数
{
DATA = SEG_TAB[num/10];
CLK = 1;
delay(1);
CLK = 0;
DATA = SEG_TAB[num%10];
CLK = 1;
delay(1);
CLK = 0;
}
void main()
{
unsigned char i=0;
LATCH = 0;
while(1)
{
if(KEY1 == 0) //按键1按下,数字加1
{
delay(10); //消除按键抖动
if(KEY1 == 0)
{
i++;
if(i>99) i = 0;
while(!KEY1);
}
}
if(KEY2 == 0) //按键2按下,数字减1
{
delay(10); //消除按键抖动
if(KEY2 == 0)
{
i--;
if(i<0) i = 99;
while(!KEY2);
}
}
display(i); //显示数字
}
}
```
该程序先定义了按键1、按键2、锁存信号、数据信号和时钟信号的引脚,以及一个数码管显示表,然后定义了延时函数和数码管显示函数。在主函数中,不断检测按键状态,如果按键1被按下,就将数字加1;如果按键2被按下,就将数字减1。然后调用数码管显示函数将数字显示出来,循环执行以上操作。