📄 lcd1602.c
字号:
#include <reg51.h>
/*********************************端口定义**********************************/
sbit RS = P2^0;
sbit RW = P2^1;
sbit EP = P2^2;
#define DATA P1
/********************************显示数据表*********************************/
unsigned char code DISP1[] = {"www.swust.edu.cn"};
unsigned char code DISP2[] = {"0816-6082308-cx"};
/*****************************************************************************
函数功能:LCD延时子程序
入口参数:time
出口参数:
*****************************************************************************/
void delayns(unsigned char time)
{
unsigned char i;
for(;time>0;time--)
for(i = 0; i< 250; i++) ;
}
/*****************************************************************************
函数功能:测试LCD忙碌状态
入口参数:
出口参数:result
*****************************************************************************/
bit lcd_buzy()
{
bit result;
RS = 0;
RW = 1;
EP = 1;
delayns(1); //此处延时特别重要 (必不可少)
result = (bit)(DATA & 0x80);
delayns(1);
EP = 0;
return result;
}
/*****************************************************************************
函数功能:写指令数据到LCD子程序
入口参数:cmd
出口参数:
*****************************************************************************/
void lcd_w_order(unsigned char cmd)
{
while(lcd_buzy()); //判断LCD是否忙碌
RS = 0;
RW = 0;
EP = 1;
DATA = cmd;
delayns(1);
EP = 0;
}
/*****************************************************************************
函数功能:写入显示数据到LCD子程序
入口参数:dat
出口参数:
*****************************************************************************/
void lcd_w_data(unsigned char dat)
{
while(lcd_buzy()); //判断LCD是否忙碌
RS = 1;
RW = 0;
EP = 1;
DATA = dat;
delayns(1);
EP = 0;
}
/*****************************************************************************
函数功能:设定显示位置子程序
入口参数:pos
出口参数:
*****************************************************************************/
void lcd_post(unsigned char pos)
{
lcd_w_order(pos | 0x80);
}
/*****************************************************************************
函数功能:LCD初始化子程序
入口参数:
出口参数:
*****************************************************************************/
void lcd_init()
{
lcd_w_order(0x38); //显示模式设置
delayns(1);
lcd_w_order(0x0c); //显示光标设置,开显示
delayns(1);
lcd_w_order(0x06); //显示光标移动(右移)
delayns(1);
lcd_w_order(0x01); //清屏
delayns(1);
}
/*****************************************************************************
函数功能:主程序
入口参数:
出口参数:
*****************************************************************************/
void main(void)
{
unsigned char i=0;
lcd_init(); // 初始化LCD
delayns(10);
lcd_post(0x00); //设置显示位置
while(DISP1[i] != '\0')
{
lcd_w_data(DISP1[i]); //显示字符
i++;
}
lcd_post(0x40); // 设置显示位置
i = 0;
while(DISP2[i] != '\0')
{
lcd_w_data(DISP2[i]); // 显示字符
i++;
}
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -