欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    MSP430按键输入和led点阵显示解读.docx

    • 资源ID:23859414       资源大小:709.98KB        全文页数:48页
    • 资源格式: DOCX        下载积分:10金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    MSP430按键输入和led点阵显示解读.docx

    1、MSP430按键输入和led点阵显示解读第4章 键盘和显示器的应用 在单片机应用系统中,键盘和显示器是非常重要的人机接口。人机接口是指人与计算机系统进行信息交互的接口,包括信息的输入和输出。常用输入设备主要是键盘,常用输出设备包括发光二极管、数码管和液晶显示器等。4.1 键盘输入 键盘用于实现单片机应用系统中的数据信息和控制命令的输入,按结构可分为编码键盘和非编码键盘。编码键盘上闭合键的识别由专用的硬件编码器实现,并产生相应的键码值,如计算机键盘。非编码键盘是通过软件的方法产生键码,不需要专用的硬件电路。为了减少电路的复杂程度,节省单片机的I/O口,在单片机应用系统中广泛使用非编码键盘,主要对

    2、象是各种按键或开关。这些按键或开关可以独立使用(称之为独立键盘),也可以组合使用(称之为矩阵式键盘)。4.1.1 按键电路与按键抖动处理按键电路连接方法非常简单,如图4.1所示。此电路用于通过外力使按键瞬时接通开关的场合,如单片机的RESET电路中,通过按键产生一个瞬时的低电压,CPU感知这个低电压后重启。图4.1 按键复位电路 由于按键的闭合与断开都是利用其机械弹性实现的,当机械触点断开、闭合时,会产生抖动,这种抖动操作用户感觉不到,但对CPU来说,其输出波形则明显发生变化,如图4.2所示。图4.2 按键开、闭时的电压抖动波形 按键按下和释放时的抖动时间一般为 1020ms ,按键的稳定闭合

    3、期由操作用户的按键动作决定,一般为几百毫秒到几秒,而单片机CPU的处理速度在微秒极,因此,按键的一次闭合,有可能导致CPU的多次响应。为了避免这种错误操作,必须对按键电路进行去抖动处理。常用的去抖动方法有硬件方式和软件方式两种。使用硬件去抖动的方式,需要在按键连接的硬件设计上增加硬件去抖电路,比如将按键输出信号经过R-S 触发器或 RC 积分电路后再送入单片机,就可以保证按一次键只发出一个脉冲。软件方式去抖动的基本原理是在软件中采用时间延迟,对按键进行两次测试确认,即在第一次检测到按键按下后,间隔 10ms左右,再次检测该按键是否按下,只有在两次都测到按键按下时才最终确认有键按下,这样就可以避

    4、开抖动时间段,消除抖动影响。同样,在按键释放时也采用相同方法。由于人的按键速度比单片机的运行速度要慢很多,所以,软件延时方法从技术上完全可行,而且经济上更加实惠,因此被广泛采用。 4.1.2 独立键盘检测 独立键盘是一种最简单的键盘,前面章节已经介绍过使用独立键盘的实例。独立按键的每个键单独占用一根I/O口线,每根I/O口线上的按键工作状态不会影响其他I/O线的工作状态。实例4-1 独立按键编号显示任务要求:单片机端口连接3个按键,从13进行编号,如果其中一个按键按下时,则在LED数码管上显示相应的按键编号。1)硬件电路设计选取MSP430F249单片机的P1口连接数码管显示按键编号,P3口的

    5、P3.0、 P3.1、P3.2端口分别和3个按键连接。硬件电路如图4.3所示。图4.3 独立键盘检测电路图3个 I/O 口 P3.0、 P3.1、P3.2作为输入口(输入方式),分别与 K1、K2、K3 三个按键连接。当按键断开时,I/O口的输入为高电平,按键闭合时,I/O口的输入为低电平。此3个引脚上接了上拉电阻,是为了保证按键断开时逻辑电平为高。2)程序设计按键闭合时,与该键相连的I/O 引脚为低电平;按键断开时,与该键相连的I/O 引脚为高电平。所以在程序中通过P3IN寄存器读取P3.0、 P3.1、P3.2这3个I/O口的电平状态,便可检测按键是否按下。另外,在有按键按下时,要有一定的

    6、延时,以防止由于键盘抖动而引起误操作。当确认某按键按下后,就让数码管显示其按键编号。#include MSP430f249.hunsigned char const table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71; /共阴数码管段选码表,无小数点void delayus(unsigned int t) unsigned int i; while(t-) for(i=1330;i0;i-);unsigned char ReadKey(void) unsigned char

    7、 temp; temp= P3IN&0x07; if(temp!= 0x07) delayus(10); /等待按键抖动时间 if(temp = (P3IN&0x07 ) return temp; else return 0xFF; else return 0xFF;void main(void) unsigned char key,i; WDTCTL=WDTPW + WDTHOLD; / 关闭看门狗 P1DIR=0xFF; / 设置方向 P1OUT=0x00; P3DIR = 0x00; /P3口作为键盘输入 while(1) key = ReadKey(); switch(key) cas

    8、e 0x06: P1OUT=table1; break; case 0x05: P1OUT=table2; break; case 0x03: P1OUT=table3; break; 程序说明:当按键按下时,P3口的低三位将不全为高电平。在ReadKey函数中,当判断到P3的低三位不全为1,即0x07时,则认为有按键按下,然后延迟20ms,再次判断P3的低三位,如果低三位依旧不全为1,可以确定是有键按下,并获取键值后显示在数码管上。3)仿真结果与分析双击msp430F249单片机,装载可执行文件。运行时,LED最初没有显示。当按下某键时,将显示相应的数值。图4.4为编号为“3”的按键被按下时

    9、的仿真效果图。图4.4 独立键盘检测的仿真效果图4.1.3 矩阵式键盘检测独立键盘与单片机连接时,每一个按键开关占用一个I/O口线,若单片机系统中需要较多按键时,独立按键的方式便会占用过多的I/O口资源。此时,为了节省I/O口线,采用矩阵式键盘(也称为行列式键盘)。下面以44矩阵式键盘为例讲解其工作原理和检测方法。将16个按键排成4行4列,第一行每个按键的一端连接在一起构成行线,第一列将每个按键的另一端连接在一起构成列线,这样便一共有4行4列共8根线,如图4-5所示。将这8根线连接到单片机的8个I/O口上,即可通过程序扫描键盘检测到是哪个按键被按下,具体方法见实例4-2。图4.5 44矩阵式键

    10、盘实例4-2 矩阵键盘编号显示任务要求:将44矩阵式键盘编号,如果其中一个按键按下时,则在LED数码管上显示相应的按键编号。 分析说明:44矩阵式键盘只需要占用一个8位的端口,硬件设计较为简洁,重点在于如何在程序中判断矩阵键盘的按键位置。1)硬件电路设计选取MSP430F249单片机的P1口连接数码管,P3口的8个引脚分别和矩阵式键盘的行线和列线连接。硬件电路如图4.6所示。图4.6 矩阵式键盘电路原理图 图4.6中列线P3.4P3.7通过上拉电阻接电源,处于输入状态,行线P3.0P3.3为输出状态。键盘上没有按键闭合时,所有列线P 3.4P 3.7输入全部为高电平。当键盘上某个按键闭合时,则

    11、对应的行线和列线短接。例如10号键被按下时,行线P3.1和列线P3.5短接,此时P3.5输入电平由P3.2的输出电平决定。在检测是否有键按下时,先使4条行线全部输出低电平,然后读取4条列线的状态。如果全部为高电平则表示没有任何键被按下;如果有任一键被按下,由于列线是上拉至VCC则行线上读到的将是一个非全“1”的值。2)程序设计确定矩阵式键盘上哪个键被按下通常采用行扫描法,又称为逐行(或列)扫描查询法,其软件主要基于扫描方式完成。关于键盘扫描查询的程序大致可分为以下几个步骤:(1)检测当前是否有键被按下。 首先看输入的列线,假设4条行线都输出低电平,4条列线都是上拉至VCC的,在没有任何按键按下

    12、时4条列线输入都为“1”。但当与某一条行线相连的4个按键中的任何一个被按下时,这条列线将输入低电平,即当某条列线输入低电平时,必定是连接在这条列线上的某个按键被按下了。(2)去除键抖动。当检测到有键被按下后,延时一段时间再作下一步的检测判断。(3)若有键被按下,检测出是哪一个键被按下。逐行扫描方式:在4条行线上分别输出“0”信号,也就是说,第一次,在P3.0上输出低电平,其他的行线(P3.1、P3.2、P3.3)上输出高电平;接着第二次,在P3.1上输出低电平,其他的行线(P3.0、P3.2、P3.3)上输出高电平;第三次,在P3.2上输出低电平,其他的行线(P3.0、P3.1、P3.3)上输

    13、出高电平;第四次,在P3.3上输出低电平,其他的行线(P3.0、P3.1、P3.2)上输出高电平。当某一行线上输出低电平时,如果此行上有键被按下,那么相应按键的列线上则会读取到“0”,于是可以惟一的确定是哪一按键被按下了。假设图4.6中的编号“6”的按键被按下,当第一次扫描时,P3.0口输出“0”,P3.1、P3.2、P3.3输出“1”,则P3.4P3.7所读到的电平全为“1”;当第二次扫描时,P3.1口输出“0”,P3.0、P3.2、P3.3输出“1”,此时,P3.4、P3.5、P3.6、P3.7读到的电平分别为“1”、“1”、“0”、“1”。因此,即能确定P3.1行线和P3.6列线交叉的编

    14、号“6”按键的具体位置。 矩阵式键盘的按键检测过程如图4.8所示。图4.8 矩阵键盘识别流程图 此实例的源程序如下: #include unsigned char const table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71; /共阴数码管段选码表,无小数点static char key;void delayus(unsigned int t) unsigned int i; while(t-) for(i=1330;i0;i-);char keyscan(void) c

    15、har sccode,recode; P3OUT = 0x00; if(P3IN&0xF0)!=0xF0) /判断是否有有键按下 delayus(20); if(P3IN&0xF0)!=0xF0) /再次判断按键是否有抖动,如果是返回 sccode=0xFE; /逐行扫描初值,先扫描第1行P3.0 while(sccode&0x0F)!=0x0F) /行扫描完成 P3OUT = sccode; /输出行扫描码 if(P3IN&0xF0)!=0xF0) /当前行有键按下 recode=(P3IN&0xF0)|0x0F; /读取高四位列值,低四位置1 key=(sccode & recode);

    16、/行和列组合得到键盘编码 return key; else /所扫描没有键按下,则扫描下一行 sccode=(sccode0;i-); /仿真时,取值130void main(void) char i,j,t=0; WDTCTL = WDTPW + WDTHOLD; P1DIR = 0xFF; P2DIR = 0xFF; while(1) P1OUT = 0xFF; /关闭显示,防止切换数字时产生拖影 P2OUT = 0xFF; for(i = 0;i 10;i+) /循环显示09 for(j = 0 ;j 255 ; j+) /每个字符显示稳定 P2OUT = scan_tabt; /送行扫

    17、描信号 P1OUT = Table_OF_Digitst+8*i;/送列显示数据 delayus(2); if(+t=8) t=0; 程序说明:在主循环中对09这10个数字进行循环显示,每个数字扫描次数为255,是为了让每个数字显示时间足够长,得到稳定的显示效果。P2口送出行扫描信号后,P1口给出列显示数据,注意此例中88点阵为共阴极接法,显示数据是经过取反后送出的。3)仿真结果 加载程序后,运行得到仿真图如图4.13所示。图4.13 点阵显示数字字符仿真图4.2.3 1616汉字点阵显示与字母和数字显示原理一样,1616汉字点阵的显示也是采用动态逐行(或逐列)扫描的方式完成,只是列扫描需要1

    18、6位,而每列数据需要28位(2字节),一个完整的汉字则需要32字节。1、点阵驱动电路实例4-3中,单片机控制一个88 LED点阵显示器,需要两组I/O口,其中一组实现点阵的行扫描,另一组输出列数据。按照这种硬件连接方式,如果利用单片机控制一个1616汉字点阵实现显示功能,则需要8组I/O口;如果控制多个汉字点阵显示,则需要更多的I/O口。显然,这种连接方式是难以实现的。因此,在多个点阵驱动电路设计中,一般采用移位寄存器的方法来减少对单片机I/O口的需求。寄存器是存放二进制数的电路,由D触发器构成,如图4.14所示。在CP时钟信号的上升沿,将输入的数字DI存入到D触发器中,Q端的输出就与DI相同,即无论触发器Q原来的值是什么,只要时钟脉冲C


    注意事项

    本文(MSP430按键输入和led点阵显示解读.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开