#include <REGX52.H> #include "LCD1602.h" #include "Delay.h" sbit BEEP=P1^5; void main() { LCD_Init(); //LCD初始化 LCD_ShowString(1,2,"Hello World"); //在1行3列显示字符串Hello while(1) { if(P3_1==0) //如果K1按键按下 { Delay(20); //延时消抖 while(P3_1==0); //松手检测 Delay(20); Delay(500); BEEP=!BEEP; P2=0xFE;//1111 1110 Delay(200); P2=0xFD;//1111 1101 Delay(200); P2=0xFB;//1111 1011 Delay(200); P2=0xF7;//1111 0111 Delay(200); P2=0xEF;//1110 1111 Delay(200); P2=0xDF;//1101 1111 Delay(200); P2=0xBF;//1011 1111 Delay(200); P2=0x7F;//0111 1111 Delay(200); P2=0x7F;//1111 1110 Delay(200); P2=0xBF;//1111 1101 Delay(200); P2=0xDF;//1111 1011 Delay(200); P2=0xEF;//1111 0111 Delay(200); P2=0xF7;//1110 1111 Delay(200); P2=0xFB;//1101 1111 Delay(200); P2=0xFD;//1011 1111 Delay(200); P2=0xFE;//0111 1111 Delay(200); P2=0xFF;//0111 1111 Delay(200); LCD_Init(); LCD_ShowString(1,3,"X H F"); LCD_ShowString(2,1,"032140528"); } } }优化代码
时间: 2024-03-06 18:47:25 浏览: 17
以下是对代码的优化:
1. 将延时函数放到头文件中,可以直接调用,避免重复代码。
2. 在按键检测之前加入延时消抖,并且减小延时时间,以提高响应速度。
3. 在按键按下时,只需要执行一次蜂鸣器循环即可,无需每次都循环执行。
4. 将循环蜂鸣器和 LCD 显示放入函数中,可以直接调用,使代码更加简洁。
修改后的代码如下:
```
#include <REGX52.H>
#include "LCD1602.h"
#include "Delay.h"
sbit BEEP = P1^5;
void Beep()
{
P2=0xFE;//1111 1110
Delay_ms(200);
P2=0xFD;//1111 1101
Delay_ms(200);
P2=0xFB;//1111 1011
Delay_ms(200);
P2=0xF7;//1111 0111
Delay_ms(200);
P2=0xEF;//1110 1111
Delay_ms(200);
P2=0xDF;//1101 1111
Delay_ms(200);
P2=0xBF;//1011 1111
Delay_ms(200);
P2=0x7F;//0111 1111
Delay_ms(200);
P2=0x7F;//1111 1110
Delay_ms(200);
P2=0xBF;//1111 1101
Delay_ms(200);
P2=0xDF;//1111 1011
Delay_ms(200);
P2=0xEF;//1111 0111
Delay_ms(200);
P2=0xF7;//1110 1111
Delay_ms(200);
P2=0xFB;//1101 1111
Delay_ms(200);
P2=0xFD;//1011 1111
Delay_ms(200);
P2=0xFE;//0111 1111
Delay_ms(200);
P2=0xFF;//0111 1111
Delay_ms(200);
}
void main()
{
LCD_Init(); //LCD初始化
LCD_ShowString(1,2,"Hello World"); //在1行3列显示字符串Hello
while(1)
{
Delay_ms(20); //延时消抖
if(P3_1 == 0) //如果K1按键按下
{
while(P3_1 == 0); //松手检测
Delay_ms(50);
Beep(); //执行蜂鸣器循环
LCD_Init();
LCD_ShowString(1,3,"X H F");
LCD_ShowString(2,1,"032140528");
}
}
}
```