毕业论文-可编程计算机键盘显示器接口电路设计.doc_第1页
毕业论文-可编程计算机键盘显示器接口电路设计.doc_第2页
毕业论文-可编程计算机键盘显示器接口电路设计.doc_第3页
毕业论文-可编程计算机键盘显示器接口电路设计.doc_第4页
毕业论文-可编程计算机键盘显示器接口电路设计.doc_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中国人民解放军防空兵指挥学院毕业论文解 放 军防 空 兵 学 院毕业设计(论文)说明书题 目:可编程计算机键盘显示器接口- 电路设计 作 者: 张兵 学 号: 91591006 系 (院): 计算机科学系 专 业: 计算机科学与技术 指导者: 评阅者: 2005 年 5 月 北 京 可编程计算机键盘显示器接口电路设计第一章 引言随着信息技术和互联网的飞速发展,以及计算机、通讯、数码产品等领域已经来临。嵌入式设备是数字化时代的主流产品,嵌入式软件是数字化产品的核心,作为嵌入式软件的基础和关键,嵌入式操作系统在产业发展过程中扮演着越来越重要的角色,应用遍及工业自动化、网络通信、航天等领域。可编程计算机键盘显示器接口电路设计就是采用一种8279单片机芯片。本设计采用8279单片机为控制芯片,8279是一种专用于键盘显示可编程器的接口电路,能对键盘自动扫描,给出闭合健的键码,能自动向数码管显示器输出显示代码和位代码。其中键盘接口电路可与64键点阵式键盘连接,具有二键封锁或n键巡回功能,可自动消除按键抖动。显示器接口电路可与8或16位数码管显示器连接,8279与键盘 、显示器的连接,其中包括一个8键盘和8位led显示器,代码驱动器选用8708,sl2sl0信号译码器选用74ls138,时钟信号由单片机的ale提供。在振荡器频率为12mhz时ale输出频率为2mhz。8279选择2键封锁、编码扫描方式,显示器左端输入。第二章 led显示器的结构与原理:显示器常作为单片机系统中最简单的输出设备,用以显示单片机系统的运行结果与运行状态等。常用的显示器主要有led数码显示器、lcd液晶显示器和crt显示器。在单片机系统中,通常用led数码显示器显示各种数字或符号。由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。本节以led为例,介绍其结构、工作原理及与单片机的接口技术。 led显示器的结构与原理 led显示器是由发光二极管显示字段的显示器件,也可称为数码管。单片机系统中通常使用8段led数码显示器,其外形及引脚如图1(a)所示,由图可见8段led显示器由8个发光二极管组成。其中7个长条形的发光二极管排列成“日”字形,另一个圆点形的发光二极管在显示器的右下角作为显示小数点用,通过不同的组合可用来显示各种数字,包括af在内的部分英文字母和小数点“”等字样。 led显示器有两种不同的形式:一种是8个发光二极管的阳极都连在一起的,称为共阳极led显示器;另一种是8个发光二极管的阴极都连在一起的,称为共阴极led显示器。如图1(b)所示。 共阴和共阳结构的led显示器各笔划段名和安排位置是相同的,当二极管导通时,相应的笔划段发亮,由发亮的笔划段组合从而显示各种字符。8个笔划段dpgfedcba对应于1b(8位)的d7、d6、d5、d4、d3、d2、d1、d0,于是用8位二进制码就可以表示欲显示字符的字形代码。例如,对于共阴极led显示器,当公共阴极接地(为零电平),而阳极dpgfedcba各段为01110011时,显示器显示“p”字符,即对于共阴极led显示器,“p”字符的字形码是073。如果是共阳极led显示器,公共阳极接高电平,显示“p”字符的字形代码应为10001100(0x8c)。这里必须注意的是:很多产品为方便接线,常不按规则的方法去对应字段与位的关系,这时字形码就必须根据接线自行设计了。 led显示器的显示方法有静态显示与动态显示两种,下面分别予以介绍。 窗体顶端1窗体底端1.led静态显示接口数码管工作在静态显示方式时,共阴极(共阳极)的公共端com连接在一起接地(电源)。每位的段选线与一个8位并行口相连。只要在该位的段选线上保持段选码电平,该位就能保持相应的显示字符。这里的8位并行口可以直接采用并行i/o接口片(例如80c51的p1端口、8155和8255的i/o端口等),也可以采用串行输入/并行输出的移位寄存器。考虑到若采用并行i/o接口,占用i/o资源较多,因而静态显示方式常采用串行接口方式,外接8位移位寄存器74hcl64构成显示电路,图2是通过串行口扩展8位led显示器静态驱动电路,在txd(p3.1)运行时钟信号,将显示数据由rxd(p3.0)口串行输出,串行口工作在移位寄存器方式(方式0)。 图2中使用的是共阴极数码管,因而各数码管的公共极com端接地,要显示某字段,则相应的移位寄存器74hc164的输出线必须是高电平。 显然,要显示某字符,首先要把这个字符转换成相应的字形码,然后再通过串行口发送到74hc164。74hc164把串行口收到的数变为并行输出加到数码管上。 先建立一个字形码表,以十六进制数的次序存放它们的相应字形码,共阴极字形码表如表1所示。 2. led动态扫描显示接口led动态显示的基本做法在于分时轮流选通数码管的公共端,使得各数码管轮流导通,在选通相应led后,即在显示字段上得到显示字形码。这种方式不但能提高数码管的发光效率,而且由于各个数码管的字段线是并联使用的,从而大大简化了硬件线路。 动态扫描显示接口是单片机系统中应用最为广泛的一种显示方式。其接口电路是把所有显示器的8个笔划段adp同名端并联在起,而每一个显示器的公共极com是各自独立地受i/o线控制。cpu向字段输出口送出字形码时,所有显示器由于同名端并连接收到相同的字形码,但究竟是哪个显示器亮,则取决于com端,而这一端是由i/o控制的,所以就可以自行决定何时显示哪一位了。而所谓动态扫描是指采用分时的方法,轮流控制各个显示器的com端,使各个显示器轮流点亮。 在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms),但由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。 图3是一个典型的动态扫描8位led显示接口电路。该电路由74hc245提供段adp的驱动,74ls145提供位com1com8的驱动。请注意89c52的p0.0p0.7每个口线上有1个10kw的上拉电阻,图中未示出。 3.led显示器接口:一.led原理简述 led显示块是用发光二极管显示字段,单片机应用系统常用的是七段led,如下图,它有其阴极和共阳极两种: +5v af b ge c d h a a b b c c d d e e f f g g h h 共阴极 共阳极例如,要显示0字符,对于共阴极管应输出段码:h g f e d c b a a 0 0 1 1 1 1 1 1 3 f h f b g e c对于共阳极管则应输出段码: d h.h g f e d c b a 1 1 0 0 0 0 0 0 c 0 h 共阳极管和共阴极管的段码是互为补码的。 二.动态显示的七段led基本用法:1. 动态显示的七段led与单片机的硬件接口扩展显示器接口实质是输出口的扩展,例如设计一个6位的数码管显示系统,它需要扩充两个8位输出口,一个输出8段码,一个输出位选码。如下图: 输出段码 +5v1d 1q8d 8q1#377clk e 8 8 8 8 8 8 8a0 fehwr fdha1clk e1d 1q2#3778d 8q +5v 8由图可知,要显示哪个字符,该字符的段码从1#377输出,要使1#377输出只要a0 = 0即可,因此1#377的地址为feh。该段码输出到6个数码管上是相同的,要哪个管亮,必须使该管的相应段二极管导通,则由2#377输出的位码控制,对应哪个管为0,则该管可以亮。要使2#377输出只要a1 = 0,2#377的地址为fdh。 在软件设计上将6个led管轮流点亮,每管延时约1ms,利用人的视觉残留,则可以看成持续点亮。2. 动态显示的软件设计:要点:代码转换:直接驱动7段led发光的是段码,而我们习惯的是字符0、1、2、f等,因此软件中必须将待显示的字符转换成段码。 每次只能输出同样的段码,因此要使某管亮,必须用软件保证逐位轮流点亮并适当延时,给人的眼睛产生持续发光的效果。程序中使用的显示缓冲区示意图:01 02 03 04 05 06 79h 7ah 7bh 7ch 7dh 7eh显示缓冲区共6个单元,自左至右一一对应6个数码管,其中存放待显示字符在段码表中的查表偏移量。程序如下:org 8100hdisup: mov r0 , #79h ;置显示缓冲区首地址mov r2 , #0dfh ;11011111 位码初值,最左面管亮dsp1: mov a , r0 mov dptr , #tabl movc a , a+dptr ;查表求段码 mov r1 , #0feh ;选1#377 movx r1 , a ;送段码 mov r1 , #0fdh ;选2#377 mov a , r2 movx r1 , a ;输出位码,最左面管亮 lcall d1ms ;延时 1nc r0 ;指向显示缓冲区的下一地址 mov a , r2 rr a ;位码右移一位 mov r2 , a xrl a , #7fh ;位码右移6次后为7fh时6管全显示完 jnz dsp1 ;不为7fh则未显示完,返回送下一个led rettabl: 段码转换表略d1ms: 延时子程序略三.led静态显示在静态显示方式中,数码管的共阴极或共阳极接地或十5v,每一个数码管的8段码需扩展一个8位输出口与之相连接,输出口可将令该管显示某字符的段码锁存,同一时间里,每一位的段码均可不同,即显示不同字符。如图: 8 8 8 84#3773#3772#3771#377 8 8 8 8静态显示方式中,有n位数码管则需扩展n个8位输出口,占用i/o资源较多。它的优点是软件不必动态扫描,送出段码后可锁存,直到需更改显示字符,软件简单,同时由于始终保持显示而亮度较好。第三章 键盘接口在单片机应用系统中,为了控制系统的工作状态,或向系统内部输入数据,常设有按键或键盘,使用这些键的开关状态来设置控制功能或输入数据。键盘的扩展实质是输入口的扩展。一.键输入过程及软件结构:当所设置的数字键或功能键按下的时候,单片机应用系统应能完成该键所设定的功能。因此,键输入的信息与软件结构密切相关。不少应用系统键扫描程序是应用程序的核心部分。键输入程序的软件框图大致如下:键 扫 描 no 有 键 按 下? yes判 哪 一 键 按 下求键值 a (a)=00h (a)=01h 1#键处理程序0#键处理程序 cpu通过查讯或中断方式扫描有无键按下及哪一键按下,将键号送入a,根据a的内容跳转到该键所应完成的功能的程序中去,键处理完毕后再回到键扫描程序,查找有无另一键按下。二.键输入接口与软件应解决的问题:1. 保证键开关状态的可靠输入键是一种常开式按钮开关,按键和键盘都是利用机械触点的闭合和断开来输入电平信号的,在键的闭合和断开的瞬间的有抖动过程,会出现一系列负脉冲,一般为510ms ,为了保证cpu对键的一次闭合只进行一次键处理,必须消除抖动的影响。 通常去抖动措施可分别采用硬件和软件两种方法来解决,硬件的方法是在按键的硬件电路上增加rs触发器或单稳态电路,这需要增加硬件开销。较为方便的软件去抖措施是当检测到有键按下时,执行一个延时10ms的子程序,而后再检测该键是否仍保持闭合状态,若仍闭合才确认为该键按下。2. 对所有按键进行编码,确定键值或直接确定键号。给每一按键确定一个键值或编号,当cpu扫描键盘时,可根据接收到的键输入信息确定是哪一个键按下。3. 选择键盘监测方法:在应用系统软件中,键扫描程序、键处理程序只是应用程序的一部分,在程序运行过程中什么时候查询键输入的情况,可有查询方式和中断方式两种: 查询方式在程序中以一定的时间间隔扫描键盘输入的情况,无键按下则可执行其它程序,有键按下则执行键处理程序。 中断方式中断方式是当有键按下时引起中断,在中断服务程序中进行键处理,无键按下时cpu不必顾及键盘的工作情况。一般在键盘使用不多的情况采用中断方式。4. 编制好键盘处理程序:它应解决如下问题: 扫描有无键按下。 有键按下时,若无硬件去抖措施应以软件延时去抖动。 有可靠的逻辑处理,保证一次只处理一个键,一次键按下只进行一次键处理。 输出确定的键号,一个键按下后能准确跳转到该键的处理程序,处理结束后再返回键扫描。 三.独立式按键结构: 指直接用i/o线构成的单个按键电路。每一键互相独立地各自接通一条输入线,每根i/o线上的按键工作状态不影响其它i/o线的工作状态,此亦称非编码键盘结构。如下图: +5v p1.0 p1.1 p1.2 p1.38031 k3 k2 k1 k0 (a)查询式电路 查询i/o输入线0有效 即为0者该线上键闭合 地 +5v p1.0 p1.1 p1.2 p1.3 int08031 k3多输入与门 k2 k1 k0 (b)中断式电路 任一键按下则int0触发中断 地 在中断服务程序中查询哪一键按下独立式按键结构的优点是配置灵活,软件简单,缺点是使用i/o口线多,适于按键数量不多时使用。独立式按键的软件结构:strat:mov a,#0ffh mov p1 , a ;置p1口输入方式 mov a , p1 ;键状态输入 jnb acc.0 , p0 ;0号键按下转 jnb acc.1 , p1 jnb acc.2 , p2 jnb acc.3 , p3 ljmp start键处理程序略注:该程序中未包括软件去抖措施,实际应用中应考虑去抖动处理。四.行列式键盘结构:1. 键盘工作原理:如图 3 2 1 0 0行 +5v p1.7 p1.6 7 6 5 4 1行 b a 9 8 2行 p1.5 f e d c 3行 p1.4 3列 p1.3 2列 p1.2 1列 p1.1 0列 p1.0用i/o口线组成行列式结构,按键设置在行列的交叉点上,22的键盘结构可构成4个键的键盘,44的键盘结构可构成16个键的键盘。键扫描的过程: 判断有无键按下列线输出全0码(d0d3),将行线状态读入累加器a(d4d7),若读入状态不全为1则有键按下,否则无键按下。 当有键按下时,判断哪一键按下:由列线逐列置0,检查行输入状态。例如列线输出d3d0为1110,即d0=0,读入行线状态d7d4,若为0111,即d7=0,则可判断为0键按下,若此时读出行线状态为全1,则本列无键按下,即0、4、8、c均未按下。接着再将下一列线置0输出,检查下一列键是否有键按下,直到每一列均查完为止。键盘上每一个键均有一个唯一的键值,一般用直接赋值方法定义键值,每个键的键值为当它按下时,键扫描程序的列码和行码按一定顺序由二进制数排列。例如当0键按下时,键扫描程序输出的列码为1110,读入的行码为0111,将它们按d7d0的顺序排列为:01111110,则0键的键值定义为7eh。类似的方法可得到:1键的键值为7dh4键的键值为beh f键的键值为e7h键扫描程序中只要将列码输出,再读入行码,然后将行列码拼接,与键值比较,即可确定为哪一键按下。键扫描的方式可采取编程扫描、定时扫描或中断方式定时器中断原理:中断的原理有关中断的概念什么是中断,我们从一个生活中的例子引入。你正在家中看书,突然电话铃响了,你放下书本,去接电话,和来电话的人交谈,然后放下电话,回来继续看你的书。这就是生活中的“中断”的现象,就是正常的工作过程被外部的事件打断了。仔细研究一下生活中的中断,对于我们学习单片机的中断也很有好处。第一、什么可经引起中断,生活中很多事件可以引起中断:有人按了门铃了,电话铃响了,你的闹钟闹响了,你烧的水开了.等等诸如此类的事件,我们把可以引起中断的称之为中断源,单片机中也有一些可以引起中断的事件,8031中一共有5个:两个外部中断,两个计数/定时器中断,一个串行口中断。 第二、中断的嵌套与优先级处理:设想一下,我们正在看书,电话铃响了,同时又有人按了门铃,你该先做那样呢?如果你正是在等一个很重要的电话,你一般不会去理会门铃的,而反之,你正在等一个重要的客人,则可能就不会去理会电话了。如果不是这两者(即不等电话,也不是等人上门),你可能会按你通常的习惯去处理。总之这里存在一个优先级的问题,单片机中也是如此,也有优先级的问题。优先级的问题不仅仅发生在两个中断同时产生的情况,也发生在一个中断已产生,又有一个中断产生的情况,比如你正接电话,有人按门铃的情况,或你正开门与人交谈,又有电话响了情况。考虑一下我们会怎么办吧。第三、中断的响应过程:当有事件产生,进入中断之前我们必须先记住现在看书的第几页了,或拿一个书签放在当前页的位置,然后去处理不同的事情(因为处理完了,我们还要回来继续看书):电话铃响我们要到放电话的地方去,门铃响我们要到门那边去,也说是不同的中断,我们要在不同的地点处理,而这个地点通常还是固定的。计算机中也是采用的这种方法,五个中断源,每个中断产生后都到一个固定的地方去找处理这个中断的程序,当然在去之前首先要保存下面将执行的指令的地址,以便处理完中断后回到原来的地方继续往下执行程序。具体地说,中断响应可以分为以下几个步骤:1、保护断点,即保存下一将要执行的指令的地址,就是把这个地址送入堆栈。2、寻找中断入口,根据5个不同的中断源所产生的中断,查找5个不同的入口地址。以上工作是由计算机自动完成的,与编程者无关。在这5个入口地址处存放有中断处理程序(这是程序编写时放在那儿的,如果没把中断程序放在那儿,就错了,中断程序就不能被执行到)。3、执行中断处理程序。4、中断返回:执行完中断指令后,就从中断处返回到主程序,继续执行。究竟单片机是怎么样找到中断程序所在位置,又怎么返回的呢?我们稍后再谈. mcs-51中断系统的结构:由与中断有关的特殊功能寄存器、中断入口、顺序查询逻辑电路等组成,包括5个中断请求源,4个用于中断控制的寄存器ie、ip、econ和scon来控制中断 类弄、中断的开、关和各种中断源的优先级确定。中断请求源:(1)外部中断请求源:即外中断0和1,经由外部引脚引入的,在单片机上有两个引脚,名称为int0、int1,也就是p3.2、p3.3这两个引脚。在内部的tcon中有四位是与外中断有关的。it0:int0触发方式控制位,可由软件进和置位和复位,it0=0,int0为低电平触发方式,it0=1,int0为负跳变触发方式。这两种方式的差异将在以后再谈。ie0:int0中断请求标志位。当有外部的中断请求时,这位就会置1(这由硬件来完成),在cpu响应中断后,由硬件将ie0清0。it1、ie1的用途和it0、ie0相同。(2)内部中断请求源tf0:定时器t0的溢出中断标记,当t0计数产生溢出时,由硬件置位tf0。当cpu响应中断后,再由硬件将tf0清0。tf1:与tf0类似。ti、ri:串行口发送、接收中断,在串口中再讲解。2、中断允许寄存器ie在mcs51中断系统中,中断的允许或禁止是由片内可进行位寻址的8位中断允许寄存器ie来控制的。见下表 eaxxeset1ex1et0ex0 其中ea是总开关,如果它等于0,则所有中断都不允许。es串行口中断允许et1定时器1中断允许ex1外中断1中断允许。et0定时器0中断允许ex0外中断0中断允许。如果我们要设置允许外中断1,定时器1中断允许,其它不允许,则ie可以是 eaxxeset1ex1et0ex0 10001100即8ch,当然,我们也可以用位操作指令setb easetb et1setb ex1来实现它。3、五个中断源的自然优先级与中断服务入口地址外中断0:0003h定时器0:000bh外中断1:0013h定时器1:001bh串口 :0023h它们的自然优先级由高到低排列。写到这里,大家应当明白,为什么前面有一些程序一始我们这样写:org 0000hljmp startorg 0030hstart:。这样写的目的,就是为了让出中断源所占用的向量地址。当然,在程序中没用中断时,直接从0000h开始写程序,在原理上并没有错,但在实际工作中最好不这样做。优先级:单片机采用了自然优先级和人工设置高、低优先级的策略,即可以由程序员设定那些中断是高优先级、哪些中断是低优先级,由于只有两级,必有一些中断处于同一级别,处于同一级别的,就由自然优先级确定。开机时,每个中断都处于低优先级,我们可以用指令对优先级进行设置。看表2中断优先级中由中断优先级寄存器ip来高置的,ip中某位设为1,相应的中断就是高优先级,否则就是低优先级。 xxxpspt1px1pt0px0 例:设有如下要求,将t0、外中断1设为高优先级,其它为低优先级,求ip的值。ip的首3位没用,可任意取值,设为000,后面根据要求写就可以了 xxxpspt1px1pt0px0 00000110第四章 8279的内部结构原intel8279芯片是一种通用的可编程序的键盘、显示接口器件,单个芯片就能完成键盘输入和led显示控制两种功能。其内部结构如图6-10-1所示。8279包括键盘输入和显示输出两个部分。 键盘部分提供的扫描方式,可以和64个按键或传感器的阵列相连。能自动消除开关抖动以及n个键同时按下的保护。 显示部分按扫描的方式工作。可以显示8或16位led显示块。 一、8279电路工作原理单片机系统中有两种led显示方式,即静态显示和动态显示,静态显示的优点是显示效果好,编程简单,但由于输出的每一位都需要锁存,使用的硬件较多;动态显示方式中,各位数码管的ah端并连在一起,每一时刻只有一位数码管被点亮,各位依次轮流被点亮,硬件电路简单,但由于需要不停地进行刷新显示,降低了cpu的效率,而且编程的工作量很大。为了解决动态显示中存在的问题,intel公司研制出了专用的键盘、显示器接口电路芯片8279,该芯片能自动完成对显示的刷新,同时还可以对键盘自动扫描,识别闭合键的键号,使用非常方便。8279用a0来区分信息特征,当a0为0时,cpu从8279读出的是状态,写入的是命令,且每个命令也有自己的特征;当a0=1时读出和写入的都是数据。8279内部有两个缓冲区,即一个8字节的fifo(firstinfirstout)键盘ram和一个16字节的显示ram,显示数据时只要将待显示数据的段码写入显示ram即可;当有键闭合时,8279会自动执行去抖、得到键值、等待按键释放等操作,最后,将键值存入fiforam中,程序只需从fifo中读取键值即可,编程十分简单,具体实验线路图17所示。8279键盘、显示器接口器件是实现人机对话的主要部件,它已为广大用户欢迎和广泛应用。然而在有些应用场合,既要键盘具有普通的数据输入和控制功能,又要键盘具备按钮功能。例如,微机控制的注塑机,在手动控制时需要有点动功能:按钮按下进行调模运动,按钮松开,调模运动停止。本文介绍使8279构成的键盘具有以上功能的实现方法,供读者参考使用。为了使8279具有合适的键盘、显示功能,首先要对芯片初始化。可适当地挑选8279的控制字,例如:使8279具有8位显示、右端输入、编码键盘、双键锁定时可选控制字10h.这时每次按键都将产生键特征码,并且存放在fiforom中,同时使8279的irq引脚变为高电平,可作为向cpu申请中断信号,如果cpu是中断开放的,则转向中断服务程序,可在中断服务程序中读取特征码。每当cpu读取fiforom中的数据后,8279自动撤消irq信号,irq引脚变为低电平。cpu返回主程序后,可由键特征码来决定程序的流向。问题是,当cpu从8279的fiforom中读取键特征码后,irq虽然恢复底电平,但fiforom中的数据并没有消失,仍保存在里面,这时即使使用对改8279清除的指令d3h,也不能将fiforom中的数改变,只有按其它键才能改变fiforom中的数据,因这样是无法实现按钮功能的。为了使键盘具有按钮功能,应该利用8279的传感方式功能,在传感器方式中,8279每当检测到传感状态变化时,irq就变为高电平,图1是以8031cpu构成的系统为例,说明irq引脚电平的翻新过程。 8279的irq端经反相器接到8031的int1端(即p3.3引脚)。先将8279设置成编码键盘,允许int1中断,当键按下时,反相器输出低电平,cpu进入中断服务程序,读取键特征码后,又为高电平。返回主程序后,转向功能程序(例如调模进)。输出控制信号(例如p1.0为“1”时调模进电磁阀得电)后,将8279设置为传感器方式,并且不允许int1中断,然后调试p3.3是否为低电平。如果按键松开,8279将测出传感器状态发生变化,而使irq由低电平转为高电平。也就是说p3.3脚为低电平时,按键已经松开,程序重新设置8279为编码键盘,int1中断开放,以便使键盘脱离按钮功能。实现以上功能的程序清单如下: 根据结构框图,分别介绍各部分电路工作原理。 1.i/o控制及数据缓冲器 数据缓冲器是双向缓冲器,连接内、外总线,用于传送cpu和8279之间的命令或数据;i/o控制线是cpu对8279进行控制的引线。cs是8279的片选信号,cs=0时,8279才被允许读出或写入信息。wr、rd为来自cpu的控制信号。 a0用于区别信息特性:a0=1时,表示数据缓冲器输入为指令、输出为状态字;a=0时,输入、输出皆为数据。 2.控制与定时寄存器及定时控制 控制与定时寄存器用来寄存键盘及显示的工作方式,以及由cpu编程的其它操作方式。这些寄存器一旦接受并锁存送来的命令,就通过译码产生相应的信号,从而完成相应的控制功能。 定时控制包含基本记数键。首级计数器是一个可编程的n级计数器。n可以231之间由软件编程,以便从外界时钟clk分频得到内部所需要的100khz时钟。然后再经过分频为键盘扫描提供适当的逐行扫描频率和显示扫描时间。 3.扫描计数器 扫描计数器有两种工作方式。按编码方式工作时,计数器作二进制记数。4位记数状态从扫描线sl0sl3输出,经外部译码器译码后,为键盘和显示器提供扫描线;按译码方式工作时,扫描计数器的最低二位被译码后,从sl0sl3输出。因此,sl0sl3提供了4中取1的扫描译码。 4.回复缓冲器、键盘去抖及控制 来自rl0rl3的8根回复线的回复信号,由回复缓冲器缓冲并锁存。 在键盘工作方式中,回复线作为行列式键盘的行列输入线。在逐行列输入时,在逐行列扫描时,回复线用来搜索每一行列中闭合的键。当某一键闭合时,去抖电路被置位,延时等待10ms后,再检验该键是否继续闭和,并将该键的地址和附加的移位、控制状态一起形成键盘数据被送入8279内部fifo(先进先出)存储器。键盘数据格式如下: d7 d6 d5 d4 d3 d2 d1 d0控制移位扫描回复 控制和移位(d6、d7)的状态由两个独立的附加开关决定,而扫描(d5、d4、d3)和回复(d2、d1、d0)则是被按键置位的数据。d5、d4、d3来自动扫描计数器,是按下键的行列编码,而(d7d7d7)则来自行/列计数器,它们是根据回复信号而确定的行/列编码。 在传感器开关状态矩阵方式中,回复线的内容直接被送往和相应的传感器ram(即fifo存储器)。在选通输入方式中,回复线的内容在cntl/stb线的脉冲上升沿被送入fifo存储器。 5.fifo/传感器及其状态寄存器fifo/传感器ram是一个双重功能的88ram。 在键盘或选通方式工作时,它是fifo存储器,其输入或读出遵循先入先出的原则。fifo状态寄存器用于存放fifo的工作状态。例如,ram是满还是空;其中存有多少数据;是否操作出错等。当fifo存储器不空,状态逻辑将产生irq=1信号向cpu申请中断。 在传感器矩阵方式工作时,这个存储器以是传感器不是存储器。它存放着传感器矩阵中的每一个传感器状态。在此方式中,若检索出传感器的变化,irq信号变为高电平,向cpu申请中断。 6.显示ram和显示地址寄存器 显示ram用来存储显示数据。容量为168位。在显示过程中,存储的显示数据轮流从显示寄存器输出。显示寄存器分别为a、b两组,outa03和outb03可以单独送数,也可以组成一个8位的字。显示寄存器的输出与显示扫描配合,不断从显示ram中读出显示数据,同时轮流驱动被选中的显示器件,以达到多路复用的目的,使显示器件呈现稳定的显示状态。 显示地址寄存器用来寄存由cpu进行读/写显示ram的地址,它可以由命令设定,也可以设置成每次读写或写入之后自动递减。 二.管脚、引线与功能 8279采用40引脚封装,其管脚、引线功能如图6-10-2所示。其引脚功能如下: d0d7(数据总线):双向、三态总线,和系统数据总线相连;用于cpu和8279间的数据/命令传递。 clk(系统时钟):输入线,为8279提供内部时钟的输入端。 reset(复位):输入线,当reset=1时,8279复位,其复位状态为: 16个字符显示; 编码扫描键盘-双键锁定; 程序时钟编码为31。 cs(片选):输入线,当cs=0时8279被选中,允许cpu对其读、写,否则被禁止。 a0(数据选择):输入线。当a0=1时cpu写入数据为命令字,读出数据为状态字;a0=0时cpu读、写的字节均为数据。 rd、wr(读、写信号):输入线。低电平有效,来自cpu的控制信号,控制8279的读、写操作。 irq(中断请求):输出线。高电平有效。 在键盘工作方式中,当fifo/传感器ram存有数据时,irq为高电平。cpu每次从ram中读出数据时,irq变为低电平。若ram中仍有数据,则irq再次恢复高电平。 在传感器工作方式中,每当检测到传感器状态变化时,irq就出现高电平。 sl0sl3(扫描线):输出线。用来扫描键盘和显示器。它们可以编程设定为编码(4中取1)或译码输出(16取1)。 rl0rl7(回复线):输入线。它们是键盘矩阵或传感矩阵的列(或行)信号输入线。 shift(移位信号):输入线、高电平有效。该输入信号是键盘数据的最高位(d7),通常用来扩充键开关的功能,作为控制功能键用。 在选通输入方式时,该信号的上升沿可将来自rl0rl7的数据存入fifo ram中。 在传感器输入下,该信号无效。 outa0outa3(a组显示信号):输出线。 outb0outb3(b组显示信号):输出线。 这两组引线都是显示数据输出线,与多位数字显示的扫描线sl0sl3同步,两组可以独立使用,也可以合并使用。 bd(显示消隐):输出线。低电平有效。该信号在数字切换显示或使用消隐命令时,将显示消隐。 三、命令格式与命令字 8279的操作方式是通过cpu对8279送入命令时来实现编程的。当数据选择端a0置1时,cpu对8279写入数据为命令字,读出的数据为状态字。 8279共有八条命令。其功能及命令字定义分述如下。 1.键盘/显示方式设置命令字 命令格式: d7 d6 d5 d4 d3 d2 d1 d0000ddkkk 其中: d7、d6、d5=000方式设置命令特征位。 d d(d4、d3):来设定显示方式,其定义如下: 00:8个字符显示,左入口 00:16个字符显示,左入口 00:8个字符显示,右入口 00:16个字符显示,右入口 所谓左入口,即显示位置从最左一位(最高位)开始,以后逐次输入的显示字

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论