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

下载本文档

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

文档简介

可编程通用并行接口芯片8255结构与引脚8255用于扩展单片机并行I/O接口。一、结构:1.3个8位并行I/O接口PA、PB和PC:包含I/O数据锁存器,控制寄存器和状态寄存器。2.2组控制:A组:PA和PC0~3;

B组:PB和PC4~7:目前一页\总数五十一页\编于十二点8255A的内部结构图目前二页\总数五十一页\编于十二点3.3种工作方式:方式0(基本I/O方式):

A口、B口、C口均为数据I/O。输出锁存,输入三态,不用联络信号。适用于无条件或查询方式的数据传送。方式1(选通I/O方式):

A口和B口用于数据I/O,输入/输出均锁存,C口用于传送联络信号,读C口可了解外设当前状态。适用于查询或中断方式的数据I/O。方式2(双向数据传送方式):

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

A口 (7F00H);

B口 (7F01H);

C口 (7F02H); 控制口 (7F03H)。P0P2.780C51A0A1CS8255373Q0Q1

ABi:151413

1211109876543210A口:0111111100000000 7F00HB口:0111111100000001 7F01HB口:0111111100000010 7F02H控制口:0111111100000011 7F03H目前六页\总数五十一页\编于十二点8255编程规定方式选择控制字: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@DPTR,A ;由PA口输出

…目前九页\总数五十一页\编于十二点键盘接口技术抖动时间<10ms开关动作时间>100ms“1”“0”<10ms前沿抖动后沿抖动&I/O接口&+5v+5v消除抖动电路开关单片机键译码:键号为键盘位置码,根据键号查表得出被按键的键值。键值:数字键0~9;字符键0AH~0FH;功能键10H~。键码=行首键号+列号(键号必须依次是从左至右书写)或键码=列首键号+行号(键号必须依次是从上至下书写)一、键盘处理程序任务:1.键输入:检查键盘是否有键被按下,消除按键抖动。确定被按键的键号,获取键号。硬件电路消除抖动或软件消除抖动。目前十页\总数五十一页\编于十二点3.键处理:

根据键值转移到不同程序段。若键值属于数字、字符键,则调用显示数字和字符的子程序。若键值属于功能键,则进行多分支转移,执行各个功能程序段。延时等待10ms

仍有按键信号?Y

有按键信号?NYN键盘处理

按键释放?NY二、键盘接口方法:1、利用单片机本身的并行口;2、利用单片机本身的串行口;3、利用通用接口芯片8155、8255等;4、利用专用接口芯片8279等。三、键盘接口的控制方式:1、随机方式:每当CPU空闲时执行键盘扫描程序。2、中断方式:键的按下引起中断后,单片机对键盘进行扫描。3、定时方式:单片机定时地对键盘进行扫描。目前十一页\总数五十一页\编于十二点(1)独立式键盘电路:(2)矩阵式键盘:

0

1+5v

C0C1R0R1键盘I/O接口(2)矩阵式键盘电路:

1)扫描法:列线输出,行线输入。列线逐列输出0,某行有按键,行线输入就为0;若无按键,行线输入全部为1。

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

或键码=列首键号+行号(键号必须依次是从上至下书写)目前十四页\总数五十一页\编于十二点判定有无键闭合的子程序:MOV DPTR,#0101H MOV A,#00H ;A口送00HMOVX @DPTR,AINC DPTRINC DPTR ;建立C口地址MOVX A,@DPTR ;读C口CPL A

;A取反,无键按下则全“0”ANL A,#0FH ;屏蔽A高半字节(C口只4位)RET 执行KS1子程序的结果是:有闭合键则(A)≠0;无闭合键则(A)=0。CPLA;负逻辑不直观,常采取行列线加反相器或软件求反的方法把键盘改成正逻辑。KS1:目前十五页\总数五十一页\编于十二点

键盘扫描子程序如下:(8155的A口、B口、C口和控制口地址分别为7F00H、7F01H、7F02H、7F03H,设8155A已在主程序中初始化。已设定为A口方式0输出,C口的低4位方式0输入。)KEY1:ACALLKS1 ;调用判断有无键按下子程序

JNZLK1 ;有键按下时,(A)≠0转消抖延时KEY2:ACALLTM6ms AJMPKEY1 ;无键按下返回LK1:ACALLTM12ms;调12ms延时子程序

ACALLKS1 ;查有无键按下,若有则真有键按下

JNZLK2 ;键(A)≠0逐列扫描

AJMPKEY2 ;不是真有键按下,返回LK2:MOVR2,#0FEH ;初始列扫描字(0列)送入R2 MOVR4,#00H ;初始列(0列)号送入R4LK4:MOVDPTR,#7F00H;DPTR指向8155PA口

MOVA,R2 ;列扫描字送至8155PA口

MOVX@DPTR,A INCDPTR ;DPTR指向8155PC口

INCDPTR目前十六页\总数五十一页\编于十二点 MOVXA,@DPTR;从8155PC口读入行状态

JB ACC.0,LONE;查第0行无键按下,转查第1行

MOVA,#00H;第0行有键按下,行首键码#00H→A AJMPLKP;转求键码LONE:JBACC.1,LTWO;查第1行无键按下,转查第2行

MOVA,#08H;第1行有键按下,行首键码#08H→A AJMPLKP ;转求键码LTWO:JBACC.2,LTHR ;查第2行无键按下,转查第3行

MOVA,#10H;第2行有键按下,行首键码#10H→A AJMPLKP ;转求键码LTHR:JBACC.3,NEXT ;查第3行无键按下,转该查下一列

MOVA,#18H;第3行有键按下,行首键码#18H→ALKP:ADDA,R4 ;求键码,键码=行首键码+列号

PUSHACC ;键码进栈保护LK3:ACALLKS1 ;等待键释放

JNZLK3 ;键未释放,等待

POPACC ;键释放,键码→A RET ;键扫描结束,出口状态(A)=键码目前十七页\总数五十一页\编于十二点NEXT:INC R4 ;准备扫描下一列,列号加1 MOV A,R2 ;取列扫描字送累加器A JNB ACC.7,KEND;判断8列扫描否?扫描完返回

RL A ;扫描字左移一位,变为下一列扫描字

MOV R2,A ;扫描字送入R2保存

AJMPLK4 ;转下一列扫描KEND:AJMPKEY1KS1:MOV DPTR,#7F00H;DPTR指向8155PA口

MOV A,#00H ;全扫描字→A MOVX@DPTR,A;全扫描字送往8155PA口

INC DPTR ;DPTR指向8155PC口

INC DPTR MOVXA,@DPTR ;读入PC口行状态

CPL A ;变正逻辑,以高电平表示有键按下

ANL A,#0FH ;屏蔽高4位,只保留低4位行线值

RET ;出口状态:(A)≠0时有键按下目前十八页\总数五十一页\编于十二点TM12ms:MOVR7,#18H;延时12ms子程序TM: MOVR6,#0FFHTM6:DJNZR6,TM6 DJNZR7,TM RETTM6ms:MOVR7,#0CH;延时6ms子程序TM2:MOVR6,#0FFHTM62:DJNZR6,TM6 DJNZR7,TM RET目前十九页\总数五十一页\编于十二点2、使用8279作键盘接口:P2.7=0时:A0=P2.0=1:命令口地址为:7FFFH;A0=P2.0=0:数据口地址为:7EFFH。(程序略)键码=行首键号+列号(键号必须依次是从左至右书写)0134567874LS156为双2-4译码器/分配器目前二十页\总数五十一页\编于十二点3、使用中断方式作键盘接口:

当有键按下时,INT1为低,向CPU发出中断申请,在中断服务程序中除完成键识别、键功能处理外,仍须有清除键抖动等功能。0481215913键码=列首键号+行号(键号必须依次是从上至下书写)目前二十一页\总数五十一页\编于十二点显示器接口技术LED显示器用于显示工业控制参数、过程状态。一、LED显示原理:

共阴极LED和共阳极LED。当LED字段引线与数据线连接,每个显示字形对应一个字形码。

LED(LightEmitingDiode)COM

P1.0~1.7MCS-51afbge cdhabh代码位D7D6D5D4D3D2D1D0显示段hgfedcbaabhCOM共阴极目前二十二页\总数五十一页\编于十二点共阴极和共阳极的字段码互为反码。显示字符共阴极字段码共阳极字段码显示字符共阴极字段码共阳极字段码03FHC0HC39HC6H106HF9HD5EHA1H25BHA4HE79H86H34FHB0HF71H8EH466H99HP73H8CH56DH92HU3EHC1H67DH82HT31HCEH707HF8HY6EH91H87FH80HL38HC7H96FH90H8.FFH00HA77H88H“灭”00FFHB7CH83H………………目前二十三页\总数五十一页\编于十二点二、显示程序任务:1、设置显示缓冲区,存放待显示数据和字符(位置码)。2、显示译码:程序存储器中建立字形码常数表,查表得出对应数据和字符的字形码。3、输出显示:输出字形码到显示端口。例:

MOVDPTR,#WTAB;指向字形码表首地址

MOVA,@R0

;取显示缓冲区中数据

MOVCA,@A+DPTR;查表显示译码

MOVP1,A ;输出显示

WTAB: DB 3FH,06H,5BH;字形代码表(共阴)

COM

P1.0~1.7MCS-51afbge cdhabh目前二十四页\总数五十一页\编于十二点三、

LED接口电路:显示多位数据的两种电路:静态显示和动态显示。

对应字位线:D0D1D2D3D4D5特点:显示亮度大,硬件和软件都较简单,应用广泛。1.静态显示:多位LED共用一个8位字段口(共阴极或共阳极),各位LED公共端用字位口控制,扫描输出显示不同字形。

显示缓冲区与多位LED对应关系:每个LED需要一个8位并行口。

abhCOM

abhCOM

abhCOMafbge

cdh段控和位控目前二十五页\总数五十一页\编于十二点例:显示80C51片内RAM中以30H为首地址的8位字形数的程序:静态显示电路“0”目前二十六页\总数五十一页\编于十二点程序:DIR:PUSH ACC ;保护现场

PUSH DPH PUSH DPL MOV R2,#08H ;显示8个数

MOV R0,#30H ;显示缓冲区地址送入R0DL0:MOV A,@R0 ;取要显示的数作查表偏移量

MOV DPTR,#TAB ;指向字形码表首

MOVC A,@A+DPTR ;查表得字形码

MOV SBUF,A ;发送显示DL1:JNB TI,DL1 ;等待发送完一桢数据

CLR TI ;清标志,准备继续发送

INC R0 ;更新显示单元

DJNZ R2,DL0 ;重复显示所有数码管

POP DPL ;恢复现场

POP DPH POP ACC RETTAB:DB 0C0H,0F9H,0A4H,0B0H,99H;0,1,2,3,4

DB 92H,82H,0F8H,80H,90H,88H;5,6,7,8,9,A

DB 83H,0C6H,0A1H,86H,8EH;B,C,D,E,F共阳极目前二十七页\总数五十一页\编于十二点2.动态显示:

分时轮流选通数码管的公共端,使得各数码管轮流导通,在选通相应LED后,即在显示字段上得到显示字形码。特点:提高数码管的发光效率,可简化硬件线路。举例见后:COMhCOMD7…D1D0D0D1D2hbbhCOMafbge

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

单片机键盘LED显示实验

五、思考题目前三十三页\总数五十一页\编于十二点一、实验目的1、掌握键盘和LED显示器的接口方法和编程方法。2、掌握键盘扫描和LED八段码显示器的工作原理。

3、学习并口扩展的程序编写方法。

目前三十四页\总数五十一页\编于十二点二、实验说明1、利用实验仪提供的键盘扫描电路和显示电路,做一个扫描键盘和数码显示实验,把按键输入的键码在六位数码管上显示出来。实验程序可分成三个模块。①键输入模块:扫描键盘、读取一次键盘并将键值存入键值缓冲单元。②显示模块:将显示单元的内容在显示器上动态显示。③主程序:调用键输入模块和显示模块。

目前三十五页\总数五十一页\编于十二点三、实验仪器和条件计算机伟福实验箱(lab2000P)

目前三十六页\总数五十一页\编于十二点四、实验内容

1、本实验仪提供了一个6×4的小键盘,向列扫描码地址(0X002H)逐列输出低电平,然后从行码地址(0X001H)读回。如果有键按下,则相应行的值应为低,如果无键按下,由于上拉的作用,行码为高。这样就可以通过输出的列码和读取的行码来判断按下的是什么键。在判断有键按下后,要有一定的延时,防止键盘抖动。地址中的X是由KEY/LEDCS决定,参见地址译码。做键盘和LED实验时,需将KEY/LEDCS接到相应的地址译码上。以便用相应的地址来访问。例如将KEY/LEDCS信号接CS0上,则列扫描地址为08002H,行码地址为08001H。列扫描码还可以分时用作LED的位选通信号。目前三十七页\总数五十一页\编于十二点

2、本实验仪提供了6位8段码LED显示电路,只要按地址输出相应数据,就可以实现对显示器的控制。显示共有6位,用动态方式显示。8位段码、6位位码是由两片74LS374输出。位码经MC1413或ULN2003倒相驱动后,选择相应显示位。

3、本实验仪中8位段码输出地址为0X004H,位码输出地址为0X002H。此处X是由KEY/LEDCS决定,参见地址译码。做键盘和LED实验时,需将KEY/LEDCS接到相应的地址译码上。以便用相应的地址来访问。例如,将KEY/LEDCS接到CS0上,则段码地址为08004H,位码地址为08002H。目前三十八页\总数五十一页\编于十二点目前三十九页\总数五十一页\编于十二点目前四十页\总数五十一页\编于十二点目前四十一页\总数五十一页\编于十二点主程序参考流程:目前四十二页\总数五十一页\编于十二点读键输入子程序框图目前四十三页\总数五十一页\编于十二点显示子程序框图目前四十四页\总数五十一页\编于十二点实验电路及连线

目前四十五页\总数五十一页\编于十二点参考源程序-1OUTBITequ08002h;位控制口OUTSEGequ08004h;段控制口INequ08001h;键盘读入口LEDBufequ60h;显示缓冲ljmpStartLEDMAP:;八段管显示码db3fh,06h,5bh,4fh,66h,6dh,7dh,07hdb7fh,6fh,77h,7ch,39h,5eh,79h,71hDelay:;延时子程序movr7,#0DelayLoop:djnzr7,DelayLoopdjnzr6,DelayLoopretDisplayLED:movr0,#LEDBufmovr1,#6;共6个八段管movr2,#00100000b;从左边开始显示目前四十六页\总数五十一页\编于十二点参考源程序-2Loop:movdptr,#OUTBITmova,#0movx@dptr,a;关所有八段管mova,@r0movdptr,#OUTSEGmovx@dptr,amovdptr,#OUTBITmova,r2movx@dptr,a;显示一位八段管movr6,#1callDelaymova,r2;显示下一位rramovr2,aincr0djnzr1,Loopret目前四十七页\总数五十一页\编于十二点参考源程序-3

TestKey:movdptr,#OUTBITmova,#0movx@dptr,a;输出线置为0movdptr,#INmovxa,@dptr;读入键状态cplaanla,#0fh;高四位不用retKeyTable:;键码定义db16h,15h,14h,0ffhdb13h,12h,11h,10hdb0dh,0ch,0bh,0ahdb0eh,03h,06h,09hdb

温馨提示

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

评论

0/150

提交评论