单片机LCD显示不出来
大家好,我写了一个简单的程序来驱动LCD显示的,但怎么都显示不出来,初学者,请哪位高手帮忙给看看,十分感谢。#include<reg51.h>#definelcdP1sb...
大家好,我写了一个简单的程序来驱动LCD显示的,但怎么都显示不出来,初学者,请哪位高手帮忙给看看,十分感谢。
#include<reg51.h>
#define lcd P1
sbit rs=P3^5;
sbit rw=P3^6;
sbit e=P3^7;
char line[]="My name is jiajia";
void check_bf();
void write_inst(char inst)
{
rs=0;
rw=0;
e=1;
lcd=inst;
e=0;
check_bf();
}
void write_character(char chara)
{
rs=1;
rw=0;
e=1;
lcd=chara;
e=0;
check_bf();
}
void check_bf()
{
char i,x=0x80;
while(x&0x80)
{
rs=0;
rw=0;
e=1;
x=lcd;
e=0;
for(i=0;i<10;i++);
}
}
void delay(int x)
{
int i,j;
for(i=1;i<x;i++)
{
for(j=1;j<120;j++);
}
}
void init_lcd()
{
write_inst(0x30);
write_inst(0x30);
write_inst(0x30);
write_inst(0x38);
write_inst(0x08);
write_inst(0x01);
write_inst(0x06);
write_inst(0x0e);
}
main()
{
int i;
init_lcd();
while(1)
{
write_inst(0x08);
for(i=0;i<17;i++)
write_character(line[i]);
delay(20);
}
}
其中lcd的D0~D7与单片机的P1口相连
三个控制端在程序中定义了引脚,P3~5,P3~6,P3~7.我的程序有什么问题?还是显示不出来啊 展开
#include<reg51.h>
#define lcd P1
sbit rs=P3^5;
sbit rw=P3^6;
sbit e=P3^7;
char line[]="My name is jiajia";
void check_bf();
void write_inst(char inst)
{
rs=0;
rw=0;
e=1;
lcd=inst;
e=0;
check_bf();
}
void write_character(char chara)
{
rs=1;
rw=0;
e=1;
lcd=chara;
e=0;
check_bf();
}
void check_bf()
{
char i,x=0x80;
while(x&0x80)
{
rs=0;
rw=0;
e=1;
x=lcd;
e=0;
for(i=0;i<10;i++);
}
}
void delay(int x)
{
int i,j;
for(i=1;i<x;i++)
{
for(j=1;j<120;j++);
}
}
void init_lcd()
{
write_inst(0x30);
write_inst(0x30);
write_inst(0x30);
write_inst(0x38);
write_inst(0x08);
write_inst(0x01);
write_inst(0x06);
write_inst(0x0e);
}
main()
{
int i;
init_lcd();
while(1)
{
write_inst(0x08);
for(i=0;i<17;i++)
write_character(line[i]);
delay(20);
}
}
其中lcd的D0~D7与单片机的P1口相连
三个控制端在程序中定义了引脚,P3~5,P3~6,P3~7.我的程序有什么问题?还是显示不出来啊 展开
展开全部
能显示的LCD驱动是这样的,供参考
另,LCD要初始化;
void write_com(unsigned char cmdcode)
{
RS12=0; //RW=0;
Lcd_Bus=cmdcode;
delay(1);
E12=1;
delay(2);
E12=0;
}
/*-------------------写数据到LCD----------------------------*/
void write_data(unsigned char Dispdata)
{
RS12=1; //RW=0;
Lcd_Bus=Dispdata;
delay(1);
E12=1;
delay(2);
E12=0;
}
另,LCD要初始化;
void write_com(unsigned char cmdcode)
{
RS12=0; //RW=0;
Lcd_Bus=cmdcode;
delay(1);
E12=1;
delay(2);
E12=0;
}
/*-------------------写数据到LCD----------------------------*/
void write_data(unsigned char Dispdata)
{
RS12=1; //RW=0;
Lcd_Bus=Dispdata;
delay(1);
E12=1;
delay(2);
E12=0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
LCD用的是1602还是12864啊,我以前用12864,结果负压不够,液晶也显示不出来,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
其中lcd的D0~D7与单片机的P1口相连 ?
那三个控制端呢?
对比度调了么?
那三个控制端呢?
对比度调了么?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询