《课程设计(论文)8255扫描键盘(4X4)显示设计.doc》由会员分享,可在线阅读,更多相关《课程设计(论文)8255扫描键盘(4X4)显示设计.doc(13页珍藏版)》请在三一办公上搜索。
1、目录8255扫描键盘(4X4)显示:一、设计要求 1二、设计目的 1三、主要芯片及器件介绍 1四、电路原理图 5五、编程方法 7六、设计体会 10七、参考文献 108255扫描键盘(4X4)显示设计系 别:电子电气工程系 专业名称:电子信息工程 班 级:电子(3)班 学生姓名: 学 号:20048602115 指导教师: 2006 年8月29日一、设计要求利用可编程并行接口8255芯片与MCS-51单片机相连做一个有输入/输出的并行接口。输入端口接44的键盘,输出端口接8个七段数码管,作为输出显示。二、设计目的1理解MCS-51单片机输入输出的原理及工作方式。2掌握8255的编程方法。3掌握利
2、用8279实现编码式键盘的连接和编程方法。4掌握多个七段数码管按位显示的实现方法。三、主要芯片及器件介绍1可编程并行接口 82558255是8位通用可编程并行输入输出接口芯片,它具有很强的功能,在使用时可利用软件编程来指定完成它的功能。18255的外部引线如图1:D0D7:双向数据信号线。用来传送数据和控制字。:读信号线。通常接系统总线的IOR。:写信号线。通常接系统总线的IOW。:片选输入端,低电平有效。A0 A1:口地址选择信号线。8255内部有3个口(即A口,B口,C口)还有一个控制寄存器,他们即可由程序寻址。A0 A1 上的不同编码可分别寻址上述3个口号一个控制寄存器,具体规定如下:
3、A0 A1 选择 0 0 A口 0 1 B口 1 0 C口 1 1 控制寄存器 图 1 8255管脚图A0 A1与一起决定8255的接口地址。RESET: 复位输入信号。此端的高电平可使8255复位。复位后,8255的A口,B口,C口均被定义为输入状态。PA0PA7:A口的8条输入输出信号线。该口的这8条线是工作与输入输出还是双向(输入/输出)方式可由软件编程来决定。PB0PB7:B口的8条输入输出信号线。利用软件编程可指定这8条线式输入还是输出。PC0PC7:C口的8条线根据其工作方式可作为数据输入或是输出线,也可以用作控制信号的输出或状态信号的输入线。28255的工作方式 8255有3种工
4、作方式 1).工作方式0( 基本输入输出方式)在这种方式下,定义为输出的口均可以锁存数据,而定义为输入的口则无锁存能力 2)工作方式1(选通输入输出方式) 在这种方式下,A口和B口仍作为 数据的输入和输出口,同时还要利用C口的某些位作为控制和状态信号 3)工作方式2 (双向输入输出方式)这种工作方式只有A口才有。在A口工作于双向输入输出方式时,要利用C口的5条线才能实现。此时,B口只能工作在方式0或方式1,而C口剩下的3条线可作为输入输出线使用或作为B口方式1之下的控制线。 3 8255的方式控制字 8255的控制字由8位二进制书构成D7D6D5D4D3 D2D1D0 D7: 功能控制 (0:
5、位操作;1:方式选择)D6 D5:方式选择 00:方式0; 01:方式1; 1X:方式2;D4: 控制A口8位 (0:输出; 1:输入)D3:控制C口高四位(0:输出; 1:输入)D2:方式选择 (0:方式0;1:方式1)D1:控制B口8位 (0:输出; 1:输入)D0 :控制C口低四位 (0:输出; 1:输入) 2 可编程键盘/显示器接口 82798279是一种可编程键盘/显示器接口芯片,它含有键盘输入和显示器输出两种功能。键盘输入时,它提供自动扫描,能与按键或传感器组成的矩阵相连,接收输入信息,它能自动消除开关抖动并能对多键同时按下提供保护。显示输出时,它有一个168位显示RAM,其内容通
6、过自动扫描,可由8或16 位LED数码管显示。8279采用40引脚双列直插封装,其引脚排列及功能分别如图所示。其引脚功能如下:D0D7:数据总线,双向三态总线。CLK:系统时钟输入端。RESET:系统复位输入端,高电平有效,复位状态为:16个字符显示;编码扫描键盘双键锁定;程序时钟编程为31。:片选输入端,低电平有效。A0:数据选择输入端,A0=1时,CPU写入数据为命令字,读出状态字为状态字;A0=0时,CPU读、写均为数据。、:读、写信号输入端,低电平有效。IRQ:中断请求输出端,高电平有效。SL0SL3:扫描输出端,用于扫描键盘和显示器。可编程设定为编码(4中选1)或译码输出(16选1)
7、。RL0RL7:回复线,它们是键盘或传感器的列信号输入端OUTA0OUTA3:A组显示信号输出端。OUTB0OUTB3:B组显示信号输出端 图2 8279管脚图3. 44的键盘图3 44的键盘.键盘的工作原理按键按照接口原理可分为编码键盘与非编码键盘两类,这两类键盘的主要区别是识别键符及给出相应键码的方法。编码键盘主要是用硬件来实现对键的识别,非编码键盘主要是由软件来实现键盘的定义与识别对于一组键或一个键盘,总有一个接口电路与CPU相连。CPU可以采用查询或中断方式了解有无将键输入并检查是哪一个键按下,将该键号送入累加器ACC,然后通过跳转指令转入执行该键的功能程序,执行完后再返回主程序.按键
8、结构与特点机械式按键在按下或释放时,由于机械弹性作用的影响,通常伴随有一定时间的触点机械抖动,然后其触点才稳定下来。其抖动过程如图7.2所示,抖动时间的长短与开关的机械特性有关,一般为510ms。图5 按键触点的机械抖动在触点抖动期间检测按键的通与断状态,可能导致判断出错。即按键一次按下或释放被错误地认为是多次操作,这种情况是不允许出现的。为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施,可从硬件、软件两方面予以考虑。在键数较少时,可采用硬件去抖,而当键数较多时,采用软件去抖。在硬件上可采用在键输出端加R-S触发器(双稳态触发器)或单稳态触发器构成去抖动电路。在软件上采取的措施是:在
9、检测到有按键按下时,执行一个10ms左右(具体时间应视所使用的按键进行调整)的延时程序后,再确认该键电平是否仍保持闭合状态电平,若仍保持闭合状态电平,则确认该键处于闭合状态;同理,在检测到该键释放后,也应采用相同的步骤进行确认,从而可消除抖动的影响。按键编码一组按键或键盘都要通过I/O口线查询按键的开关状态。根据键盘结构的不同,采用不同的编码。无论有无编码,以及采用什么编码,最后都要转换成为与累加器中数值相对应的键值,以实现按键功能程序的跳转。4. 七段数码管1)数码管结构数码管由8个发光二极管(以下简称字段)构成,通过不同的组合可用来显示数字0 9、字符A F。数码管又分为共阴极和共阳极两种
10、结构。(a) 外型结构 (b) 共阴极 (c)共阳极图6 数码管结构图 2)数码管工作原理 共阳极数码管的8个发光二极管的阳极(二极管正端)连接在一起,通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。当某段驱动电路的输出端为低电平时,则该端所连接的字段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。共阴极数码管的8个发光二极管的阴极(二极管负端)连接在一起,通常,公共阴极接低电平(一般接地),其它管脚接段驱动电路输出端,当某段驱动电路的输出端为高电平时,则该端所连接的字
11、段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能提供额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。四、电路原理图图7 74LS138译码电路连接图利用74LS138译码电路,实现8位七段数码管的按位逐个显示。E1 E2 E3为138的使能端,控制译码器的工作状态。A B C为地址选择端,通过ABC的状态输入实现对Y0Y7的选择,被选中的输出端为低电平。图8 总电路图五、编程方法1.实验说明:在PA口与PB口组成的64点阵列上,把按键接在不同的点上,将得到不同的键码,本实验采用4X4的阵列,共可按16个键。显示部分由8279控制,由74
12、LS138驱动8位数码管显示。2.实验流程图:图9 实验程序框图 图10 读键显示部分框图3.实验程序:8255接8500H,则命令字地址为8506H,PA口地址为8500H,PB口地址为8502H,PC口地址为8504H。8279接8700H,则8279的状态口地址为8701H; 8279的数据口地址为8700H。D8255 EQU 8506H ;8255状态/数据口地址D8255A EQU 8500H ;8255 PA口地址D8255B EQU 8502H ;8255 PB口地址Z8279 EQU 8701H ;8279状态口地址D8279 EQU 8700H ;8279数据口地址DISP
13、TR EQU 08H ;当前显示位置KEYVAL EQU 09H ;读到的键码ORG 0000HLJMP STARTORG 0040HSTART:MOV SP,#60HLCALL DELAY ;延时MOV DISPTR,#30H ;显示缓冲区头指针MOV DPTR,#D8255MOV A,#90H ;置8255状态 ;方式0,PB,PC口输出,PA口输入MOVX DPTR,AMOV DPTR,#Z8279 ;置8279命令字MOV A,#0D3HMOVX DPTR,A ;清LED显示MOV A,#00HMOVX DPTR,AMOV A,#38HMOVX DPTR,AMOV A,#0D1HKB_
14、DIS:LCALL RD_KB ;读键盘MOV A,#0FFHCJNE A,KEYVAL,DISBUF ;判读到键SJMP KB_DIS ;没有则继续读键DISBUF:LCALL DISP ;把键移入显存LCALL DELAY ;延时消抖LCALL DELAYSJMP KB_DISDISP: ;显存依次前移MOV R1,#31H ;在最后加入新键值MOVE:MOV A,R1DEC R1MOV R1,AINC R1INC R1CJNE R1,#38H,MOVEMOV 37H,KEYVALMOV KEYVAL,#0FFHMOV DPTR,#Z8279MOV A,#90HMOVX DPTR,AMOV
15、 R0,#10H ;测试,依次显示09MOV R1,#30HMOV DPTR,#D8279LP: MOV A,R1MOVX DPTR,AINC R1DJNZ R0,LPRET;键盘扫描MOV R0,#04H ;RD_KB:MOV A,R0MOV DPTR,#D8255BMOVX DPTR,AMOV DPTR,#D8255AMOVX A,DPTRMOV R1,#00HCJNE A,#0FFH,KEYCAL ;判键是否按下DJNZ R0,RD_KB ;扫描下一行SJMP NOKEY ;无键按下KEYCAL: ;计算键码MOV R0,#04HSHIFT:RRC AJNC CALCINC R1DJNZ
16、 R0,SHIFTCALC: ;换算显示码MOV DPTR,#DL_DATMOV A,R1MOVC A,A+DPTRMOV KEYVAL,ARETNOKEY: MOV KEYVAL,#0FFH ;返回无键标志RETDELAY: MOV R0,#00H ;延时子程序DELAY1: MOV R1,#00HDJNZ R1,$DJNZ R0,DELAY1RETDL_DAT: DB 3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FH ;09DB 77H 7CH 39H 5EH 79H 71H ;AFEND六、设计体会这个设计是在一种紧张忙碌的气氛中结束的,虽然有点辛苦,但却学
17、到了不少东西。 通过这个设计,我们对以前所学的理论知识温故知新,通过自己的思考与动手实践,使原来所学的理论知识得到进一步的巩固,同时,也学到了一些新的东西,进一步了解与单片机有关的一些技术是怎样与单片机结合在一起的。通过讨论8255扫描键盘显示的系统方案的论证设计、编程、软件硬件调试、查阅资料、绘图等问题,真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。这些东西都不是从课本上学的到的,正是在自己动手实践中,经历了一次一次的失败后,积累起来的。这是一笔宝贵的财富。这个设计,再次告诉我们,作实验或是其他任何事情时,需要有足够的细心与耐心。在作实验的
18、过程中,总会碰到问题,因此,我们不仅要有较扎实的基础知识,还要有较强的心理素质。当实验的结果无法与理论值相一致时,不应该烦躁、气馁,而是应该和其他有做过相应设计的人交流,理清思路,分析导致出错的原因。必要时,可以把自己的想法与老师交流,请老师给予提示、指导。七、参考文献1 肖洪兵. 跟我学用单片机M. 北京:北京航空航天大学出版社,2002.82 赵晓安. MCS-51单片机原理及应用M. 天津:天津大学出版社,2001.33 李广第 单片机基础M 第1版北京:北京航空航天大学出版社,19994 徐惠民、安德宁 单片微型计算机原理接口与应用M 第1版 北京:北京 邮电大学出版社,19965 夏继强. 单片机实验与实践教程M. 北京:北京航空航天大学出版社, 2001