📄 lcd1.c
字号:
#include"lcd.h"
//#included"include.h"
//RS (CS) O H: Data L: Instruction Code
//R/W (SID) O H: Read L: Write
//sbit EN=P2^2;
//extern void disp_graphic(unsigned int ru_kou);void lcd_init();
void delay20us(void)
{
unchar n;
for(n=0;n<15;n++);
}
void delay15ms(void)
{
unint n;
for(n=0;n<4800;n++);
}
void delay125us(void)
{
unchar n;
for(n=0;n<100;n++);
}
//EN下降沿写入数据
void lcd_write_command(unchar c) //向LCD模块的命令寄存器写一个字节c。
{
RS=0;
RW=0;
EN=0;
delay20us();
EN=1;
delay20us();
LCDDATA=c;
delay20us();
EN=0;
delay20us();
}
void lcd_write_data(unchar ddata) //向LCD模块的字符发生器或显存写一个字节data。
{
RS=1;
RW=0;
EN=0;
delay20us();
EN=1;
delay20us();
LCDDATA=ddata;
delay20us();
EN=0;
delay20us();
RS=0;
}
void lcd_init() //初始化LCD模块。
{
lcd_write_command(0x30); //基本命令集
delay125us();
lcd_write_command(0x0c); //整体开显示,游标关闭
delay125us();
lcd_write_command(0x01); //清除显示
delay15ms();
lcd_write_command(0x06); //游标方向设定
delay125us();
}
void lcd_clear()
{
lcd_write_command(0x01);
delay125us();
delay125us();
delay125us();
}
void lcd_write_sentence(unchar row,unchar col,unchar *string)
{
unchar i=0;
//lcd_clear();
switch(row)
{
case 1:
lcd_write_command(0x80+col);
delay125us();
break;
case 2:
lcd_write_command(0x90+col);
delay125us();
break;
case 3:
lcd_write_command(0x88+col);
delay125us();
break;
case 4:
lcd_write_command(0x98+col);
delay125us();
break;
default:
lcd_write_command(0x80);
delay125us();
break;
}
while(string[i])
{
lcd_write_data(string[i]);
delay125us();
i++;
}
}
void lcd_write_passage(unchar *string)
{
unchar i=0;
lcd_clear();
lcd_write_command(0x80);
while(string[i])
{
switch(i)
{
case 16:
lcd_write_command(0x90);
break;
case 32:
lcd_write_command(0x88);
break;
case 48:
lcd_write_command(0x98);
break;
//default:
//break;
}
lcd_write_data(string[i]);
delay125us();
i++;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -