📄 双按键控制数码管加减1.txt
字号:
#pragma db code
#include<AT89X51.H>
#define uchar unsigned char
#define uint unsigned int
/*=====数码管位及按键定义=====*/
sbit LED_0=P1^0;
sbit LED_1=P1^1;
sbit LED_2=P1^2;
sbit LED_3=P1^3;
sbit P20=P2^0;
sbit P21=P2^1;
sbit P24=P2^4;
sbit P25=P2^5;
/*=====0-9=====A-G=====*/
uchar a[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,0xc6,0x86,0x8e,0x82};
/*=====四个数码管显示数据存放处=====*/
uchar one,two,three,four;
uint wc=0;
/*=====函数定义=====*/
void delay(uint x);
void display(void);
void key();
void led_analyze(uint i);
/*====主函数=====*/
void main()
{
while(1)
{
key();
display();
}
}
/*====延时函数=====*/
void delay(uint x)
{
uint i;
for(i=0;i<x;i++);
}
/*====显示函数=====*/
void display(void)
{
P0=a[one];//调用显示数据
LED_0=0; //显示开
delay(100); //调用键盘扫描
LED_0=1; //关显示
P0=a[two];
LED_1=0;
delay(100);
LED_1=1;
P0=a[three];
LED_2=0;
delay(100);
LED_2=1;
P0=a[four];
LED_3=0;
delay(100);
LED_3=1;
}
/*====分解显示数据=====*/
void led_analyze(uint i)
{
i=i%10000;
one=i/1000;
two=(i/100)%10;
three=(i%100)/10;
four=(i%100)%10;
}
/*====按键扫描=====*/
void key()
{
uchar i;
P24=0;
P25=1;//按键控制端
if(!P20||!P21)//判断有键按下
{
for(i=0;i<20;i++) display();//调用显示函数N次达到延时
if(!P20||!P21) //有键按下
{
if(!P20)
{
wc++;
if(wc>9999) wc=0;//如果WG大于9999则将它清零
}
else
{
wc--;
if(wc>9999) wc=9999;
}
}
}
led_analyze(wc);//把WC值返回到分解显示数据中
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -