12864液晶程序哪里写错了不会显示汉字

我用的是51单片机#include<reg51.h>#defineucharunsignedchar#defineuintunsignedint#defineLCD_da... 我用的是51单片机

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define LCD_date P0
uchar code n[]={"我 爱 你"};
sbit RS = P2^6;
sbit RW = P2^5;
sbit EN = P2^7;
sbit PSB= P3^2;
sbit RST= P3^4;
void delay(uint a)
{
uchar i,j;
for(i=0;i<a;i++)
for(j=0;j<500;j++);
}

void write_date(uchar com)
{
uchar temp;
ES=0;
RW=1;
do
{
LCD_date=0xff;
EN=1;
delay(20);
temp=LCD_date;
EN=0;
}
while(temp&0x80);
RS=1;
RW=0;
EN=1;
delay(20);
LCD_date=com;
EN=0;
}
void write_xs(uchar tel)
{
uchar temp;
ES=0;
RW=1;
do
{
LCD_date=0xff;
EN=1;
delay(20);
temp=LCD_date;
EN=0;
}
while(temp&0x80);
RS=1;
RW=0;
EN=1;
delay(20);
LCD_date=tel;
EN=0;
}
void lcd_into()
{
PSB = 1; //并口方式

delay(3);

write_date(0x34); //扩充指令操作
delay(5);
write_date(0x30); //基本指令操作
delay(5);
write_date(0x0C); //显示开,关光标
delay(5);
write_date(0x01); //清除LCD的显示内容
delay(5);
}
void lcd_pos(uchar X,uchar Y)
{
uchar pos;
if (X==1)
{X=0x80;}
else if (X==2)
{X=0x90;}
else if (X==3)
{X=0x88;}
else if (X==4)
{X=0x98;}
pos = X+Y ;

write_date(pos); //显示地址
}

void main()
{
uchar i;
delay(100); //上电,等待稳定
lcd_into(); //初始化LCD
while(1)
{
lcd_pos(1,0); //设置显示位置为第一行
for(i=0;i<16;i++)
{
write_xs(n[i]);

}
}
}
展开
 我来答
Cindere鞡
2014-03-11 · TA获得超过7254个赞
知道大有可为答主
回答量:1148
采纳率:84%
帮助的人:549万
展开全部
你好:
应该是时序的问题。
你可以进我的百度空间里看看,我有LCD12864(ST7920控制器)的程序。
有不懂的可以随时回复我。
希望我的回答能帮助到你。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
瑞淀光学系统
2023-08-31 广告
目前越来越多的显示器制造商及供应商选择用自动化视觉检测系统来代替人眼检测产品的表面缺陷及其亮度、色度缺陷,从而降低生产产本,提高生产效率。 这样的检测系统简单来说,是由硬件和软件两部分组成: 1)硬件是基于一个高速、高分辨率的 CCD 传感... 点击进入详情页
本回答由瑞淀光学系统提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式