微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 关于液晶的问题

关于液晶的问题

时间:10-02 整理:3721RD 点击:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit lcdrs=P1^0;
sbit lcdrw=P1^1;
sbit lcden=P1^2;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
  for(y=110;y>0;y--);
}
void write_com(uchar com)
{
lcdrs=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar date)
{
lcdrs=1;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init()
{
lcdrw=0;
lcden=0;
write_com(0x38);
write_com(0x0f);
write_com(0x06);
}
void main()
{
init();
while(1);
}

以上是编的一个液晶qc16202a的显示的程序,不过我通过测试,发现,在
void init()
{
lcdrw=0;
lcden=0;
write_com(0x38);
write_com(0x0f);
write_com(0x06);
  }
中,仅到write_com(0x38);能正确运行,而
write_com(0x0f);
write_com(0x06);
没运行,
不知道是怎么回事,请大家指教一下小弟,小弟,在此先谢过了!

LZ有没有看屏的规格书?有没有认真阅读自己的程序,按照规格书去写程序,再不会就去网上下载别人的例题。
void write_com(uchar com)和void write_data(uchar com)   LZ写的这两个函数有什么区别,都写成一样了,Delay时间应该太长了。最好还要读下屏的忙状态,怎么读自己查找规格书去。
void write_com(uchar com)
{
lcdrs=1;
lcdrw=0;                            //加上这句
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar data)
{
lcdrs=1;
lcdrw=0;                            //加上这句
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init()
{
//lcdrw=0;                                //去掉这两个
//lcden=0;
write_com(0x38);
write_com(0x0f);
write_com(0x06);
}

真心感谢您!这个程序在我的单片机运行不了,不知为什么,然后,看了网上的一个程序,下载另一个单片机中,就可以啦,我估计是硬件的问题。
不过,具体的就不知啦,
对啦,我还想再请问您一下,我可以用液晶读取存储模块里面的内容吗?哪怕是是数字也行?小弟,先提前谢谢啦!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top