基于ARM的智能按键设计

合集下载

基于STM32的智能轮椅硬件设计及控制系统

基于STM32的智能轮椅硬件设计及控制系统

总之,基于STM32智能家居系统的硬件设计需要充分考虑各组件的选型、电路 设计、电源和通信接口等因素,以确保系统的稳定性和可靠性。
参考内容二
智能家居控制系统设计
在基于STM32的智能家居控制系统中,我们首先需要选择适合的STM32型号, 并根据实际需求设计硬件和软件部分。在硬件方面,除了STM32微控制器外, 还包括各种传感器、执行器以及通信模块等。在软件方面,我们需要编写程序 来控制硬件设备,实现各种智能家居功能。
2、硬件模块
(1)电机驱动模块
智能轮椅需要电机驱动才能实现移动。本次演示选用无刷直流电机作为驱动对 象,采用电子调速器(ESC)进行控制。STM32通过PWM信号控制ESC,从而控 制电机的转速。为了保护电机和ESC,需要加入电流和电压检测模块,并将检 测信号通过ADC接口传入STM32。
(2)传感器模块
2、人机交互
人机交互方面,本次演示设计了一套基于触摸屏和按键的控制界面。控制界面 可以显示当前轮椅的状态信息(如速度、电量等),同时用户可以通过触摸屏 或按键对轮椅进行控制(如前进、后退、转向等)。另外,为了方便用户使用,
还加入语音识别和语音合成功能,用户可以通过语音控制轮椅(如“前进”、 “后退”等)。
硬件设计中还需要包括执行器的选择。执行器是智能家居系统的另一种重要组 件,用于控制家居设备的开关、调节设备的运行状态等。常见的执行器包括继 电器、步进电机、舵机等。本次演示选取了继电器和舵机作为执行器,通过 STM32单片机的GPIO口控制。
在硬件设计中,还需要考虑电源、通信接口等因素。电源是整个智能家居系统 的动力来源,需要根据系统各组件的功耗情况选择合适的电源。通信接口是系 统各组件之间进行信息交换的通道,可以选择有线或无线通信方式,如 Zigbee、WiFi等。

基于ARM和Linux的GNSS智能接收机设计

基于ARM和Linux的GNSS智能接收机设计

基于 ARM和 Linux的 GNSS智能接收机设计摘要:随着北斗卫星导航系统的正式服务,卫星导航系统开始广泛应用于各行各业,GNSS接收机也在不断适应各行各业的应用需求,朝着智能化、功能丰富的方向发展。

ARM处理器在嵌入式设备中应用尤为广泛,Linux系统则可以提供丰富的应用功能开发。

为了满足更多的人机交互和运算,可采用ARM完成GNSS 接收机底层硬件平台设计,利用Linux实现GNSS接收机丰富的功能。

关键词:GNSS接收机智能 ARM Linux随着北斗卫星导航系统的正式服务,卫星导航系统开始广泛应用于各行各业,GNSS接收机正在不同领域发挥着至关重要的作用,例如监测、导航、测绘等方面。

近年来,嵌入式技术发展迅速,ARM处理器具有很强的性能,在功耗、成本方面优势尤为突出,成为很多工业、消费产品的首选;Linux是支持多任务、多进程,安全,稳定,免费的操作系统,可以基于Linux开发丰富的应用功能,实现诸多类似人机交互、功能复杂的应用需求。

本文立足GNSS智能接收机,设计一种基于ARM的硬件平台,以及基于Linux的应用软件。

1 总体硬件设计方案GNSS智能接收机主要由ARM处理器、GNSS板卡、液晶屏、按键、以太网模块、WIFI模块组成。

本次设计采用的ARM处理器是Freescale ARM9产品系列的i.mx287工业级处理器,带有16KB缓存的454MHz内核,处理器性能强大,可以实现复杂应用,同时支持10/100M以太网,有UART、SPI、I2C等诸多总线接口,可以连接丰富外设,工作温度-40到85℃,满足工业级要求。

GNSS板卡采用NovAtel公司的OEM729板卡,拥有555个动态通道,能够跟踪BDS+GPS+GLONASS+Galileo的多频卫星信号,具有50Hz的数据更新率,动态厘米级,静态毫米级的定位精度。

硬件框图如下:(1)GNSS板卡向射频天线提供 3.3v的馈电,并实时处理射频天线接收的GNSS信号,计算出当前的位置、速度等信息。

基于STM32控制的智能键盘+程序

基于STM32控制的智能键盘+程序

基于STM32控制的智能键盘摘要:本设计选择STM32为核心控制元件,设计了用4个IO 口实现4*4矩阵键盘,使用C 语言进行编程。

矩阵式键盘提高效率进行按键操作管理有效方法,它可以提高系统准确性,有利于资源的节约,降低对操作者本身素质的要求。

关键词:STM32 矩阵键盘 ARM 显示电路1 引言随着21世纪的到来,以前的单个端口连接的按键已经不能满足人们在大型或公共场合的需求。

电子信息行业将是人类社会的高科技行业之一,4*4矩阵键盘设计师当今社会中使用的最广的技术之一。

4*4矩阵式键盘采用STM32为核心,主要由矩阵式键盘电路、显示电路等组成,软件选用C 语言编程。

STM32将检测到的按键信号转换成数字量,显示于数码管上。

该系统灵活性强,易于操作,可靠性高,将会有更广阔的开发前景。

2 总体设计方案该智能键盘电路由ARM 最小系统,矩阵键盘电路和显示电路组成,在常规的4*4矩阵键盘的基础上,通过改进实现了用4个IO 口完成4*4矩阵键盘。

2.1 总体设计框图本电路主要由3大部分电路组成:矩阵键盘电路、ARM 最小系统电路、按键显示电路。

其中ATM 最小系统主要由复位电路和时钟电路组成。

电路复位后数码管显示字符“—” 表示没有按键,显示电路由STM32的PD0—PD7来控制数码管显示是哪个按键按下。

总体设计方框图,如图1所示。

图1总体设计方框图STM32矩阵键盘电路时钟电路复位电路按键显示电路3 智能键盘设计原理分析3.1 STM32复位和时钟电路设计此电路主要是复位电路和时钟电路两部分,其中复位电路采用按键手动复位和上电自动复位组合,电路如图2(右)所示:其中14脚为STM32的复位端。

时钟电路如图2(左)所示:晶振采用的是8MHz和32.786KHz,8MKz分别接STM32的12脚和13脚,32.786KHz分别接STM32的8脚和9脚。

图2STM复位和时钟电路设计3.2 矩阵键盘电路的设计该电路的四个端子分别接STM32的PB12—PB15,电路如图3所示。

基于ARM的矩阵键盘设计及其linux驱动实现

基于ARM的矩阵键盘设计及其linux驱动实现

据 ,调用l i n u x 的p o l 】w a i t 函 数 等 待 ; 如 果 有按键数据 ,则s e l e c t 函数 会 立刻 返 回 。 3 . 2 中断 处 理 及 键 盘 扫 描 程序 中断 处理 函数 的名称 为 上面 注册 的b u t t o n s i n t e r r u p t 。具体程 序流 程如 图3 所 示 。 当 有 按 键 按 下 时 ,该 键 所 在 行 列 导 通 。 列 的低 电 平 将 该 行 电平 拉 低 , 进 而 触 发 中 断 。 然 后 , 进 入 中 断 处 理 函数 。 由于 按 键 存 在 抖 动 的问题 ,单靠一次 中断的触发就 判定有按键 按 下 是 不 可 靠 的 ,所 以 采 用 定时 器 延 时 1 0 m s 后 再进 入 键 盘 扫 描 函 数 。 本 设 计 的 键 盘 扫 描 程 序 采 用 先 确 定 行 再 确 定 列 的 方 法 ,最 后对 行 列 进 行 一 定 的运 算 即 得 键 值 。 首 先 确 定 行 :逐 行 扫 描 ,判 断 是 否 有 行 引 脚 为 低 电 平 。 若 有 , 保 存 该 行 值( r o w ) 。 继 续 确 定 列 : 逐 列 置 低 电 平 , 当 该 列 为 按 下 所 在 列 时 , 才 会 使 该 行 再 次 为 低 电 平 ,从 而 确 定 列 ( c o l u m n ) 。 再 对 行 列 进 行 运 算 :k = r o w * 4 + c o l u m n , 则 将 矩 阵 键 盘 的每 键对应 为键号O 一1 9 。 键 盘 布 局 为 图2 所 示 形 式 后 ,我 们 只 取 矩 阵 键 盘 的 前 l 8 键 ( 键 号 0 —1 7 ) ,键值保存 为k + 1 。对 于E n t 键 , 通 过 ) & b u t t o n i r q s l J ) 。I R Q T Y P E E D G E 按 下 的 时 间 长 短 区 分 是 确 定 功 能 还 是 开 关 机 F A L L I N G 意 思 为 下 降 沿 触 发 。 然 后 再 进 行 行 功 能 , 按 下 时 间 小 于 0 . 5 秒 为确 认 功 能 , 按 列 初 始 化 : 设置 行 线 为 中 断 ,使 能 上 拉 , 在 下 时 间 大 于 1 . 6 秒 为 开 关 机 功 能 , 时 间存 0 . 5 l i n u x 中其 表 达 方 式 为 : 秒一 1 . 6 杪 的视 为 无 效 操 作 。 计 时 方 法 为 : s 3 c 2 4 1 0 g p i o c f g p i n ( b u t t o ni r qs L i j . 若 该 行 仍 为 低 电 平 且整 数 c n L 小于 l 7 0 0 : 延

基于ARM的一种智能倒车系统

基于ARM的一种智能倒车系统

基于ARM的一种智能倒车系统摘要:本文介绍了以m0为核心的arm lpc11c14的主要功能特性,给出了用lpc11c14和tm8835组成的电路来设计智能倒车系统的具体办法。

本智能倒车系统应用在带有电子稳定功能的汽车上。

关键词:lpc11c14;tw8835;can总线;智能倒车系统中图分类号:tp31 文献标识码:a 文章编号:1674-7712 (2013)02-0046-02随着人们生活水平的提高,汽车的普及率越来越高,越来越多的人享受汽车带来的便利,但开车容易,倒车,停车难。

面对日益拥挤的停车位,如何能安全方便地把车停在规定的停车位,对有些车主来讲是一个难题。

智能倒车系统能有效地解决这个难题。

其工作原理是从原车obd-ii数据检测口通过can总线协议读取原车方向盘角度传感器的方向盘角度数据,雷达数据,根据车长车宽规划出倒车的运动轨迹线,并将此轨迹线和倒车摄像头的影像合成,输出在屏幕上显示,以此来辅助车主轻松泊车。

一、系统设计本系统主要由两大模块组成,一个是系统控制模块,一个是图像处理模块。

系统控制模块由nxp公司生产的lpc11c14完成,图像处理模块由techwell公司生产的tw8835完成。

(一)芯片的选型本系统是车载系统,所以在选择芯片时要考虑到功耗问题,集成度高,体积小的芯片是首选,同时图像的清晰度也是考虑的重点。

lpc11c14是nxp公司生产的运行速度高达50mhz,采用cortex-m0内核的32位微处理器,m0系列的arm是目前市面上最小巧,最低功耗及最有能效的arm。

它内含32kb片内flash程序存储器、8kb 片内sram、可通过片内引导装载程序软件来实现在系统编程(isp)和在应用编程(iap),方便了系统的调试;集成了pmu (电源管理单元),能最大降低系统的功耗;集成了1路can控制器,简化了传统单片机外接can控制器和can收发器的复杂外围电路内部,外部只需要接一个can收发器就可以完成对can数据的读取;rom集成供can和canopen标准使用的初始化和通信的api函数,用户可直接调用,兼容can2.0a/b,传输速率高达1mbit/s,能为can设备节点提供强大的信息和数据处理能力,使得can通讯模块的设计更加方便。

基于Arm7的人机交互系统在智能脱扣器中的应用

基于Arm7的人机交互系统在智能脱扣器中的应用
CU/Ru h a, iu T AN 耽 u n, ZHAO u e , I a Y li WANG o Y u, ZHAO Li
( b i nvr t o eh ooy Taj 0 0, hn ) He e U i s y f c n l , i i 3 0 C ia e i T g nn 1 3
将大 电压信号转换为小 电流信号 , 经电压 采样 电 路 的 电流/ 电压 转 换 、 波 、 滤 隔离 后 输 出合 适 的 电
压 由多 路转 换 开关送 给 A D转 换器 ; 电流 互 感 / 经
外 围 电路 组 成 的 。它 可 对 电 网信 号 进 行 实 时 监 测、 数据 处 理 、 障 判 断 , 故 当判 断 出有故 障信 号 时 , 进行 故 障处 理 , 据保 护特 性 发 出脱扣 信 号 , 断 根 使 路 器分 闸 ; 通过 现 场 总线 使 智 能 脱 扣 器 与上 位 机 通信 , 而 实 现 “ 从 四遥 ” 能 ; 过 人 机 交 互 模 块 功 通 实 时 显示 电 网参 数 、 开关 状 态 、 障查 询 、 护参 故 保
扣器 中的应用 。该 系统可实现实 时监 控 、 障诊断 、 故 参数 整定 、 障报警 、 障记 录等。 故 故 关键词 :智能脱扣 器 ; 人机 交互系统 ;实时监控 ;参数整定 中图分类 号 : M 5 1 文献标志码 :B 文章编号 :10 -5 1 2 1 )30 1 - T 6 0 15 3 (0 1 2 -0 80 4
摘 要 :介绍 了以 L C 24为主芯 片 , D 7 A、MG 4 1 8液 晶模 块 、6只按键 、 P 29 A 54 S 2 0 2 1 崔 芮 向 教 研 为 电 器 C D、 A A C E,

基于ARM9的智能_能谱仪器硬件平台的设计

基于ARM9的智能_能谱仪器硬件平台的设计

第28卷 第3期核电子学与探测技术V ol.28 N o.32008年 5月Nuclear Electr onics &Detection T echnolo gyM a y. 2008基于ARM9的智能 能谱仪器硬件平台的设计洪天祺,方 方(成都理工大学应用核技术与自动化工程学院,四川成都610059)摘要:在分析当前流行的嵌入式硬件平台的基础上,结合三星S3C2410A 处理器的高性能、低功耗,设计了智能 能谱仪器的硬件平台,并着重分析了硬件平台的存储器、L CD 、键盘控制器的电路设计,为智能 能谱仪器硬件平台提供了新的解决方案。

关键词:A RM 9,S3C2410A , 能谱仪中图分类号: T L81 文献标识码: A 文章编号: 0258 0934(2008)03 0650 04收稿日期:2006 07 08基金项目:四川省高新技术成果转化重点实施项目。

作者简介:洪天祺(1980.6-),男,汉族,四川省人,硕士研究生,研究方向:辐射防护传统的智能 能谱仪器硬件平台多选用单片机作为系统的控制核心,嵌入式 能谱仪器软件系统功能简洁,系统的软硬件集成化不高、开发周期长、限制了仪器的智能化发展。

ARM 9微处理器与之相比在满足便携式设备体积小、低功耗、低成本的需求下,还具有以下特点:采用5级整数流水线,指令执行效率高;提供1.1M IPS/M H z 的哈佛结构;支持32位ARM 指令集和16位Thumb 指令集;支持32位的高速AM BA 总线接口;全性能的MM U (M em eor y M anag em ent U nit 内存管理单元),支持Linux 、Window s CE 和Palm OS 等嵌入式操作系统。

将ARM9微处理器引入 能谱仪器的研制,更好地满足了智能 能谱仪器的便携性和智能化的需求。

因此本系统采用三星电子公司的S3C2410A 嵌入式处理器作为系统的控制核心。

基于Linux的小键盘驱动及软硬键盘的映射

基于Linux的小键盘驱动及软硬键盘的映射

第22卷第3期2008年6月江苏科技大学学报(自然科学版)Journa l o f Jiangsu U n i ve rsity o f Science and T echno l ogy(N a t ura l Sc i ence Ed iti on)V o1122N o13Jun.2008基于L inux的小键盘驱动及软硬键盘的映射韩斌1,2,刘伟民1,黄刚1,王士同2(1.江苏科技大学电子信息学院,江苏镇江212003)(2.江南大学信息工程学院,江苏无锡214122)摘要:研究了基于ARM9-L i nux的键盘驱动程序开发和利用Q t/Embedded界面开发工具的软键盘设计方法.在此基础上,实现了物理键盘和软键盘的映射,可通过物理键盘或软键盘对仪器进行控制,方便了用户操作.该方法已在某智能仪器的开发中成功应用.关键词:ARM-L Inux系统;键盘驱动;QT界面;键盘映射中图分类号:TP368文献标识码:A文章编号:1673-4807(2008)03-0053-04D esi gn of keyboard dri ver and keyboard m appi ng based on L i nuxHAN B i n1,2,LIU W ei m i n1,HUANG Gang1,WANG Sh itong2(1.School of E lectron i cs and Infor mati on,Jiangsu Un i versity of Scie n ce and Technol ogy,Zh e n jiang J i angs u212003,Ch i na)(2.S c hool of Infor m ation,Sou t h ern Yangts e Un i versity,W uxi J i angs u,214122,Ch i na)Abstract:A design m ethod of keyboard dri v er based on ARM9-Linux and so ft w are-based keyboar d by Q t/E m-bedded tools is introduced,On the basis,the physical keyboar d and so ft w are-based keyboard m appi n g are rea-l ized.The i n str um ent can be operated by usi n g the physical keyboar d or so ft w are-based keyboard conveniently. The m ethod has been successfully applied to the developm ent o f an i n telli g ent instru m en.tK ey words:AR M-L i n ux syste m;keyboar d dri v er;QT i n terface;keyboard m app i n g0引言随着计算机技术、机械制造技术和自动化技术的紧密结合,电子测量技术和电子测量仪器产生了新概念和新发展趋势.仪器的性能更加优异,测量性能更加强大,仪器的测量精度、灵敏度、范围都达到了前所未有的高度[1].特别是近年来,嵌入式技术的快速发展,由工业控制计算机完成的许多功能现在都可以移植到嵌入式系统上实现,而且性能更稳定,成本更低廉,更能符合工业现场的要求,嵌入式系统丰富的软硬件资源、便捷的开发手段吸引了越来越多的测量仪器基于嵌入式系统进行研制开发[2-4].文中设计了一个基于ARM-L i n ux系统的智能测量仪器的键盘控制模块,采用614寸触摸屏和自制小键盘,在编写键盘驱动程序的基础上,实现了物理小键盘与触摸屏软键盘的映射.1系统的硬件平台与软件平台嵌入式系统是整个测量仪器的核心,包括硬件部分和软件部分:硬件部分计采用Sa m sung公司的处理器S3C2410,内部集成ARM公司的ARM920T微处理器,最高主频达203MH z,扩展了64M、32位FLAS H和64M、32位SDRA M,外围资源丰富.软件系统采用Linux216内核的操作系统,它是源代码开放的嵌入式操收稿日期:2007-09-04作者简介:韩斌(1968-),男,汉族,江苏海安人,博士研究生,副教授,研究方向为嵌入式、图像处理.E-m ai:l cnhanb i n@yahoo.co m作系统,为各种外围模块提供了良好的支持.2 小键盘驱动的实现211原理图图1 硬件原理图F ig .1 B lock diagra m of hard w are图2 小键盘驱动模型图F ig .2 K eyboard -dr i ver m ode l 按键较少时,可以使用矩阵式小键盘,有键按下时,触发外部中断.其硬件原理图如图1所示.外部中断口E I N T11、E I N T19分别与GPG3、GPG11I/O 口复用;KSCAN0与GPE11口复用.外部中断口各由上拉电阻接313V 直流电压,工作在低电平触发模式.212 驱动编程当有键被按下时,触发一个外部中断.中断的处理函数中,使用内核打印函数进行信息提示,方便驱动程序的调试[5].小键盘驱动模型如图2所示.键盘的驱动程序可以分为如下几个部分:1)键盘驱动接口驱动程序提供一系列的接口供外部应用程序使用,驱动程序的接口都定义在str uct file_opera -ti o ns 结构体中.本文实现的驱动程序接口定义为:static str uct file_operati o ns key_fops={o wner : T H IS_MODULE ;open: key_open ;read : key_read ;re lease : key_release ;}2)驱动程序的初始化对GPGO /I 和GPFO /I 的相关寄存器进行配置,实现键盘初始化,并设置中断使能.如设置端口G 的控制寄存器:w ritel(read l(gpgcon)&0xffbfffb,f gpgcon),即把端口G 配置成输入口,且响应0号和2号外部中断.驱动程序要能够使用必须注册进内核,在L i n ux 下的系统调用register_chr dev(0,DE V I C E _NAME ,&key_f o ps)完成.同时要创建一个与键盘对应的设备文件才能够访问该设备,通过dev fs_mk_cdev(MKDE V (key M a -j o r ,KEYRA W _M I N OR),S_I FC HR |S_I R USR,"key /0")创建一个键盘设备,设备名称为//dev /key /00.由于键盘按键是通过中断来捕捉的,因此驱动程序中需要注册中断函数.中断注册使用request_irq(k ->irq_no ,&key_irq ,SA_I N TERRUPT ,"s3c2410-key",NULL)来完成,在中断函数中根据接受的中断号k->ir q_no 能够执行相应的中断处理例程&key_irq .3)中断服务函数.键盘中断被接收后,根据不同的按键转去执行相应的中断服务例程.4)驱动接口函数str uct file_operati o ns 结构体中,key_open()用于打开键盘设备,key_re lease()用于关闭键盘设备,key_read()实现了向用户空间传送I /O 口数据寄存器数值的功能,据此可判别是哪个按键被按下.在驱动程序中必须对这些接口进行实现.213 建立交叉开发环境并测试驱动1)安装交叉开发环境,使用cross-31312.bar .bz2生成ar m -li n ux -gcc 工具.2)配置内核,以模块方式添加键盘驱动.54江苏科技大学学报(自然科学版)2008年3)编译内核,生成key .ko 键盘驱动模块.4)挂载驱动模块:ins m od key .ko .5)交叉编译测试程序并下载运行./key_tes,t 以检测按键驱动程序是否可以正常工作.3 QT界面的软按键的实现图3 Q t /E 的实现结构F ig .3 Q t/E structure Qt/E 是挪威tr o lltech 公司专门针对嵌入式GU I 开发而设计的一个工具包.使用Q t/E 开发的应用程序界面清晰美观、操作方便[6].图3为Q t/E 的实现结构[7-8]:311 QT 开发环境的建立本文建立QT 开发环境使用Q t/Embedded 31317、Qt/Embed -ded 31317for X11两个软件包.Qt/Embedded 31317for X11软件包提供一个uic 工具和designer 开发工具;Q t/E m bedded 31317软件包主要是生成能够在开发平台上运行的Q t 库和q m ake 工具.在搭建QT 交叉开发环境时需要设置如下几个变量:QT2DI R 和QTED I R ,分别指向Q t/Embedded 31317for X11软件包和Q t/E m bedded 31317软件包.搭建步骤分为两步:1)编译Q t/E m bedded for X11生成u ic 工具# cd $QT2D I R# ./configure )no-x ft# m ake2)编译Q t/E m bedded 31317生成qt 交叉开发的库文件#./configure )xplatfor m linux-ar m -g++-no-x ft -no-qvfb-depths 8,16,32#m ake至此,QT 的开发环境搭建完毕,可以在$QTEDI R /bi n 目录下看到生成的qmake 、uic 等工具,$QTE -DI R /lib 目录下生成了在开发板上运行所需要的QT 库.在$QT2DI R /b i n 目录下得到desi g ner 集成开发环境.312 QT 界面软键盘设计在触摸屏中实现软按键,需要定义各按键的坐标、位置、名称等信息.本文软键盘中按键的设计使用QT 中的QPushButton 类定义.对于每一个按键所触发的动作采用QT 的信号和插槽机制来实现.例如:对于按钮pushbu tton 的单击(clicked)事件,它触发的动作写在函数action()里,通过connect(pushbutton ,SI G -NAL(clicked()),th is ,SLOT (action()))建立事件与动作的连接.按键的设计如下:m y m ain w indo w::m y m ainw indo w (QW i d get*paren,t const char*na m e):QD i a l o g(paren,t na m e){ b=ne w QPushButton("END",th is);b->set G eo m etry(485,390,100,45);b->set F ont(QFont("T i m es",18,QFon:t :Bold));connect(b3,SI G NAL(clicked()),this ,SLOT(m yex itsl o t()));}4 QT 界面按键与物理键盘按键的映射以上分别实现了物理按键和触摸屏软按键.下面以物理按键K1与触摸软按键b3的连接为例,介绍一种软、硬键盘的映射方法.物理键盘与软键盘的映射通过如下4步完成,如图4所示:1)打开键盘设备.vo i d my m a i n w i n dow ::init()55第3期 韩 斌等:基于L i nux 的小键盘驱动及软硬键盘的映射图4 软硬键盘映射流程图F ig .4 F l ow chart of so ft keyboard m app i ng {key_fd=open(KE Y _DEV,O_RDWR);}2)读取与按键相关I/O 口数据寄存器.read(key_fd ,(char *)&bu,f sizeof(buf))3)根据读取数据判断哪个物理按键被按下.if(buf==0x00bf){e m i:t :shutdo wn();,,;}当f 口数据寄存器为00bf 时,可以判断出是K1键按下,执行相应功能.4)发消息连接到与该物理键对应的软键的插槽中,触发软按键的插槽里的动作.通过物理键盘的按键触发对应软键的动作,从而实现两者的映射.connect(th is ,SI GNAL(shutdo wn()),th is ,SLOT(myex itslot()))connect()将shutdo w n 信号与b3软键的插槽myex itslot()相关联,这样当按下K1键后,系统自动调用软键b3的插槽,实现b3的相应动作,从而实现物理按键K1与触摸键b3的连接.其他按键的映射依次类推.5 结 论本文提出了物理键盘的驱动及触摸屏软键盘设计方法,并实现了物理小键盘与触摸屏软键盘的映射.物理键盘与触摸屏软键盘的映射,方便了用户操作.此方法已在某基于嵌入式系统的测量仪器中得到应用.参考文献(References)[1] 汪晓东.21世纪电子测量仪器及自动测试系统的新概念和新趋势[J].电子测量与仪器学报,2005,19(1):78-81.W ang X iaodong .N e w concept and ne w techno l ogy trend of e l ectronictest i nstru m ents and au t oma ti c test systems in 21century[J].Journal of E lectronicM easure m ent and Instru m ent ,2005,19(1):78-81.(i n Chi nese)[2] 杨晔,刘镇.嵌入式操作系统L C /O S Ò的移植和应用[J].华东船舶工业学院学报:自然科学版,2003,17(2):35-39.Y ang Y e ,L i u Zhen .Po rti ng and appli cati on of e mbedded operati on syste m L C /OS Ò[J].Journal of East Chi na Shi p building Instit ute :N atural Scie nce Ed ition ,2003,17(2):35-39.(i n Chi nese)[3] 陈峰,李滨滔,戈志华.基于S3C2410的嵌入式L inux 系统构建[J].现代电子技术,2007(24):55-60.Chen Feng ,L i B i ntao ,G e Zhi hua .Construc tion of the embedded L inux syste m based on S3C2410[J].M odern E lectron ic T echn i que ,2007(24):55-60.(in Ch i nese)[4] 杨建伟,杨燕翔.基于S3C2410处理器的L inux 移植[J].信息技术,2007(8):97-100,103.Y ang Ji an w e,i Y ang Y anx i ang .L i nux transplant based on the processor o f S3C2410[J].Infor m ation T echnology,2007(8):97-100,103.(i n Ch i nese)[5] 刘淼.嵌入式系统接口设计与L i nux 驱动程序开发[M ].北京:北京航空航天大学出版社,2006.L iuM i ao .Embedde d Syste m Interface D esi gn and Linux D river D evel opment [M ].Beiji ng :Beiji ng U nivers i ty of A eronauti cs and A stronauti cs Press ,2006.(i n Chi nese)[6] B l anchette G,Su mmerfieldM.C++GU I Q t3编程[M ].北京:北京航空航天大学出版社,2006.B l anchette G,Su mmerfieldM.C ++GUI Q t 3P rogra mm i ng [M ].Beiji ng :Beiji ng U ni ve rsity o f A eronautics and A stronauti cs P ress ,2006.(i n Ch i nese)[7] 王存健,张建正.嵌入式L i nux 下Q t/Embedded 的应用[J].计算机技术与发展,2006,16(11):179-181.W ang Cunji an ,Zhang Ji anz heng .A pplication of Q t/E m bedded on e m bedded L i nux[J].Co mputer T echnology an d D evelop-ment ,2006,16(11):179-181.(i n Chi nese)[8] 李杰,曹宇,朱坚,等.基于嵌入式L i nux 的矩阵键盘设计与实现[J].现代电子技术,2006,239(24):81-83.L i Ji e ,Cao Y u ,Zhu Ji an ,et a.l D esi gn and i m ple m ent of ma trix keyboard based on e mbedded L i nux[J].M odern E lectron ic T echn i que ,2006,239(24):81-83.(i n Ch i nese)(责任编辑:曹 莉)56江苏科技大学学报(自然科学版)2008年。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

智能按键设计专业:学号:姓名:目录一、设计要求 (1)二、设计原理 (1)1、功能描述 (1)2、总体设计 (1)2.1矩阵键盘原理 (1)2.2系统的总体设计 (1)2.3主要软件程序 (1)3、硬件电路设计 (2)3.1STM32功能特性概述 (2)3.2复位电路设计 (2)3.3时钟电路设计 (3)3.4矩阵键盘电路设计 (3)3.5LED显示电路 (4)三、总结与体会 (5)附录 (6)智能按键设计一、设计要求1、使用四个IO 控制4*4矩阵键盘。

2、使用最简电路,不使用芯片。

二、设计原理 1、功能描述电子信息行业将是人类社会的高科技行业之一,4*4矩阵键盘设计师当今社会中使用的最广的技术之一。

鉴于此,研究人员通过不断的实验与研究开发,最终研发出来采用矩阵键盘设计的N 个端口连接N*N 个按键,来满足人们的需求,本次设计内容是4*4矩阵式键盘识别技术,不使用芯片,以ARM 为控制核心设计一个4*4的键盘和LED 数码管的显示电路。

2、总体设计2.1矩阵键盘原理在键盘中按键数量较多时,为了减少I/O 口的占用,通常将按键排列成矩阵形式。

在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。

这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。

由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。

矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,上图中,列线通过电阻接正电源,并将行线所接的单片机的I/O 口作为输出端,而列线所接的I/O 口则作为输入。

这样,当按键没有按下时,所有的输入端都是高电平,代表无键按下。

行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。

并且以LED 灯作为显示系统,这样就可以很清楚的看出来控制效果。

2.2系统的总体设计整个系统的构成并不使用芯片,只是用ARM 的最小系统,LED 显示模块,和4*4矩阵键盘组成,系统框图如图1所示:图12.3主要软件程序在嵌入式系统开发中除了必要的硬件外,同样离不开软件,Keil 软件是目前最流行的开发嵌入式系统的软件。

Keil 是美国Keil Software 公司出品的51系列兼容单片机语言软4*4 矩 阵 键 盘 ARM 最 小 系 统 LED 显 示 模 块件开发系统,与汇编相比,语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。

用过汇编语言后再使用C来开发,体会更加深刻。

Keil软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。

另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。

在开发大型软件时更能体现高级语言的优势。

并且在编程方面,国产的一款Tk软件可以使用多种语言编程,并且可以配合keil软件使用,编程时非常方便。

3、硬件电路设计3.1STM32功能特性概述STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex -M3内核。

按性能分成两个不同的系列:STM32F103“增强型”系列和STM32F101“基本型”系列。

增强型系列时钟频率达到72MHz,是同类产品中性能最高的产品;基本型时钟频率为36MHz,以16位产品的价格得到比16位产品大幅提升的性能,是16位产品用户的最佳选择。

两个系列都内置32K到128K的闪存,不同的是SRAM的最大容量和外设接口的组合。

时钟频率72MHz时,从闪存执行代码,STM32功耗36mA,是32位市场上功耗最低的产品,相当于0.5mA/MHz。

图 2 STM32B2M103XX3.2复位电路设计在该设计中使用了手动复位和上电自动复位组合电路,复位开关通过复位电路产生复位信号的优点是信号的波形比较好,复位电路可以去掉开关的抖动。

复位电路原理图如图3所示:图3复位电路3.3时钟电路设计RTC是STM32的脉搏,是单片机的驱动源。

使用任何一个外设都必须打开相应的时钟。

这样的好处就是,如果不使用一个外设的时候,就把它的时钟关掉,从而可以降低系统的功耗,打到节能,实现低功耗的效果。

STM32的时钟可以由以下3个时钟源提供:1、HSI:高速内部时钟信号stm32单片机内带的时钟(8M频率)精度较差。

2、HSE:高速外部时钟信号精度高,来源(1)HSE外部晶振/陶瓷谐振器(晶振);(2)HSE用户外部时钟。

