能帮我找一个51单片机能够通过按键在lcd上显示typeprice num 数字的显示的程序嘛
以下是一个基本的程序,可以通过按键在LCD上显示type、price和num数字:
#include <reg51.h>
#include <lcd.h>
#define KEYPAD_PORT P1
sbit rs = P2^0;
sbit rw = P2^1;
sbit en = P2^2;
unsigned char keypad[4][4] = {{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}};
unsigned char type[5][10] = {"Type1", "Type2", "Type3", "Type4", "Type5"};
unsigned char price[5][4] = {"100", "200", "300", "400", "500"};
unsigned char num[5][4] = {"1", "2", "3", "4", "5"};
void delay(unsigned int);
void lcd_init();
void lcd_cmd(unsigned char);
void lcd_data(unsigned char);
void lcd_string(unsigned char *);
void main() {
unsigned char key, row, col, i, j;
unsigned char buffer[20];
lcd_init();
while (1) {
key = 0xFF;
KEYPAD_PORT = 0xF0;
for (i = 0; i < 4; i++) {
KEYPAD_PORT = ~(0x10 << i);
if ((KEYPAD_PORT & 0x0F) != 0x0F) {
row = i;
break;
}
}
KEYPAD_PORT = 0x0F;
for (j = 0; j < 4; j++) {
if ((KEYPAD_PORT & (0x01 << j)) == 0) {
col = j;
break;
}
}
if (row < 4 && col < 4) {
key = keypad[row][col];
}
if (key != 0xFF) {
lcd_cmd(0x01);
switch (key) {
case '1':
lcd_string(type[0]);
lcd_string(" ");
lcd_string(price[0]);
lcd_string(" ");
lcd_string(num[0]);
break;
case '2':
lcd_string(type[1]);
lcd_string(" ");
lcd_string(price[1]);
lcd_string(" ");
lcd_string(num[1]);
break;
case '3':
lcd_string(type[2]);
lcd_string(" ");
lcd_string(price[2]);
lcd_string(" ");
lcd_string(num[2]);
break;
case '4':
lcd_string(type[3]);
lcd_string(" ");
lcd_string(price[3]);
lcd_string(" ");
lcd_string(num[3]);
break;
case '5':
lcd_string(type[4]);
lcd_string(" ");
lcd_string(price[4]);
lcd_string(" ");
lcd_string(num[4]);
break;
default:
break;
}
}
delay(100);
}
}
void delay(unsigned int count) {
unsigned int i, j;
for (i = 0; i < count; i++) {
for (j = 0; j < 1275; j++);
}
}
void lcd_init() {
lcd_cmd(0x38);
lcd_cmd(0x0C);
lcd_cmd(0x06);
lcd_cmd(0x01);
delay(10);
}
void lcd_cmd(unsigned char value) {
rs = 0;
rw = 0;
en = 1;
P0 = value;
delay(10);
en = 0;
}
void lcd_data(unsigned char value) {
rs = 1;
rw = 0;
en = 1;
P0 = value;
delay(10);
en = 0;
}
void lcd_string(unsigned char *str) {
while (*str) {
lcd_data(*str++);
}
}
这个程序使用4x4键盘输入数字1-5,分别对应type、price和num数字的显示。程序通过按键输入来选择要显示的内容,并使用LCD显示结果。请注意,此程序仅为示例程序,并可能需要根据您的具体要求进行修改
原文地址: http://www.cveoy.top/t/topic/eisd 著作权归作者所有。请勿转载和采集!