LCD1602显示一个字符,如果这个字符在字库CGROM中,有三种显示方法
#include <STC89C5xRC.H> #define uint unsigned int #define uchar unsigned char sbit rs=P2^6; // 指令/数据选择 sbit rw=P2^5; // 读/写选择 sbit e=P2^7; // e由1到0,执行指令 void delay(uint t); void write_com(uchar com); //写指令函数 void write_dat(uchar dat); //写数据函数 void init(); // 初始化 void main() { init(); write_com(0x80); //设置字符显示位置,就是第一行,第一列 write_dat('A'); //写入字符"A"
//或者写成 write_dat(0x41);
//或者写成 write_dat(65);
while(1); //一直显示下去 } void write_com(uchar com) ////写指令函数 { rs=0; //选择指令寄存器 rw=0; //选择写操作 P0=com; //让P0口的8个脚获取指令参数 delay(100); e=1; //e由1到0,执行指令 delay(100); e=0; } void write_dat(uchar dat) { rs=1; //选择数据寄存器 rw=0; //选择写操作 P0=dat; //让P0口的8个脚获取数据参数 delay(100); e=1; delay(100); e=0; } void delay(uint t) { while(--t); } void init() { write_com(0x38); //功能设置指令:选择8位总线,两行显示方式,5x8点阵 write_com(0x0c); //打开屏幕显示功能,没有光标,也没有结尾闪烁 write_com(0x06); //写完字符后,光标右移,屏幕移动 write_com(0x01); //清屏 }
上面的代码不用改,在LCD12864中也能显示
除了字库不同,其它的差不多。
字符'A'地址也是41H.