标题: 关于单片机P1口应用的问题求教了 [打印本页]

作者: w1179benp    时间: 2022-3-15 07:51
标题: 关于单片机P1口应用的问题求教了
在做C51控制lcd1602显示的过程里(STC89C52),遇到个问题:如下程序,用P0口(P2口可以)正常显示,但换成P1(即 LCD_BUS  P1)就不显示(看不到仿真效果),请教下,这是为什么?如何解决呢?谢谢



单片机源程序如下:
#include<reg52.h>
#include <intrins.h>
#include <stdlib.h>   

#define uchar unsigned char
#define uint unsigned int

#define LCD_BUS  P0      

uchar num;
uint i,j;

sbit rs=P2^4;
sbit wr=P2^3;
sbit lcden=P2^2;

uchar code table1[]="XXX";
uchar code table2[]="123456789";

void delay(uint x)
{
    for(i=x;i>0;i--)
    {
    for(j=120;j>0;j--);
    }
}

void write_com(uchar com)
{
    rs=0;
    wr=0;
    lcden=0;
        
    LCD_BUS=com;                           
    lcden=1;
    delay(5);
    lcden=0;

}

void write_data(uchar dat)
{
    rs=1;
    wr=0;
    lcden=0;

    LCD_BUS=dat;                                
    lcden=1;
    delay(5);
    lcden=0;

}

void init()
{
    write_com(0x38);
    write_com(0x08);
    write_com(0x01);
    write_com(0x06);
    write_com(0x0f);


}

void main()
{
                           
        LCD_BUS=0;                                

    init();
    for(num=0;num<3 ;num++)
    {
        write_data(table1[num]);
        delay(300);

    }
    write_com(0x80+0x40);
    for(num=0;num<10 ;num++)
    {
        write_data(table2[num]);
        delay(300);

    }
    while(1);
}

20220315_求助.rar (96.08 KB, 下载次数: 4)



作者: zhxiufan    时间: 2022-3-15 10:03
程序里面数据送入的是P0口当然只能P0口显示正常,P1没有数据送入,显示当然没有了。
作者: w1179benp    时间: 2022-3-15 10:21
zhxiufan 发表于 2022-3-15 10:03
程序里面数据送入的是P0口当然只能P0口显示正常,P1没有数据送入,显示当然没有了。

LCD_BUS  P1没显示,LCD_BUS  P0就有显示,为什么?LCD_BUS  P1程序里面数据送入了P1
作者: Petersoaring23    时间: 2022-3-15 11:33
我记得P1口和P0口上拉还是下拉,有区别,你自己找本书看看,芯片内部上下拉情况
作者: 兴安xa    时间: 2022-3-15 11:37
程序没问题,仔细检查你的电路标号
作者: w1179benp    时间: 2022-3-15 15:02
谢谢各位问题解决了。手上有个C51二手的开发板,我按照其绘制了proteus仿真板,驱动代码要求P1做控制总线,可C51开发板原设计者为屏蔽8个在P0口的LED,设计了个PNP型的Q2,其基极接P1^4,正是如此造成P1使用问题!


作者: a1s2d3f4555    时间: 2022-3-23 18:19
p1口接LCD的时候是不是要接个上拉电阻




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1