ImageVerifierCode 换一换
格式:DOC , 页数:19 ,大小:366.50KB ,
资源ID:10278189      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-10278189.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(非编码键盘的扫描程序设计.doc)为本站会员(精品资料)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

非编码键盘的扫描程序设计.doc

1、武汉理工大学计算机控制技术课程设计说明书摘要计算机控制技术课程设计是在教学及实验基础上,对课程所学理论知识的深化和提高。本次课程设的内容是利用 8031 微控制器,通过 8155 扩展 I/O 口行列式键盘。要求通过 8155 扩展 I/O 口组成 48 行列式键盘,设计非编码键盘的扫描系统,并且能够对键盘的按键正确识别,去抖动。关键词: 8155 非编码 去抖武汉理工大学计算机控制技术课程设计说明书目录1 课程设计目的 .12 非编码键盘 23 芯片介绍 33.1 8031 芯片介绍 .33.2 8155 芯片介绍 .44 电路设计 65 程序设计 76 电路仿真 107 心得体会 13附录

2、 程序清单 .14参考文献 .17武汉理工大学计算机控制技术课程设计说明书第 1 页 共 17 页非编码键盘的扫描程序设计1 课程设计目的(1)了解并掌握非编码键盘的工作原理;(2)熟悉和掌握 8155 与 8031 的结构及工作原理;(3)通过课程设计,掌握电路设计的基本方法和技术;(4)掌握单片机的接口技术及相关外围芯片的外特性,控制方法,从而加深对计算机控制技术知识的理解;(5)通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。武汉理工大学计算机控制技术课程设计说明书第 2 页 共 17 页2 非编码键盘键盘可以分为编码式和非编码式两种。编码式键盘是通过数字电路直接产生对应于

3、按键的 ASC码,这种方式目前很少使用。非编码式键盘将案件排列成矩阵的形势,由硬件或软件随时对矩阵扫描,一旦某一键被按下,该键的行列信息即被转换为位置码并送入主机,再由键盘驱动程序查表,从而得到按键的 ASC码,最后送入内存中的键盘缓冲区供主机分析执行。非编码式键盘由于结构简单,按键重定义方便而成为目前最常采用的键盘类型。由此,多姿多彩的多媒体键盘便应运而生,这些键盘通常出现在品牌机上,如联想、同方等,品牌机上的“单键上网”也是基于此原理。非编码键盘又分为:独立键盘和行列式(又称为矩阵式)键盘。本次课程设计要求设计的是 48 行列式键盘。武汉理工大学计算机控制技术课程设计说明书第 3 页 共

4、17 页3 芯片介绍3.1 8031 芯片介绍8031 和 8051 一样是最常见的 MCS51 系列单片机,是 inter 公司早期的成熟的单片机产品,应用范围涉及到各行各业。8031 有 40 个引脚,采用双列直插封装,其引脚图如图 3-1 所示。图 3-1 8031 引脚图XTAL1:内部振荡电路反相放大器的输入端,是外接晶体的一个引脚。当采用外部振荡器时,此引脚接地。XTAL2:内部振荡电路反相放大器的输出端。是外接晶体的另一端。当采用外部振荡器时,此引脚接外部振荡源。RST:当振荡器运行时,在此引脚上出现两个机器周期的高电平(由低到高跳变) ,将使单片机复位。:程序选通有效信号,当从

5、外部程序存贮器读取指令时产生低电平PSEN时,指令寄存器的内容读到数据总线上。ALE:地址锁存有效信号,其主要作用是提供一个适当的定时信号,在它武汉理工大学计算机控制技术课程设计说明书第 4 页 共 17 页的下降沿用于外部程序存储器或外部数据存贮器的低 8 位地址锁存,使总线 P0输出/输入口分时用作地址总线(低 8 位)和数据总线,此信号每个机器出现 2次,只是在访问外部数据存储器期间才不输出 ALE。:当保持 TTL 高电平时,如果指令计数器小于 4096,8031 执行内部EAROM 的指令;当使 TTL 为低电平时, 从外部程序存贮器取出所有指令。P0.0P0.7:通道 0,它是 8

6、 位漏极开路的双向 I/O 通道,当扩展外部存贮器时,这也是低八位地址和数据总线,在编程校验期间,它输入和输出字节代码,通道 0 吸收/发出二个 TTL 负载。P1.0P1.7:通道 1 是 8 位拟双向 I/O 通道,在编程和校验时,它发出低 8位地址。通道 1 吸收/发出一个 TTL 负载。P2.0P2.7:通道 2 是 8 位拟双向 I/O 通道,当访问外部存贮器时,用作高8 位地址总线。通道 2 能吸收/发出一个 TTL 负载。P3.0P3.7:通道 3 准双向 I/O 通道。通道 3 能吸收/发出一个 TTL 负载。3.2 8155 芯片介绍8155 是一多功能的可编程外围接口芯片,

7、内部资源有 256B 的 RAM,2 个8 位、1 个 6 位的 I/O 口和 1 个 14 位的“减 1”计数器。8155 有 40 个引脚,采用双列直插封装,总线型的 8155 引脚图如图 3-2 所示。图 3-2 总线型 8155 引脚图武汉理工大学计算机控制技术课程设计说明书第 5 页 共 17 页AD0AD7:三态地址/数据线,是低 8 位地址与数据复用线。地址可以是8155 片内 RAM 单元地址或 I/O 端口地址。AD0AD7 上的地址由 ALE 的下降沿存到 8155 片内地址锁存器。也就是由 ALE 信号来区别 AD0AD7 上出现的地址信息还是数据信息。ALE:锁存允许信

8、号。在 ALE 信号的下降沿把 ADOAD7 上的 8 位地址信息, 片选信号及 IO/ 信号都锁存到 8155 内部存储器中。CSM:片选信号,低电平有效,由 ALE 信号的下降沿锁存到 8155 内部存储器。:读选通信号,低电平有效。当 =0、 =0 时,开启 AD0AD7RDRDCS的缓冲器,被选中的片内 RAM 单元或 IO 口的内容送到 AD0AD7 上。:写选通信号。低电平有效,当 、 都有效时,CPU 输出到WWAD0AD7 上的信息送到 8155 片内 RAM 单元或 I/O 端口。IO/ : IO 口 /RAM 选择。0:选内 RAM;1:选内 IO 口。MRES:复位信号输

9、入端,高电平有效。复位后,3 个 I/O 口均为输入方式。PA0PA7:A 口的 I/O 线,其输入、输出的流向可由程序控制。PB0PB7 :B 口的 I/O 线,其输入、输出的流向可由程序控制。PC0PC5 :有两个作用,既可作为通用的 I/O 口,也可作为 PA 口和 PB口的控制信号线,这些可通过程序控制。TIN:定时器输入。:定时器输出。TOU武汉理工大学计算机控制技术课程设计说明书第 6 页 共 17 页4 电路设计总设计电路图如图 4-1 所示。图 4-1 总设计电路图如上图,8031 的 P0.0P0.7 分别与 8155 的 AD0AD7 相连接,8155 的PC 口与 PB

10、口分别控制矩阵键盘的行与列,8031 的 P2.0 口及 P2.7 口分别与8155 的 IO/ 及 相连。按照这种连线方式,8155 的命令状态寄存器地址、MCSA 口地址、B 口地址和 C 口地址分别是 0X7FF0H、0X7FF1H、0X7FF2H 和0X7FF3H。在扫描键盘时,我们将 8155 的 B 口设置为输出口、C 口设置为输入口,这样 8155 的命令状态寄存器地址赋值为 0X02。由图 4-1 可以看出,在矩阵键盘的行下面加了一排下拉电阻,因此我们采用的是将键盘电位拉高的扫描方式。为了验证矩阵键盘扫描的正确性,我们在 8031 的 P1 口上加了一排发光二极管。将键盘一次从

11、左到右从上到下编号,可以从 1 编到 32。我们将发光二极管亮定义为“1” ,灭定义为“0” 。因此根据发光二极管的亮灭,按照 P1 口由高位到低位的顺序排列,可以得到一个八位的二进制数,再将二进制数转化为十进制数。我们定义:当第一个键盘按下时,发光二极管显示“1” ;当第二个键武汉理工大学计算机控制技术课程设计说明书第 7 页 共 17 页盘按下时,发光二极管显示“2” ,以此类推。5 程序设计在程序设计部分,我们采用模块化程序设计的方法,即将各功能模块化,编写成一段一段的子程序,最后在主程序中调用各子程序完成设计所需功能。采用模 块 化 程 序 设 计 的 方 法 降 低 了 程 序 复

