单片机课程设计(论文)-基于LCD1602液晶显示器课程设计

摘要

在日常生活中,我们对液晶显示(LCD)并不陌生LCD智能显示模块不但可以显示字符,汉字和图形,同时具有可编程功能,且与单片机接口比较方便,如液晶显示模块已作为很多电子产品的通用器件,如在计算器,万用表,电子表及很多家用电子产品中都可以看到,显示的主要是数字,专用符号和图形。在单片机系统中应用中用液晶显示作为输出器件有很多优点,如显示质量高,不闪烁;数字接口式,使得和单片机的接口更加简单可靠,操作方便;体积小,重量轻;而且相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动TC上,因而耗电量比其它显示器要少得多。

关键字:单片机专用字符液晶显示器(LCD1602)

目录

摘要.................................................................................................................... 错误!未定义书签。第一章绪论 ................................................................................................. 错误!未定义书签。

1.1 课题背景 (2)

1.2课题设计目标 (2)

1.3课题设计的主要工作 (3)

第二章硬件设计 (4)

2.1LCD1602简介 (5)

2.1.1 LCD1602引脚功能 (7)

2.2 IIC总线 (10)

2.2.1 IIC总线的特点 (11)

2.2.2 IIC协议总线信号时序 (9)

2.2.3 IIC总线器件寻址方式 (7)

2.3 系统电路图 (7)

第三章软件设计 (7)

3.1 系统框图 (7)

3.2 程序清单 (7)

第四章调试 (7)

第五章总结 (7)

参考文献 (7)

致谢 (7)

1绪论

1.1课题背景

当今时候是一个信息化的时代,信息的重要性不言而喻的,获取手段显得尤其重要。人们所接受的信息有70%来自于人的视觉,无论用何种方式获取的信息最终需要有某种显示方式来表示。在当代显示技术中,主流的有LED显示屏和LCD液晶显示,而在这些显示技术中,尤其以液晶显示器LCD(Liquid crystal display)为代表的平板显示器发展最快,应用最广。LCD是典型的发光器件,它一材料科学为基础,综合利用了精密机械,光电及计算机技术,并正在微机械,微光学,纤维光学等前沿领域研究基础上,向高集成化,智能化方向发展。

液晶显示技术发展迅猛,市场预测表明,液晶显示平均年销售呈增长10%~13%,不久的将来有可能取代CRT,成为电子信息产品的主要显示器件,另外,液晶显示器对空间电磁辐射的干扰不敏感,且在紧凑的仪器空间不需要专门的屏蔽保护,因而课大大简化仪器的结构和制造成本,在各种便携式仪器,仪表将会越来越广泛的应用。特别是在电池供电的单片机产品中,液晶显示更是必选的显示器件。

1.2课题设计目标

本设计是基于AT89C51芯片单片机为主控芯片,结合1602液晶显示模板等外围电路,通过软件程序,来实现液晶显示英文字母和数字。本次设计的目的在于利用单片机和LCD1602来显示英文字母和数字。

1.3课程设计的主要工作

(1)对系统的各个模块的各个功能进行深入分析和研究,在对课题所采用的方案进行可行详细的研究后设计具体功能电路。

(2)熟悉所选芯片的功能并完成具体电路设计。

(3)对系统的最终指标进行测试,针对系统的不足,进行分析并提出一些改正方法。

2 单片机的概述

目前单片机渗透到了我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及远程控制玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域中的机器人、智能仪表、医疗器械了。单片机具有结构简单、控制功能强、可靠性高、体积小、价格低等优点,因而在许多行业都得到了广泛应用,并且在诸多领域中都发挥了无可比拟的巨大作用。

2.1单片机的定义和特点

2.1.1单片机的定义

单片机即单片微型计算机,是把中央处理器、存储器、定时/计数器、输入输出接口都集成在一块集成电路芯片上的微型计算机。与应用在个人电脑中的通用型微处理器相比,它更强调自供应(不用外接硬件)和节约成本。单片机也被称为微控制器(Microcontroller),是因为它最早被用于工业控制领域。单片机的芯片内仅由CPU 的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。

2.1.2单片机的特点

单片机以其卓越的性能,得到了广泛的应用,已深入到各个领域。单片机应用在检测、控制领域中,具有如下特点:

1、体积小、控制功能强、成本低。因而可以方便地组装各种智能式控制设备和仪器,做到机、电、仪一体化。

2、易扩展。很容易构成各种规模的应用系统,为应用系统的设计和生产带来极大方便。

3、可靠性好、使用温度范围宽。在各种恶劣的环境下都能可靠的工作,这是其他机种无法比拟的。

4、种类多,型号全。很多单片机厂家逐年扩大适应各种需要,有针对性地推出一系列型号产品,使系统开发工程师有很大的选择余地。大部分产品有较好的兼容性,保证了已开发产品能顺利移植,较容易地使产品进行升级换代。

5、低功耗。现在新型单片机的功耗越来越小,供电电压从5V 降低到了3.2V ,甚至1V ,工作电流从mA 降到μA 级,工作频率从十几兆可编程到几十千赫兹。特别是很多单片机都设置了多种工作方式,这些工作方式包括等待、暂停、睡眠、空闲、节电等。

6、可以采用C 语言开发环境,具有友好的人机互交环境。大多数单片机都提供基于C 语言开发平台,并提供大量的函数供使用,这使产品的开发周期、代码可读性、可移植性都大为提高。

2.1.3单片微型计算机简介

单片微型计算机(Single Chip Micro Computer)简称单片机,它是一种把组成微型计算机的各功能部件:中央处理单元CPU 、一定容量的随机存储器RAM 和只读存储器ROM 、I/O 接口电路、定时器/计数器以及串行口等制作在一块芯片中的计算机,从而实现微型计算机的基本功能[5]。单片机具有结构简单、控制功能强、可靠性高、体积小、价格低等特点,在家用电器、智能化仪器、工业控制以及火箭导航尖端技术领域都发挥着十分重要的作用[6]。单片机的内部结构示意图如下图2.2所示。

图2.2 单片机内部结构示意图 图2.3 单片机应用系统组成示意图

单片机实质上是一个芯片,在实际应用中通常很难直接把单片机和受控对象进行电气连接,而是必须外加各种扩展接口电路以至外部设备,连同受控对象和单片机程序软件构成一个单片机应用系统。单片机应用系统是以单片机为核心,配以输入、输出、显示、测量和控制等外围电路和软件能实现一种或多种功能的实用系统。单片机应用系统的组成示意图如上图2.3所示[7]。

2.2单片机的发展现状和发展趋势

2.2.1单片机的发展现状

单片机

口电路及外设

+

+

单片机应用系统

单片机技术在不断的发展,它反映在内部结构、功率消耗、外部电压等级以及制造工艺上。在这几方面,较为典型地说明了数字单片机的技术水平。在目前,用户对单片机的需要越来越多,但是,要求也越来越高。下面分别就这三个方面说明单片机的技术进步状况。

1、内部结构的进步

单片机在内部已集成了越来越多的部件,这些部件包括一般常用的电路,例如:定时器,比较器,A/D转换器,D/A转换器,串行通信接口,Watchdog电路,LCD控制器等。有的单片机为了构成控制网络或形成局部网,内部含有局部网络控制模块CAN。例如,Infineon公司的C 505C,C515C,C167CR,C167CS-32FM,81C90。因此,这类单片机十分容易构成网络。特别是在控制,系统较为复杂时,构成一个控制网络十分有用。

为了能在变频控制中方便使用单片机,形成最具经济效益的嵌入式控制系统。有的单片机内部设置了专门用于变频控制的脉宽调制控制电路,这些单片机有Fujitsu 公司的MB89850系列、MB89860系列;Motorola 公司的MC68HC08MR16、MR24等。在这些单片机中,脉宽调制电路有6个通道输出,可产生三相脉宽调制交流电压,并内部含死区控制等功能。特别引人注目的是:现在有的单片机已采用所谓的三核(TrCore)结构。这是一种建立在系统级芯片(System on a chip)概念上的结构。这种单片机由三个核组成:一个是微控制器和DSP核,一个是数据和程序存储器核,最后一个是外围专用集成电路(ASIC)。这种单片机的最大特点在于把DSP和微控制器同时做在一个片上。这是目前单片机最大的进步之一。这些单片机都是高档单片机,MCU都是32位的,而DSP采用16或32位结构,工作频率一般在60MHz以上。

2、功耗、封装及电源电压的进步

现在新的单片机的功耗越来越小,特别是很多单片机都设置了多种工作方式,这些工作方式包括等待,暂停,睡眠,空闲,节电等工作方式。而单片机的封装水平也大大提高,随着贴片工艺的出现,单片机也大量采用了各种合符贴片工艺的封装方式出现,以大量减少体积。在这种形势中,Microchip公司推出的8引脚的单片机特别引人注目。这是PIC12CXXX系列。它含有0.5~2K程序存储器,25~128字节数据存储器,6个I/O端口以及一个定时器,有的还含4道A/D ,完全可以满足一些低档系统的应用。扩大电源电压范围以及在较低电压下仍然能工作是今天单片机发展的目标

之一。目前,一般单片机都可以在3.3~5.5V的条件下工作。而一些厂家,则可以生产出在2.2~6V的条件下工作的单片机。

3、工艺上的进步

现在的单片机基本上采用CMOS技术,但已经大多数采用了0.6um以上的光刻工艺,有个别的公司,如Motorola公司则已采用0.35um甚至是0.25um技术。这些技术的进步大大地提高了单片机的内部密度和可靠性。

2.2.2单片机的发展趋势

单片机在目前的发展形势下,表现出几大趋势:1、可靠性及应用越来越水平高,和互联网连接已是一种明显的走向;2、所集成的部件越来越多,NS(美国国家半导体)公司的单片机已把语音、图像部件也集成到单片机中,也就是说,单片机的意义只是在于单片集成电路,而不在于其功能了。如果从功能上讲它可以讲是万用机。原因是其内部已集成上各种应用电路;3、功耗越来越低和模拟电路结合越来越多。

随着半导体工艺技术的发展及系统设计水平的提高,单片机还会不断产生新的变化和进步,最终人们可能发现:单片机与微机系统之间的距离越来越小,甚至难以辨认。

2.3编程语言的选择

在1972年,美国贝尔实验室的D.M.Ritchie在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。

在众多的程序设计语言中,C语言简洁紧凑,语言表达能力强,其结构化的流程控制有助于编制结构良好的程序。C语言程序经编译后生成的目标程序代码效率高,几乎可以与汇编语言媲美。C语言既具备高级语言使用方便、接近自然语言和数学语言的特性,同时也具备对计算机硬件系统的良好操纵和控制能力。C语言可移植性好,一个C语言源程序可以不做改动,或者稍加改动,就可以从一种型号的计算机移转到另外一种型号的计算机上编译运行。因此,C语言被广泛应用于各类系统软件和应用软件的开发。

所以本系统以C语言进行软件设计,增加了程序的可读性和可移植性,便于扩展和更改,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁了。

2.4 主控单片机

80C51是一种高性能CMOS8位微处理器,俗称单片机,它带有4K字节闪烁可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的80C51是一种高效微控制器,80C2051是它的一种精简版本。80C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案[8]。80C51引脚即外观如图2.4所示。

图2.4 80C51引脚外观图

2.5 80C51接口说明

Vss(20脚):接地。

VCC(40脚):主电源+5V。

XTAL1(19脚):接外部晶体的一端。在片内它是振荡电路反相放大器的输入端。在采用外部时钟时,对于HMOS单片机,该端引脚必须接地;对于CHMOS单片机,此引脚作为驱动端。

XTAL2(18脚):接外部晶体的另一端。在片内它是个振荡电路反相放大器输出端,振荡电路的频率是晶体振荡频率。若需采用外部时钟电路,对于HMOS单片机,该引脚输入外部时钟脉冲;对于CHMOS单片机,此引脚应悬浮。

RST(9脚):单片机刚刚接上电源时,其内部各寄存器处于随机状态,在该脚输入24个时钟周期宽度以上的高电平将使单片机复位。

PSEN(29脚):在访问片外程序存储器时,此端输出负脉冲作为存储器读选通信号。CPU在向片外存储器取指令期间,PSEN信号在12个时钟周期中两次生效。不过,在访问片外数据存储器时,这两次有效PSEN信号不出现。PSEN端同样可驱动8个LSTTL负载。我们根据PSEN、ALE和XTAL2输出端是否有信号输出,可以判别80C51是否在工作。

ALE/PROG(30脚):地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。在Flash编程时,此引脚(PROG)也用作编程输入脉冲。在一般情况下,ALE 以晶振六分之一的固定频率输出脉冲,可以用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。这一位置“1”,ALE仅在执行MOVX或MOVC指令时有效。否则,ALE 将被微弱拉高。这个ALE 使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。

EA/VPP(31脚):当EA端输入高电平时,CPU从片内程序存储器地址0000H单元开始执行程序。当地址超出4KB时,将自动执行片外程序存储器的程序。当EA 输入低电平时,CPU仅访问片外程序存储器。在对87C51EPROM编程时,此引脚用于施加编程电压VPP。

输入/输出引脚:

(1) P0.0~P0.7 (39脚~32脚)。

(2) P1.0~P1.7 (1脚~ 8 脚)。

(3) P2.0~P2.7 (26脚~21脚)。

(4) P3.0~P3.7 (10脚~17脚)。

80C51单片机P3口的第二功能如表2.1所示。

表2.1 80C51单片机P3口第二功能

引脚号第二功能

P3.0 RXD(串行输入线)

P3.1 TXD(串行输出线)

P3.2 0

INT(外部中断0输入线)

P3.3 1

INT (外部中断0输入线)

P3.4 T0(定时器0外部计数脉冲输入)

P3.5 T1(定时器1外部计数脉冲输入)

P3.6 WR(外部数据存储器写选通信号输出)

P3.7 RD(外部数据存储器写选通信号输出) 一个1LCD1602显示系统由单片机80C51,LCD1602模块,单片机的时钟复位电路和P0口的上拉电阻组成。

2.6本章小结

本章主要介绍了单片机的定义和特点,重点描述了单片机发展现状和未来的发展趋势,最后简单地介绍了选择的编程语言。

3设计要求和方案论证

3.1设计要求

(1)设计键盘,键盘功能包括模式选择输入。

(2)选择LCD1602显示器,不同方式显示内容。

(3)设计单片机及相应的外围接口实现LCD显示驱动模块的电路设计。

(4)编制相应的控制软件,完成Proteus软件仿真和实物。

3.2 单片机芯片的选择方案和论证

方案一:8031芯片内部无ROM,需要外扩程序存储器,由此造成电路焊接的困难,况且使用8031还需要另外购买其他的芯片,从而造成成本比较高,且性价比低。

方案二:80C51芯片内部有ROM,且片内ROM全部采用Flash ROM,它能够在3V的超低压工作,与51系列单片机完全兼容。

