资源描述:
《单片机的功能扩展杭电.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第8章单片机的功能扩展8.1MCS-51单片机键盘接口技术8.2MCS-51单片机显示器接口技术8.3D/A转换器的接口及应用8.4A/D转换器的接口及应用8.1键盘输入及接口技术一、什么是键盘键盘:是由若干按钮组成的开关矩阵,它是单片机系统中最常用的输入设备,键盘在单片机应用系统中,实现输入数据、传送命令等功能,是人机交互的主要手段。键盘按照实现方式可以分为编码键盘和非编码键盘两大类,在单片机中广泛使用非编码键盘。独立式矩阵式适合于比较少的键盘适合于比较多的键盘常见的非编码键盘结构有二、非编码键盘的键输入程序应完成的基本任务:1、监测有无键按下。键的闭合与否,反映在电压上就是呈现出高
2、电平或低电平,所以通过电平的高低状态的检测,便可确认按键按下与否。2、判断是哪个键按下。3、完成按键处理任务。键盘实际上是一组按键开关的集合,平时按键开关总是处于断开状态,当按下键时它才闭合。它的结构和产生的波形如图所示。三、独立按键程序设计P1.0AT89S51P1.0//上拉汇编示例程序get_key:JBP1_0,no_keyCALLDelay;第一次检测到按键信息JBP1_0,no_key;执行按键功能(第二次检测到按键信息)JBP1_0,no_key;等待按键抬起SJMP$-1;跳转到上一行no_key://上拉C51示例程序if(P1_0==0){//第一次检测到按键信息D
3、elay();//延时20ms左右,消除抖动if(P1_0==0){//第二次检测到按键信息//执行按键功能While(P1_0==0);//等待按键释放}}四、单片机矩阵键盘接口和键功能的实现行列式键盘(如图8.1.4所示)按键识别有两种方法:扫描法和线反转法1、键盘接口处理的内容(1)键扫描首先是判定有没有键被按下先经输出口向所有列线输出低电平,然后再输入各行线状态000000001111无键盘按下时以4行×8列键盘为例使用列扫描的方法(2)去抖动机械开关被按下时,由于机械触点的弹性及电压突跳等原因,在触点闭合或断开的瞬间会出现电压抖动5~10ms5~10ms十分之几~几秒去抖动的
4、方法硬件方法软件方法在键盘中附加去抖动电路采用时间延迟以躲过抖动(大约延迟20~30ms)硬件消抖是通过在按键输出电路上加一定的硬件线路来消除抖动,一般采用R—S触发器或单稳态电路。如图。断开闭合+5V+5V输出软件消抖是利用延时来跳过抖动过程3)判断被按键的位置行线中有状态为低电平,则闭合键找到但实际扫描继续进行,以发现可能出现的多键同时被按下(4)键值计算通常以键的排列顺序安排键号(5)等待键释放计算键码之后,再以延时后进行扫描的方法等待键释放。保证键的一次闭合仅进行一次处理。2、键盘接口的控制方式(1)随机方式每当CPU空闲时执行键盘扫描程序(2)中断方式每当有键闭合时才向CPU
5、发出中断请求,中断响应后执行键盘扫描程序(3)定时方式每隔一定时间执行一次键盘扫描程序,定时可由单片机的定时器完成8.2LED显示器接口技术1LED显示器概述LED(LightEmitingDiode):是发光二极管的缩写1101101000100101数码管的特点:①发光响应快,亮度强,高频特性好②机械性能好,使用寿命长,可达105~106h,与COMS和TTL电路兼容③工作电压低,驱动电流适中。每段工作电流为5~10mA,一只数码管的7段LED全亮需要35~70mA。需要驱动电路。Note:红色、绿色LED的压降为1.8V左右,白色、蓝色LED压降为3V左右,单个LED驱动电流一般
6、为5~10mA1、段码:提供给LED显示器的字形代码:(1)LED静态显示方式(2)LED动态显示方式2LED显示器有两种方式:N位LED显示器段控:给显示器提供段码(字形编码)的输入位控:控制LED显示器亮灭四位静态LED显示器电路八位LED动态显示器电路段控位控例1静态LED举例编程实现在数码管上依次显示数字“0”~“9”,并延时一段时间。图8.12共阴LED静态扫描电路includeunsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//定义共阴字形代码voidd
7、elay(void){unsignedintj;for(j=0;j<1000;j++);}main(){unsignedchari;for(i=0;i<10;i++){P1=table[i];//显示“0”~“9”delay();//延时子程序}}例2动态扫描举例试编程用动态扫描的方式实现数字1234的静态显示。unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x