📄 lcd.c
字号:
#include<lcd.h>
sbit lcd_RS=P1^2;
sbit lcd_RW=P1^1;
sbit lcd_E=P1^0;
sbit lcd_flag=P2^7;
/*函数功能: 读lcd忙状态
函数返回: 返回1表示处入忙状态, 不可写 */
static bit lcd_busy()
{
bit flag;
P2=0xff;
lcd_RS=0;
lcd_RW=1;
lcd_E=1;
if (lcd_flag==1) flag=1;
else flag=0;
lcd_E=0;
return flag;
}
/*函数功能: 延时ms毫秒 */
static void lcd_delay(int ms)
{
int i, j;
for(i=ms; i>0;i--)
for(j=1000; j>0;j--)
;
}
/*函数功能:写入指令com */
static void lcd_putcommand(uchar com)
{
while(lcd_busy());
lcd_RS=0;
lcd_RW=0;
lcd_E=0;
P2=com;
lcd_E=1;
lcd_E=0;
}
/*函数功能: 写入数据ch */
static void lcd_putchar(uchar ch)
{
while(lcd_busy());
//lcd_busy();
lcd_RS=1;
lcd_RW=0;
lcd_E=0;
P2=ch;
lcd_E=1;
lcd_E=0;
}
/*函数功能:在LCD的x行,y列显示一个字符ch*/
void lcd_write_char(uchar ch,uchar x,uchar y)
{
if (x==1) lcd_putcommand(0x80|y);
if (x==2) lcd_putcommand(0xc0|y);
lcd_putchar(ch);
}
/* 函数功能:从LCD的x行,y列开始显示一个字符串str */
void lcd_write_str(char* str,uchar x,uchar y)
{
if (x==1) lcd_putcommand(0x80|y);
if (x==2) lcd_putcommand(0xc0|y);
lcd_putcommand(0x06);
while(*str++)
{
lcd_putchar(*(str-1));
}
}
/*清屏*/
void lcd_clear(void)
{
lcd_putcommand(0x01);
}
/*LCD初始化*/
void lcd_init(void)
{
lcd_putcommand(0x38); //设置显示模式16*2
lcd_putcommand(0x0c); //显示开,不显示光标
lcd_clear(); //清屏
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -