




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程论文题 目:基于 STM32 控制的矩阵键盘的仿真设计 课程名称: ARM 嵌入式系统 学生姓名: 张宇 学生学号: 1314030140 系 别: 电子工程学院 专 业: 通信工程 年 级: 2013 级 指导教师: 权循忠 电电子工程学院制子工程学院制 2015 年 10 月 成绩成绩第 1 页目目 录录1 摘要摘要.12 关键字关键字.13 引言引言.14 STM32 控制的矩阵键盘系统方案计制定控制的矩阵键盘系统方案计制定 .14.1 系统总体设计方案系统总体设计方案.14.2 总体设计框图总体设计框图.14.3 矩阵键盘简介矩阵键盘简介.25 矩阵键盘设计原理分析矩阵键盘设计原理
2、分析.25.1 STM32 复位和时钟电路设计复位和时钟电路设计 .25.2 矩阵键盘电路的设计矩阵键盘电路的设计.25.3 按键去抖动按键去抖动.35.4 按键显示电路按键显示电路.36 程序流程图程序流程图.47 总体电路图总体电路图.58 软件仿真软件仿真.59 总结总结.610 参考文献:参考文献:.611 附录附录.7第 1 页基于基于 STM32STM32 控制的矩阵键盘的仿真设计控制的矩阵键盘的仿真设计学生:张宇指导老师:权循忠电子工程学院 通信工程1 1 摘要摘要矩阵键盘又称行列键盘,它是用四条 I/O 线作为行线,四条 I/O 线作为列线组成的键盘。在行线和列线的每个交叉点上
3、设置一个按键。这样键盘上按键的个数就为 4*4 个。这种行列式键盘结构能有效地提高 ARM 嵌入式系统中 I/O口的利用率。2 2 关键字关键字 矩阵键盘 行列键盘 ARM 嵌入式系统3 3 引言引言 随着人们生活水平的不断提升,ARM 嵌入式无疑是人们追求的目标之一,它给人带来的方便也是不可否认的,要为现代人工作、科研、生活、提供更好更方便的设备就需要从 ARM 嵌入式技术入手,一切向若数字化控制,智能化控制方向发展。用 ARM 嵌入式来控制的数码管显示按键也在广泛应用,其控制系统具有极大意义。展望未来,急速的响应速度将成为个性的 ARM 嵌入式发展的趋势,越来越多的 ARM 嵌入式正如雨后
4、春笋般涌现。4 4 STM32STM32 控制的矩阵键盘系统方案计制定控制的矩阵键盘系统方案计制定4.14.1 系统总体设计方案系统总体设计方案该智能键盘电路由 ARM 最小系统,矩阵键盘电路和显示电路组成,在常规的 4*4 矩阵键盘的基础上,通过改进实现了用 4 个 IO 口完成 4*4 矩阵键盘。 4.24.2 总体设计框图总体设计框图本电路主要由 3 大部分电路组成:矩阵键盘电路、ARM 最小系统电路、按键显示电路。其中 ATM 最小系统主要由复位电路和时钟电路组成。电路复位后数码管显示字符“” 表示没有按键,显示电路由 STM32 的 PD0PD7 来控制数码管显示是哪个按键按下。总体
5、设计方框图,如图 1 所示。第 2 页 图图 1 1 总体设计方框图总体设计方框图4.34.3 矩阵键盘简介矩阵键盘简介矩阵键盘又称行列键盘,它是用四条 I/O 线作为行线,四条 I/O 线作为列线组成的键盘。在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为 4*4 个。这种行列式键盘结构能有效地提高 ARM 嵌入式系统中 I/O口的利用率。5 5 矩阵键盘设计原理分析矩阵键盘设计原理分析5.15.1 STM32STM32 复位和时钟电路设计复位和时钟电路设计 此电路主要是复位电路和时钟电路两部分,其中复位电路采用按键手动复位和上电自动复位组合,电路如图 2(右)所示:其中 1
6、4 脚为 STM32 的复位端。时钟电路如图 2(左)所示:晶振采用的是 8MHz 和 32.786KHz,8MKz 分别接 STM32 的 12 脚和 13 脚,32.786KHz 分别接 STM32 的 8 脚和 9 脚。C222PC122PXTVCC12R112R2GND位位位位位位位位RESC3104PRESETC522PC422PXT232.786KSOC INSOC OUTPC14PC15图图 2 2 STMSTM 复位和时钟电路设计复位和时钟电路设计5.25.2 矩阵键盘电路的设计矩阵键盘电路的设计 该电路的四个端子分别接 STM32 的 PB12PB15,电路如图 3 所示。第
7、 3 页SW8SW1SW2SW3SW5SW12SW6SW7SW9SW10SW16SW11SW13SW14SW15SW4D1D2D3D4PB15PB14PB13PB12图图 3 3 矩阵键盘电路矩阵键盘电路该矩阵键盘电路扫描方法如下:(1)PB15,PB14,PB13,PB12 设置为输入并内部上拉。程序读取这四个IO 口引脚电平,如果某个 IO 为低电平,则该列中相应 IO 口对应行处的按键按下。(2)PB15 输出低电平,PB14,PB13,PB12 设置为输入并内部上拉。程序读取 PB14,PB13,PB12 这三个 IO 口的引脚电平。如果某个 IO 为低电平,则是第一列中相应 IO 口
8、对应行处的按键按下。(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 口的引
9、脚电平。如果某个 IO 为低电平,则是第四列中相应 IO 口对应行处的按键按下。5.35.3 按键去抖动按键去抖动每隔 10ms 扫描键盘一次,当扫描某个按键按下时,则开始计数,当连续4 次 扫描(也就是 40ms)都是这个按键按下时,说明按键有效。如果不到四次计数,就采集不到该按键按下,则说明该按键无效。5.45.4 按键显示电路按键显示电路本设计采用 STM32 的 IO 口 PD0PD7 来控制数码管来实时显示按键状态。当按键有按下时,数码管将显示对应的按键编号“0F” ,对应表示的按键是第 4 页“SW1SW16” 。按键显示电路,如图 4。图图 4 4 按键显示电路按键显示电路6 6
10、 程序流程图程序流程图 先对键盘初始化,看读列线是否有键按键,再延时消抖,再看读列是否有键按下,最后根据当前状态识别按键,显示键值。程序流程图,如图 5 所示。图图 5 5 程序流程图程序流程图第 5 页流程图描述:先对键盘值进行初始化,判断列线是否有按键按下,若无直接返回结果,若有则进行延时消抖,然后继续判断列线是否有按键按下,若无直接返回结果,若有根据当前状态识别按键,显示按键值,返回结果。7 7 总体电路图总体电路图 把矩阵键盘电路、ARM 最小系统电路、按键显示电路连接在一起。其中ATM 最小系统主要由复位电路和时钟电路组成。 总体电路图,如图 6 所示。1PE22PE33PE44PE
11、55PE66VBAT7PC138PC149PC1510GND11+3V312SOC_IN13SOC_OUT14RESET15PC016PC117PC218PC319VSSA20VREF-21VREF+22VDDA23PA024PA125PA226PA327GND28+3V329PA430PA531PA632PA733PC434PC535PB036PB137PB238PE739PE840PE941PE1042PE1143PE1244PE1345PE1446PE1547PB1048PB1149GND50+3V351PB1252PB1353PB1454PB1555PD856PD957PD1058PD
12、1159PD1260PD1361PD1462PD1563PC664PC765PC866PC967PA868PA969PA1070PA1171PA1272PA1373NC74GND75+3V376PA1477PA1578PC1079PC1180PC1281PD082PD183PD284PD385PD486PD587PD688PD789PB390PB491PB592PB693PB794BOOT095PB896PB997PE098PE199GND100+3V3STMB2F103xxU1STM32abfcgdeABCDEFGabcdefgDOTdpdpDSSW8SW1SW2SW3SW5SW12SW6S
13、W7SW9SW10SW16SW11SW13SW14SW15SW4D1D2D3D412R412R512R612R712R812R912R1012R11位位位位位位位位位位C222PC122PXTVCC12R112R2GND位位位位位位位位RESC3104PRESETC522PC422PXT232.786K12345678图图 6 6 总体电路图总体电路图8 8 软件仿真软件仿真首先,我们进行软件仿真,点击按钮 Debug,然后再点击波形图按钮,出现逻辑分析窗口,点击 Setup,新建 6 个信号PORTB.2、PORTB.8、PORTB.9、PORTB.10、PORTB.13、和 PORTB.1
14、4。Display Type 全部选择 Bit,然后选择各个颜色。然后再点击 Peripherals General Purpose I/O GPIOB。然后设置各个引脚电平,然后在 x=KEY_Scan()处设置一个断点,点击 Run 按钮,会出现以下波形即实验成功。第 6 页图图 7 7 软件仿真软件仿真9 9 总结总结一学期的 ARM 课程即将结束,从一开始对 ARM 的完全陌生到现在的慢慢入门,其中体会到了很多 ARM 的妙处和实用意义。通过这次矩阵键盘的设计,使我对 ARM 有了更深的理解。在做课程论文时增强了对论文格式的修改,熟悉和掌握了 ARM 工程项目的建立与生成,在遇到程序出
15、现错误时及时的翻书查看或者上网查找,并且在后期的 ARM 实训课中自己尝试在 ARM 开发板上进行调试,让我深刻领悟到理论和实践相结合的重要意义。只有把理论运用到实践中才能很好掌握理论和技术。所以以后不管在学什么知识都要重视理论与实践相结合。这样就好觉得其实学知识也不是那么难,更重要的是体现的学习的实际用处。 1010 参考文献:参考文献:1 彭刚、秦志强等.基于 ARM Cortex-M3 的 STM32 系列嵌入式微控制器应用实践M.北京:电子工业出版社2 李宁.基于 MDK 的 STM32 处理器开发应用 M.北京航空航天大学出版社,2008. 3潘松、黄继业等.EDA 技术实用教程(第
16、一版)M.科学出版社 2002 年 10 月4陆坤、奚大顺、李之权等.电子设计技术M.四川:电子科技大学出版社.1997 年.682-688,838-9415赵俊超.集成电路设计VHDL 教程(第一版)M.北京:北京希望电子出版社.2002 年第 7 页6杨邦文.新型实用电路制作 200 例M.北京:人民邮电出版社.1998 年.175-2887许海燕、付炎著.嵌入式系统技术与应用.机械工业出版社.2002 年8周主力主编.ARM 嵌入式系统基础教程.北京航空航天大学出版社.2005 年9田泽主编.嵌入式系统开发与应用教程.北京航空航天大学出版社1111 附录附录主程序#include led
17、.h#include delay.h#include sys.h#include 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;第 8 页case 1:LED=1;
18、 printf(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:LED=8;第 9 页 printf(0n); break;case 9:LED=9; printf(8n); break; case 10:LED=10; pri
19、ntf(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); break;case 15:LED=15; printf(1n); break;第 10 页 /key.c /按键扫描#include stm32f10 x.h#include delay.h#include key.h/*本文件的函数,主要实现矩阵键盘的功能。矩阵键盘使用 PB8 到 PB15 引脚,其中
20、,PB8 到 PB11 固定为推挽输出,PB12 到 PB15 固定为下拉输入。即,无键按下时,对应 PB12 到PB15 为 0,有键按下时,PB12 到 PB15 中,对应的引脚为高。*/void KEY_Init(void) /初始化矩阵键盘要使用的 GPIO 口。 GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; /定义 PB8到 PB11 为上拉输入、 、 。GP
21、IO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11; GPIO_Init(GPIOB,&GPIO_InitStructure);第 11 页GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; /定义 PB12 到PB15 为下拉输入。GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz;GPIO_InitStruct
22、ure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15; /因为上面定义引脚为输出时,已经打开整个 GPIOA 的时钟了,/所以此处不再需要函数 RCC_APB2PeriphClockCmd()来打开时钟了。 GPIO_Init(GPIOB,&GPIO_InitStructure);int KEY_Scan(void) /实现矩阵键盘。返回值为,各按键的键值,此键值由用户自己定义。u8 KeyVal; /keyVal 为最后返回的键值。GPIO_Write(GPIOB,(GPIOB-ODR & 0 xf0ff
23、 | 0 x0f00); /先让 PB8 到 PB11全部输出高。if(GPIOB-IDR & 0 xf000)=0 x0000) /如果 PB12 到 PB15 全为 0,则没有键按下。此时,返回值为-1.return -1;else delay_ms(5); /延时 5ms 去抖动。 if(GPIOB-IDR & 0 xf000)=0 x0000)/如果延时 5ms 后,PB12 到 PB15又全为 0,则,刚才引脚的电位变化是抖动产生的. return -1;第 12 页GPIO_Write(GPIOB,(GPIOB-ODR & 0 xf0ff | 0 x0100
24、);/让 PB11 到 PB8输出二进制的 0001.switch(GPIOB-IDR & 0 xf000)/对 PB12 到 PB15 的值进行判断,以输出不同的键值。case 0 x1000: KeyVal=15; break;case 0 x2000: KeyVal=11;break;case 0 x4000: KeyVal=7; break;case 0 x8000: KeyVal=3; break; GPIO_Write(GPIOB,(GPIOB-ODR & 0 xf0ff | 0 x0200);/让 PB11 到 PB8输出二进制的 0.switch(GPIOB-IDR & 0 xf000) /对 PB12 到 PB15 的值进行判断,以输出不同的键值。case 0 x1000: KeyVal=14;break;case 0 x2000: KeyVal=10;break;case 0 x4000: KeyVal=6; break;case 0 x8000: KeyVal=2; break;GPIO_Write(GPIOB,(GPIOB-ODR & 0 xf0ff | 0 x0400);/让 PB11 到 PB8输出二进制的 1011.switch(GP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 6《比例尺》大单元整体设计(教学设计)-2024-2025学年六年级上册数学冀教版
- 2023二年级数学上册 七 分一分与除法第4课时 分香蕉配套教学设计 北师大版
- 2023三年级数学上册 二 观察物体第1课时 看一看(一)教学设计 北师大版
- 毕业论文课题答辩汇报
- 7 中华民族一家亲 第一课时 (教学设计)-部编版道德与法治五年级上册
- Unit5 Drink Lesson 1(教学设计)-2023-2024学年人教新起点版英语一年级下册
- 胰体尾脾切除护理
- Unit 3 Lesson 2教学设计 2024-2025学年冀教版(2024)七年级英语上册
- 2024秋九年级化学上册 第三单元 物质构成的奥秘 课题2 原子的结构第2课时 原子核外电子的排布 离子教学设计(新版)新人教版
- 6《骑鹅旅行记(节选)》教学设计-2023-2024学年统编版语文六年级下册
- JTT327-2016 公路桥梁伸缩装置通用技术条件
- 2022年10月自考00233税法试题及答案含解析
- (高清版)TDT 1037-2013 土地整治重大项目可行性研究报告编制规程
- 意大利古罗马斗兽场课件
- 2023年4月自考11746国际商务与国际营销试题及答案
- 供配电技术 课件 第4章-变配电系统的电气设备及选择
- 国内外先进安全生产管理经验(继续教育)课件
- 二模冲刺动员主题班会通用课件
- 大学国旗护卫班培训方案
- 胃肠术后吻合口瘘的观察与护理
- 医疗器械生产中的生产线布局与优化
评论
0/150
提交评论