
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]);
}
}
} 展开
#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]);
}
}
} 展开
1个回答
展开全部
你好:
应该是时序的问题。
你可以进我的百度空间里看看,我有LCD12864(ST7920控制器)的程序。
有不懂的可以随时回复我。
希望我的回答能帮助到你。
应该是时序的问题。
你可以进我的百度空间里看看,我有LCD12864(ST7920控制器)的程序。
有不懂的可以随时回复我。
希望我的回答能帮助到你。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?

2023-08-31 广告
目前越来越多的显示器制造商及供应商选择用自动化视觉检测系统来代替人眼检测产品的表面缺陷及其亮度、色度缺陷,从而降低生产产本,提高生产效率。 这样的检测系统简单来说,是由硬件和软件两部分组成: 1)硬件是基于一个高速、高分辨率的 CCD 传感...
点击进入详情页
本回答由瑞淀光学系统提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询