求一YM12864J液晶(带字库)显示程序
C51编程的,只要能正常显示汉字就可以了LCD引脚定义1---GND2---VCC3---VLCD4---D/I5---R/W6---E7到14D0-D715--CS11...
C51编程的,只要能正常显示汉字就可以了
LCD引脚定义
1---GND
2---VCC
3---VLCD
4---D/I
5---R/W
6---E
7到14 D0-D7
15--CS1
16--CS2
17--RESET
18--VEE
19--SW
20--NC 展开
LCD引脚定义
1---GND
2---VCC
3---VLCD
4---D/I
5---R/W
6---E
7到14 D0-D7
15--CS1
16--CS2
17--RESET
18--VEE
19--SW
20--NC 展开
1个回答
展开全部
看来我用的和你不一样。
不知道你的液晶模块是不是带两个片选口的,我这里有一个液晶模块只带一个片选口,数据接口支持串行、4位并行和8位并行,以下使用了8位并行接口,用作测试时只用了最基本的指令来实现汉字的显示,默认从最左上角开始显示,未支持自定义位置显示功能,如果还要其他功能,可参考技术资料去模块写入相应的指令,不会复杂的。希望对你有所帮助。
#include <reg52.h>
#define DB P0
sbit LCD_RS = P1^0;//选择指令寄存器或数据寄存器
sbit LCD_RW = P1^1;//控制读、写
sbit LCD_E = P1^2;//片选、使能
sbit buzy_test = DB^7;//8位数据接口
void byzy_wait(void)//液晶模块内部忙检测
{
DB=0xff; //为了读出状态,IO口必须先写入1,否则读取的状态会错误
LCD_RS=0;
LCD_RW=1;
LCD_E=1;
_nop_();
while(buzy_test);
}
void write_char(unsigned char d)//向模块写入1字节数据
{
byzy_wait();
LCD_RS=1;
LCD_RW=0;
DB=d;
LCD_E=1;
_nop_();
LCD_E=0;
}
void write_code(unsigned char d)//向模块写入一条指令
{
byzy_wait();
LCD_RS=0;
LCD_RW=0;
DB=d;
LCD_E=1;
_nop_();
LCD_E=0;
}
void write_string(unsigned char *str)//显示字符串
{
while(*str!='\0')
{
write_char(*str);
str++;
}
}
main()
{
delay_ms(500);//自定义一个毫秒级的延时,这里延时了500ms
write_code(0x30);//通过写入指令,选择8位并行接口模式
write_code(0x01);//清除显示
write_code(0x0c);//开启显示状态,允许整体显示
write_code(0x02);//地址归位
write_code(0x80);//设定显示起始位置为第一行行首
write_string("液晶演示");
while(1)
{}
}
不知道你的液晶模块是不是带两个片选口的,我这里有一个液晶模块只带一个片选口,数据接口支持串行、4位并行和8位并行,以下使用了8位并行接口,用作测试时只用了最基本的指令来实现汉字的显示,默认从最左上角开始显示,未支持自定义位置显示功能,如果还要其他功能,可参考技术资料去模块写入相应的指令,不会复杂的。希望对你有所帮助。
#include <reg52.h>
#define DB P0
sbit LCD_RS = P1^0;//选择指令寄存器或数据寄存器
sbit LCD_RW = P1^1;//控制读、写
sbit LCD_E = P1^2;//片选、使能
sbit buzy_test = DB^7;//8位数据接口
void byzy_wait(void)//液晶模块内部忙检测
{
DB=0xff; //为了读出状态,IO口必须先写入1,否则读取的状态会错误
LCD_RS=0;
LCD_RW=1;
LCD_E=1;
_nop_();
while(buzy_test);
}
void write_char(unsigned char d)//向模块写入1字节数据
{
byzy_wait();
LCD_RS=1;
LCD_RW=0;
DB=d;
LCD_E=1;
_nop_();
LCD_E=0;
}
void write_code(unsigned char d)//向模块写入一条指令
{
byzy_wait();
LCD_RS=0;
LCD_RW=0;
DB=d;
LCD_E=1;
_nop_();
LCD_E=0;
}
void write_string(unsigned char *str)//显示字符串
{
while(*str!='\0')
{
write_char(*str);
str++;
}
}
main()
{
delay_ms(500);//自定义一个毫秒级的延时,这里延时了500ms
write_code(0x30);//通过写入指令,选择8位并行接口模式
write_code(0x01);//清除显示
write_code(0x0c);//开启显示状态,允许整体显示
write_code(0x02);//地址归位
write_code(0x80);//设定显示起始位置为第一行行首
write_string("液晶演示");
while(1)
{}
}
深圳市鸿佳联合科技有限公司_
2021-01-25 广告
2021-01-25 广告
提供户外强光下可视、高清高亮、超宽视角、工业级宽温中小尺寸TFT液晶屏,可差异化定制,接口可兼容SPI/MCU/RGB/MIPI。以上内容如果还觉得不够全面,也可以沟通下深圳市鸿佳联合科技有限公司。深圳市鸿佳联合科技有限公司专注于中小尺寸T...
点击进入详情页
本回答由深圳市鸿佳联合科技有限公司_提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询