51单片机驱动1602c液晶显示屏复位的问题

我用51单片机控制1602c液晶显示屏程序烧进去后,能正常显示数据。但是复位后不能显示。多次按复位键,偶尔能显示出数据,但是再按一次就一样不能显示了。上电复位也一样不行。... 我用51单片机控制1602c液晶显示屏
程序烧进去后,能正常显示数据。但是复位后不能显示。多次按复位键,偶尔能显示出数据,但是再按一次就一样不能显示了。上电复位也一样不行。
小弟刚入门,各位大侠教下啊~~感激不尽

硬件电路没有问题,有正常显示的程序。全用IO口去驱动液晶的。
不是keil硬件仿真,是直接下载到单片机中。
实验板配有程序,显示,复位完全没有问题。

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]=" Welcome ";
uchar num;
sbit rw=P2^5;
sbit rs=P2^4;
sbit e=P2^6;
sbit p3_7=P3^7;

void delay(uint z)
{
uint x,y;
for(x=z;x<0;x--)
for(y=110;y<0;y--);
}

void wirte_com(uchar _com) //写指令函数
{
rs=0;
P0=_com;
delay(5);
e=1;
delay(5);
e=0;
}

void wirte_data(uchar _data) //写数据函数
{
rs=1;
P0=_data;
delay(5);
e=1;
delay(5);
e=0;
}

void init()
{
e=0;
delay(15);
wirte_com(0x38); //写指令,设置16*2显示,5*7点阵,8位数据接口
delay(15);
wirte_com(0x38);
delay(15);
wirte_com(0x38);
delay(15);
wirte_com(0x0c);
wirte_com(0x06);
wirte_com(0x01); //清屏
}
void main()
{
delay(100);
init();
wirte_com(0x80);
for(num=0;num<14;num++)
{
wirte_data(table[num]);
delay(100);
}
while(1);
}

这是我写的程序,应该是初始化程序那里有问题,但我找不出
展开
 我来答
alone_1024
2009-07-16 · TA获得超过536个赞
知道小有建树答主
回答量:123
采纳率:0%
帮助的人:0
展开全部
你确定是将程序烧到单片机里面的而不是用keil硬件仿真的吗,如果是烧进去的就只能检测你的初始化程序有没有错误(你说了你的硬件电路没问题的);如果是硬件仿真的话就看看你的设置有没有问题,keil硬件仿真不要勾选串口引发中断,还有就是最好不要用到P3的引脚
chinasndw
2009-07-16 · TA获得超过162个赞
知道答主
回答量:210
采纳率:0%
帮助的人:108万
展开全部
e=0;
这语句不用写吧?
你去我主页上看看,上面有1602驱动程序,完整的,调试好的:
http://hi.baidu.com/chinasndw
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cocoguojia
2009-07-16 · TA获得超过4519个赞
知道小有建树答主
回答量:1097
采纳率:100%
帮助的人:556万
展开全部
对比度调节了吗?!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
绾浔漓酱&#xF353;
2009-07-16 · TA获得超过4.6万个赞
知道大有可为答主
回答量:7273
采纳率:75%
帮助的人:3912万
展开全部
一个是检查复位,另外检查一下初始化程序
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
monlika1
2009-07-16
知道答主
回答量:75
采纳率:0%
帮助的人:33.2万
展开全部
复位电路做得不好, 检测一下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 4条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式