📄 按键.c
字号:
#include"reg51.h"
#include"absacc.h"
#include"stdio.h"
#define uchar unsigned char
#define unit unsigned int
unsigned char code dis[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0-9代码
unsigned char code shibie[8]={0x98,0x8c,0xb6,0x86,0xc6,0xc7,0x88,0x89};//符号q,p,三,E,【,L
uchar key_moshi=2; //模式按键
uchar key_up=2; //上调按键
uchar key_down=2; //下调按键
uchar key_queren=2; //确认按键
int queren_flag=0; //确认标志
int moshi_flag=0; // 模式标志
int key_first_flag=-1; //开机显示标志位
int moshi1[3],moshi2[3];
sbit ge=P2^4;
sbit shi=P2^5;
sbit bai=P2^6;
sbit fuhao=P2^7;
/***************************
*******延时程序 ************
***************************/
void delay1(int time)
{ int j=0,i=0;
for(j=0;j<time;j++)
{for(i=0;i<10;i++);}
}
/*********************************************
*****读按键 *******************************
***********************************************/
void read_key(void)
{ if((P2&0X01)!=0X01)
{delay1(253);
if((P2&0X01)!=0X01)
{
key_moshi=0;
}
}
if((P2&0X02)!=0X02)
{ delay1(253);
if((P2&0X02)!=0X02)
{key_up=0;}
}
if((P2&0X04)!=0X04)
{delay1(253);
if((P2&0X04)!=0X04)
{ key_down=0;}
}
if((P2&0X08)!=0X08)
{delay1(253);
if((P2&0X08)!=0X08)
{
key_queren=0;}
}
}
/*******************************************
**************模式选择 ********************
******************************************/
void moshi_set(void)
{
if(key_moshi==0)
{ key_first_flag=1;
key_moshi=1;
delay1(1);
moshi_flag++;
if(moshi_flag>=3)
{moshi_flag=0;}
}
}
/********************************************
***********模式1设置, 增加,减少 ****************
**********************************************/
void key_up_moshi1(void)
{
if(key_up==0&&moshi_flag==1&&queren_flag==0) //上升
{ key_up=1;
delay1(2);
moshi1[1]++;
if(moshi1[1]>=10)
{ moshi1[1]=0;}
}
}
void key_down_moshi1(void)
{
if(key_down==0&&moshi_flag==1&&queren_flag==0) //下调
{ key_down=1;
delay1(2);
moshi1[1]--;
if(moshi1[1]<0)
{ moshi1[1]=9;}
}
}
/************************************U*
************模式2设置,增加,减少 ******
***********************************/
void key_up_moshi2(void)
{
if(key_up==0&&moshi_flag==2&&queren_flag==0) //上升
{ key_up=1;
delay1(2);
moshi2[1]++;
if(moshi2[1]>=10)
{ moshi2[1]=0;}
}
}
void key_down_moshi2(void)
{
if(key_down==0&&moshi_flag==2&&queren_flag==0) //下调
{ key_down=1;
delay1(2);
moshi2[1]--;
if(moshi2[1]<0)
{ moshi2[1]=9;}
}
}
/*************************************************
***************确认按键 *****************************
*************************************************/
void key_queren_flag(void)
{
if(key_queren==0)
{ delay1(5);
key_first_flag=1;
key_queren=1;
queren_flag=1;
/* if(queren_flag>1)
{queren_flag=0;} */
moshi_flag=0;
queren_flag=0;
}
}
/*******************************************************
*********************显示 *******************************
************************************************************/
void display()
{
/**********************
开机显示
***************************/
if(key_first_flag==-1)
{ P0=dis[8];
P2=0X7F;
delay1(5);
P2=0XFF;
P0=dis[8];
P2=0XBF;
delay1(5);
P2=0XFF;
P0=dis[8];
P2=0XDF;
delay1(5);
P2=0XFF;
P0=dis[8];
P2=0XEF;
delay1(5);
P2=0XFF;
}
/**************************************
模式1显示 符号显示 q
****************************************/
if(moshi_flag==1)
{
P0=shibie[0];
P2=0X7F;
delay1(5);
P2=0XFF;
P0=dis[moshi1[1]];
P2=0XEF;
delay1(5);
P2=0XFF;
}
/*********************************
模式2显示 符号显示 E
************************************/
if(moshi_flag==2)
{
P0=shibie[3];
P2=0X7F;
delay1(5);
P2=0XFF;
P0=dis[moshi2[1]];
P2=0XEF;
delay1(5);
P2=0XFF;
}
/**************************
正常状态显示 0123
********************************/
if(moshi_flag==0&&(key_first_flag)!=-1)
{
P0=dis[0];
P2=0X7F;
delay1(5);
P2=0XFF;
P0=dis[1];
P2=0XEF;
delay1(5);
P2=0XFF;
P0=dis[2];
P2=0XDF;
delay1(5);
P2=0XFF;
P0=dis[3];
P2=0XBF;
delay1(5);
P2=0XFF;
}
}
/*********************************
主程序
****************************************/
void main()
{
P2 = 0XFF;
while(1)
{
read_key();
moshi_set();
key_queren_flag();
key_up_moshi1();
key_down_moshi1();
key_up_moshi2();
key_down_moshi2();
display();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -