第7次《单片机原理与应用》-键盘与显示_第1页
第7次《单片机原理与应用》-键盘与显示_第2页
第7次《单片机原理与应用》-键盘与显示_第3页
第7次《单片机原理与应用》-键盘与显示_第4页
第7次《单片机原理与应用》-键盘与显示_第5页
已阅读5页,还剩50页未读, 继续免费阅读

下载本文档

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

文档简介

1、单片机原理与应用实验 信通学院可编程通用并行接口芯片8255结构与引脚8255用于扩展单片机并行I/O接口。一、结构:1. 3个8位并行I/O接口PA、PB和PC: 包含I/O数据锁存器,控制寄存器和状态寄存器。2. 2组控制: A组:PA和PC03; B组:PB和PC47:8255A的内部结构图3. 3种工作方式:方式0(基本I/O方式): A口、B口、C口均为数据I/O。输出锁存,输入三态,不用联络信号。 适用于无条件或查询方式的数据传送。方式1(选通I/O方式): A口和B口用于数据I/O,输入/输出均锁存, C口用于传送联络信号,读C口可了解外设当前状态。 适用于查询或中断方式的数据I

2、/O。方式2(双向数据传送方式): A口为数据I/O,B口只能为方式0,C口用作A口双向传送的联络信号线。 适用于查询或中断方式的数据I/O。二、8255A的芯片引脚信号40脚引脚(40脚):1.数据线:D07:传送计算机与8255之间的数据、控制字和状态字。PA07 PB 07 PC07:传送8255与外设之间的数据和联络 信息,PC07可用作数据线或联络线。2.地址线:CS:片选线A1、A0:口选线,寻址 PA、PB、PC数据口和控制口。3.读写控制线:RD、WR控制计算机与8255之间的信息传送和流向。4.复位线:RESET高电平复位,使内部寄存器全部清零。三、例题:例:求8255口地址

3、:解: A口(7F00H); B口(7F01H); C口(7F02H); 控制口(7F03H)。 P0 P2.780C51A0A1CS8255373Q0Q1ABi: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0A口: 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 7F00HB口: 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 7F01HB口: 0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 0 7F02H控制口:0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 7F03H8255编程规定方式选择控制字:

4、D7=1C口置位/复位控制字:D7=08255初始化编程:往控制口写入控制字,确定8255工作方式。 方式选择控制字8255A方式选择注意:有三种基本工作方式: 方式0基本的输入输出方式 方式1选通的输入输出方式 方式2双向传输方式 只有端口A能工作在方式2; 同一组的两端口可分别工作在输入和输出方式。例: 8255PA口方式0输出单片机片内RAM数据, PB口方式1输入。PIOS:MOV DPTR,#7F03H;控制口地址 MOV A,#86H ;写控制字 MOVX DPTR,A ;设工作方式 MOV DPTR,#7F00H ;PA数据口地址 MOV A,R0 ;取RAM的数据 MOVX D

5、PTR,A ;由PA口输出键盘接口技术抖动时间10ms开关动作时间100ms“ 1 ”“ 0 ”10ms前沿抖动后沿抖动I/O接口+5v+5v消除抖动电路开关单片机键译码: 键号为键盘位置码,根据键号查表得出被按键的键值。键值:数字键09; 字符键0AH0FH; 功能键10H 。键码=行首键号+列号(键号必须依次是从左至右书写) 或键码=列首键号+行号(键号必须依次是从上至下书写)一、键盘处理程序任务:1.键输入: 检查键盘是否有键被按下,消除按键抖动。确定被按键的键号,获取键号。 硬件电路消除抖动或软件消除抖动。3.键处理: 根据键值转移到不同程序段。 若键值属于数字、字符键,则调用显示数字

6、和字符的子程序。 若键值属于功能键,则进行多分支转移,执行各个功能程序段。延时等待10ms 仍有按键信号?Y 有按键信号?NYN键盘处理 按键释放?NY二、键盘接口方法:1、利用单片机本身的并行口;2、利用单片机本身的串行口;3、利用通用接口芯片8155、8255等;4、利用专用接口芯片8279等。三、键盘接口的控制方式:1、随机方式:每当CPU空闲时执行键盘扫描程序。2、中断方式:键的按下引起中断后,单片机对键盘进行扫描。3、定时方式:单片机定时地对键盘进行扫描。(1)独立式键盘电路:(2)矩阵式键盘: 0 1+5v C0 C1 R0 R1键盘I/O接口(2)矩阵式键盘电路: 1)扫描法:

7、列线输出,行线输入。 列线逐列输出0,某行有按键,行线输入就为0; 若无按键,行线输入全部为1。 2)反转法: 行列线交换输入、输出,两步获取按键键号。(1)独立式键盘电路:每个按键单独占有一根I/O接口引线。四、键盘接口形式:P1.0P1.1P1.7+5v按键处理程序:延时消抖键扫描求键号延时等待键译码求键值修改显示缓冲区跳转各功能程序有按键输入?确有按键?按键释放?是数字键?YYYNNNYN1、使用8155作键盘接口:接口应用:P2.7=0,P2.0=1:A口地址为:0101H;C口地址为:0103H。扫描法:列线输出,行线输入。列线逐列输出0,某行有按键,行线输入就为0;若无按键,行线输

8、入全部为1。0167891415键码=行首键号+列号(键号必须依次是从左至右书写) 或键码=列首键号+行号(键号必须依次是从上至下书写)判定有无键闭合的子程序:MOVDPTR,#0101HMOVA,#00H;A口送00HMOVXDPTR,AINCDPTRINCDPTR;建立C口地址MOVXA,DPTR;读C口CPLA;A取反,无键按下则全“0”ANLA,#0FH;屏蔽A高半字节(C口只4位)RET执行KS1子程序的结果是:有闭合键则(A) 0; 无闭合键则(A) 0。CPL A;负逻辑不直观,常采取行列线加反相器或 软件求反的方法把键盘改成正逻辑。KS1: 键盘扫描子程序如下:(8155的A口

9、、B口、C口和控制口地址分别为7F00H、7F01H、7F02H、7F03H,设8155A已在主程序中初始化。已设定为A口方式0输出,C口的低4位方式0输入。)KEY1:ACALL KS1 ;调用判断有无键按下子程序 JNZ LK1 ;有键按下时,(A)0转消抖延时KEY2:ACALL TM6ms AJMP KEY1 ;无键按下返回LK1: ACALL TM12ms ;调12 ms延时子程序 ACALL KS1 ;查有无键按下,若有则真有键按下 JNZ LK2 ;键(A) 0逐列扫描 AJMP KEY2 ;不是真有键按下,返回LK2:MOV R2,#0FEH ;初始列扫描字(0列)送入R2 M

10、OV R4,#00H ;初始列(0列)号送入R4LK4:MOV DPTR,#7F00H ;DPTR指向8155PA口 MOV A,R2 ;列扫描字送至8155PA口 MOVX DPTR,A INC DPTR ;DPTR指向8155PC口 INC DPTR MOVX A,DPTR ;从8155 PC口读入行状态 JB ACC.0,LONE ;查第0行无键按下,转查第1行 MOV A,#00H ;第0行有键按下,行首键码#00HA AJMP LKP ;转求键码LONE: JB ACC.1,LTWO ;查第1行无键按下,转查第2行 MOV A,#08H ;第1行有键按下,行首键码#08HA AJMP

11、 LKP ;转求键码LTWO:JB ACC.2,LTHR ;查第2行无键按下,转查第3行 MOV A,#10H ;第2行有键按下,行首键码#10HA AJMP LKP ;转求键码LTHR:JB ACC.3,NEXT ;查第3行无键按下,转该查下一列 MOV A,#18H ;第3行有键按下,行首键码#18HALKP: ADD A,R4 ;求键码,键码=行首键码+列号 PUSH ACC ;键码进栈保护LK3: ACALL KS1 ;等待键释放JNZ LK3 ;键未释放,等待POP ACC ;键释放,键码ARET ;键扫描结束,出口状态(A)=键码NEXT: INC R4 ;准备扫描下一列,列号加1

12、 MOV A,R2 ;取列扫描字送累加器A JNB ACC.7,KEND ;判断8列扫描否?扫描完返回 RL A ;扫描字左移一位,变为下一列扫描字 MOV R2,A ;扫描字送入R2保存 AJMP LK4 ;转下一列扫描KEND:AJMP KEY1 KS1: MOV DPTR,#7F00H;DPTR指向8155PA口 MOV A,#00H ;全扫描字A MOVX DPTR,A ;全扫描字送往8155PA口 INC DPTR ;DPTR指向8155PC口 INC DPTR MOVX A,DPTR ;读入PC口行状态 CPL A ;变正逻辑,以高电平表示有键按下 ANL A,#0FH;屏蔽高4位

13、,只保留低4位行线值 RET ;出口状态:(A)0时有键按下TM12ms:MOV R7,#18H ;延时12 ms子程序TM: MOV R6,#0FFHTM6: DJNZ R6,TM6 DJNZ R7,TM RETTM6ms: MOV R7,#0CH ;延时6 ms子程序TM2: MOV R6,#0FFHTM62: DJNZ R6,TM6 DJNZ R7,TM RET2、使用8279作键盘接口:P2.7=0时:A0=P2.0=1:命令口地址为:7FFFH;A0=P2.0=0:数据口地址为:7EFFH。 (程序略)键码=行首键号+列号(键号必须依次是从左至右书写) 0134567874LS156

14、为双2-4译码器/分配器3、使用中断方式作键盘接口: 当有键按下时,INT1为低,向CPU发出中断申请,在中断服务程序中除完成键识别、键功能处理外,仍须有清除键抖动等功能。0481215913键码=列首键号+行号(键号必须依次是从上至下书写)显示器接口技术 LED显示器用于显示工业控制参数、过程状态。一、 LED显示原理: 共阴极LED和共阳极LED。 当LED字段引线与数据线连接,每个显示字形对应一个字形码。 LED(Light Emiting Diode)COM P1.01.7 MCS-51a f b g e c d habh代码位D7D6D5D4D3D2D1D0显示段hgfedcbaa

15、b hCOM共阴极共阴极和共阳极的字段码互为反码 。显示字符共阴极字段码共阳极字段码显示字符共阴极字段码共阳极字段码03FHC0HC39HC6H106HF9HD5EHA1H25BHA4HE79H86H34FHB0HF71H8EH466H99HP73H8CH56DH92HU3EHC1H67DH82HT31HCEH707HF8HY6EH91H87FH80HL38HC7H96FH90H8FFH00HA77H88H“灭”00FFHB7CH83H二、显示程序任务:1、设置显示缓冲区,存放待显示数据和字符(位置码)。2、显示译码:程序存储器中建立字形码常数表,查表得出对应数据和字符的字形码。3、输出显示:

16、输出字形码到显示端口。例: MOV DPTR,#WTAB ;指向字形码表首地址MOV A,R0 ;取显示缓冲区中数据MOVC A,A+DPTR ;查表显示译码MOV P1,A ;输出显示WTAB:DB3FH,06H,5BH;字形代码表(共阴)COM P1.01.7 MCS-51a f b g e c d habh三、 LED接口电路:显示多位数据的两种电路:静态显示和动态显示。 对应字位线: D0 D1 D2 D3 D4 D5特点:显示亮度大,硬件和软件都较简单,应用广泛。1静态显示: 多位LED共用一个8位字段口(共阴极或共阳极), 各位LED公共端用字位口控制,扫描输出显示不同字形。 显示

17、缓冲区与多位LED对应关系: 每个LED需要一个8位并行口。 a b hCOM a b hCOM a b hCOMa f b g e c d h 段控和位控例:显示80C51片内RAM中以30H为首地址的8位字形数的程序:静态显示电路“0”程序:DIR:PUSHACC;保护现场 PUSHDPH PUSHDPL MOVR2,#08H;显示8个数 MOVR0,#30H;显示缓冲区地址送入R0DL0:MOVA,R0;取要显示的数作查表偏移量 MOVDPTR,#TAB;指向字形码表首 MOVCA,A+DPTR;查表得字形码 MOVSBUF,A;发送显示DL1:JNBTI,DL1;等待发送完一桢数据 C

18、LRTI;清标志,准备继续发送 INCR0;更新显示单元 DJNZR2,DL0;重复显示所有数码管 POPDPL;恢复现场 POPDPH POPACC RETTAB:DB0C0H,0F9H,0A4H,0B0H,99H ;0,1,2,3,4 DB92H,82H,0F8H,80H,90H,88H ;5,6,7,8,9,A DB83H,0C6H,0A1H,86H,8EH ;B,C,D,E,F共阳极2动态显示: 分时轮流选通数码管的公共端,使得各数码管轮流导通,在选通相应LED后,即在显示字段上得到显示字形码。 特点:提高数码管的发光效率,可简化硬件线路。举例见后:COMhCOMD7D1D0D0D1D

19、2hbbhCOMa f b g e c d haaba“位控”“段控”用8279作LED显示器接口:P2.7=0时:A0=P2.0=1:命令口地址为:7FFFH;A0=P2.0=0:数据口地址为:7EFFH。 (程序略)段码位码程序参考流程如右:读键输入子程序框图复习思考题1 认真复习实验过程,弄清8段数码管动态显示原理。2 改写数码管动态显示实验程序实现显示“HELLO”字符。3 改写键盘扫描显示实验程序,实现按键显示“123456”字符。 一、实验目的二、实验说明三、实验仪器四、实验内容六、实验报告要求第七次实验单片机键盘LED显示实验 五、思考题一、实验目的1、掌握键盘和LED显示器的接

20、口方法和编程方法。2、掌握键盘扫描和LED八段码显示器的工作原理。 3、学习并口扩展的程序编写方法。 二、实验说明 1、利用实验仪提供的键盘扫描电路和显示电路,做一个扫描键盘和数码显示实验,把按键输入的键码在六位数码管上显示出来。实验程序可分成三个模块。键输入模块:扫描键盘、读取一次键盘并将键值存入键值缓冲单元。显示模块:将显示单元的内容在显示器上动态显示。主程序:调用键输入模块和显示模块。 三、实验仪器和条件计算机伟福实验箱( lab2000P ) 四、实验内容 1、本实验仪提供了一个64的小键盘,向列扫描码地址(0X002H)逐列输出低电平,然后从行码地址(0X001H)读回。如果有键按下

21、,则相应行的值应为低,如果无键按下,由于上拉的作用,行码为高。这样就可以通过输出的列码和读取的行码来判断按下的是什么键。在判断有键按下后,要有一定的延时,防止键盘抖动。地址中的X是由KEY/LED CS 决定,参见地址译码。做键盘和LED实验时,需将KEY/LED CS 接到相应的地址译码上。以便用相应的地址来访问。例如将KEY/LED CS信号接CS0上,则列扫描地址为08002H,行码地址为08001H。列扫描码还可以分时用作LED的位选通信号。 2、本实验仪提供了6 位8段码LED显示电路,只要按地址输出相应数据,就可以实现对显示器的控制。显示共有6位,用动态方式显示。8位段码、6位位码

22、是由两片74LS374输出。位码经MC1413或ULN2003倒相驱动后,选择相应显示位。 3、本实验仪中 8位段码输出地址为0X004H,位码输出地址为 0X002H。此处X是由KEY/LED CS 决定,参见地址译码。做键盘和LED实验时,需将KEY/LED CS 接到相应的地址译码上。以便用相应的地址来访问。例如,将KEY/LED CS 接到CS0上,则段码地址为08004H,位码地址为08002H。 主程序参考流程:读键输入子程序框图显示子程序框图实验电路及连线 参考源程序1OUTBIT equ 08002h ; 位控制口OUTSEG equ 08004h ; 段控制口IN equ 0

23、8001h ; 键盘读入口LEDBuf equ 60h ; 显示缓冲 ljmp StartLEDMAP: ; 八段管显示码 db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71hDelay: ; 延时子程序 mov r7, #0DelayLoop: djnz r7, DelayLoop djnz r6, DelayLoop retDisplayLED: mov r0, #LEDBuf mov r1, #6 ; 共6个八段管 mov r2, #00100000b ; 从左边开始显示参考

24、源程序2Loop: mov dptr, #OUTBIT mov a, #0 movx dptr, a ; 关所有八段管 mov a, r0 mov dptr, #OUTSEG movx dptr, a mov dptr, #OUTBIT mov a, r2 movx dptr, a ; 显示一位八段管 mov r6, #1 call Delay mov a, r2 ; 显示下一位 rr a mov r2, a inc r0 djnz r1, Loop ret参考源程序3 TestKey: mov dptr, #OUTBIT mov a, #0 movx dptr, a ; 输出线置为0 mov

25、 dptr, #IN movx a, dptr ; 读入键状态 cpl a anl a, #0fh ; 高四位不用 retKeyTable: ; 键码定义 db 16h, 15h, 14h, 0ffh db 13h, 12h, 11h, 10h db 0dh, 0ch, 0bh, 0ah db 0eh, 03h, 06h, 09h db 0fh, 02h, 05h, 08h db 00h, 01h, 04h, 07hGetKey: mov dptr, #OUTBIT mov P2, dph mov r0, #Low(IN) mov r1, #00100000b mov r2, #6参考源程序4 KLoop: mov a, r1 ; 找出键所在列 cpl a movx dptr, a cpl a rr a mov r1, a ; 下一列 movx a, r0 cpl a anl a, #0fh jnz Goon1 ; 该列有键入 djnz r2, KLoop mov r2, #0ffh ; 没有键按下, 返回 0ffh sjmp Ex

温馨提示

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

评论

0/150

提交评论