12、杂 度 , 使 程 序 设 计 、 调 试 和 维 护 等操 作 简 单 化 。首 先 , 设 计 主 程 序 , 其 流 程 图 如 图 5-1 所 示 。 在 主 程 序 一 开 始 , 我 们 要对 各 芯 片 初 始 化 , 例 如 : 给 8031 的 P1 口 赋 初 值 , 使 所 有 的 发 光 二 极 管 都熄 灭 ; 给 8155 的 命 令 状 态 寄 存 器 地 址 赋 值 , 设 置 B 口 与 C 口 的 输 入 、 输出 方 式 等 等 。 接 着 , 判 断 有 无 键 盘 按 下 , 若 有 键 盘 按 下 , 执 行 键 盘 扫 描 程 序 ,并 将 返 回

13、 值 返 回 赋 给 8031 的 P1 口 ; 若 没 有 键 盘 按 下 , 则 继 续 判 断 。图 5-1 主程序流程图武汉理工大学计算机控制技术课程设计说明书第 8 页 共 17 页键盘扫描时需要去抖动,键盘去抖动有两种方式,一种是软件去抖动,另一种是硬件去抖动,在这里我们采用软件去抖动的方式。即在检测到有键盘按下时为了防止是抖动,需要在延迟一段时间后再检测是否有键盘按下。因此,接下来要设计延时子程序,延时原理很简单,只要采用循环体进行即可。由于程序很简单就不给程序流程图,延时子程序如下所示。void delay(unsigned char t)unsigned char i,j;f

14、or(j=t;j0;j-)for(i=110;i0;i-);然后需要设计检测有无键盘按下子程序,在此程序中,先给 8155 的 PB 口赋值 0XFF。由于 PC 口上接有下拉电阻,因此都是低电平。此时读回 PC 口上的电位值,若 PC 口的电位有变化,说明有键盘按下;若没有变化,说明没有键盘按下,继续检测。此子程序的流程图如图 5-2 所示。武汉理工大学计算机控制技术课程设计说明书第 9 页 共 17 页图 5-2 检测有无键盘按下子程序流程图最后设计的就是键盘扫描程序。先给 PB 口赋值 0X01,检测 PC 口的值是否为零,若不为零,说明被按下的键盘在此列;若不为零,说明被按下的键盘不在

15、此列,将 PB 左移一位继续检测。知道被按下的键盘在哪一列之后,给 PB口赋值 0XFF,读回此时 PC 口的值,并将这个值与一个初值为 0X01 的变量 a按位与,若此时的值为零,说明被按下的键盘不在这一行,将 a 左移一位,即到下一行去检测;若得到的值不为零,说明被按下的键盘就在这一行。用键盘的行数乘以 8 再加上键盘的列数,则可以得到键盘的编号,将此编号返回。最后是松手检测。此段子程序的流程图如图 5-3 所示。武汉理工大学计算机控制技术课程设计说明书第 10 页 共 17 页图 5-3 键盘扫描子程序流程图6 电路仿真此次课程设计电路的仿真是基于 Proteus 的仿真。P roteu

16、s 软 件 是 英 国Labcenter Electronics 公 司 出 版 的 EDA 工 具 软 件 。 它 不 仅 具 有 其 它 EDA 工具 软 件 的 仿 真 功 能 , 还 能 仿 真 单 片 机 及 外 围 器 件 。 它 是 目 前 最 好 的 仿 真 单 片机 及 外 围 器 件 的 工 具 。 Proteus 是 世 界 上 著 名 的 EDA 工 具 , 鉴 于 其 强 大 的功 能 及 广 泛 的 应 用 , 我 们 选 择 了 它 作 为 此 次 课 程 设 计 电 路 的 仿 真 工 具 。仿 真 刚 启 动 时 , 没 有 发 光 二 极 管 亮 , 说 明

17、 没 有 键 盘 按 下 , 此 时 的 仿 真 图如 图 6-1 所 示 。图 6-1 刚启动仿真时的仿真图我们定义最上面的一行键盘是第零行,接下来一行是第一行,以此类推。前面已经介绍过键盘的行数乘以 8 再加上键盘的列数,可以得到键盘的编号。武汉理工大学计算机控制技术课程设计说明书第 11 页 共 17 页如果按下第零行第三列的键盘,即第三个键盘,发光二极管应该显示“3” ,也就是最后一个和倒数第二个发光二极管亮。此时的仿真图如图 6-2 所示。图 6-2 按下第三个键盘时的仿真图如果按下第二行第六列的键盘,即第二十二个键盘,发光二极管应该显示“22”,也就是第四、第六和第七个发光二极管亮

18、。此时的仿真图如图 6-3 所示。武汉理工大学计算机控制技术课程设计说明书第 12 页 共 17 页图 6-3 按下第二十二个键盘时的仿真图从仿真的结果看来,仿真的结果完全符合要求,能够正确识别键盘按键,完成了对非编码键盘的扫描及显示,并且有效的解决了抖动问题。武汉理工大学计算机控制技术课程设计说明书第 13 页 共 17 页7 心得体会经过了这些天的课程设计我首先感觉到的是身心非常的疲惫,但我无怨无悔,因为当我查阅了大量的文献和参考资料后我发觉学到许多在课堂上和书本上所学不到的东西,是这些课外的知识使我更进一步地熟悉了一些芯片的结构以及掌握了各芯片的工作原理及其具体的使用方法,同时也使我也开

19、拓了眼界对电子器件有了更进一步的了解和认识,对电子产品产生了浓厚的兴趣。通过实践我增强了动手能力和操作能力,这对我以后进入社会参加工作是很有帮助的。同时,经过这几天的努力,我对 Proteus 这款软件的使用也更加熟练,尤其是掌握了对总线的理解和使用。Proteus 是一款强大的软件,在以后的学习过程中,我将更加深入的去学习这款软件的使用方法和技巧。另外通过这次课程设计,我对文档的编排也有了一定的掌握,这对于以后的毕业设计及工作需要都有很大的帮助,在完成课程设计的同时我也在复习一遍计算机控制技术这门课程,把以前很多没学懂的问题都学懂学透了。所以课程设计是理论知识的升华。整个课程设计过程中,由于

20、理论知识的缺乏,课程设计还有很多不足之处,在以后的课程设计中,希望能有所改善。武汉理工大学计算机控制技术课程设计说明书第 14 页 共 17 页附录 程序清单#include /头文件#include /XBYTE 宏定义#define COM XBYTE0x7FF0 /8155 命令状态寄存器地址#define PA XBYTE0x7FF1 /8155 的 A 口地址#define PB XBYTE0x7FF2 /8155 的 B 口地址#define PC XBYTE0x7FF3 /8155 的 C 口地址int x,y,z,cord_h,cord_l;void delay(unsigne

21、d char t) /延时unsigned char i,j;for(j=t;j0;j-)for(i=110;i0;i-); void key() /检测有无键盘按下int a=1;cord_h=0xff;PB=cord_h;cord_l=0;while(!cord_lcord_l=PC;if(cord_l)a=0;unsigned char keyscan() /扫描键盘并返回响应的键值int a;x=0;y=0;cord_h=0x01;do x+;PB=cord_h;cord_l=PC;cord_h=1;while(!cord_l);a=0x01;cord_h=0xff;PB=cord_h

22、;cord_l=PC;while(!(cord_ly+;cord_l=PC;武汉理工大学计算机控制技术课程设计说明书第 16 页 共 17 页z=x+y*8;return z;while(PC);delay(5);while(PC);void main() COM=0x02; /8155 的 B 口设置为输出口,C 口设置为输入口P1=0;while(1)key();P1=keyscan();武汉理工大学计算机控制技术课程设计说明书第 17 页 共 17 页参考文献1 于海生. 计算机控制技术. 机械工业出版社,20102 郑学坚,周斌 . 微型计算机原理与应用. 清华大学出版社3 沈美明,温冬婵 . IBM-PC汇编语言程序设计. 清华大学出版社 4 何立民. 单片机应用系统设计. 北京航空航天大学出版社5 姚燕南,薛钧义 . 微型计算机原理. 西安电子科技大学出版社6 沙占友等 . 新编实用数字化测量技术. 国防工业出版社7 宋春荣等 . 通用集成电路手册. 山东科技出版社

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报