- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验4 人机交互任务的设计
1.实验目的
(1)理解键盘模块和LED模块在μC/OS-II下的工作原理。
(2)掌握任务间通信机制——信号量。
(3)掌握在μC/OS-II下的MCU中键盘模块和LED模块的C编程方法。
(4)进一步体会基于实时操作系统的程序与前后台程序的不同之处。
2.实验任务
(1)通过本实验掌握键盘模块以及LED模块在μC/OS-II下的工作原理。
(2)根据实验提示,使用键盘与LED模块实现一个简单的人机交互任务。
在μC/OS-II下按下矩阵键盘上相应按键,其键值在LED上显示出来,同时发送给PC机。
3.预习要求
1.充分了解键盘的硬件电路以及识别键盘时存在的问题。在本次实验中大家应首先回顾一下矩阵式键盘结构,同时要熟悉RTOS下键盘模块的相关代码。可参考《嵌入式系统构件》第3章的键盘章节。
在RTOS下编写程序,对任务的管理主要是通过 OSStartHighRdy(), OSCtxSw(),OSIntCtxSw(), OSTickISR(),OSTaskStkInit()这五个函数实现的。大家首先要理解这些函数的工作原理。以及任务间的通信机制如信号量、邮箱、队列等概念和原理。
本实验在任务间通信时采用的是信号量,此内容可参考《嵌入式实时操作系统UC/OS-II》的第七章信号量管理。
2.实验之前需要查阅相关资料掌握一些有关LED数码管的基本知识,①首先需要熟悉一下LED模块的硬件结构,LED简称发光二极管,是可发光的半导体设备,一般门槛电压在1.6V~2.0V之间, LED数码管分共阳极与共阴极两种,其工作特点是,共阳极接高电平,使用低电平点亮数码管;共阴极接低电平,使用高电平点亮数码管。针对具体硬件看看共阴极与共阳极有什么区别。②熟悉七段数码显示器多路复用技术的特点,看看七段与通常所说的八段有什么不一样?③数码管主要是由段码与位码控制的,在电路图中什么是段码,什么是位码?同时请思考段码与位码是如何工作的?是如何控制LED的?
4.实验提示
1.本次实验使用的矩阵式键盘的电路图如下图4.1所示:
图4.1矩阵式键盘的电路图
采用4*4键盘,因此将键盘的行、列共8条线连接到PTA口上,其中行1-4连接到PTA0-3上,列1-4连接到PTA4-7上。即“行”对应XS128端口A的高四位。“列”对应端口A的低四位。按下相应的键会将按键的相应值输出到LED指示灯显示。如按下键A,将会把十六进制0xA的二进制编码的反码显示在指示灯上,即0101,因为LED指示灯为低电平时显示亮的状态,故将0xA的值取反会更直观。
键盘需要解决的核心问题包括扫描和去抖。之前学习的键盘扫描有行扫描法和反转法两种。在此不累述。下面主要分析一下去抖机制(状态机原理)。
键盘扫描任务还要解决按键抖动的问题。为了方便理解,先在一个完整的按键过程中定义几个状态。第N次采样时无键按下,此时键处于初态;N+1次采样时第一次采到有键按下,键进入次态,此时按键尚不稳定;N+2 采样时为连续第二次采到有键按下,键进入初稳态,次态之后初稳态之前的这段20ms的时间称为去抖周期; N+3次采样时为连续第三次采到,键进入持续稳定态,第N+I+1 次采样时为抬键后第一次被采到,此时键又回到了初态。因此把键态分为四种情况:初态,次态,初稳,稳定态;
为了使程序根据键态进行相应的处理,键盘扫描程序应为每一个按键设置状态单元,根据每个扫描周期采样到的键的即时状态是开或是关,再结合原来的键态得到现在的键态。可以建立一个状态机来扫描键盘。如图4.2所示状态机在每个扫描周期执行一次。
初态
初态
次态
初稳态
稳态
无键按下
键没有按下
将按下键的代码放入缓冲区
键仍按下
键仍然按下,找出被按下键并将代码放入缓冲区
键按下
键仍然按下,此时需要找出哪
一键,将键代码放入缓冲区
键不再按下
键未按下
初始化
图4.2矩阵键盘状态机
有上述分析得:我们可用一个单独的任务KeyScanTask()来扫描键盘。当应用程序调用了KeyInit()时,KeyScanTask()将被创建。一旦被创建后,KeyScanTask()将每KEY_SCAN_TASK_DLY毫秒执行一次。KEY_SCAN_TASK_DLY应该被设置为产一个范围在的10~30Hz的扫描频率之间(即33~100ms之间) 。在键盘扫描模块中,KeyScanTask ()函数发挥着相当重要的作用,它负责扫描任务,通过keyInitport()函数、读取列状(KeyGetCol)、写行状态(KeySelRow)函数与硬件打交道来扫描相应的行和列。
键盘扫描任务并不解决所有的问题,它所做的工作包括扫描键盘、去除抖动、按盘编码等,当然最终要把按键编码送入缓冲区keyBuf[],应用程序可以透过接口函数从该缓冲区得到键
您可能关注的文档
最近下载
- DL∕T 793.1-2017 发电设备可靠性评价规程 第1部分:通则.pdf VIP
- 五年级语文下册《写字表》田字格字帖.pdf VIP
- 河北仅销售预包装食品经营者备案信息采集表、变更表、注销表、备案编号规则.docx VIP
- 安防设备设施保养维修记录表.doc VIP
- 2025广西公需科目考试答案(3套,涵盖95_试题)一区两地一园一通道建设;人工智能时代的机遇与挑战.pdf VIP
- 人教版数学六年级上册第三单元分层作业设计.pdf VIP
- 2024全国建材行业职工助推高质量发展主题竞赛题库大全-中(多选题汇总).docx VIP
- 有趣的健康测试闭眼单腿站立试验.pptx VIP
- 2024全国建材行业职工助推高质量发展主题竞赛题库大全-中(多选题汇总).docx VIP
- 2025全国建材行业职工助推高质量发展主题竞赛考试题库及答案.docx VIP
文档评论(0)