找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于单片机驱动LCD1602只能使用P1口的问题,换成P2口就不行了

  [复制链接]
跳转到指定楼层
楼主
ID:403593 发表于 2019-1-8 12:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
新手请教论坛大佬,为什么LCD1602的并口数据总线必须得是单片机的P1口?为什么换成P2口就不行?是不是所有的8位的数据总线都必须接P1口?不能使用其他口?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:386762 发表于 2019-1-8 17:00 | 只看该作者
换其他IO都是可以的,建议吧代码贴出来看一下
回复

使用道具 举报

板凳
ID:434073 发表于 2019-1-8 17:31 | 只看该作者
只要硬件连线也更换到相应的P2口,程序没问题应该就可以的,不行换块芯片试试。
回复

使用道具 举报

地板
ID:393699 发表于 2019-1-8 18:24 | 只看该作者
可以换P2口的,你是程序没写对吧?
回复

使用道具 举报

5#
ID:454000 发表于 2019-1-8 19:00 | 只看该作者
LCD1602就这几个函数,你看一下改了没有,改一改基本上差不多了

void buy(void) //测忙
{
        P2=0xff;//---------要改这样子
        RS=0;
        RW=1 ;
        _nop_();
        EN=1;
        _nop_();
        _nop_();
        delay(5);
        EN=0;
}

void write_com(uchar cmd,uchar pp) //写指令
{
        if(pp)buy();
        RS=0;
        RW=0;
        _nop_();
        P2=cmd;//---------要改这样子
        _nop_();
        EN=1;
        _nop_();
        _nop_();
        EN=0;
}

void write_dat(uchar daa) //写数据
{
        buy();
        RS=1 ;
        RW=0;
        _nop_();
        //---------要改这样子
        _nop_();
        EN= 1;
        _nop_();
        _nop_();
        EN=0;
}

评分

参与人数 4黑币 +80 收起 理由
还有谁? + 15
钻牛尖滴刘尖尖 + 15
sheng7533967 + 15
yoxi + 35

查看全部评分

回复

使用道具 举报

6#
ID:432823 发表于 2019-1-8 19:27 | 只看该作者
P1,P2口都是准双向的,能正常驱动LCD602的,P0口要加上拉电阻。
回复

使用道具 举报

7#
ID:95916 发表于 2019-1-8 22:04 | 只看该作者
程序没改全吧
回复

使用道具 举报

8#
ID:453974 发表于 2019-1-9 00:10 | 只看该作者
还是你程序的问题吧,不可能不行,是不显示了,还是显示的是乱码呢?
回复

使用道具 举报

9#
ID:274129 发表于 2019-1-9 23:06 | 只看该作者
是不是程序的问题   不可能用P1口可以  用P2口就不可以
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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