c52单片机控制lcd12864,通过四个按键选择菜单的代码
时间: 2023-10-07 10:08:33 浏览: 95
下面是一个简单的C52单片机控制LCD12864,并且通过4个按键选择菜单的代码:
```c
#include <reg52.h>
#include <intrins.h>
#include "lcd12864.h"
#define uchar unsigned char
#define uint unsigned int
sbit KEY1 = P3^2;
sbit KEY2 = P3^3;
sbit KEY3 = P3^4;
sbit KEY4 = P3^5;
uchar menu = 0; //菜单选项
uchar flag = 0; //菜单选择标志
//菜单显示
void show_menu() {
LCD_clear();
switch(menu) {
case 0: LCD_write_string(0, 0, "Menu 1"); break;
case 1: LCD_write_string(0, 0, "Menu 2"); break;
case 2: LCD_write_string(0, 0, "Menu 3"); break;
case 3: LCD_write_string(0, 0, "Menu 4"); break;
}
}
//按键检测
uchar key_scan() {
if(KEY1==0) {
delay_ms(10);
if(KEY1==0) return 1;
}
if(KEY2==0) {
delay_ms(10);
if(KEY2==0) return 2;
}
if(KEY3==0) {
delay_ms(10);
if(KEY3==0) return 3;
}
if(KEY4==0) {
delay_ms(10);
if(KEY4==0) return 4;
}
return 0;
}
//菜单选择
void select_menu() {
uchar key = key_scan();
if(key) {
switch(key) {
case 1: menu--; break;
case 2: menu++; break;
case 3: flag = 1; break;
case 4: flag = 0; break;
}
if(menu>3) menu = 3;
if(menu<0) menu = 0;
}
}
//主函数
void main() {
LCD_init();
while(1) {
show_menu();
select_menu();
if(flag) {
//按下确认键,执行相应操作
switch(menu) {
case 0: /*TODO*/ break;
case 1: /*TODO*/ break;
case 2: /*TODO*/ break;
case 3: /*TODO*/ break;
}
flag = 0;
}
}
}
```
其中,`menu` 表示当前菜单选项,`flag` 表示菜单是否被选择,`key_scan()` 函数用于检测按键,`select_menu()` 函数用于选择菜单,`show_menu()` 函数用于在LCD上显示菜单,`case` 分支用于执行相应的操作。需要根据具体情况来实现TODO的部分。
阅读全文