以下是一个基本的程序,可以通过按键在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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录