资源描述
内容摘要
随着我国经济飞速发展和城市化进程加深,城市人口日益膨胀,机动车辆急剧增加,城市交通压力越来越大。发展公共交通事业是为居民提供安全有序出行方式不可替代途径,公共交通管理高质量和公共服务水平人性化是吸引居民采用公交出行有效途径,是中国解决交通问题重要措施。公交车报站系统是公共交通系统一个重要组成部分,设计先进报站系统能为广大居民乘车提供优质服务,提高公交系统服务水平。
本设计主要研究是基于AT89C51公交车自动报站系统,以实现公交车语音自动报站,即在进站、出站时候自动播报语音提示信息,同时利用LCD液晶屏进行站点信息显示。
本设计要求利用AT89C51作为主控芯片完成主控电路设计,辅助电路要求包括语音电路、LCD显示电路、电源电路等。 本设计介绍基于AT89C51单片机实现自动报站功能,该系统能实够实现语音质量好,良好显示站台信息和站点数,自动报站并及时更新等功能。
在附录中,本文还将给出一些重要程序设计,供参考之用。
关键词:自动报站;AT89C51单片机;语音电路;LCD
54 / 54
ABSTRACT
With the deepening of China's rapid economic development and urbanization, the urban population swelling, a sharp increase in motor vehicles, the increasing pressure of urban traffic. The development of public transport is an irreplaceable way to provide the residents with a safe and orderly way to travel, public transport management quality and the humanization of the level of public services is an effective way to attract residents using the bus travel is important for China to solve the traffic problems measures. The bus stop announcement system is an important part of the public transport system, the design of advanced stop system for the majority of residents traveling to provide quality services, to improve the transit system's service level.
The main study of this design is AT89C51-bus-based automatic stop announcement systems, in order to achieve the voice of the bus stop in the pit stop outbound time automatically broadcast a voice message, while taking advantage of the LCD screen to site information.
The design requirements by AT89C51 as the main chip to complete the design of the main control circuit, auxiliary circuit requirements include voice circuits, LCD display circuit, power circuit. This design introduces the automatic stop function, the system can be real enough to achieve good voice quality, good display site information and the number of sites, and automatically stop and promptly update the functionality based on AT89C51 microcontroller.
At the supplement, something like program code, dialogs etc will be written. It may be helpful for the future design.
KEY WORDS:SCM AT89S51, ISD1700speech chip, LCD
目 录
第一章. 绪论 1
1.1 公交报站系统现状及发展方向 1
1.2 公交报站系统设计意义 1
1.3 公交报站系统设计任务及要求 1
1.4 公交报站系统设计研究内容 2
第二章.公交报站系统方案设计 2
2.1 公交报站系统设计思路 2
2.2 公交报站系统方案比较和选择 2
2.2.1 方案一 2
2.2.2 方案二 3
2.2.3 方案选择 3
第三章.公交报站系统硬件设计 5
3.1 主控电路设计 5
3.1.1 AT89C51单片机介绍 5
3.1.2 振荡器电路设计 7
3.1.3 复位电源电路设计 8
3.2 语音输出电路脉设计 10
3.3 LCD1602液晶显示电路设计 14
3.3.1 LCD液晶显示器件介绍 14
3.3.2 LCD液晶显示流程图 16
3.3.3 LCD1602液晶显示电路设计 17
第四章 软件设计 18
4.1 系统程序流程图 18
4.2 程序子函数模块代码 20
第五章 系统仿真及调试 25
5.1 系统仿真 25
5.2 系统调试 27
结束语 28
参考文献 29
附录 程序清单 30
致谢 37
第一章 绪 论
随着科学技术日益发展和进步,城市化进程加快,公共交通作为城市基础设施之一,是绝大多出行者首选交通方式。为了使得人们特别是为外来旅游、出差、就医、工作等急需了解本地公交路线人提供高效、方便、快捷公交系统,使他们能够方便获得自己所需要各种信息,以此来减少各种不必要产生交通流量,缓解交通压力,提高公交车运作效率,由此公交车自动报站系统便得到了快速发展。在计算机还未普及之前公交车报站管理都是有工作人员人工报站方式来操作。随着社会进步和计算机快速发展,便有了公交车自动报站系统出现。语音报站系统在公交车上广泛使用,这在相当大程度上免除了乘务人员沿途报站麻烦,防止了错报、漏报,给许多不熟悉公交线路乘客带来了方便。
1.1 公交报站系统现状及发展方向
公交车报站器在公交事业中占有举足轻重地位,它直接影响到公交车服务质量。目前公交车报站有三种方式,一种是利用GPS全球卫星定位系统公交车报站系统,在司机座位后面隔板上,安装了一台15英寸液晶电视和 GPS信号接收器,安装了这套设备后,公交车在语音报站同时,通过液晶电视还可以显示到站站名字幕,这样如果没听清报站话,通过显示屏,乘客也可以一目了然。当出现紧急情况时,调度中心将会给公交车发出相应信息,以短信形式传送到显示屏上,同时车载台会发出相应提示音;驾驶员也可以通过相应工具进行回复。目前在美国部分城市GPS卫星定位系统已经投入使用,国内也有此类产品研制开发,其功能强大,系统稳定,但其投资昂贵,尤其是一些中小城市无法承受。另外两种是手动电子报站和人工报站方式,而它们都离不开司务人员,加大司乘人员工作强度。手动电子报站一般有司机或者乘务员控制,经常出现错报,误报情况。城市公共交通是市民出行主要交通工具之一。提供舒适,安全、便捷乘车环境,对于公交企业来说,不仅是应尽责任,亦是不断追求目标。
1.2 公交报站系统设计意义
近年来单片机技术迅猛发展,广泛应用于诸多领域,在公交事业上已经运用单片机来实现公交报站这项功能。但由于现在公交车大部分还是采用人工手动控制报站器,这不但影响了公交司机正常驾驶,分散了驾驶员注意力,同时也加重了他工作负担。不过这相对于以前人工报站已经有了大提高,但同时由于人工控制就存在着差错,给人们出行带来不便。
为了使大家生活更加便捷,让公交车驾驶员工作量能有效减轻,减少报站出错等问题,故运用单片机技术、语音芯片技术、无线收发技术以及液晶显技术溶于一体设计出既能手动又能自动报站公交语音自动报站系统,使每辆公交车都能准确无误实现报站,让每位乘客准确知道自己位置。
1.3 本设计任务及要求
本设计主要设计一种用单片机设计公交车报站系统。利用AT89C51单片机控制语音芯片ISD1700语音芯片模块来控制播报站点信息,站点信息则通过LCD液晶屏显示出来。该设计可以模拟人声音进行报站和预报站;能准确报站,可及时更新。本设计要求利用AT89C51作为主控芯片完成主控电路设计,辅助电路要求包括语音电路、LCD显示电路、电源电路等。
1.4 设计研究内容
根据对公交报站器调研,本设计主要研究一种采用单片机来设计既能手动又能自动报站公交语音自动报站系统。此设计主要采用AT89C51单片机、LCD显示模块、ISD1700语音芯片来设计本公交报站系统。
第二章 系统方案设计
2.1 系统设计思路
本系统采用两种工作模式,分别为自动模式和手动模式。本次设计采用一个AT89C51单片机作为接收端控制器。在每个站台上安装上无线发射装置,信号由无线发射头通过编码芯片不断向一定半径范围内发射无线信号。而公交车上则安装主体器件。包括LCD液晶显示模块、无线接收识别模块以及语音播报模块等。无线接收识别模块由无线接收头通过解码芯片解码接收到信号。C51对无线接收模块端口进行扫描,当公交车即将到站进入信号范围时,端口电平发生改变,C51识别到后先调用语音芯片内部播放指针,让其指向预置数据段,并进行播报。同时改变LCD显示内容,将下一站站名进行更新。接着下车指示灯亮起,通知到站乘客下车。车子离站台后信号消失,指示灯熄灭。
2.2 系统方案比较和选择
2.2.1 方案一
公交车站自动报站器设计,对车轮轴转角脉冲进行计数,将计数值及预置值对比,即可确定报站时刻,达到准确自动目。以AT89C51为主控芯片,对外来脉冲计数,结合语音芯片ISD1700输出语音。系统由脉冲检测、脉冲计数、CPU控制、控制信号、语音芯片、输出显示等组成。原理框图如图2-1所示。
音频播放电路
语音芯片
输出显示
CPU控制
控制信号
脉冲计数
脉冲检测
图2-1 原理框图
1. CPU控制:程序中将计数值于预置值进行比较,判断是否到站,当到站时就输出信号控制语言芯片进行报站。
2. 控制按键:用于手动控制、手动调整、预置值输入等。
3. 语言芯片:由专用语音芯片ISD1700组成,可擦写,便于在不同公交线上使用。
4. 输出显示:LCD液晶屏显示。
5. 预置存储:采用两种方式存储,一种是在烧写器上将数据写入,另一种是在车上,单片机处于输入状态,车辆行驶一遍,将站及站之间脉冲数写入片内。
2.2.2 方案二
利用8031单片机作为CPU来进行总体控制,当汽车到达某站时,汽车司机通过键盘来控制本系统进行工作,并且,系统将使用状态指示电路,向司机指示出当前行驶方向及站号。原理图框图如图2-2所示。
语音合成电路
LED点阵显示电路
8031小系统
键盘
状态指示电路
语音输入输出电路
图2-2 原理框图
本系统使用8031作为CPU,由CPU去控制语音芯片,使系统在8031控制下工作运行。当系统进行语音再生时,由CPU控制语音合成电路中语音芯片来读取其外接存储器内部语音信息,并合成语音信号,再通过语音输出电路,进行语音报站和提示。CPU同时通过程序读取汉字信息,送入LCD屏显示电路来进行站点信息提示。当系统进行语音录制时,语音信号通过语音输入电路输入给语音合成电路中语音合成芯片,由语音合成芯片进行数据处理,并将生成数字语音信息存储到语音存储芯片中,从而建立语音库。
2.2.3 方案选择
将方案一及方案二进行比较,方案二是采用8031单片机控制,通过键盘来控制报站时刻,需要全人工员手动控制,比较繁琐。所以本课题决定选用方案一,它使用AT89C51作为主控制芯片,通过对里程计数来控制报站时刻,无需人工控制,选用语音芯片是美国ISD公司ISD1700,该芯片及其它语音芯片相比较,其语音音质好,录放时间长。
第三章 系统硬件设计
3.1 主控电路设计
公交车报站系统主要由四个部分组成,即主控电路、显示电路、语音电路以及电源电路。
3.1.1 AT89C51单片机介绍
AT89C51是美国ATMEL公司生产低电压,高性能CMOS 8位单片机,片内含有4K bytes可反复擦写只读程序存储器和128随机存取数据存储器,器件采用AEMEL公司高密度,非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和FLASH存储单元,功能强大AT89C51单片机可为您提供许多高性价比应用场合,可灵活应用于各种控制领域。AT89C51是一种带4K字节FLASH存储器低电压、高性能CMOS 8位微处理器,俗称单片机。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMELAT89C51是一种高效微控制器,AT89C2051是它一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉方案。
AT89C51 提供以下标准功能:4k 字节Flash 闪速存储器,128字节内部RAM,32 个I/O 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz静态逻辑操作,并支持两种软件可选节电工作模式。空闲方式停止CPU工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。AT89C51封装采用双列直插式封装(DIP),其外部含有40个引脚,如下图所示:
图3-1 AT89C51引脚图
VCC:供电电压。
GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。
P1口:P1口是一个内部提供上拉电阻8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉缘故。在FLASH编程和校验时,P1口作为低八位地址接收。
P2口:P2口为一个内部上拉电阻8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口管脚被外部拉低,将输出电流。这是由于内部上拉缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉缘故。
P3口也可作为AT89C51一些特殊功能口,如下表所示:
表3-1
端口引脚
第二功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
INT0(外中断0)
P3.3
INT1(外部中断1)
P3.4
T0(定时/计数器0外部输入)
P3.5
T1(定时/计数器1外部输入)
P3.6
WR(外部数据存储器写选通)
P3.7
RD(外部数据存储器读选通)
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期高电平时间。
ALE:当访问外部存储器时,地址锁存允许输出电平用于锁存地址低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变频率周期输出正脉冲信号,此频率为振荡器频率1/6。因此它可用作对外部输出脉冲或用于定时目。然而要注意是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:外部程序存储器选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效/PSEN信号将不出现。
/EA:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
XTAL1:反向振荡放大器输入及内部时钟工作电路输入。
XTAL2:来自反向振荡器输出。
3.1.2 振荡器电路设计
89系列单片机内部振荡器电路如图3-2所示,由一个单级反相器组成。XTAL1为反相器输入,XTAL2为反相器输出。可以利用它内部振荡器产生时钟,只要在XTAL1和XTAL2引脚上外接一个晶体及电容组成并联谐振电路,便构成一个完整振荡信号发生器,如图3-4示,此方法称为内部方式。
另一种使用方法如图3-3示,由外部时钟源提供一个时钟信号到XTAL1端输入,而XTAL2端浮空。在组成一个单片机应用系统时,多数采用图3-4所示方法,这种方式结构紧凑,成本低廉,可靠性高。 振荡器等效电路如图3-4上部所示。在图中给出了外接元件,即外接晶体及电容C1,C2,并组成并联谐振电路。在电路中,对电容C1和C2值要求不是很严格,如果用高质晶振,则不管频率为多少,C1,C2通常都选择20nF。有时,在某些应用场合,为了降低成本,晶体振荡器可用陶瓷振荡器代替。如果使用陶瓷振荡器,则电容C1,C2值取47pF。
XTAL2
XTAL1
内部定时
/PD
400
D1
D2
Q1
Rf
Q2
VCC
Q3
Q4
XTAL1
XTAL2
89系列单片机
GND
内部定时
VCC
/PD
Rf
石英晶体或
陶瓷振荡器
C1
C2
图3-2 AT89C51单片机内部振荡器电路
XTAL2
XTAL1
GND
NC
CMOS门
外部振荡信号
图3-3 外部时钟接法 图3-4 片内振荡器等效电路
通常,在单片机中对所使用振荡晶体参数要求如下:
ESR(等效串联电阻):根据所需频率按图3-6选取。
C0(并联电容):最大7.0pF。
CL(负载电容):30pF+3pF。
通常,其误差及温度变化范围要按系统要求来确定。
600
500
400
300
200
100
0 4 8 12 16
图3-5 ESR及频率关系曲线
在本设计中,采用是内部方式,即如图3-4所示,在XTAL1和XTAL2引脚上外接一个12MHZ晶振及两个20nF电容组成。
3.1.3 复位电源电路设计
89系列单片机及其他微处理器一样,在启动时候都需要复位,使CPU及系统各部件处于确定初始状态,并从初始状态开始工作。89系列单片机复位信号是从RST引脚输入到芯片内施密特触发器中。当系统处于正常工作状态时,且振荡器稳定后,则CPU就可以响应并将系统复位。
1、 手动复位
手动复位需要人为在复位输入端RST上加入高电平。一般采用办法是在RST端和正电源VCC之间接一个按钮。当人为按下按钮时,则VCC+5V电平就会直接加到RST端。由于人动作很快也会使按钮保持接通达数十毫秒,所以,保证能满足复位时间要求。手动复位电路如图3-6所示。
Vcc
AT89C51
RST
GND
8.2k
10uF
+
Vcc
图3-6 手动复位电路
2、 上电复位
AT89C51上电复位电路如图3-7所示,只要在RST复位输入引脚上接一电容至VCC端,下接一个电阻到地即可。对于CMOS型单片机,由于在RST端内部有一个下拉电阻,故可将外部电阻去掉,而将外接电容减至1uF。
上电复位过程是在加电时,复位电路通过电容加给RST端一个短暂高电平信号,此高电平信号随着Vcc对电容充电过程而逐渐回落,即RST端高电平信号必须维持足够长时间。
上电时,Vcc上升时间约为10ms,而振荡器起振时间取决于振荡频率,如晶振频率为10MHz,起振时间为1ms;晶振频率为1MHz,起振时间则为10ms。
在图3-7复位电路中,当Vcc掉电时,必然会使RST端电压迅速下降到0V以下,但是,由于内部电路限制作用,这个负电压将不会对器件产生损害。另外,在复位期间,端口引脚处于随机状态,复位后,系统将端口置为全“1”态。
如果系统在上电时得不到有效复位,则在程序计数器PC中将得不到一个合适初值,因此,CPU可能会从一个未被定义位置开始执行程序。
Vcc
AT89C51
RST
8.2k
10uF
+
Vcc
GND
图3-7 上电复位电路
3、 复位后寄存器状态
当系统复位时,内部寄存器状态如表3-1所列,即在SFRS中,除了端口锁存器、堆栈指针SP和串行口SBUF外,其余寄存器全部清0,端口锁存器复位值为0FFH,堆栈指针值为07H,SBUF内为不定值。内部RAM状态不受复位影响,在系统上电时,RAM内容是不定。
专用寄存器
复位值
专用寄存器
复位值
PC
0000H
TCON
00H
ACC
00H
B
00H
PSW
00H
SP
07H
DPTR
0000H
P0-P3
FFH
IP
×××00000B
IE
0××00000B
TMOD
00H
TH0
00H
TL0
00H
TH1
00H
TL1
00H
SCON
00H
SBUF
不定
PCON(CHMOS)
0×××0000B
表3-2 各特殊功能寄存器复位值
在本设计中复位电路采用是上电复位,即如图3-7所示。
3.2 语音输出电路脉设计
ISD1700是华邦 ISD公司2007年新推出单片优质语音录放电路,该芯片提供多项新功能,包括内置专利多信息管理系统,新信息提示, 双运作模式,以及可定制信息操作指示音效。芯片内部包含有自动增益控制、麦克风前置扩大器、扬声器驱动线路、振荡器及内存等全方位整合系统功能。
1、 特点:
(1)可录、放音十万次,存储内容可以断电保留一百年
(2)两种控制方式,两种录音输入方式,两种放音输出方式
(3)可处理多达 255 段以上信息
(4)有丰富多样工作状态提示
(5)多种采样频率对应多种录放时间
(6)音质好,电压范围宽,应用灵活
2、电特性:
(1)工作电压: 2.4V-5.5V, 最高不能超过 6V
(2)静态电流: 0.5 - 1 μA
(3)工作电流: 20mA
图3-8 ISD1700引脚图
用户可利用震荡电阻来自定芯片采样频率,从而决定芯片录放时间和录放音质。芯片采样率可以通过外部振荡电阻来调节:
采样频率(KHZ )
12
8
6.4
5.3
4
ROS阻值( KΩ )
60
80
100
120
160
表3-3
3、 独立按键工作模式
ISD1700独立按键工作模式录放电路非常简单,而且功能强大。不仅有录、放功能,还有快进、擦除、音量控制、直通放音和复位等功能。这些功能仅仅通过按键就可完成。
在按键模式工作时,芯片可以通过LED管脚给出信号来提示芯片工作状态,并且伴随有提示音,用户也可自定4种提示音效。
录音操作:
按下REC键,/REC管脚电平变低后开始录音,直到松开按键使电平拉高或者芯片录满时结束。录音结束后,录音指针自动移向下一个有效地址。而放音指针则指向刚刚录完那段语音地址。
放音操作 :
放音操作有两种模式,分别是边沿触发和电平触发,都由PLAY管脚触发。
快进操作:
点按一下FWD按钮将FWD端拉低,会启动快进操作。快进操作用来将播放指针移向下一段语音信息。当播放指针到达最后一段语音处时,再次快进,指针会返回到第一段语音。当下降沿来到FWD端时,快进操作还要决定于芯片当时状态。
擦除操作:
擦除操作分为单段擦除和全体擦除两种擦除方式。
复位操作:
如果用RESET控制此管脚,建议RESET管脚及地之间连接 一个0.1μF电容。当RESET被触发,芯片将播放指针和录音指针都放置在最后一段语音信息位置。
音量操作:
点按一下VOL键将VOL管脚拉低会改变音量大小。每按一下,音量会减小一档,再到达最小档后再按话,会增加音量直到最大档,如此循环。总共有8个音量档供用户选择,每一档会改变4dB 。复位操作会将音量档放在默认位置,即最大音量。
FT 直通操作:
按住FT键将FT管脚持续保持在低电平会启动直通模式。出厂设定是在芯片空闲状态,直通操作会将语音从Analn端直接通往喇叭端或AUD输出口。在录音期间按下FT键,会同时录下Analn进入语音信号。
4、管脚功能说明:
管脚名称
PDIP/SOIC管脚
TSOP管脚
引脚说明
VCCD
1
22
数字电路电源
/LED
2
23
LED 指示信号输出
/RESET
3
24
芯片复位
MISO
4
25
SPI 接口串行输出。
MOSI
5
26
SPI 接口数据输入端口。
SCLK
6
27
SPI 接口时钟。
/SS
7
28
为低时,开启 SPI 接口。
VSSA
8
1
模拟地
AnaIn
9
2
芯片录音或直通时,辅助模拟输入。
MIC+
10
3
麦克风输入 +
MIC-
11
4
麦克风输入 -
VSSP2
12
5
负极 PWM 喇叭驱动器地
SP-
13
6
喇叭输出 -
VCCP
14
7
PWM 喇叭驱动器电源
SP+
15
8
喇叭输出 +
VSSP1
16
9
正极 PWM 喇叭驱动器地
AUD/AUX
17
10
辅助输出,用来输出一个 AUD 或 AUX
AGC
18
11
自动增益控制
/VOL
19
12
音量控制
ROSC
20
13
振荡电阻,决定芯片采样频率
VCCA
21
14
模拟电路电源
/FT
22
15
在独立芯片模式下,当 FT 一直为低, Analn 直通线路被激活。
/PLAY
23
16
播放控制端
/REC
24
17
录音控制端
/ERASE
25
18
擦除控制端
/FWD
26
19
快进控制端
RDY / INT
27
20
一个开路输出。
VSSD
28
21
数字地
3.3 LCD1602液晶显示电路设计
3.3.1 LCD液晶显示器件介绍
字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,市面上字符液晶绝大多数是基于HD44780液晶芯片,HD44780是带西文字库液晶显示控制器,用户只需要向HD44780送ASCII字符码,HD44780就按照内置ROM点阵发生器自动在LCD液晶显示器上显示出来。所以,HD44780主要适用于显示西文ASCII字符内容液晶显示。
1602字符型LCD能够同时显示16*2即32个字符(16列2行)。其内置192种字符(160个5*7点阵字符和32个5*10点阵字符),具有64个字节自定义字符RAM,可自定义8个5*8点阵字符或4个5*11点阵字符。
1602通常有14条引脚线或16条引脚线两种,多出来2条线是背光电源线和地线,带背光比不带背光略厚,控制原理及14脚LCD完全一样,是否带背光在应用中并无差别。本设计中采用带背光14引脚线。其主要技术参数为:
图3-9 LCD1602引脚图
VSS:电源地(GND)。
VDD:电源电压(5V)。
VEE:LCD驱动电压,液晶显示器对比度调整端。使用时可以通过一个10K电位器调整对比度,接正电源时对比度最弱,接地电源时对比度最高。
RS:寄存器选择输入端,选择模块内部寄存器类型信号。RS=0,进行写模块操作时指向指令寄存器,进行读模块操作时指向地址计数器。RS=1,无论进行读操作还是写操作均指向数据寄存器。
R/W:读写控制输入端,选择读/写模块操作信号。R/W=0,读操作;R/W=1,写操作。本设计中只需往LCD里写数据即可,写时序见图3-4。
E:使能信号输入端。读操作时,高电平有效;写操作时,下降沿有效
DB0~DB7:数据输入/输出口,单片机及模块之间数据传送通道。选择4位方式通讯时,不使用DB0~DB3。
1602模块内部主要由LCD显示屏、控制器、列驱动器和偏压产生电路构成。控制器接受来自MPU指令和数据,控制着整个模块工作。主要由显示数据缓冲区DDRAM,字符发生器CGROM,字符发生器CGRAM,指令寄存器IR,地址寄存器DR,忙标志BF,地址计数器AC以及时序发生电路组成。
模块通过数据总线DB0~DB7和E、R/W、RS三个输入控制端及MPU接口。这三根控制线按照规定时序相互协调作用,使控制器通过数据总线接受MPU发来数据和指令,从CGROM中找到欲显示字符字符码,送入DDRAM,在LCD显示屏上及DDRAM存储单元对应规定位置显示出该字符。控制器还可以根据MPU指令,实现字符显示,闪烁和移位等显示效果。
CGROM内提供是内置字符码,CGRAM则是供用户存储自定义点阵图形字符。模块字符在LCD显示屏上显示位置及该字符字符代码在显示缓冲区DDRAM内存储地址一一对应。
LCD1602模块内部具有两个8位寄存器:指令寄存器IR和地址寄存器DR,用户可以通过RS和R/W输入信号组合选择指定寄存器,进行相应操作。
RS
R/W
操 作
0
0
将DB0~DB7指令代码写入指令寄存器IR中
0
1
分别将状态标志BF和地址计数器AC内容读到DB7和DB6~DB0
1
0
将DB0~DB7数据写入数据寄存器中,模块内部操作将数据写到DDRAM或者CGRAM中数据送入数据寄存器中
1
1
将数据寄存器内数据读到DB0~DB7,模块内部操作自动将DDRAM或者CGRAM中数据送入数据寄存器中
表3-5 寄存器选择组合
1602提供了较为丰富指令设置,通过选择相应指令设置,用户可以实现多种字符显示样式。下面仅简要介绍本次设计中需要用到一些指令设置。
清屏指令 Clear display
清显示指令将空位字符码20H送入全部DDRAM地址中,时DDRAM中内容全部清除,显示消失,地址计数器AC=0,自动增一模式。显示归位,光标闪烁回到原点(显示屏左上角),但不改变移位设置模式。清屏指令码见表3-6。
RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
0
0
0
0
0
0
0
0
0
1
表3-6 清屏指令码
进入模式设置指令 Entry mode set
见表3-7,进入模式设置指令用于设定光标移动方向和整体显示是否移动。
RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
0
0
0
0
0
0
0
1
I/D
S
表3-7 模式设置指令码
显示开关控制指令 Display on/off control
指令码见表3-8,该指令功能为控制整体显示开关,光标显示开关和光标闪烁开关。
RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
0
0
0
0
0
0
1
D
C
B
表3-8 显示开关控制指令码
D:显示开/关标志。D=1,开显示;D=0,关显示。
关显示后,显示数据仍保持在DDRAM中,开显示即可再现。
C:光标显示控制标志。C=1,光标显示;C=0,光标不显示。不显示光标并不影响模块其他显示功能。显示5*8点阵字体时,光标在第八行显示;显示5*10点阵字符时,光标在第11行显示。
B:闪烁显示控制标志。B=1,光标所在位置会交替显示全黑点阵和显示字符,产生闪烁效果;B=0,光标不闪烁。
功能设置指令 Function set
功能设置指令用于设置接口数据位数,显示行数以及字形。指令码见表3-9。
RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
0
0
0
0
1
DL
N
F
*
*
表3-9 功能设置指令码
DL:数据接口宽度标志。DL=1,8位数据总线DB7~DB0;DL=0,4位数据总线DB7~DB4,DB3~DB0不使用,此方式传送数据需分两次进行。
1602模块内部设有上电自动复位电路,当外加电源电压超过+4.5V时,自动对模块进行初始化操作,将模块设置为默认显示工作状态。初始化大约持续10ms左右。
但是需要特
展开阅读全文