武汉理工大学《通信工程应用技术课程设计》报告
有无按键按下的程序段,当确认有按键按下后,下一步就要识别哪一个按键被按下,对键的识别常采用逐行(逐列)扫描的方法。
首先判断有无按键按下。方法是:向行线输出全扫描字00H,把全部行线置为低电平,然后将列线的电平状态读入到累加器A中,如果有按键按下,会使列线电平被拉至低电平,是列输入不全为1。
判断键盘哪一个键被按下。方法是:一次给行线送低电平,然后查所有列线状态,称为行扫描,如果全为1,则所按下键不在此行,如果不全为1,则所按下键必在此行,而且是在与零电平列线相交的交点上的那个键。
在此,按键的位置码并不等于按键的实际定义键值,因此还必须进行转换,即键值译码。
在本次课程设计中,由于只需采用两个取号键盘和五个服务窗口键盘,所以我采用了独立键盘来实现,在程序中直接对连接键盘的单片机引脚进行扫描,若引脚为0且延时去抖动之后仍为低电平则说明该键盘按下了。
3.2 ATC89C52基本原理
单片机ATC89C52 具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。晶振采用12MHZ。其芯片管脚图如图3.2所示。
图3.2 ATC89C52单片机
5
武汉理工大学《通信工程应用技术课程设计》报告
VCC:电源。GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写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的一些特殊功能口,如下: 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(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储
6
武汉理工大学《通信工程应用技术课程设计》报告
器 时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
EA/VPP:当/EA保持低电平时,则在此期间外部程序存储(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时, /EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源。
3.3 LCD液晶显示基本原理
3.3.1 LM061L液晶模块
LM016L液晶模块采用HD44780控制器,hd44780具有简单而功能较强的指令集,可以实现字符移动,闪烁等功能,LM016L与单片机MCU通讯可采用8位或4位并行传输两种方式,hd44780控制器由两个8位寄存器,指令寄存器(IR)和数据寄存器(DR)忙标志(BF),显示数RAM(DDRAM),字符发生器ROMA(CGOROM)字符发生器RAM(CGRAM),地址计数器RAM(AC)。IR用于寄存指令码,只能写入不能读出,DR用于寄存数据,数据由内部操作自动写入DDRAM和CGRAM,或者暂存从DDRAM和CGRAM读出的数据,BF为1时,液晶模块处于内部模式,不响应外部操作指令和接受数据,DDTAM用来存储显示的字符,能存储80个字符码。CGRAM是为用户编写特殊字符留用的,它的容量仅64字节,可以自定义8个5*7点阵字符或者4个5*10点阵字符,AC可以存储DDRAM和CGRAM的地址,如果地址码随指令写入IR,则IR自动把地址码装入AC,同时选择DDRAM或CGRAM,LM016L 液晶模块如图3.3.1-1所示,其引脚功能如表3.3.1-1所示:
7
武汉理工大学《通信工程应用技术课程设计》报告
图3.3.1-1 LM016L液晶
表3.3.1-1 LM016L液晶引脚功能
引脚 1 2 3 符号 VSS VDD V0 功能说明 一般接地 接电源(+5V) 液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。 4 5 6 7 8 9 10 11 12 13 14 RS R/W E DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。 R/W为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。 E(或EN)端为使能(enable)端,下降沿使能。 底4位三态、 双向数据总线 0位(最低位) 底4位三态、 双向数据总线 1位 底4位三态、 双向数据总线 2位 底4位三态、 双向数据总线 3位 高4位三态、 双向数据总线 4位 高4位三态、 双向数据总线 5位 高4位三态、 双向数据总线 6位 高4位三态、 双向数据总线 7位(最高位)(也是busy flang) 8
武汉理工大学《通信工程应用技术课程设计》报告
3.3.2 LM016L的指令说明及时序
LM016L液晶模块内部的控制器共有11条控制指令,如表3.3.2-1所示:
表3.3.2-1 控制命令表
序号 1 指令 RS R/W D7 D6 D5 D4 D3 D2 0 0 0 0 0 0 0 D1 D0 功能 0 1 清屏,光标归位 设置地址计数器清零,DDRAM数据不变,光标移到左上角 设置字符进入时的屏幕移位方式 设置显示开关,光标开关,闪烁开关 设置字符与光标移动 设置DL,显示行数,字体 设置6位的CGRAM地址以读/写数据 设置7位的复位显示器 0 2 光标返回 0 0 0 0 0 0 0 0 1 * 3 4 5 6 字符进入模式 显示开/关控制 光标或字符移位 功能设置 设置字符发0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 L 0 1 1 D I/D S C B * * S/C R/L * N F * 7 生存贮器地0 址 0 0 1 字符发生存贮器地址 8 设置数据存贮器地址 读忙标志或地址 写数据到CGRAM或0 0 1 显示数据存贮器地址 DDRAM地址以读/写数据 读忙标志及地址计数器 向CGRAM/DDRAM9 10 0 1 1 0 BF 计数器地址 写入一字节数据,需要先设置RAM地址 9