📄 lcd.c
字号:
#include "LCD.h"
void chk_busy() //判忙函数
{
rs=0 ;
rw=1 ;
e=1 ;
P0=0xff ;
while((P0&0x80)==0x80);
e=0 ;
}
void lcd_write_cmd(uchar com) //LCD12864写命令
{
chk_busy();
rs=0 ;
rw=0 ;
e=1 ;
P0=com;
delay_50us(1);
//------------------在数据写入的时候加入适当的延时
e=0 ;
}
void lcd_write_data(uchar dat) //LCD12864写数据
{
chk_busy();
rs=1 ;
rw=0 ;
e=1 ;
P0=dat;
delay_50us(1);
//------------------在数据写入的时候加入适当的延时
e=0 ;
}
/**********************************************************************
* 名称: Addr_Set()
* 函数功能:字符位置确定
* 入口参数: x(0~7) 指定点所在列的位置
* y(0~3) 指定点所在行的位置
* 出口参数:无
* 说明:汉字必须是存在在液晶字库中的
**********************************************************************/
void Addr_Set(uchar x,uchar y)
{
uchar address;
switch(x)
{
case 0: x = 0x80 ; break;
case 1: x = 0x90 ; break;
case 2: x = 0x88 ; break;
case 3: x = 0x98 ; break;
default: return;
}
address = x+y;
lcd_write_cmd(address);
}
void LCD_12864_initinal(void)
{
delay_50ms(2);
lcd_write_cmd(0x30); //Function set 基本指令操作
lcd_write_cmd(0x0c); //显示状态开/关00001DCB
//D=1: 整体显示 ON C=1: 游标ON B=1:游标位置反白允许
lcd_write_cmd(0x01);
//清除显示 将DDRAM填满"20H",并且设定DDRAM的地址计数器(AC)到"00H"
lcd_write_cmd(0x06);
//进入点设定0001I/DS
//指定在数据的读取与写入时,设定游标的移动方向及指定显示的移位
}
/*------------------显示字符串--------------------------*/
void string_dis(uchar code *s)
{
while(*s>0) //"\0"结束
{
lcd_write_data(*s);
s++;
//delay_1ms(500); //慢速显
//delay_1ms(200); //中速显
delay_50us(1); //快速显
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -