5.1键盘接口技术•键盘是十分重要的人机对话的组成部分,是人向机器发出指令、输入信息的必需设备。1、键的特性键盘是由若干独立的键组成,键的按下与释放是通过机械触点的闭合与断开来实现的,因机械触点的弹性作用,在闭合与断开的瞬间均有一个抖动过程。抖动必须消除,去抖动的方法主要有以下两种:5.1键盘接口技术硬件去抖动软件去抖动前沿抖动稳定后沿抖动图5.1按键抖动信号波形5.1键盘接口技术2、键盘的形式键盘的形式有以下两种:独立式键盘编码式键盘(1)独立式键盘每一个按键的电路是独立的,占用一条数据线。这种键盘占用硬件资源多,适合少量按键的情况。独立式键盘结构独立式键盘与单片机接口独立式键盘与单片机接口程序框图键闭合吗?置P1口为输入方式开始延时10ms消除抖动有键闭合吗?是K1键闭合吗?20H单元加1YYYYYYNNNNNN图5.5独立键盘程序框图流程图是K2键闭合吗?是K3键闭合吗?是K4键闭合吗?20H单元减121H单元清021H单元置FF独立式键盘与单片机接口程序清单:ORG0030HKB:MOVP1,#0FFH;置P1口为输入口MOVA,P1;读键状态CPLAANLA,#0FH;屏蔽高4位JZKB;无键闭合则返回ACALLD10MS;延时去抖动MOVA,P1;再读键状态CPLAANLA,#0FHJZKB;无键闭合则返回CJNEA,#01H,KB01INC20H;K1键闭合,20H单元加1SJMPKB独立式键盘与单片机接口KB01:CJNEA,#02H,KB02DEC20H;K2键闭合,20单元减1SJMPKBKB02:CJNEA,#04H,KB03MOV21H,#00H;K3键闭合,21H单元清0SJMPKBKB03:CJNEA,#08H,KBMOV21H,#0FFH;K4键闭合,21H单元置FFSJMPKB;若有两键以上闭合则返回END矩阵式键盘结构矩阵式键盘的工作原理•扫描原理:首先确定是否有键闭合然后逐一扫描以进一步确定是哪一键闭合以4×4键盘为例:(1)使列线D0~D3都输出0,检测行线D4~D7的电平。如果D4~D7上的电平全为高,则表示没有键被按下。如果D4~D7上的电平不全为高,则表示有键被按下。(2)如果没有键闭合,就返回扫描。如果有键闭合,在进行逐列扫描,找出闭合键的键号。先使D0=0,D1~D3=1,检测D4~D7上的电平,如果D4=0,表示K1键被按下;同理,如果D5~D7=0,分别表示K5、K9、K13键被按下;如果D4~D7=1,则表示这一列没有键被按下。再使D1=0,D0、D2、D3为1,对第二列进行扫描,这样依次进行下去,直到把闭合的键找到为止。矩阵式键盘与单片机接口矩阵式键盘与单片机接口一、程序扫描方式三个步骤:判断有无键按下;软件延时10ms去抖动;求键的位置(行、列)。有键闭合吗?开始软件延时10ms有键闭合吗?键释放了吗?逐列逐行扫描确定键的位置调键值处理程序返回YYYNNN图5.8程序键盘扫描程序框图矩阵式键盘与单片机接口程序清单:KSCAN:ACALLKEYS1;调用判键闭合子程序JNZKEY1;有键闭合则转至去抖动AJMPRETURN;无键闭合则返回KEY1:ACALLD10MS;调用10ms延时程序ACALLKEYS1;再次调用判键闭合子程序JNZKEY2;确认有键闭合,开始扫描AJMPRETURN;无键闭合则返回KEY2:MOVR2,#0FEH;送首列扫描字MOVR4,#00H;送首列号KEY0:MOVA,R2MOVP1,AMOVA,P1;扫描字从P1口送出JBACC.4,LINE1;第1行无键闭合,转第2行MOVA,#00H;第1行首键号送AAJMPKPV;转键值计算程序矩阵式键盘与单片机接口LINE1:JBACC.5,LINE2;第2行无键闭合,转第3行MOVA,#04H;第2行首键号送AAJMPKPV;转键值计算程序LINE2:JBACC.6,LINE3;第3行无键闭合,转第4行MOVA,#08H;第3行首键号送AAJMPKPV;转键值计算程序LINE3:JBACC.7,NEXT;第4行无键闭合,转下1列MOVA,#0CH;第4行首键号送AKPV:ADDA,R4;计算键值PUSHACCKEY3:ACALLKEYS1;等待键释放JNZKEYS1POPACCSETBFLAG;置有键按下标志SJMPKEY4RETURN:CLRFLAG;清有键按下标志KEY4:RETNEXT:INCR4;列号加1矩阵式键盘与单片机接口MOVA,R2CJNEA,#0F7H,RETURN;判断4行是否都已扫描完,;完则返回RLA;为扫描下1行做准备MOVR2,AAJMPKEY0;开始扫描下1列KEYS1:MOVP1,#0F0H;判键闭合子程序MOVA,P1CPLAANLA,#0F0HRETD10MS:MOVR7,#14H;10ms延时子程序DLY:MOVR6,#0F8HDLY1:DJNZR6,DLY1DJNZR7,DLYRET矩阵式键盘与单片机接口二、定时中断扫描方式该方式利用定时器10ms产生一次中断,设置两个标志(FLAG1、FLAG2),FLAG1用于去抖动标志,FLAG2用于键处理标志。FLAG1=1FLAG1=0,FLAG2=0有键闭合吗?开始FLAG1=1吗?FLAG2=1吗?逐列逐行扫描得键值,FLAG2=1返回YYYNNN图5.9定时键盘扫描程序框图矩阵式键盘与单片机接口程序清单:FLAG1BIT20H.0;定义抖动标志FLAG2BIT20H.1;定义处理标志KEYVEQU30H;定义键值单元ORG0000HAJMPMAINORG000BHAJMPINTT0MAIN:MOVTMOD,#01H;T0为方式1,定时10msMOVTL0,#0F0HMOVTH0,#0D8HMOVIE,#82HSETBTR0HERE:SJMPHERE;主程序踏步矩阵式键盘与单片机接口INTT0:MOVTL0,#0F0H;中断服务,重新给定时器赋初值MOVTH0,#0D8HACALLKEYS1;判断键是否按下JNZKB1;有键按下则转至KB1CLRFLAG1;清除抖动标志CLRFLAG2;清除处理标志AJMPKB2;中断返回KB1:JBFLAG1,KB3;判抖动标志是否有效SETBFLAG1;无效则设置成有效AJMPKB2;返回KB3:JBFLAG2,KB2MOVR2,#0FEH;送首列扫描字MOVR4,#00H;送首列号KEY0:MOVA,R2MOVP1,AMOVA,P1;扫描字从P1口送出JBACC.4,LINE1;第1行无键闭合,转第2行MOVA,#00H;第1行首键号送AAJMPKPV;转键值计算程序矩阵式键盘与单片机接口LINE1:JBACC.5,LINE2;第2行无键闭合,转第3行MOVA,#04H;第2行首键号送AAJMPKPV;转键值计算程序LINE2:JBACC.6,LINE3;第3行无键闭合,转第4行MOVA,#08H;第3行首键号送AAJMPKPV;转键值计算程序LINE3:JBACC.7,NEXT;第4行无键闭合,转下1列MOVA,#0CH;第4行首键号送AKPV:ADDA,R4;计算键值MOVKEYV,A;存放键值SETBFLAG2;设置处理标志AJMPKB2NEXT:INCR4;列号加1MOVA,R2CJNEA,#0F7H,KB2;判断4行是否都已扫描完,完则返回RLA;为扫描下1行做准备MOVR2,AAJMPKEY0;开始扫描下1列KB2:RETIEND矩阵式键盘与单片机接口要点与思考:1.独立式键盘的特点与优点。2.矩阵式键盘的扫描过程,键是如何识别出来的?3.写出图5.10所示的中断扫描方式的程序。5.4A/D转换器与单片机的接口技术一、A/D转换器的性能参数与选型主要参数:量化误差与分辨率转换精度转换时间与转换速度电源抑制比5.4A/D转换器与单片机的接口技术A/D转换器的选取原则:A/D转换器用于什么系统?输出数据的位数是多少?系统应该达到多高的精度和线性度?提供给A/D转换器的输入信号范围多大?是单极性的还是双极性的?信号的驱动能力怎样?是否要经过缓冲滤波和采样/保持?对A/D转换器输出的数字代码及逻辑电平的要求如何?是二进制码还是BCD码,是串行还是并行?5.4A/D转换器与单片机的接口技术系统是在静态下工作还是在动态下工作?带宽多少?采样速率为多少?参考电压是内部的还是外部的?是固定的还是变化的?A/D转换器的工作环境如何?噪声、温度、振动等条件如何?电源电压、功耗、几何尺寸等其它因素。5.4A/D转换器与单片机的接口技术二、ADC0809与单片机接口1.ADC0809的内部结构与引脚8路模量拟选通开关通道地址锁存与译码逻辑控制与定时电路逐次逼近寄存器SAR树状模拟开关阵译码器256R电阻分压器三态输出数据锁存器A电压比较器8位A/D转换器VccGNDVREF(+)VREF(-)IN0IN1IN2IN3IN4IN5IN6IN7ADDAADDBADDCALEEOCD0D1D2D3D4D5D6D7OESTARTCLK5.4A/D转换器与单片机的接口技术•D0~D7:8位数字量输出引脚。•IN0~IN7:8路模拟量输入引脚。•Vcc:+5V工作电源。•GND:地。•VREF(+):参考电压正端。•VREF(-):参考电压负端。•START:A/D转换启动信号输入端。•ALE:地址锁存允许信号输入端。•EOC:转换结束输出引脚。•OE:输出允许控制端。•CLK:转换时钟信号。500kHz左右。•ADDA、ADDB、ADDC:地址输入线。VCC11VREF(+)12D114GND13IN31EOC7IN42START6IN64IN75IN53CLK10OE9D3828IN222ALE27IN123ADDC25ADDA24ADDB26IN019D520D621D718D417D015D216VREF(-)ADC08095.4A/D转换器与单片机的接口技术ADC0809的通道选择:被选通的通道ADDCADDBADDA被选通的通道ADDCADDBADDAIN0000IN4100IN1001IN5101IN2010IN6110IN3011IN71115.4A/D转换器与单片机的接口技术ADC0809的工作时序:ALE地址模拟量STARTEOCOED7~D0START信号后约10us,EOC信号才变低!5.4A/D转换器与单片机的接口技术ADC0809的主要性能指标:•分辨率:8位•不可调误差:≤±1LSB•转换时间:100μs•温度范围:-40℃~+85℃•功耗:15mW•单电源:+5V供电•转换的模拟电压范围:0~5V5.4A/D转换器与单片机的接口技术2.ADC0809与单片机接口通道地址:78H~7FH5.4A/D转换器与单片机的接口技术实现模拟信号的采集有程序控制和中断两种方式。程序控制查询方式程序清单:ORG0030HSTART:MOVR0,#40H;采样数据存放首址MOVR1,#78H;IN0通道地址MOVR2,#08H;模拟量通道数CLREX0LOOP:MOVX@R1,A;启动A/D转换MOVR3,#20HDELY:DJNZR3,DELY;等待EOC信号变低SETBP3.2POLL:JBP3.2,POLL;查询转换是否结束MOVXA,@R1;读取转换结果MOV@R0,A;存放结果INCR0INCR1DJNZR2,LOOP;8通道未完,则采集下一通道HERE:SJMPHEREEND5.4A/D转换器与单片机的接口技术中断方式程序清单:ORG0000HSTART:AJMPMAINORG0003HAJMPEXINT0MAIN:MOVR0,#40H;采样数据存放首址MOVR1,#78H;IN0通道地址MOVR2,#08H;模拟量通道数MOVX@R1,A;启动A/D转换SETBIT0;外部中断0为边沿触发方式SETBEX0;允许外部中断0中断SETBEA;开放CPU中断HERE:SJMPHERE5.4A/D转换器与单片