#include <reg51.h>
#define uchar unsigned char//宏定义
sbit Rs=P2^0 //P2.0引脚接1602的数据/命令选择端
sbit Rw=P2^1 //P2.1引脚接1602的读/写控制端
sbit E=P2^7//P2.7引脚接1602的使能端
uchar table[]="Liu Xiao Ming",buffer //定义两个字符型变量
int k=0
void delay(int t) //延时子程序
{
int i,j
for(i=0i<255i++)
for(j=0j<tj++)
}
void writecom(void) //写命令子程序
{
Rs=0Rw=0E=1
P0=buffer
E=0
delay(5)
}
void writedata(void)//写数据子程序
{
Rs=1Rw=0E=1
P0=buffer
E=0
delay(5)
}
void init(void)//1602初始化子程序
{
buffer=0x08writecom() //显示关闭
buffer=0x3cwritecom() //
buffer=0x14writecom()
buffer=0x06writecom() //显示光标移动设置
buffer=0x01writecom() //显示清屏
buffer=0x0fwritecom()//
}
void main()
{
init()//1602初始化
buffer=0x80//
writecom()
buffer=0xc0
writecom()
for(k=0k<20k++)
{
buffer=table[k]//缓存数据
writedata() //向1602写数据,使其显示Liu Xiao Ming
}
}
ENDDELAY1:
MOV R5,#05H
D2:MOV R7,#38H
D1:MOV R6,#0F9H
DJNZ R6,$
DJNZ R7,D1
DJNZ R5,D2
RET
END
把END放到最后试试。因为程序已经结束了,你又弄出个DELAY1这子程序出来,编译时,当然不认识了。
我说哥,您这又是何苦呢?定义只能是sfr Lcd1602DataPort=0x90(P1口RAM地址)或者#define Lcd1602DataPort P1 *** 作这个口时直接进行字节 *** 作。如果非要反向连接的话,只能在编一个字节方向的函数,每次给数据端口赋值时,先进行字节方向 *** 作。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)