在做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)
2022-3-15 07:51 上傳
點擊文件名下載附件
|