基于单片机的protues仿真毕业论文(9)

2020-06-18 20:45

基于单片机的多温度检测系统的设计与protues仿真

液晶模块分为字符型和点阵型两类:字符型显示模块通常只能显示ASCII码表中的数字、字母等符号;点阵型显示模块除了可以显示ASCII字符,还能显示汉字、绘制图形。 (一)引脚功能

RT1602液晶模块内带标准字库,内部的字符发生存储器(CGROM)已经存储了192个5×7点阵字符,可显示2行×16列共32个点阵字符,其外观及引脚排列如图6-8所示,其引脚功能说明如下:

VSS:电源地 VDD:5V正电源

V0:为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生阴影,使用时可以通过一个10K的电位器调整对比度。

RS:寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 R/W:读写信号线,高电平时进行读操作,低电平时进行写操作。

E:使能控制信号,当该引脚由高电平跳变成低电平时,液晶模块执行命令。 RS=0、R/W=1、E=1时,读取液晶模块的状态字。 RS=0、R/W=0、E=1,向液晶模块写入命令字。 RS=1、R/W=1、E=1时,从液晶模块读取数据。 RS=1、R/W=0,E=1时,向液晶模块写入数据。 DB0~DB7:8位双向数据线。 BLA:背光源正极。 BLK:背光源负极。

图4.6 RT1602的外观及引脚

RT1602的读/写时序如图6-9所:

(二)显示模块的指令功能 RS

R/W

RS R/W

E DB0~DB7

读时序

E DB0~DB7

写时序

(二)显示模块的指令功能

RT1602液晶模块内部的控制器共有11条控制指令,单片机对液晶模块的控制都是通过指令编程来实现的,指令的格式如表6-3所示,现分别说明如下: 1、清屏:指令码01H,清屏后,光标返回到地址00H。 2、光标返回:光标返回到地址00H。 3、光标和显示模式设置:

I/D:光标移动方向,高电平右移,低电平左移。

S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效 4、显示开/关控制:

D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 。 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 。 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。

表4.8 RT1602显示模块的指令集

指令 清屏 光标返回 置输入模式 显示开/关控制

RS 0 0 0 0

R/W D7 0 0 0 0 0 0 0

0 0 0 0 0 0 1

D6 0 0 0 0 0 0

D5 0 0 0 0 0 1

D4 0 0 0 0 1 DL

D3 0 0 0 1

D2 0 0 1 D

D1 0 1

D0 1 *

I/D S C

B * *

光标或字符移位 0 置功能 置数据存储器地址

读忙标志或地址 0 写数据 读数据

1 1 0 0

S/C R/L * N

F

*

显示数据存储器地址(ADD)

1 0 1

BF 计数器地址(AC)

要写的数据 读出的数据

5、光标或显示移位:

S/C:高电平时移动显示的文字,低电平时移动光标。 R/L:移动方向,高电平右移,低电平左移。 6、置功能:

基于单片机的多温度检测系统的设计与protues仿真

DL:高电平时为4位总线,低电平时为8位总线。 N:低电平时为单行显示,高电平时双行显示。

F: 低电平时显示5×7的点阵字符,高电平时显示5×10的点阵字符。 7、置数据存储器地址:

如图4.9所示,液晶屏幕上的每个字符位置与内部数据存储器(DDRAM)之间有着一一对应关系-10 屏幕位。

LCD 16字*2行 00 40 01 41 02 42 03 43 04 44 05 45 06 46 07 47 08 48 09 49 09 4a A 4b B 4c …… 27 67 图4.9 置与内部数据存储器

为了将字符显示到屏幕指定位置,必须用该命令设置液晶模块的数据存储器地址。例如:为了能在第二行第二列(数据存储器地址为41H)显示字符,必须首先置数据存储器地址为41H,相应的命令字为1000 0000B + 0100 0001B=1100 0001B(C1H)。

8、读忙标志和光标地址:

BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,BF为低电平表示不忙。

AC:为当前计数器地址。 9、写数据:

RT1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,包括阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,一般为该字符的ASCII码,只要执行写数据指令,写入该字符的代码,就可在屏屏幕上显示该字符。

为了使程序清晰易读,将对命令口、数据口的写操作及等待操作完成设计成函数,每次写入指令码或数据后必须等待忙标志BF为0后才返回;由于每次写

入数据后,模块内的地址寄存器会自动指向下个单元,因此无需在每个字符输出前都设置数据存储器地址,比如在显示字符串str1前,只要用“lcd_cmd(0x80);”语句设置一次即可,将str1的第一个字符‘W’写入模块内地址为00H的单元,即显示在第一行的第一个字符位置,后续的其它字符就无需再设置地址了,程序清单如下:

#include #include #define uchar unsigned char #define uint unsigned int

#define LCD P0 //P0口作为总线端口 sbit RS=P3^7; //数据/命令寄存器选择控制端 sbit RW=P3^6; //读写控制端 sbit E =P3^5; //使能控制端

sbit RDY=LCD^7; //就绪线BF,低电平有效

void lcd_cmd(uchar cmd) //向液晶屏发送指令 { LCD=cmd; RS=0; RW=0; E=1;

_nop_(); //延时 E=0; while(1) { LCD=0xff; RS=0; RW=1; E=0;

//总线变高

//使能信号有效

//选择命令寄存器 //执行写数据操作

//选择命令寄存器 //读操作 //使能信号有效

_nop_(); //延时 E=1;

//撤消使能信号

基于单片机的多温度检测系统的设计与protues仿真

if(RDY==0) break;//如果就绪,返回 } }

void lcd_dat(uchar dat) //向液晶屏写入数据 {

LCD=dat; //显示数据送总线 RS=1; //选择数据寄存器 RW=0; //执行写数据操作 E=1; _nop_();

E=0; //使能信号有效 while(1)

{ LCD=0xff;//总线变高 RS=0; //选择命令寄存器 RW=1; //读操作 E=0; //使能信号有效 _nop_(); //延时

E=1; //撤消使能信号

if(RDY==0) break;//如果就绪,返回 dat=LCD; } }

void init_lcd(void) //初始化液晶屏 {

lcd_cmd(0x01);//清屏幕

lcd_cmd(0x3c);//设置双行显示,5X10点阵 lcd_cmd(0x0C);//开显示,关闭光标


基于单片机的protues仿真毕业论文(9).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:腹透中心工作手册

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: