




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C51编程键盘LED数码管字符型LCD主要内容:主要内容:键盘1. 独立式键盘独立式键盘 (1) 独立式键盘的结构与特点键盘1. 独立式键盘独立式键盘 (2) 编程模式 在确定了键盘的编程结构后,就可以编制键盘接口程序。键盘接口程序的功能实际上就是驱动键盘工作,完成按键的识别,根据所识别按键的键值,完成按键子程序的正确散转,从而完成单片机应用系统对用户按键动作的预定义响应。 由于独立式键盘的每一个按键占用一条IO口线,每个按键的工作不影响其他按键,因此,可以直接依据每个IO口线的状态来进行子程序散转,使程序编制简练一些。键盘1. 独立式键盘独立式键盘 (2)编程模式 另外,可以使用键盘编码值来
2、进行按键子程序的散转,程序更具有通用性。通用的独立式键盘接口程序由键盘管理程序、散转表和键盘处理子程序三部分组成。 键盘管理程序:担负键盘工作时的循环监测(看是否有键被按下)、键盘去抖动、按键识别、子程序散转(根据所识别的按键进行转子程序处理)等基本工作。 散转表:支持应用程序根据按键值进行正确的按键子程序跳转。 键盘处理子程序:负责对具体按键的系统定义及功能执行。键盘2. 矩阵键盘矩阵键盘 (1) 矩阵键盘的结构与特点 行列式键盘是用n条I/O线作为行线,m条I/O线作为列线组成的键盘。在行线和列线的每一个交叉点上,设置一个按键。这样,键盘中按键的个数是nm个。键盘2. 矩阵键盘矩阵键盘 (
3、2) 矩阵键盘的编程模式 矩阵键盘具有更加广泛的应用,可采用计算的方法来求出键值,以得到按键特征码。现在以图6-2为例加以说明。 检测出是否有键按下。方法是Pl.0Pl.3输出全0,然后读Pl.4Pl.7的状态,若为全1则无键闭合,否则表示有键闭合。 有键闭合后,调用l020 ms延时子程序以避开按键抖动。键盘3. 按键开关的抖动问题按键开关的抖动问题 (1) 硬件方法 在硬件上可采用在键输出端加R-S触发器(双稳态触发器)或单稳态触发器构成去抖动电路,如图所示是一种由R-S触发器构成的去抖动电路,当触发器一旦翻转,触点抖动不会对其产生任何影响。键盘3. 按键开关的抖动问题按键开关的抖动问题
4、(2)软件方法 软件方法其实很简单,就是在单片机获得P1.0口为低电平的信息后,不是立即认定S已被按下,而是延时10ms或更长一些时间后再次检测P1.0口,如果仍为低电平,说明S的确按下了,这实际上是避开了按键按下时的抖动时间。而在检测到按键释放后(P1.0为高电平)再延时510ms,消除后沿的抖动,然后再对键值处理。不过一般情况下,通常不对按键释放的后沿进行处理,实践证明,也能满足一定的要求。当然,在实际应用中,对按键的要求也是千差万别的,要根据不同的需要来编制处理程序,但以上是消除按键抖动的原则。键盘4. 键盘的工作方式键盘的工作方式 (1) 编程扫描方式 编程扫描方式是利用CPU完成其他
5、工作的空余调用键盘扫描子程序来响应键盘输入的要求。在执行键功能程序时,CPU不再响应键输入要求,直到CPU重新扫描键盘为止。键盘4. 键盘的工作方式键盘的工作方式 (2) 定时扫描方式 定时扫描方式就是每隔一段时间对键盘扫描一次,它利用单片机内部的定时器产生一定时间(例如10ms)的定时,当定时时间到就产生定时器溢出中断,CPU响应中断后对键盘进行扫描,并在有键按下时识别出该键,再执行该键的功能程序。键盘4. 键盘的工作方式键盘的工作方式 (3)中断扫描方式 采用上述两种键盘扫描方式时,无论是否按键,CPU都要“定时”扫描键盘,而单片机应用系统工作时,并非经常需要键盘输入,因此,CPU经常处于
6、空扫描状态,为提高CPU工作效率,可采用中断扫描工作方式。其工作过程如下:当无键按下时,CPU处理自己的工作,当有键按下时,产生中断请求,CPU转去执行键盘扫描子程序,并识别键号。键盘5. 独立式键盘应用例程独立式键盘应用例程 . (1)程序功能 P3口作输入口,P1口作输出口。P3口的低4位连接4只独立按键,构成独立式键盘;P1口用于驱动8只LED灯,低电平有效。控制要求为:P3.0为低电平时,P1.0、P1.7对应的LED点亮;P3.1为低电平时,P1.1、P1.6对应的LED点亮;P3.2为低电平时,P1.2、P1.5对应的LED点亮;P3.3为低电平时,P1.3、P1.4对应的LED点
7、亮。 (2)源程序清单(见word文档)键盘5. 矩阵键盘应用例程矩阵键盘应用例程 (1)程序功能 矩阵键盘如图6-2所示, P2口作输出口,用于驱动8只LED,低电平有效。控制要求为:复位LED的显示状态为高4位亮,低4位灭,当相应按键按下时,8位LED以BCD码形式显示对应的按键输入数字。如9号键按下时,8位LED的状态(亮表示1,灭表示0)为:09H。 (2) 源程序清单(见word文档)LED数码管 1. ED显示器的结构与工作原理显示器的结构与工作原理 LED显示器又称数码管,它由8只发光二极管组成。7只发光二极管排成“8”字形,另一只构成小数点,各字形段标记如图所示。通过不同的组合
8、,可用来显示数字09、字母AF及小数点等。要显示某个字形时,就点亮相应的字段。LED数码管 1. LED显示的接口电路显示的接口电路 (1) 静态显示 所谓静态显示,是指显示器显示某一字符时,相应的发光二极管恒定地导通,显示器的公共端接固定的有效电平,即共阴极的公共端接低电平,共阳极的公共端接高电平(电源)。静态显示有并行输出和串行输出两种方式。3位共阳LED静态显示接口电路。如图6-8所示为并行输出的3位共阳LED静态显示接口电路。并行显示方式每个十进制位都需要有一个8位输出口控制,图中采用3片74LS373扩展并行I/O口,口地址是由74LSl38译码器的输出决定的,74LSl38的A、B
9、、C分别接80C5l的P2.5、P2.6和P2.7,所以3片74LS373的地址分别为1FFFH、3FFFH、5FFFH。译码输出信号与单片机的写信号一起控制对各74LS373数据的写入。LED数码管 1. LED显示的接口电路显示的接口电路 静态显示 对于静态显示方式,LED显示器由接口芯片直接驱动,采用较小的驱动电流就可以得到较高的显示亮度。但是,并行输出显示的十进制位数多时,需要并行I/O接口芯片的数量较多。示数字09、字母AF及小数点等。要显示某个字形时,就点亮相应的字段。LED数码管 1. LED显示的接口电路显示的接口电路 (2) 动态显示 当显示器位数较多时,可以采用动态显示。所
10、谓动态显示,就是一位一位地轮流点亮各位显示器。对于每一位显示器而言,每隔一段时间点亮一次。虽然在同一时刻只有一位显示器在工作,但由于人眼的视觉暂留效应和发光二极管熄灭时的余辉,看到的却是多个字符“同时”显示。显示器亮度既与点亮时的导通电流有关,也与点亮扫描时间长短和间隔时间有关。调整电流和时间参数,即可实现亮度较高较稳定的显示。LED数码管 3. LED动态显示应用例程(一)动态显示应用例程(一) (1) 程序功能 LED数码显示电路如图6-9所示,在单片机负载能力足够的情况下,可去掉7407和7406芯片,在本程序中不考虑7407和7406芯片的作用,即位驱动是低电平有效,字驱动是高电平有效
11、。控制要求为:在6位LED数码管上依次显示1、2、3、4、5、6。扫描间隔时间为1ms。 (2)源程序清单(见word文档)字符型LCD (1)LCD的特性 1)+5 V供电,亮度可调整。 2)内藏振荡电路,系统内含重置电路。 3)提供各种控制命令,如清除显示器、字符闪烁、光标闪烁、显示移位等多种功能。 4)显示用数据RAM(DDRAM)共有80个字节。 5)字符产生器ROM(CGROM)有160个57点阵字形。 6)字符产生器RAM(CGRAM)可由用户自行定义8个57的点阵字形。 (2)162字符型LCD引脚说明 162字符型LCD共有14个引脚,其功能见表6-3所示。2. HD44780
12、 驱动器(驱动器(162字符型字符型LCD)字符型LCD (3)LCD内部的内存 LCD内部存储器共分为3种:固定字形ROM,称为CG(Character Generator)ROM;数据显示RAM,称为DD(Data Display)RAM;用户自定义字形RAM,称为CG RAM。 1)CGROM:CGROM内存储着192个57点阵的字形,这些字形均已固定,例如将“A”写入LCD中,就是将“A”的ASCII码41H写入DDRAM中,控制芯片就会自动至CGROM中将“A”的字形点阵数据找出来而显示在LCD上。2. HD44780 驱动器(驱动器(162字符型字符型LCD)字符型LCD (3)L
13、CD内部的内存 2)DDRAM:DDRAM内用来存储写入LCD内部的字符,DDRAM的地址分布从00H67H,分别代表LCD的各列位置,如表6-4和表6-5所示,例如我们要将“A”写入第2行的第l个位置,就先设置DDRAM地址为40H,而后写入41H至LCD即可。2. HD44780 驱动器(驱动器(162字符型字符型LCD)字符型LCD (3)LCD内部的内存 3)CGRAM:此区域只有64字节,可将用户将自行设计的字形写入LCD中,一个字的大小为57点阵,共可以存储8个字形,其显示码为00H07H。2. HD44780 驱动器(驱动器(162字符型字符型LCD)字符型LCD (4)LCD内
14、部寄存器 1)指令寄存器(Instructiong Register,IR)与数据寄存器(Data Register,DR):指令寄存器和数据寄存器都是8位的寄存器,IR寄存器用来储存指令代码或地址;DR寄存器则是作为写入存储器或从存储器中读取数据的数据缓冲区。从外部要对LCD模块控制时,是由RS引脚来选择数据引脚D7D0的信号,用来对IR寄存器或DR寄存器做写入或读取。 2)忙碌标志(Busy Flag,BF)。当LCD模块内部处于忙碌状态,不能接收或处理外部信号时,这个标志就会被设定为1,因此在对LCD模块控制时,一定要先检查这个忙碌标志,当BF=0时,才可以对LCD模块进行控制。2. H
15、D44780 驱动器(驱动器(162字符型字符型LCD)字符型LCD (4)LCD内部寄存器 3)地址计数器(Address Count,AC)。LCD模块显示的每一个字符位置都会有一个地址,地址计数器记录了这个地址,在数据写入或读取的动作完成后,AC的值会递减或递增1,可以在LCD初始化时设定。2. HD44780 驱动器(驱动器(162字符型字符型LCD)字符型LCD (5)控制方式 通过CPU来控制LCD模块,方式十分简单,LCD模块其内部可以看成有两组寄存器,一个为指令寄存器,一个为数据寄存器,由RS引脚来控制。所有对指令寄存器或数据寄存器的存取均需检查LCD内部的忙碌标志(Busy
16、Flag),此标志用来告知LCD内部正在工作,不允许接收任何的控制命令。而此位的检查可以令RS=0时,读取D7来加以判断,当此位为0时,才可以写入指令寄存器或数据寄存器。2. HD44780 驱动器(驱动器(162字符型字符型LCD)字符型LCD (6)控制命令 单片机通过11条指令对LCD模块进行控制,表6-6列出了这些指令和控制引脚的关系。 1)清屏(01H) 2. HD44780 驱动器(驱动器(162字符型字符型LCD)2 2)归)归home位(位(Return Home)字符型LCD (6)控制命令 3)输入方式设置(Enter Mode Set) 2. HD44780 驱动器(驱动
17、器(162字符型字符型LCD)4)显示状态设置()显示状态设置(Display on/off Control)。)。字符型LCD (6)控制命令 5)光标或画面滚动(Cursor or Display Shift) 2. HD44780 驱动器(驱动器(162字符型字符型LCD)6)工作方式设置()工作方式设置(Function Set)字符型LCD (6)控制命令 7)CGRAM地址设置(Set CGRAM Address)。 2. HD44780 驱动器(驱动器(162字符型字符型LCD)8) DDRAM地址设置(地址设置(Set DDRAM Address)字符型LCD (6)控制命令
18、9)读“忙”标志和地址指针(Read Busy Flag and Address)。单片机对指令寄存器通道读操作(RS=0,R/W=l)时,将读出此格式的“忙”标志BF值和7位地址指针计数器AC的当前值。单片机随时都可以对HD44780U读“忙”操作。BF值反映HD44780U的接口状态。单片机在对进行HD44780U每次操作时,首先要读BF值判断HD44780U的当前接口状态,仅在BF=0时,单片机才可以向HD44780U写指令代码或显示数据以及从HD44780U读出显示数据。单片机读出的地址指针计数器AC当前值可能是DDRAM地址或CGRAM的地址,这取决于最近一次单片机向AC写入的地址类
19、型。 2. HD44780 驱动器(驱动器(162字符型字符型LCD)字符型LCD (6)控制命令 11)读数据(Read Data from CG or DD RAM)。在HD44780U内部运行时序的操作下,地址指针计数器AC的每次修改,包括新的AC值的写入,光标滚动位移所引起的AC值的修改或由单片机读写数据操作后产生的AC值的修改,HD44780U都会把当前AC所指单元的内容送到接口部分数据输出寄存器内,供单片机读取。如果AC值为DDRAM地址指针,则认为接口部分数据输出寄存器的数据为DDRAM内AC所指单元的字符代码;如果AC值为CGRAM地址指针,则认为接口部分数据输出寄存器的数据为
20、CGRAM内AC所指单元的字模数据。 2. HD44780 驱动器(驱动器(162字符型字符型LCD)字符型LCD (2) 写命令子函数void lcdwCMD(unsigned char CMD) /*定义写命令子函数,CMD为控制码,Attribc 为属性标志,决定是否要进行忙信号检测*/ lcdwaitidle() /*调用忙检测子函数*/RSPIN=0; RWPIN=0; /*设置为写命令状态*/ DataPort = CMD; /*控制码送数据口*/ ENPIN=1; /*形成使能脉冲*/ _nop_(); ENPIN=0;3. 162字符型字符型LCD的驱动子函数的驱动子函数字符型
21、LCD (3) 写数据子函数void lcdwData(unsigned char Data) /*定义写数据子函数,dataW 为显示数据*/ lcdwaitidle(); /*调用忙检测子函数*/ RSPIN=1; RWPIN=0; /*设置为写数据状态*/ DataPort = Data; /*显示数据送数据口*/ ENPIN=1; /*形成使能脉冲*/ _nop_(); ENPIN=0;3. 162字符型字符型LCD的驱动子函数的驱动子函数字符型LCD (4) 显示光标(位置)定位子函数void lcdpos(void) /*定义显示位置子函数,行、列号在调用前给出*/ XPOS&=0 x0f; /*列号为015*/ YPOS&=0 x01; /*行号为0或1*/ if(YPOS=0 x00) lcdwCMD(XPOS|0 x80); /*若为第1行,地址设置码为:列号80H */ else if(YPOS=0 x01) /*若为第2行,地址设置码为:列号80H40H*/ lcdwCMD (XPOS+0 x40)|0 x80);3. 162字符型字符型LCD的驱动
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论