




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 成绩课程论文题 目:基于STM32控制的矩阵键盘的仿真设计 课程名称: ARM 嵌入式系统 学生姓名: 张宇 学生学号: 1314030140 系 别: 电子工程学院 专 业: 通信工程 年 级: 2013级 指导教师: 权循忠 电子工程学院制 2015年10月 目 录1摘要12关键字13引言14 STM32控制的矩阵键盘系统方案计制定14.1 系统总体设计方案14.2总体设计框图14.3矩阵键盘简介25 矩阵键盘设计原理分析25.1 STM32复位和时钟电路设计25.2 矩阵键盘电路的设计25.3按键去抖动35.4 按键显示电路36程序流程图47 总体电路图58 软件仿真59 总结610
2、参考文献:611 附录7基于STM32控制的矩阵键盘的仿真设计学生:张宇指导老师:权循忠电子工程学院 通信工程1摘要矩阵键盘又称行列键盘,它是用四条I/O线作为行线,四条I/O线作为列线组成的键盘。在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为4*4个。这种行列式键盘结构能有效地提高ARM嵌入式系统中I/O口的利用率。2关键字 矩阵键盘 行列键盘 ARM嵌入式系统3引言 随着人们生活水平的不断提升,ARM嵌入式无疑是人们追求的目标之一,它给人带来的方便也是不可否认的,要为现代人工作、科研、生活、提供更好更方便的设备就需要从ARM嵌入式技术入手,一切向若数字化控制,智能化控制方
3、向发展。用ARM嵌入式来控制的数码管显示按键也在广泛应用,其控制系统具有极大意义。展望未来,急速的响应速度将成为个性的ARM嵌入式发展的趋势,越来越多的ARM嵌入式正如雨后春笋般涌现。4 STM32控制的矩阵键盘系统方案计制定4.1 系统总体设计方案该智能键盘电路由ARM最小系统,矩阵键盘电路和显示电路组成,在常规的4*4矩阵键盘的基础上,通过改进实现了用4个IO口完成4*4矩阵键盘。 4.2总体设计框图本电路主要由3大部分电路组成:矩阵键盘电路、ARM最小系统电路、按键显示电路。其中ATM最小系统主要由复位电路和时钟电路组成。电路复位后数码管显示字符“” 表示没有按键,显示电路由STM32的
4、PD0PD7来控制数码管显示是哪个按键按下。总体设计方框图,如图1所示。 图1总体设计方框图4.3矩阵键盘简介矩阵键盘又称行列键盘,它是用四条I/O线作为行线,四条I/O线作为列线组成的键盘。在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为4*4个。这种行列式键盘结构能有效地提高ARM嵌入式系统中I/O口的利用率。5 矩阵键盘设计原理分析5.1 STM32复位和时钟电路设计 此电路主要是复位电路和时钟电路两部分,其中复位电路采用按键手动复位和上电自动复位组合,电路如图2(右)所示:其中14脚为STM32的复位端。时钟电路如图2(左)所示:晶振采用的是8MHz和32.786KHz
5、,8MKz分别接STM32的12脚和13脚,32.786KHz分别接STM32的8脚和9脚。图2 STM复位和时钟电路设计5.2 矩阵键盘电路的设计 该电路的四个端子分别接STM32的PB12PB15,电路如图3所示。图3 矩阵键盘电路该矩阵键盘电路扫描方法如下:(1)PB15,PB14,PB13,PB12设置为输入并内部上拉。程序读取这四个IO口引脚电平,如果某个IO为低电平,则该列中相应IO口对应行处的按键按下。(2)PB15输出低电平,PB14,PB13,PB12设置为输入并内部上拉。程序读取PB14,PB13,PB12这三个IO口的引脚电平。如果某个IO为低电平,则是第一列中相应IO口
6、对应行处的按键按下。(3)PB14输出低电平,PB15,PB13,PB12设置为输入并内部上拉。程序读取PB15,PB13,PB12这三个IO口的引脚电平。如果某个IO为低电平,则是第二列中相应IO口对应行处的按键按下。(4)PB13输出低电平,PB15,PB14,PB12设置为输入并内部上拉。程序读取PB15,PB14,PB12这三个IO口的引脚电平。如果某个IO为低电平,则是第三列中相应IO口对应行处的按键按下。(5)PB12输出低电平,PB15,PB14,PB13设置为输入并内部上拉。程序读取PB15,PB14,PB13这三个IO口的引脚电平。如果某个IO为低电平,则是第四列中相应IO口
7、对应行处的按键按下。5.3按键去抖动每隔10ms扫描键盘一次,当扫描某个按键按下时,则开始计数,当连续4次 扫描(也就是40ms)都是这个按键按下时,说明按键有效。如果不到四次计数,就采集不到该按键按下,则说明该按键无效。5.4 按键显示电路本设计采用STM32的IO口PD0PD7来控制数码管来实时显示按键状态。当按键有按下时,数码管将显示对应的按键编号“0F”,对应表示的按键是“SW1SW16”。按键显示电路,如图4。图4 按键显示电路6程序流程图 先对键盘初始化,看读列线是否有键按键,再延时消抖,再看读列是否有键按下,最后根据当前状态识别按键,显示键值。程序流程图,如图5所示。图5 程序流
8、程图流程图描述:先对键盘值进行初始化,判断列线是否有按键按下,若无直接返回结果,若有则进行延时消抖,然后继续判断列线是否有按键按下,若无直接返回结果,若有根据当前状态识别按键,显示按键值,返回结果。7 总体电路图 把矩阵键盘电路、ARM最小系统电路、按键显示电路连接在一起。其中ATM最小系统主要由复位电路和时钟电路组成。 总体电路图,如图6所示。图6 总体电路图8 软件仿真首先,我们进行软件仿真,点击按钮Debug,然后再点击波形图按钮,出现逻辑分析窗口,点击Setup,新建6个信号PORTB.2、PORTB.8、PORTB.9、PORTB.10、PORTB.13、和PORTB.14。Disp
9、lay Type全部选择Bit,然后选择各个颜色。然后再点击Peripherals General Purpose I/O GPIOB。然后设置各个引脚电平,然后在x=KEY_Scan()处设置一个断点,点击Run按钮,会出现以下波形即实验成功。图7 软件仿真9 总结一学期的ARM课程即将结束,从一开始对ARM的完全陌生到现在的慢慢入门,其中体会到了很多ARM的妙处和实用意义。通过这次矩阵键盘的设计,使我对ARM有了更深的理解。在做课程论文时增强了对论文格式的修改,熟悉和掌握了ARM工程项目的建立与生成,在遇到程序出现错误时及时的翻书查看或者上网查找,并且在后期的ARM实训课中自己尝试在ARM
10、开发板上进行调试,让我深刻领悟到理论和实践相结合的重要意义。只有把理论运用到实践中才能很好掌握理论和技术。所以以后不管在学什么知识都要重视理论与实践相结合。这样就好觉得其实学知识也不是那么难,更重要的是体现的学习的实际用处。 10 参考文献:1 彭刚、秦志强等.基于ARM Cortex-M3的STM32系列嵌入式微控制器应用实践M.北京:电子工业出版社2 李宁.基于MDK的STM32处理器开发应用 M.北京航空航天大学出版社,2008. 3潘松、黄继业等.EDA技术实用教程(第一版)M.科学出版社 2002年10月4陆坤、奚大顺、李之权等.电子设计技术M.四川:电子科技大学出版社.1997年.
11、682-688,838-9415赵俊超.集成电路设计VHDL教程(第一版)M.北京:北京希望电子出版社.2002年6杨邦文.新型实用电路制作200例M.北京:人民邮电出版社.1998年.175-2887许海燕、付炎著.嵌入式系统技术与应用.机械工业出版社.2002年8周主力主编.ARM嵌入式系统基础教程.北京航空航天大学出版社.2005年9田泽主编.嵌入式系统开发与应用教程.北京航空航天大学出版社11 附录主程序#include "led.h"#include "delay.h"#include "sys.h"#include &qu
12、ot;key.h"#include "usart.h"#include "stdio.h" int main(void) int x;SystemInit();delay_init(72); /延时初始化NVIC_Configuration();uart_init(9600); LED_Init();KEY_Init();/初始化与按键连接的硬件接口while(1) x=KEY_Scan(); /得到键值 switch(x)case 0:/ LED=0; printf("Dn"); break;case 1:LED=1; p
13、rintf("Cn"); break;case 2:LED=2; printf("Bn"); break;case 3:LED=3; printf("An"); break;case 4:LED=4; printf("#n"); break;case 5:LED=5; printf("9n"); break;case 6:LED=6; printf("6n"); break;case 7:LED=7; printf("3n"); break;case 8:
14、LED=8; printf("0n"); break;case 9:LED=9; printf("8n"); break; case 10:LED=10; printf("5n"); break;case 11:LED=11; printf("2n"); break;case 12:LED=12; printf("*n"); break; case 13:LED=13; printf("7n"); break;case 14:LED=14; printf("4n&q
15、uot;); break;case 15:LED=15; printf("1n"); break; /key.c /按键扫描#include "stm32f10x.h"#include "delay.h"#include "key.h"/*本文件的函数,主要实现矩阵键盘的功能。矩阵键盘使用PB8到PB15引脚,其中,PB8到PB11固定为推挽输出,PB12到PB15固定为下拉输入。即,无键按下时,对应PB12到PB15为0,有键按下时,PB12到PB15中,对应的引脚为高。*/void KEY_Init(void)
16、 /初始化矩阵键盘要使用的GPIO口。 GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; /定义PB8到PB11为上拉输入、。GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11;
17、GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; /定义PB12到PB15为下拉输入。GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15; /因为上面定义引脚为输出时,已经打开整个GPIOA的时钟了,/所以此处不再需要函数RCC_APB2PeriphClockCmd()来打开
18、时钟了。 GPIO_Init(GPIOB,&GPIO_InitStructure);int KEY_Scan(void) /实现矩阵键盘。返回值为,各按键的键值,此键值由用户自己定义。u8 KeyVal; /keyVal为最后返回的键值。GPIO_Write(GPIOB,(GPIOB->ODR & 0xf0ff | 0x0f00); /先让PB8到PB11全部输出高。if(GPIOB->IDR & 0xf000)=0x0000) /如果PB12到PB15全为0,则没有键按下。此时,返回值为-1.return -1;else delay_ms(5); /延时5
19、ms去抖动。 if(GPIOB->IDR & 0xf000)=0x0000)/如果延时5ms后,PB12到PB15又全为0,则,刚才引脚的电位变化是抖动产生的. return -1;GPIO_Write(GPIOB,(GPIOB->ODR & 0xf0ff | 0x0100);/让PB11到PB8输出二进制的0001.switch(GPIOB->IDR & 0xf000)/对PB12到PB15的值进行判断,以输出不同的键值。case 0x1000: KeyVal=15; break;case 0x2000: KeyVal=11;break;case 0
20、x4000: KeyVal=7;break;case 0x8000: KeyVal=3;break; GPIO_Write(GPIOB,(GPIOB->ODR & 0xf0ff | 0x0200);/让PB11到PB8输出二进制的0.switch(GPIOB->IDR & 0xf000) /对PB12到PB15的值进行判断,以输出不同的键值。case 0x1000: KeyVal=14;break;case 0x2000: KeyVal=10;break;case 0x4000: KeyVal=6;break;case 0x8000: KeyVal=2;break;GPIO_Write(GPIOB,(GPIOB->ODR & 0xf0ff | 0x0400);/让PB11到PB8输出二进制的1011.switch(GPIOB->IDR & 0xf000) /对PB12到PB15的值进行判断,以输出不同的键值。case 0x1000: KeyVal=13;break;case 0x2000: KeyVal=9;break;case 0x400
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO 17299-6:2025 EN Textiles - Determination of deodorant property - Part 6: Gas chromatography method using automated dosing and sampling
- GB/T 27534.7-2025畜禽遗传资源调查技术规范第7部分:骆驼、羊驼
- 经济体系中的社会公平性研究试题及答案
- 材料疲劳断裂数据校正重点基础知识点
- 养牛场火灾应急预案(3篇)
- 高考数学学习计划与试题及答案
- 行政管理应对策略试题与答案
- 突发高楼火灾应急预案(3篇)
- 防火灾应急预案演练银行(3篇)
- 高速网络设计中的试题及答案总结
- 焊接H型钢的矫正
- 科学青岛版五年级下册(2022年新编)21 蜡烛的燃烧 课件
- 抗菌药物临床应用指导原则(2023年版)
- 基因奥秘智能型水润抗衰深层治疗操作流程
- 大学生创业计划书word文档(三篇)
- 土工织物防护施工
- 生产性服务业集聚对城市产业结构优化的影响共3篇
- 施工单位考察记录表
- YY/T 1244-2014体外诊断试剂用纯化水
- GB/T 26192-2010双向拉伸聚丙烯可涂覆合成纸薄膜
- GB/T 2546.1-2006塑料聚丙烯(PP)模塑和挤出材料第1部分:命名系统和分类基础
评论
0/150
提交评论