3、LSE:低速外部晶体32.768KHZ,主要提供一个精确地时钟源,一般作为RCC时钟使用。

图4晶振电路3.4矩阵键盘电路设计4×4矩阵式键盘电路图如图4所示,该图中左边的接口连接在单片机的P3口,低四位接列线,高四位接行线。

当要对键盘进行扫描时,可以一行一行进行扫描。

假设要扫描第二行,我们只需先让第二行为低电平,即P3.2为低电平,其余三行为高电平,然后读取列线上的电平,如果第二行的5号键按下,那么第二列的电平变为低电平,即P3.6为低电平,这样每个键按下都会改变P3口的电平,且不同键按下所对应的P3口的电平不同,这样便可以使单片机正确识别有无键按下以及哪个键按下。

图5 矩阵键盘电路3.5LED显示电路数码显示电路图如图8所示,该电路由一个LED数码显示管和一个集成电阻器组成。

其中显示块由若干发光二极管组合而成,图中的“8”字形显示块由8个发光二极管组成,每个二极管显示一字段,有共阴极和共阳极两种形式。

如果将各发光二极管的阳极连接在一起成为公共电极,则称为共阳极接法,如果将各发光二极管的阴极连接在一起成为公共电极,则称为共阴极接法。

图6共阳极接法图7共阴极接法图中所用的集成电阻器,就是集成了7个电阻,在此与显示块连接是为了保证显示块能够正常显示。

