文档详情

单片机LCD1602闪动显示字符以及protues仿真设计.pdf

发布:2024-08-13约5千字共7页下载文档
文本预览下载声明

单片机LCD1602闪动显示字符以及protues仿真

————我的实验(二)

以下是我亲自做的protues仿真,代码绝对正确,仿真结果完全

正确。实物也可完美运行。在网上的代码总有问题,总想把正确的分

享给学弟学妹,哈哈。

1.原理图

(原理图放大版)

2.仿真图结果

3.c语言代码

#includereg52.h//包含单片机寄存器的头文件

#includeintrins.h//包含_nop_()函数定义的头文件

sbitRS=P2^0;//寄存器选择位,将RS位定义为P2.0引脚

sbitRW=P2^1;//读写选择位,将RW位定义为P2.1引脚

sbitE=P2^2;//使能信号位,将E位定义为P2.2引脚

sbitBF=P0^7;//忙碌标志位,,将BF位定义为P0.7引脚

/*****************************************************

函数功能:延时1ms

***************************************************/

voiddelay1ms()

{

unsignedchari,j;

for(i=0;i10;i++)

for(j=0;j33;j++)

;

}

/*****************************************************

函数功能:延时若干毫秒

入口参数:n

***************************************************/

voiddelay(unsignedcharn)

{

unsignedchari;

for(i=0;in;i++)

delay1ms();

}

/*****************************************************

函数功能:判断液晶模块的忙碌状态

返回值:result。result=1,忙碌;result=0,不忙

***************************************************/

unsignedcharBusyTest(void)

{

bitresult;

RS=0;//根据规定,RS为低电平,RW为高电平时,可以读状态

RW=1;

E=1;//E=1,才允许读写

_nop_();//空操作

_nop_();

_nop_();

_nop_();//空操作四个机器周期,给硬件反应时间

result=BF;//将忙碌标志电平赋给result

E=0;

returnresult;

}

/*****************************************************

函数功能:将模式设置指令或显示地址写入液晶模块

入口参数:dictate

***************************************************/

voidWriteInstruction(unsignedchardictate)

{

while(BusyTest()==1);//如果忙就等待

RS=0;//根据规定,RS和R/W同时为低电平时,可以写入指令

RW=0;

E=0;//E置低电平(根据表8-6,写指令时,E为高脉冲,

//就是让E从0到1发生正跳变,所以应先置发生正跳变,所以应先置

显示全部
相似文档