📄 29驱动1602液晶模块显示英文c.c
字号:
/*程序说明: 五一电子STC编程实验学习仿真开发板配套例子演示程序-1602液晶模块lcd显示
关于1602lcd的指令,请参阅本目录下的lcd-162指令表
相关连接定义: */
#include <reg51.h>
#include <intrins.h> //包含_nop_()函数
sbit rs=P2^0; //rs为寄存器选择,1=数据寄存器、0=指令寄存器。
sbit rw=P2^1; //rw为读写信号线,1=读操作,0=写操作。
//当rs=rw=0可以写入指令或者显示地址,
//当rs=0,rw=1可以读忙信号,
//当rs=1,rw=0可以写入数据。
sbit en=P2^2; //当en端由高电平跳变成低电平时,液晶模块执行命令。
sbit busy=P1^7; //忙指示
#define comdat P1 //P1为命令或数据线,请用8根的数据线将单片机的P1口和液晶模块的d0-d7连接,其中P1.7(d7)为忙指示
unsigned char code str1[]={" www.51dz.com "}; //第一行16个字符
unsigned char code str2[]={" 2007-12-25"}; //第二行16个字符
//---判断液晶显示器是否忙------------
delay()
{
do
{
comdat=0xff; //判断液晶显示器是否忙的子程序
rs=0;
rw=1;
en=0;
_nop_();
en=1;
}
while(busy); //busy为高电平表示忙,循环等待
}
//---写命令--------------------------
wricomm()
{
rs=0; //写入控制命令的子程序
rw=0;
en=0;
delay(); //等待
en=1;
}
//---写数据------------------------------
wridata()
{
rs=1;
rw=0; //准备写入数据
en=0; //执行显示命令
delay(); //判断液晶模块是否忙
en=1;
}
//****************************************
main()
{
unsigned char i=200;
//---初始化
while(--i);
comdat=0x01; //清屏并光标复位
wricomm(); //写入命令
comdat=0x38; //设置显示模式:8位2行5x7点阵
wricomm();
comdat=0x0f; //显示器开、光标关、光标禁止闪烁
wricomm();
comdat=0x06; //文字不动,光标自动右移
wricomm();
//选择1行
comdat=0x00; //写入显示起始地址(第1行第2个位置)
comdat=comdat|0x80;
//按模块要求写入的地址最高位必需为1
wricomm(); //写入命令
//送字符
for(i=0;i<16;i++)
{
comdat=str1[i]; //提取字符
wridata(); //送出
}
//选择2行
comdat=0x40; //写入显示起始地址(第1行第1个位置)
comdat=comdat|0x80;
//按模块要求写入的地址最高位必需为1
wricomm(); //写入命令
//送字符
for(i=0;i<16;i++)
{
comdat=str2[i]; //提取字符
wridata(); //送出
}
while(1); //停止到这里
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -