用的是STC89C51,编程就不知道该怎么写了函数了

2019-07-15 19:40发布

第一次用LCD1602,画PCB时,为了焊接接线方便,就把LCD的D0-D7口分别接到了P2.7-P2.0,我用的是STC89C51,接线的时候也没想太多,觉得这个软件肯定是能改的,现在编程就不知道该怎么写了函数了,希望高手能帮助解决这个问题。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
7条回答
123安全卫士
2019-07-16 02:34
依然落叶飘零 发表于 2014-5-18 02:07
以前我也这样做过,你写一个函数将要输出的字节高低位对调就行了。
这是我在网上找的函数,方法很简单,但 ...

看不懂啊!下面是我写的程序怎么改呢?
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]="Hello everyone!";
uchar code table1[]="Welcome to here!";
sbit lcden=P0^2;
sbit lcdrs=P0^0;
uchar num;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
  for(y=110;y>0;y--);
}
{
lcdrs=0;
P2=com;
delay(5);
lcden=1;
delay(5);
lcden=0;//完成一个高脉冲
}
void write_data(uchar date) //写数据
{
lcdrs=1;
P2=date;//数据付给P2口
delay(5);
lcden=1;
delay(5);
lcden=0;
void init()
//----------初始化函数。
{
    lcden=0;
write_com(0x38);//显示设置指令(初始化0x38)
write_com(0x0f);//不显示光标
write_com(0x06);//写一个字符后指针与地址加一      
//write_com(0x01);//显示清零,数据和指针清零
}
void main()
{
init();
write_com(0x80+0x18);
for(num=0;num<15;num++)
{
  write_data(table[num]);
  delay(5);
}
write_com(0x80+0x58);
for(num=0;num<16;num++)
{
  write_data(table1[num]);
  delay(5);
}
for(num=0;num<16;num++)
{
  write_com(0x18);
  delay(20);
}
while(1);
}

一周热门 更多>