📄 lcd1602.c
字号:
////////////////////////////////////////////////////////////////////
#include <reg52.h>
#define lcd_io P0
sbit rs = P2^7;
sbit rw = P2^6;
sbit en = P2^5;
#define command 0
#define lcd_data 1
extern void delay_ms(unsigned char time);
unsigned char disp_buf0[16] = {"Out: 1000 Hz"};
unsigned char disp_buf1[16] = {"In: Hz"};
unsigned char code disp_error[16] = {"out of max range"};
unsigned char code disp_init [16] = {"input a frequent"};
unsigned char code disp_max [16] = {"WARN: max 70 MHz"};
void check_busy(void) //忙检查
{
lcd_io = 0xff;
rs = 0;
rw = 1;
en = 1;
while(lcd_io & 0x80);
en = 0;
}
void write_lcd(unsigned char select,unsigned char dat) //写LCD
{
check_busy();
if (select) // 写数据
{
rs = 1;
rw = 0;
}
else // 写指令
{
rs = 0;
rw = 0;
}
lcd_io = dat;
en = 1;
en = 0;
}
void display_line(unsigned char y, unsigned char *dat) //显示行数据,y=0(第一行) y=1(第二行)
{
unsigned char cnt;
if(y) y = (y | 0x40) - 1;
y = y | 0x80;
write_lcd(command,y);
for (cnt=0;cnt<16;cnt++)
{
write_lcd(lcd_data,dat[cnt]);
}
}
void lcd_init(void) //液晶初始化
{
en = 0;
delay_ms(50);
write_lcd(command,0x38);
write_lcd(command,0x08);
write_lcd(command,0x01);
write_lcd(command,0x06);
write_lcd(command,0x0c);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -