//写显示数据或单字节字符
void SendDat(unsigned char dat) {
SendByte(0xFA);//11111,01,0 RW=0,RS=1 SendByte(dat&0xF0);//高四位
SendByte((dat&0x0F)<<4);//低四位 }
/* 写汉字到LCD 指定的位置 x_add显示RAM的地址 dat1/dat2显示汉字编码 */
void display(unsigned char x_add,unsigned char dat1,unsigned char dat2) {
SendCMD(x_add);//1xxx,xxxx 设定DDRAM 7位地址xxx,xxxx到地址计数器AC
SendDat(dat1); SendDat(dat2); }
//初始化 LCM void initlcm(void) {
delay(100);
SendCMD(0x30);//功能设置,一次送8位数据,基本指令集 SendCMD(0x0C);//0000,1100 整体显示,游标off,游标位置off
SendCMD(0x01);//0000,0001 清DDRAM
SendCMD(0x02);//0000,0010 DDRAM地址归位
SendCMD(0x80);//1000,0000 设定DDRAM 7位地址000,0000到地址计数器AC }
void set_wenzi(void) {
SendCMD(0x80);//1000,0001 设定DDRAM 7位地址000,0001到地址计数器AC.
SendDat(0x48); //将ASCII码调出来,显示在液晶屏幕上.
26
下同
SendDat(0x65); SendDat(0x6c); SendDat(0x6c); SendDat(0x6f); SendDat(0x00); SendDat(0x4d); SendDat(0x72); SendDat(0x2e); SendDat(0x5a); SendDat(0x68); SendDat(0x6f); SendDat(0x75);
SendCMD(0x90); //设置液晶屏的显示地址,下同. SendDat(0x4d); SendDat(0x79); SendDat(0x20); SendDat(0x6e); SendDat(0x61); SendDat(0x6d); SendDat(0x65); SendDat(0x20); SendDat(0x69); SendDat(0x73); SendDat(0x20); SendDat(0x59); SendDat(0x75);
SendCMD(0x88); SendDat(0x32); SendDat(0x30); SendDat(0x3f); SendDat(0x3f);
display(0x8a,0xc4,0xea); //将中文字调出来.\年\的码值是:c4ea. SendDat(0x3f); SendDat(0x3f);
display(0x8c,0xd4,0xc2); SendDat(0x3f); SendDat(0x3f);
display(0x8e,0xc8,0xd5); SendCMD(0x98);
display(0x98,0xd0,0xc7);
27
display(0x99,0xc6,0xda); SendDat(0x3f); SendDat(0x3f); SendDat(0x3f); SendDat(0x3f); SendDat(0x3a); SendDat(0x3f); SendDat(0x3f);
}
void main(void) {
initlcm(); //12864初始化程序
set_wenzi(); //将想要设置的文字显示在液晶屏幕上。
while(1); }
此程序显示出来的图片:
28