旅客信息系统设计说明书Word文件下载.docx
- 文档编号:22574850
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:56
- 大小:1.64MB
旅客信息系统设计说明书Word文件下载.docx
《旅客信息系统设计说明书Word文件下载.docx》由会员分享,可在线阅读,更多相关《旅客信息系统设计说明书Word文件下载.docx(56页珍藏版)》请在冰豆网上搜索。
两显示屏均采用液晶显示屏。
该子系统中最重要的是列车运行信息是动态实时的,倒如列车晚点后,就应该让旅客知道能否赶上换乘列车,以及还有哪些换乘可能性。
2课程设计任务
2.1系统任务
根据教学PPT给出的任务如下:
1.采用单片机为核心设计PIS系统,实现内外屏的信息显示。
2.使旅客信息定时自动显示切换,并可以由旅客在车厢内采用按键进行一些信息查询。
3.温度、湿度、压力、前方到站等信息来自主控单元(模拟能够收到)。
2.2任务分工
小组分工合作,具体的分工任务:
1.资料查询(尼加特);
2.方案设计(蔡艳阳);
3.编程及仿真(习佳威、苑宪增);
4.硬件实物的选型及电路连接(蔡艳阳、董浩)。
3硬件及原理介绍
3.1单片机最小系统
设计中用到的开发板包含单片机最小系统,图1是单片机最小系统的电路原理图。
图1单片机最小系统的电路原理图
其中还有我们用到的按键。
图2四位独立按键
以及用于LCD12864、LCD1602连接的端口。
图3LCD12864、LCD1602连接端口
3.2LCD显示屏
3.2.1LCD1602概述
液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。
LCD1602是一种常用的字符型液晶模块,它的主控芯片是HD44780或者其它兼容芯片。
图4LCD1602液晶显示屏
3.2.2LCD1602引脚功能
一般来说,LCD1602有16条引脚,另外还有14条引脚的,与16脚的相比缺少了背光电源A(15脚)和地线K(16脚)。
我们用到的LCD1602的型号是,它有16条引脚。
16条引脚定义如表1所示:
表1LCD1602引脚功能
引脚号
符号
引脚说明
1
VSS
电源地
9
D2
数据端口I/O
2
VDD
电源正极
10
D3
3
VO
偏压信号
11
D4
4
RS
命令/数据
12
D5
5
RW
读/写
13
D6
6
E
使能
14
D7
7
D0
15
A
背光正极
8
D1
16
K
背光负极
3.2.2LCD1602基本操作
LCD1602的基本操作分为四种:
1.读状态:
输入RS=0,RW=1,E=高脉冲。
输出:
D0—D7为状态字。
2.读数据:
输入RS=1,RW=1,E=高脉冲。
D0—D7为数据。
3.写命令:
输入RS=0,RW=0,E=高脉冲。
无。
4.写数据:
输入RS=1,RW=0,E=高脉冲。
读操作时序图(如图5),写操作时序图(如图6)。
图5读操作时序图
图6写操作时序图
时序时间参数(如图7)。
表2时序时间参数
时序参数
极限值
单位
测试条件
最小值
典型值
最大值
E信号周期
tC
400
--
ns
引脚E
E脉冲宽度
tPW
150
E上升沿/下降沿时间
tR,tF
25
地址建立时间
tSP1
30
引脚
E、RS、R/W
地址保持时间
tHD1
数据建立时间(读)
tD
100
DB0~DB7
数据保持时间(读)
tHD2
20
数据建立时间(写)
tSP2
40
数据保持时间(写)
3.2.2LCD1602控制指令
LCD1602内部的控制器共有11条控制指令,如表3所示。
表3LCD1602控制指令
指令
R/W
清显示
光标返回
置输入模式
I/D
S
显示开关控制
D
C
B
光标或字符滚动
S/C
R/L
*
置功能
DL
N
F
置字符发生器地址
字符发生存贮器地址(AGG)
置数据存储器地址
显示数据存贮器地址(ADD)
读忙标志或地址
BF
计数器地址(AC)
写数据
要写的数
读数据
读出的数据
指令1:
清显示,指令码0x01。
清显示屏,即对数据指指针和所有的显示清零,其光标复位到0x00的地址位置。
如c程序初始化时的指令:
Sendlcd-Command(0x01)。
指令2:
光标返回,指令码0x20。
显示回车,即数据指针清零,使光标返回到地址0x00。
指令3:
设定输入模式。
I/D-光标和显示设置。
I/D=1,光标右移(光标加1),即当读或写一个字符后,地址指针加1;
I/D=0,光标左移(光标减1),即当读或写一个字符后,地址指针减1。
当S=1(I/D=1),在写一个字符时,整屏显示左移,或右移(I/D=0),以得到光标不移动二屏幕移动的效果;
S=0,当写一个字符时,整屏的显示都不移动,即无效。
指令4:
开关控制的显示方式。
D是控制整体显示的开与关,D=1,表示开显示;
D=0表示关显示。
C是控制光标的开与关,C=1,表示无光标。
B是控制光标是否闪烁,B=1,表示光标闪烁。
指令5:
光标或画面滚动。
S/C滚动对象选择,S/C=1,画面滚动;
S/C=0,光标滚动。
R/L滚动方向选择,R/L=1,向右滚动;
R/L=0,向左滚动(配合S/C工作)。
指令6:
数据和字符的工作模式。
DL=1,数据总线宽度为8位,即D7-D0有效;
DL=0,数据总线宽度为4位,即D7-D4有效。
N设置显示字符的行数。
N=0为一行字符:
N=1为两行字符。
F是这只字符体的点阵数,F=0为5x7的字符点阵;
F=1是5x10的字符点阵。
一般设置F=0。
指令7:
设置字符发生器CGRAM的地址。
指令8:
设置数据存储器DDRAM的地址。
指令9:
忙标志位和数据指针。
BF为忙标志位,此时LCD模块不能接收命令或数据,BF=0,表示不忙。
所以,在MCU对LCD进行读写操作前,必须先确认BF为0,才能进行操作。
余下的7为(AC值),表示当前数据指针的地址值。
指令10:
写数据。
指令11:
读数据。
3.2.2LCD内部资源DDRAM、CGROM和CGRAM
DDRAM(DisplayDataRAM)就是显示数据RAM,用来寄存待显示的字符代码。
共80个字节,其地址和屏幕的对应关系如下(如图7)。
图7LCD1602地址和屏幕的对应关系
DDRAM相当于计算机的显存,我们为了在屏幕上显示字符,就把字符代码送入显存,这样该字符就可以显示在屏幕上了。
同样LCD1602共有80个字节的显存,即DDRAM。
但LCD1602的显示屏幕只有16×
2大小,因此,并不是所有写入DDRAM的字符代码都能在屏幕上显示出来,只有写在上图所示范围内的字符才可以显示出来,写在范围外的字符不能显示出来。
这样,我们在程序中可以利用下面的“光标或显示移动指令”使字符慢慢移动到可见的显示范围内,看到字符的移动效果。
前面说了,为了在液晶屏幕上显示字符,就把字符代码送入DDRAM。
例如,如果想在屏幕左上角显示字符‘A’,那么就把字符‘A’的字符代码41H写入DDRAM的00H地址处即可。
至于怎么写入,后面会有说明。
那么为什么把字符代码写入DDRAM,就可以在相应位置显示这个代码的字符呢?
我们知道,LCD1602是一种字符点阵显示器,为了显示一种字符的字形,必须要有这个字符的字模数据,什么叫字符的字模数据,看看下面的这个图就明白了(如图8)。
图8字模
上图的左边就是字符‘A’的字模数据,右边就是将左边数据用“○”代表0,用“■”代表1。
从而显示出‘A’这个字形。
从下面的图可以看出,字符‘A’的高4位是0100,低4位是0001,合在一起就是01000001b,即41H。
它恰好与该字符的ASCII码一致,这样就给了我们很大的方便,我们可以在PC上使用P2=‘A’这样的语法。
编译后,正好是这个字符的字符代码。
在LCD1602模块上固化了字模存储器,就是CGROM和CGRAM,HD44780内置了192个常用字符的字模,存于字符产生器CGROM(CharacterGeneratorROM)中,另外还有8个允许用户自定义的字符产生RAM,称为CGRAM(CharacterGeneratorRAM)。
从ROM和RAM的名字我们也可以知道,ROM是早已固化在LCD1602模块中的,只能读取;
而RAM是可读写的。
也就是说,如果只需要在屏幕上显示已存在于CGROM中的字符,那么只须在DDRAM中写入它的字符代码就可以了;
但如果要显示CGROM中没有的字符,比如摄氏温标的符号,那么就只有先在CGRAM中定义,然后再在DDRAM中写入这个自定义字符的字符代码即可。
和CGROM中固化的字符不同,CGRAM中本身没有字符,所以要在DDRAM中写入某个CGROM不存在的字符,必须在CGRAM中先定义后使用。
程序退出后CGRAM中定义的字符也不复存在,下次使用时,必须重新定义。
图95×
8点阵和5×
10点阵字符
上面这个图(如图9)说明的是5×
10点阵字符的字形和光标的位置。
先来说5×
8点阵,它有8行5列。
那么定义这样一个字符需要8个字节,每个字节的前3个位没有被使用。
例如,定义摄氏温标的符号{0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00}。
CGRAM地址一共可以表示64个地址,即64个字节。
一个5×
8点阵字符共占用8个字节,那么这64个字节一共可以自定义8个字符。
也就是说,上面这个图的6位地址中的DB5DB4DB3用来表示8个自定义的字符,DB2DB1DB0用来表示每个字符的8个字节。
这DB5DB4DB3所表示的8个自定义字符(0--7)就是要写入DDRAM中的字符代码。
我们知道,在CGRAM中只能定义8个自定义字符,也就是只有0—7这8个字符代码,但在下面的这个表(如图12)中一共有16个字符代码(×
×
0000b--×
1111b)。
实际上,如图所示,它只能表示8个自定义字符(×
0000b=×
1000b,×
0001b=×
1001b……依次类推)。
也就是说,写入DDRAM中的字符代码0和字符代码8是同一个自定义字符。
5×
10点阵每个字符共占用16个字节的空间,所以CGRAM中只能定义4个这样的自定义字符。
那么如何在CGRAM中自定义字符呢?
在上面的介绍中,我们知道有一个设置CGRAM地址指令,同写DDRAM指令相似,只须设置好某个自定义字符的字模数据,然后按照上面介绍的方法,设置好CGRAM地址,依次写入这个字模数据即可。
3.3温湿度传感器
3.3.1DHT11产品概述
DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。
它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。
传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。
因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。
每个DHT11传感器都在极为精确的湿度校验室中进行校准。
校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。
单线制串行接口,使系统集成变得简易快捷。
超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。
产品为4针单排引脚封装。
连接方便,特殊封装形式可根据用户需求而提供。
图10DHT11温湿度传感器
3.3.2DHT11应用领域
1)暖通空调
2)测试及检测设备
3)汽车
4)数据记录器
5)费品
6)自动控制
7)气象站
8)家电
9)湿度调节器
10)医疗
11)除湿器
3.3.2DHT11接口说明
建议连接线长度短于20米时用5K上拉电阻,大于20米时根据实际情况使用合适的上拉电阻。
图11DHT11接线示意图
3.3.2DHT11电源引脚
DHT11的供电电压为3-5.5V。
传感器上电后,要等待1s以越过不稳定状态在此期间无需发送任何指令。
电源引脚(VDD,GND)之间可增加一个100nF的电容,用以去耦滤波。
3.3.2DHT11串行接口
DATA用于微处理器与DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数部分用于以后扩展,现读出为零.操作流程如下:
一次完整的数据传输为40bit,高位先出。
数据格式:
8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据+8bit校验和
数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据”所得结果的末8位。
3.3.2DHT11引脚说明
图12DHT11引脚说明
3.4时钟芯片
3.4.1DS1302概述
DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。
图13DS1302时钟芯片
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个31×
8的用于临时性存放数据的RAM寄存器。
DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。
3.4.2DS1302工作原理
图14DS1302引脚
图14示出DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。
在主电源关闭的情况下,也能保持时钟的连续运行。
DS1302由Vcc1或Vcc2两者中的较大者供电。
当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。
当Vcc2小于Vcc1时,DS1302由Vcc1供电。
X1和X2是振荡源,外接32.768kHz晶振。
RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。
RST输入有两种功能:
首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;
其次,RST提供终止单字节或多字节数据的传送手段。
当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。
如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。
上电运行时,在Vcc≥2.5V之前,RST必须保持低电平。
只有在SCLK为低电平时,才能将RST置为高电平。
I/O为串行数据输入输出端(双向),后面有详细说明。
SCLK始终是输入端。
控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;
位5至位1指示操作单元的地址;
最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。
DS1302工作时为了对任何数据传送进行初始化,需要将复位脚(RST)置为高电平且将8位地址和命令信息装入移位寄存器。
数据在时钟(SCLK)的上升沿串行输入,前8位指定访问地址,命令字装入移位寄存器后,在之后的时钟周期,读操作时输出数据,写操作时输出数据。
时钟脉冲的个数在单字节方式下为8+8(8位地址+8位数据),在多字节方式下为8加最多可达248的数据。
3.4.3DS1302的寄存器和控制命令
对DS1302的操作就是对其内部寄存器的操作,DS1302内部共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。
此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。
时钟突发寄存器可一次性顺序读写除充电寄存器以外的寄存器。
日历、时间寄存器及控制字如表1所示:
图15日历、时钟寄存器与控制字对照表
图16DS1302内部主要寄存器分布表
DS1302内部的RAM分为两类,一类是单个RAM单元,共31个,每个单元为一个8位的字节,其命令控制字为COH~FDH,其中奇数为读操作,偶数为写操作;
再一类为突发方式下的RAM,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。
我们现在已经知道了控制寄存器和RAM的逻辑地址,接着就需要知道如何通过外部接口来访问这些资源。
单片机是通过简单的同步串行通讯与DS1302通讯的,每次通讯都必须由单片机发起,无论是读还是写操作,单片机都必须先向DS1302写入一个命令帧,这个帧的格式如表1所示,最高位BIT7固定为1,BIT6决定操作是针对RAM还是时钟寄存器,接着的5个BIT是RAM或时钟寄存器在DS1302的内部地址,最后一个BIT表示这次操作是读操作抑或是写操作。
物理上,DS1302的通讯接口由3个口线组成,即RST,SCLK,I/O。
其中RST从低电平变成高电平启动一次数据传输过程,SCLK是时钟线,I/O是数据线。
具体的读写时序参考图5,但是请注意,无论是哪种同步通讯类型的串行接口,都是对时钟信号敏感的,而且一般数据写入有效是在上升沿,读出有效是在下降沿(DS1302正是如此的,但是在芯片手册里没有明确说明),如果不是特别确定,则把程序设计成这样:
平时SCLK保持低电平,在时钟变动前设置数据,在时钟变动后读取数据,即数据操作总是在SCLK保持为低电平的时候,相邻的操作之间间隔有一个上升沿和一个下降沿。
图17DS1302的命令字结构
4方案设计
4.1总体方案
两个LCD显示屏分别显示列车车厢内外的信息;
显示屏幕的控制电路包括一个温湿度传感器和时钟芯片来测量车厢内的当前温湿度和时间显示。
通常显示屏幕上按程序设定显示车内外温湿度和气压以及其他信息,LCD显示屏和上位机根据需要选择485总线进行通讯[1]。
图18系统结构模块图
图19系统流程图
4.2分模块设计
4.2.1LCD显示屏
(1)理论设计
两个LCD1602分别显示车内外信息:
一个显示车外信息,包括车次号、始发站、终点站;
另一个显示车内信息,包括车厢内温湿度、实时时间、前方到站等内容。
车外LCD
车外固定显示车次号、始发站、终点站。
第一行显示车次“D204”,第二行显示“
”。
图显示屏预期达到的效果。
图20车外显示屏
车内LCD
车内显示初始欢迎界面、车厢内温湿度、实时时间、前方到站。
初始欢迎界面有第一行显示“Welcom”,第二行显示车厢号“16”;
乘客通过按键可以查询车厢内温湿度、实时时间、前方到站等信息。
(2)程序编写
根据LCD1602的工作原理,设计字符显示的流程图如图所示。
图21LCD1602工作流程图
4.2.2温湿度显示
DHT11是单总线的数字式温湿度传感器,类似于DS18B20,数据口DATA端口按照工作时序图,通过编写程序从DHT11中直接读取数据。
基本的流程如。
图22
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 旅客 信息系统 设计 说明书