找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1159|回复: 4
打印 上一主题 下一主题
收起左侧

stc89C52单片机驱动QC1602的问题

[复制链接]
跳转到指定楼层
楼主
ID:793261 发表于 2020-6-29 22:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题,硬件连接是这样焊接的,QC1602 的D0--D7是直接连接到89c52的P2口的P2.0--P2.7 (D0对应P2.0,D1对应P2.1……,没有外接上拉或者下拉电路),然后RS ,RW ,EN 这三个脚 是连接的P3口上,对应如下,RS< -- >P3.6 ;  RW< --> P3.5 ;  EN <--->P3.4  ,点不亮啊,目前发现一个问题,我的89C52 不能同时使用P2口和P3 口,部分代码片段如下,sbit LCDEN = P3^4; P2 = 0xff ; LCDEN = 1; delay_ms(1000);LCDEN =0; delay_ms(1000);这样的代码运行后,用万用表测LCDEN 不会出现高低高低的电压跳变。然后屏蔽掉P2 =0xff ,就可以量到隔一秒高隔一秒低的电压跳变。
#include <reg52.h>
#define uint unsigned int
//sbit lcden = P3^4;
int delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}

int main(void)
{
        while(1)
        {
        P2 = 0x00;
        delay(1000);
        P2 =0xff;
        delay(1000);
        /*lcden =0;
        delay(1000);
        lcden =1;
        delay(1000);*/
}
        }

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:88256 发表于 2020-6-30 01:38 | 只看该作者
大家都习惯数据接P0口,不知道为什么你要选P2口。另外,不可能不能同时使用P2口和P3 口的,只能是你的程序错误。
C语言我也刚入门,看你的主程序,后面那一段应该是没有屏蔽的吧?你的本意是让P2和lcden的电平均匀高低变化吧?但是却没有考虑到,P2 =0xff高电平后,并不会在一秒后(姑且认为你的 delay(1000)是延时一秒吧)变成低电平,还需要经历 lcden的两段延时,也就是合计3秒后才会变成低电平;同理,lcden变成高电平后,也需要3秒才能变成低电平,所以,就算你屏蔽了P2 =0xff,也不会出现量到隔一秒高隔一秒低的电压跳变。
看你屏蔽的两个地方,说明这个程序不是写入单片机的程序,不知道实际程序也不好判断你所描述的问题所在(sbit lcden = P3^4都被屏蔽了,还能量得到电压跳变?)
      
回复

使用道具 举报

板凳
ID:584814 发表于 2020-6-30 07:36 | 只看该作者
选哪个口无所谓,如果你对1602的脾气摸透,可以任意6个口驱动而不是8+3=11个口。
无论是4+2还是8+3,程序写对、电路接好才是王道,有问题无非是这两块。
1602的时序先看懂再操作,你这个 P2 = 0x00; delay(1000); P2 =0xff; 是想干啥
回复

使用道具 举报

地板
ID:793261 发表于 2020-6-30 10:26 | 只看该作者
hhdsdy 发表于 2020-6-30 01:38
大家都习惯数据接P0口,不知道为什么你要选P2口。另外,不可能不能同时使用P2口和P3 口的,只能是你的程序 ...

P0口我接LED 了,刚好用了P2口,这个帖子我准备存草稿,没有想到发出了,感谢回答!当时这个帖子没有编辑好,准备捋一捋再发的。我的本意是这样的,因为1602无法点亮,卡了好多天了,于是我想随便写个程序,看下我连接的对应的io口是否正常工作。于是就有了面的问题,这段代码,我是分别屏蔽过P2口和P3口去验证的,当时没有细看,就贴上去了,开始没有修改前是屏蔽的P2口的操作,测量之后再屏蔽P3口,所以得出的上述结论。因为我P0口焊接了8颗LED ,曾经也用类似方法,发现单独用一个P0口,LED 能亮 ,如果程序中再随便加段代码操作其他的IO口,LED 就不亮了。所以才有此一问。
回复

使用道具 举报

5#
ID:793261 发表于 2020-6-30 10:28 | 只看该作者
man1234567 发表于 2020-6-30 07:36
选哪个口无所谓,如果你对1602的脾气摸透,可以任意6个口驱动而不是8+3=11个口。
无论是4+2还是8+3,程序 ...

谢谢回答,我只是想操作一下,看下是否有高低的电压跳变,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表