图左边的端口分别接单片机上P0口的低七位,P0口不同的电平对应数码管不同的显示。

图5用的是阳极LED数码管,所以另一脚接电源,若为阴极LED数码管,则要接地图8 LED显示电路三、总结与体会通过几天的努力,设计终于做了出来,平时在课堂上老师带着编写程序总感觉很简单,下课自己有没有做很多的练习,真正去做的时候才发现原来什么事情并不是想像中的那么简单,实践跟理想总是差的很远。

这次的设计,首先用了很长时间查阅了相关智能按键的设计资料,有了大致思路后确定的总体设计方案。

有了总体设计方案之后,方向明确了许多,由于以前大致做过单片机的矩阵键盘设计,在原理方面并没有遇到太多的问题,但在写程序的时候才发现,原来问题并没有想象中的那么简单,在写程序的时候,由于对有些指令不是很熟悉,所以出现了很多小错误,后来耐着性子一条一条指令检查,费了好大劲,最终总算是把程序写了出来。

以后一定要多动手,多编写程序来熟悉各种指令。

经过这次设计,我知道了什么事情不能眼高手低,一定要自己亲手去做做,多去实验积累经验,以后再去做才会得心应手。

附录Main.c程序如下:#include "stm32f10x.h"#include "key.h"int main(void){SystemInit();Key_GPIO_Config();while(1){u32 i;i=Key_Scan();{switch(i){case 1:GPIO_WriteBit(GPIOB, GPIO_Pin_1,(BitAction)0);break;case 2:GPIO_WriteBit(GPIOB, GPIO_Pin_2,(BitAction)0);break;case 3:GPIO_WriteBit(GPIOB, GPIO_Pin_3,(BitAction)0);break;case 4:GPIO_WriteBit(GPIOB, GPIO_Pin_4,(BitAction)0);break;case 5:GPIO_WriteBit(GPIOB, GPIO_Pin_5,(BitAction)0);break;case 6:GPIO_WriteBit(GPIOB, GPIO_Pin_6,(BitAction)0);break;case 7:GPIO_WriteBit(GPIOB, GPIO_Pin_7,(BitAction)0);break;case 8:GPIO_WriteBit(GPIOB, GPIO_Pin_8,(BitAction)0);break;case 9:GPIO_WriteBit(GPIOB, GPIO_Pin_9,(BitAction)0);break;case 10:GPIO_WriteBit(GPIOB, GPIO_Pin_10,(BitAction)0);break;case 11:GPIO_WriteBit(GPIOB, GPIO_Pin_11,(BitAction)0);break;case 12:GPIO_WriteBit(GPIOB, GPIO_Pin_12,(BitAction)0);break;case 13:GPIO_WriteBit(GPIOB, GPIO_Pin_13,(BitAction)0);break;case 14:GPIO_WriteBit(GPIOB, GPIO_Pin_14,(BitAction)0);break;default:;}}}}Key.c程序如下:#include "key.h"void delay(u32 nCount){for(; nCount != 0; nCount--);}void Key_GPIO_Config(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_GPIOB,ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; //输出的最大频率为10HZ GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化GPIOA端口GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化GPIOB端口}u32 Key_Scan(void){u32 temp,k=0;{GPIO_Write(GPIOA,0xffff);delay(100);temp=GPIO_ReadOutputData(GPIOA);switch(temp){case 0xfe:delay(100);if(temp==0xfffe) k=1;break;case 0xfd:delay(100);if(temp==0xfffd)k=2;break;case 0xfb:delay(100);if(temp==0xfffb)k=3;break;case 0xf7:delay(100);if(temp==0xfff7)k=4;break;default:k=0;}GPIO_Write(GPIOA,0xfffe);delay(100);temp=GPIO_ReadOutputData(GPIOA);switch(temp){case 0xfc:delay(100);if(temp==0xfffc)k=5;break;case 0xfa:delay(100);if(temp==0xfffa)k=6;break;case 0xf6:delay(100);if(temp==0xfff6)k=7;break;default:k=0;}GPIO_Write(GPIOA,0xfffd);delay(100);temp=GPIO_ReadOutputData(GPIOA);switch(temp){case 0xf9:delay(100);if(temp==0xfff9)k=8;break;case 0xf5:delay(100);if(temp==0xfff5)k=9;break;default:k=0;}GPIO_Write(GPIOA,0xfffb);delay(100);temp=GPIO_ReadOutputData(GPIOA);if(temp==0xfff3)delay(100);if(temp==0xfff3) k=10;GPIO_Write(GPIOA,0xfff0);delay(100);temp=GPIO_ReadOutputData(GPIOA);switch(temp){case 0xf1:delay(100);if(temp==0xfff1)k=11;break;case 0xf2:delay(100);if(temp==0xfff2)k=12;break;case 0xf4:delay(100);if(temp==0xfff4)k=13;break;case 0xf8:delay(100);if(temp==0xfff8)k=14;break;default:k=0;}}return(k);}。

相关文档
最新文档