AT89C51是一种带4K字节FLASH存储器( FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易

失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。

因此,本设计选择80C51芯片。

3.3 显示模块选择方案和论证

方案一:

采用LED数码管动态扫描,LED数码管价格适中,对于显示数字合适,采用动态扫描法与单片机连接时,虽然占用的单片机口线少,但连线还需要花费一点时间,所以也不用此种作为显示。

方案二:

采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,若采用在显示数字显得太浪费,且价格也相对较高,所以在此也不用此种作为显示。

方案三:

采用1602液晶显示屏,该液晶显示屏的显示功能强大,内置192种字符,可显示大量符号、数字,清晰可见,而且功率消耗小寿命长抗干扰能力强。所以在此设计中采用1602液晶显示屏。

3.4电路设计最终方案决定

综上各方案所述,对此次作品的方案选定: 采用STC89C52作为主控制芯片,LCD1602作为显示模块。

3.5本章小结

本章主要介绍了系统要实现的功能和万年历系统硬件平台的选择,比较了主控模块,时钟模块,显示模块,温度采集模块中不同器件的优劣,最后确定了电路设计的整体方案。这也是完成设计的先决条件。

4硬件模块设计

4.1 LCD显示模块

4.1.11602LCD主要技术参数:

显示容量:16×2个字符

芯片工作电压:4.5—5.5V

工作电流:2.0mA(5.0V)

模块最佳工作电压:5.0V

字符尺寸:2.95×4.35(W×H)mm

4.1.2在单片机系统中应用晶液显示器作为输出器件有以下几个优点:

显示质量高

由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。因此,液晶显示器画质高且不会闪烁。

数字式接口

液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。

体积小、重量轻

液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。

功耗低

相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多。

4.1.3 LCD1602 引脚功能

LCD1602引脚如图2.1所示

图2.1 LCD1602引脚图

1602点阵字符液晶模块(LCM)引脚及功能:1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表10-13所示:

编号

引脚说明编

引脚说明

1 VSS 电源地9 D

2 数据

2 VDD 电源正极10 D

3 数据

3 VL 液晶显示偏压11 D

4 数据

4 RS 数据/命令选

12 D5 数据

5 R/W 读/写选择13 D

6 数据

6 E 使能信号14 D

7 数据

7 D0 数据15 BLA 背光源正极

8 D1 数据16 BLK 背光源负极

表10-13:引脚接口说明表

第1脚:VSS为地电源。

第2脚:VDD接5V正电源。

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

第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。

第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS 和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。

第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

第7~14脚:D0~D7为8位双向数据线。

第15脚:背光源正极。

第16脚:背光源负极。

4 .1.4 LCD1602显示模指令集

(1)清屏

功能:清DDROM值和A C值

(2)归位

功能:光标复位,光标返回到地址00H

(3)输入方式设置

功能:设置光标,画面移动方式。

其中:I/D=1:数据读写操作后,AC 自加一;

I/D=0:数据读写操作后,AC 自减一;

S=1:数据读写操作,画面平移;

S=0:数据读写操作,画面不动;

(4)显示开关控制

功能:设置显示、光标和闪烁开关。

其中:D表示显示开关,D=1为开,D=0为关;

C 表示光标开关,C=1为开,C=0 为关;

B 表示闪烁开关,B=1 为开,B=0为关。

(5)光标、画面位移

功能:光标、画面移动。

其中:S/C=1画面移动一个字符位;

S/C=0光标移动一个字符位;

R/L=1:右移;R/L=0左移。

(6)功能设置

功能:工作方式设置(初始化指令)。

其中:DL=1,8位数据接口;

DL=0,4 位数据接口;

N=1,两行显示;N=0,一行显示;

F=1,5*10 点阵显示;F=0,5*7点阵显示。

(7)CGRAM 地址设置

功能:设置CGRAM地址,A5~A0=0~3FH。

(8)DDRAM 地址设置

功能:设置DDRAM地址。

其中:N=0,一行显示A6~A0=0~4FH;

N=1两行显示,首行A6~A0=0~2FH,次行A6~A0=40~67H。(9)读BF 及AC 值

功能:读忙BF 和地址计数器AC的值。

其中:BF=1:忙,BF=0:准备好。此时AC 值意义为最近一次地址设置(CGRAM 或DDRAM)定义。

(10)写数据

功能:根据最近设置的地址性质,数据写入CGRAM或DDRAM中。

(11)读数据

功能:根据最近设置的地址性质,从CGRAM或DDRAM 数据读出。

4.1.5 基本操作时序表

读写操作时序如图10-55和10-56所示:

图10-55 读操作时序

图10-56 写操作时序

4.1.6LCD1602显示电路

4.2 矩阵键盘

4.2.1矩阵键盘扫描原理

方法一:

逐行扫描:我们可以通过高四位轮流输出低电平来对矩阵键盘进行逐行扫描,当低四位接收到的数据不全为1的时候,说明有按键按下,然后通过接收到的数据是哪一位为0来判断是哪一个按键被按下。

方法二:

行列扫描:我们可以通过高四位全部输出低电平,低四位输出高电平。当接收到的数据,低四位不全为高电平时,说明有按键按下,然后通过接收的数据值,判断是哪一列有按键按下,然后再反过来,高四位输出高电平,低四位输出低电平,然后根据接收到的高四位的值判断是那一行有按键按下,这样就能够确定是哪一个按键按下了。

4.2.2 矩阵键盘工作原理

在一般应用中,键盘按其接线方法有:直接式键盘、行列式键盘(又称矩阵键盘)、串转并键盘等;在实验箱中,采用4×4的行列式键盘,即键盘排列为4行、4列,共16个按键。4×4键盘的电路图如图2-1所示,分别定义这16 个按键盘为KEY1~16。

图2-1 4×4 键盘电路图

图中C1~C4 为4×4 键盘的列扫描线,L1~L4 为4×4 键盘的行扫描线。行列式键盘的操作一般完成两个任务,一是检测是否有键被按下,二是识别被按下的键是哪一个。一般会采用行列扫描法,可以同时完成上述两项任务。基本的扫描原理是:先使行扫描线输出高电平,然后读取列扫描线的状态,得到与按键横向位置对应的4位列码;如果是有键被按下时,则对应的列扫描线必然会被读回高电平,如果是无键盘按下时,则读取的列码必定全是0。这也就可以判断有无按键的按下了。一旦检测到有键按下时,还需要有一个延时的消除抖动的操作,以消除按键时带有的抖动信号;一般延时在15ms左右即可。延时后,如还能检测到有按键按下,则可确定当前是有键按下,可进入获取键值的操作。获取键值时,采用行列依次扫描的方法。首先使第一行扫描线输出高电平,其它的行扫描线输出低电平,然后读取列扫描线的状

态,得到列码;如果本行无键按下,则得到的列码为全0,并扫描下一行;如本行有键按下,则会读取到对应的列码值,并退出扫描,进行键值计算。当第一行扫描没有检测到按键时,则扫描下一行,即使第二行扫描线输出高电平,其它行扫描线输出低电平,其它与前面所述类似。在行列扫描时,可以用一个变量记录下当前扫描的行号,在计算键值时可以利用此行号以及列码得知是哪一行、哪一列上的按键按下了。如:当S5 按下时,应该检测出第二行扫描时读到有效的列码0001(C4~C1)。

4.2.3 键盘电路的设计

键盘可分为两类:编码键盘和非编码键盘。编码键盘是较多按键(20个以上)和专用驱动芯片的组合,当按下某个按键时,它能够处理按键抖动、连击等问题,直接输出按键的编码,无需系统软件干预。通用计算机使用的标准键盘就是编码键盘。在智能仪器中,使用并行接口芯片8279或串行接口芯片HD7279均可以组成编码键盘,同时还可以兼顾数码管的显示驱动,其相关的接口电路和接口软件均可在芯片资料中得到。当系统功能比较复杂,按键数量很多时,采用编码键盘可以简化软件设计。非编码键盘成本低廉。

从成本角度出发,本设计选用的是非编码键盘。如图4.2.3

图4.2.3 6*6矩阵键盘电路

5 软件设计

5.1 LCD1602的软件规划

LCD1602显示的程序主要包括以下功能模块:

1、读键程序、判键程序段等部分;

2、基于LCD液晶显示屏的显示模块;

3、主模块,为系统的初始化

5.2 键盘扫描的程序设计

键盘扫描子程序,首先读出P1的低四位,然后读出P1口的高四位。然后键值并显示缓存。然后将键如的值转换为ASCII码然后就可以软件来设置硬件按键各个键代表的内容。

读键程序使用的是反转法读键,不管键盘矩阵的规模大小,均进行两次读键。第一次所有行线均输出低电平,从所有读入键盘信息(列信息);第二次所有列线均输出低电平,从所有行线读入键盘信息(行信息)。

数字键按下则将相应的数字送入缓存区,功能键按下则执行相应的程序。

5.3 显示模块的程序设计

显示模块程序首先要对显示模块进行初始化;然后控制光标的位置;定义液晶显示的控制端口,用指令完成;然后设置清屏、关闭显示、归位、开显示、显示位置的首地址等等。

显示模块的流程图如图5.3所示:

相关文档
最新文档