这是 单片机 1602的C语言的源程序: 在此: 寻一个能解释每一步代码含义的朋友

这是 单片机 1602的C语言的源程序: 在此: 寻一个能解释每一步代码含义的朋友,第1张

这和你的硬件电路有关系,看程序好像P0是数据输入端

#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

}

}

END

DELAY1:

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 *** 作这个口时直接进行字节 *** 作。如果非要反向连接的话,只能在编一个字节方向的函数,每次给数据端口赋值时,先进行字节方向 *** 作。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11748667.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存