课程论文题目:基于STM32控制的矩阵键盘的仿真设计课程名称:ARM嵌入式系统学生姓名:张宇学生学号:1314030140系别:电子工程学院专业:通信工程年级:2013级指导教师:权循忠电子工程学院制2015年10月成绩目录1摘要...................................................12关键字.................................................13引言...................................................14STM32控制的矩阵键盘系统方案计制定.....................14.1系统总体设计方案..................................14.2总体设计框图......................................14.3矩阵键盘简介......................................25矩阵键盘设计原理分析...................................25.1STM32复位和时钟电路设计..........................25.2矩阵键盘电路的设计................................25.3按键去抖动........................................35.4按键显示电路.....................................36程序流程图.............................................47总体电路图............................................58软件仿真..............................................59总结..................................................610参考文献:...........................................611附录.................................................7基于STM32控制的矩阵键盘的仿真设计学生:张宇指导老师:权循忠电子工程学院通信工程1摘要矩阵键盘又称行列键盘,它是用四条I/O线作为行线,四条I/O线作为列线组成的键盘。在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为4*4个。这种行列式键盘结构能有效地提高ARM嵌入式系统中I/O口的利用率。2关键字矩阵键盘行列键盘ARM嵌入式系统3引言随着人们生活水平的不断提升,ARM嵌入式无疑是人们追求的目标之一,它给人带来的方便也是不可否认的,要为现代人工作、科研、生活、提供更好更方便的设备就需要从ARM嵌入式技术入手,一切向若数字化控制,智能化控制方向发展。用ARM嵌入式来控制的数码管显示按键也在广泛应用,其控制系统具有极大意义。展望未来,急速的响应速度将成为个性的ARM嵌入式发展的趋势,越来越多的ARM嵌入式正如雨后春笋般涌现。4STM32控制的矩阵键盘系统方案计制定4.1系统总体设计方案该智能键盘电路由ARM最小系统,矩阵键盘电路和显示电路组成,在常规的4*4矩阵键盘的基础上,通过改进实现了用4个IO口完成4*4矩阵键盘。4.2总体设计框图本电路主要由3大部分电路组成:矩阵键盘电路、ARM最小系统电路、按键显示电路。其中ATM最小系统主要由复位电路和时钟电路组成。电路复位后数码管显示字符“—”表示没有按键,显示电路由STM32的PD0—PD7来控制数码管显示是哪个按键按下。总体设计方框图,如图1所示。图1总体设计方框图4.3矩阵键盘简介矩阵键盘又称行列键盘,它是用四条I/O线作为行线,四条I/O线作为列线组成的键盘。在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为4*4个。这种行列式键盘结构能有效地提高ARM嵌入式系统中I/O口的利用率。5矩阵键盘设计原理分析5.1STM32复位和时钟电路设计此电路主要是复位电路和时钟电路两部分,其中复位电路采用按键手动复位和上电自动复位组合,电路如图2(右)所示:其中14脚为STM32的复位端。时钟电路如图2(左)所示:晶振采用的是8MHz和32.786KHz,8MKz分别接STM32的12脚和13脚,32.786KHz分别接STM32的8脚和9脚。C222PC122PXTVCC12R112R2GND复位电路时钟电路RESC3104PRESETC522PC422PXT232.786KSOCINSOCOUTPC14PC15图2STM复位和时钟电路设计5.2矩阵键盘电路的设计该电路的四个端子分别接STM32的PB12—PB15,电路如图3所示。SW8SW1SW2SW3SW5SW12SW6SW7SW9SW10SW16SW11SW13SW14SW15SW4D1D2D3D4PB15PB14PB13PB12图3矩阵键盘电路该矩阵键盘电路扫描方法如下:(1)PB15,PB14,PB13,PB12设置为输入并内部上拉。程序读取这四个IO口引脚电平,如果某个IO为低电平,则该列中相应IO口对应行处的按键按下。(2)PB15输出低电平,PB14,PB13,PB12设置为输入并内部上拉。程序读取PB14,PB13,PB12这三个IO口的引脚电平。如果某个IO为低电平,则是第一列中相应IO口对应行处的按键按下。(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口对应行处的按键按下。5.3按键去抖动每隔10ms扫描键盘一次,当扫描某个按键按下时,则开始计数,当连续4次扫描(也就是40ms)都是这个按键按下时,说明按键有效。如果不到四次计数,就采集不到该按键按下,则说明该按键无效。5.4按键显示电路本设计采用STM32的IO口PD0—PD7来控制数码管来实时显示按键状态。当按键有按下时,数码管将显示对应的按键编号“0—F”,对应表示的按键是“SW1—SW16”。按键显示电路,如图4。图4按键显示电路6程序流程图先对键盘初始化,看读列线是否有键按键,再延时消抖,再看读列是否有键按下,最后根据当前状态识别按键,显示键值。程序流程图,如图5所示。图5程序流程图流程图描述:先对键盘值进行初始化,判断列线是否有按键按下,若无直接返回结果,若有则进行延时消抖,然后继续判断列线是否有按键按下,若无直接返回结果,若有根据当前状态识别按键,显示按键值,返回结果。7总体电路图把矩阵键盘电路、ARM最小系统电路、按键显示电路连接在一起。其中ATM最小系统主要由复位电路和时钟电路组成。总体电路图,如图6所示。1PE22PE33PE44PE55PE66VBAT7PC138PC149PC1510GND11+3V312SOC_IN13SOC_OUT14RESET15PC016PC117PC218PC319VSSA20VREF-21VREF+22VDDA23PA024PA125PA226PA327GND28+3V329PA430PA531PA632PA733PC434PC535PB036PB137PB238PE739PE840PE941PE1042PE1143PE1244PE1345PE1446PE1547PB1048PB1149GND50+3V351PB1252PB1353PB1454PB1555PD856PD957PD1058PD1159PD1260PD1361PD1462PD1563PC664PC765PC866PC967PA868PA969PA1070PA1171PA1272PA1373NC74GND75+3V376PA1477PA1578PC1079PC1180PC1281PD082PD183PD284PD385PD486PD587PD688PD789PB390PB491PB592PB693PB794BOOT095PB896PB997PE098PE199GND100+3V3STMB2F103xxU1STM32abfcgdeABCDEFGabcdefgDOTdpdpDSSW8SW1SW2SW3SW5SW12SW6SW7SW9SW10SW16SW11SW13SW14SW15SW4D1D2D3D412R412R512R612R712R812R912R1012R11矩阵键盘按键显示电路C222PC122PXTVCC12R112R2GND复位电路时钟电路RESC3104PRESETC522PC422PXT232.786K12345678图6总体电路图8软件仿真首先,我们进行软件仿真,点击按钮Debug,然后再点击波形图按钮,出现逻辑分析窗口,点击Setup,新建6个信号PORTB.2、PORTB.8、PORTB.9、PORTB.10、PORTB.13、和PORTB.14。DisplayType全部选择Bit,然后选择各个颜色。然后再点击PeripheralsGeneralPurposeI/OGPIOB。然后设置各个引脚电平,然后在x=KEY_Scan()处设置一个断点,点击Run按钮,会出现以下波形即实验成功。图7软件仿真9总结一学期的ARM课程即将结束,从一开始对ARM的完全陌生到现在的慢慢入门,其中体会到了很多ARM的妙处和实用意义。通过这次矩阵键盘的设计,使我对ARM有了更深的理解。在做课程论文时增强了对论文格式的修改,熟悉和掌握了ARM工程项目的建立与生成,在遇到程序出现错误时及时的翻书查看或者上网查找,并且在后期的ARM实训课中自己尝试在ARM开发板上进行调试,让我深刻领悟到理论和实践相结合的重要意义。只有把理论运用到实践中才能很好掌握理论和技术。所以以后不管在学什么知识都要重视理论与实践相结合。这样就好觉得其实学知识也不是那么难,更重要的是体现的学习的实际用处。10参考文献:[1]彭刚、秦志强等.基于ARMCortex-M3的STM32系列嵌入式微控制器应用实践[M].北京:电子工业出版社[2]李宁.基于MDK的STM32处理器开发应用[M].北京航空航天大学出版社,2008.[3]潘松、黄继业等.EDA技术实用教程(第一版)[M].科学出版社2002年10月[4]陆坤、奚大顺、李之权等.电子设计技术[M].四川:电子科技大学出版社.1997年.682-688,838-941[5]赵俊超.集成电路设计VHDL教程(第一版)[M].北京:北京希望电子出版社.2002年[6]杨邦文.新型实用电路制作200例[M].北京:人民邮电出版社.1998年.175-288[7]许海燕、付炎著.嵌入式系统技术与应用.机械工业出版社.2002年[8]周主力主编.ARM嵌入式系统基础教程.北京航空航天大学出版社.2005年[9]田泽主编.嵌入式系统开发与应用教程.北京航空航天大学出版社11附录主程序#includeled.h#includedelay.h#includesys.h#includekey.h#includeusart.h#includestdio.hintmain(void){intx;SystemInit();delay_init(72);//延时初始化NVIC_Configuration();uart_