ARM开发(3)基于STM32的矩阵键盘控制蜂鸣器
一 矩阵键盘控制蜂鸣器原理:
1.1 本实验实现8*7矩阵键盘上按键控制蜂鸣器响。
1.2 实验思路:根据电路图原理,找出矩阵键盘行列所对应的引脚,赋予对应的按键值,然后控制蜂鸣器响。
1.3 开发环境 : MDK5 库函数版本开发 JLINK仿真
二 实验步骤:
2.1 key.h代码:
#ifndef __KEY_H
#define __KEY_H
#include"sys.h"
#define ROWPINS GPIO_Pin_6|GPIO_Pin_5|GPIO_Pin_4|GPIO_Pin_3|GPIO_Pin_2\
|GPIO_Pin_1|GPIO_Pin_0//矩阵键盘行引脚
#define COLPINS GPIO_Pin_14|GPIO_Pin_13|GPIO_Pin_12|GPIO_Pin_11\
|GPIO_Pin_10|GPIO_Pin_9|GPIO_Pin_8|GPIO_Pin_7//矩阵键盘列引脚
void KEY_Init(void);//矩阵键盘初始化
u8 KEY_Scan(void); //按键扫描程序
#endif
2.2 key.c代码(IO配置和按键扫描):
#include "key.h"
u16 rowPin[7] = {GPIO_Pin_6,GPIO_Pin_5,GPIO_Pin_4,GPIO_Pin_3,GPIO_Pin_2,GPIO_Pin_1,GPIO_Pin_0};//行
u16 colPin[8] = {GPIO_Pin_14,GPIO_Pin_13,GPIO_Pin_12,GPIO_Pin_11,GPIO_Pin_10,GPIO_Pin_9,GPIO_Pin_8,GPIO_Pin_7};//列
void KEY_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);//使能PE端口时钟
GPIO_InitStructure.GPIO_Mode =GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//IO口速度为50MHz
GPIO_InitStructure.GPIO_Pin = COLPINS;//行端口配置
GPIO_InitStructure.GPIO_Pin =ROWPINS;//列端口配置
GPIO_Init(GPIOE, &GPIO_InitStructure);//根据参数初始化GPIOE
}
u8 KEY_Scan(void)//按键扫描按键按下的是哪一个键(本实验默认矩阵按键是1到56)
{
u8 i ,j ,k;
for(i=0;i<=6;i++)
{
GPIO_SetBits(GPIOE,rowPin[i]);
for(k=0;k<=6;k++)
{
if(k!=i)
{
GPIO_ResetBits(GPIOE,rowPin[k]);
}
}
for(j=0;j<=7;j++)
{
if(GPIO_ReadInputDataBit(GPIOE,colPin[j]) !=0)
{
return 8*i +j;
}
}
}
return 0;
}
2.2 main.c代码(实现蜂鸣器间隔1S鸣叫效果):
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "beep.h"
int main(void)
{
u8 i;
u8 key=0;
delay_init();//延时
KEY_Init(); //键盘初始化
BEEP_Init(); //蜂鸣器初始化
while(1)
{
key=KEY_Scan();//得到按键值
if(key==50)如果按键值是50,则蜂鸣器响
{
BEEP =!BEEP ;
delay_ms(1000);
}
}
}
三 接线测试:
3.1 与板子接线测试效果良好,找到按键值为50的按下去,蜂鸣器响。
3.2注意事项:蜂鸣器的文件在上次实验中,本次就不在赘述了。
ARM开发(3)基于STM32的矩阵键盘控制蜂鸣器的更多相关文章
- 基于VHDL利用PS2键盘控制的电子密码锁设计
基于VHDL利用PS2键盘控制的密码锁设计 附件:下载地址 中文摘要 摘 要:现代社会,人们的安全意识正在不断提升.按键密码锁由于其具有方便性.低成本等特征,还是大有用武之地的.但是通常的按键密码锁开 ...
- Win10 IoT C#开发 6 - 4x4矩阵键盘扫描
Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,与以往的Windows版本不同,是为物联网设备专门设计的,硬件也不仅仅限于x86架构,同时可以在ARM架构上运行. 上一章我 ...
- 4x4矩阵键盘扫描
4x4矩阵键盘扫描 Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,与以往的Windows版本不同,是为物联网设备专门设计的,硬件也不仅仅限于x86架构,同时可以在ARM架 ...
- ARM开发(2)基于STM32的蜂鸣器
基于STM32的蜂鸣器 一 蜂鸣器原理: 1.1 本实验实现1个蜂鸣器间隔1S鸣叫. 1.2 实验思路:根据电路图原理,给蜂鸣器相关引脚赋予高低电平,实现电路的导通,使蜂鸣器实现鸣叫或不鸣. 1 ...
- STM32 实现 4*4 矩阵键盘扫描(HAL库、标准库 都适用)
本文实现的代码是基于STM32HAL库的基础上的,不过标准库也可以用,只是调用的库函数不同,逻辑跟配置是一样的,按我这里的逻辑来配置即可. 1.键盘原理图: 原理举例:先把 F0-F7 内部拉高,这样 ...
- 基于全志H3芯片的ARM开发环境搭建
基于全志H3芯片的ARM开发环境搭建 最近买了个友善之臂的NanoPi M1板子,又在网上申请了个NanoPi NEO板子,这两个都是基于全志H3芯片的Crotex-A7四核ARM开发板,两个板子可以 ...
- 基于FPGA的4x4矩阵键盘驱动调试
好久不见,因为博主最近两个月有点事情,加上接着考试,考完试也有点事情要处理,最近才稍微闲了一些,这才赶紧记录分享一篇博文.FPGA驱动4x4矩阵键盘.这个其实原理是十分简单,但是由于博主做的时候遇到了 ...
- 【STM32学习笔记】STM32f407 使用4*4矩阵键盘
作者:李剀 出处:https://www.cnblogs.com/kevin-nancy/ 欢迎转载,但也请保留上面这段声明.谢谢! 写在前面: 这是本人第一次开始写博客,可能写的不是很好,也请大家谅 ...
- 嵌入式系统及应用课程设计——基于STM32的温湿度监测系统
大三上学期期末总结,嗯,没错上学期,写在新学期开始,hhh. 上学期学了一门嵌入式系统及应用的课程,期末的课程设计题目是基于STM32的温湿度监测系统. 记得刚开始做课程设计的时候,听说先设计画出原理 ...
随机推荐
- 搭建arm交叉工具链
1.将arm-linux-gcc-4.4.3压缩包,拷到home/armtoolchain下,进行压缩. 2.压缩命令:tar -xzvf arm-linux-gcc-4.4.3.tgz,解压后得到了 ...
- Linux安装JDK完整步骤
1.检查一下系统中的jdk版本 [root@localhost software]# java -version 显示: openjdk version "1.8.0_102" O ...
- Myeclipse快捷键组合
------------------------------------- MyEclipse 快捷键1(CTRL) ------------------------------------- Ctr ...
- [BZOJ2707]走迷宫
Description Morenan被困在了一个迷宫里.迷宫可以视为N个点M条边的有向图,其中Morenan处于起点S,迷宫的终点设为T.可惜的是,Morenan非常的脑小,他只会从一个点出发随机沿 ...
- 简单介绍phpcms以及phpcms如何安装?
一.先大体介绍一下phpcms,及存放位置 1.将phpcms放在www目录下的phpcms,并解压 其中,readme 没什么用,重要的是install_package; 2.打开install_p ...
- WCF学习——WCF简介(三)
一.WCF简介 1.什么是WCF? WCF的全称是:Windows Communication Foundation.从本质上来说,它是一套软件开发包,是微软公司推出的符合SOA思想的技术框架. 2. ...
- 并归排序 (Java版本,时间复杂度为O(n))
自己上网查了一下并归排序的定义,把两个排序好的数组重新组成一个排序好的数组就是并归排序, 实现的方式有和多种,自己思考了一下,用java实现了一版本,思路如下,既然是排序好的,只需要依次比较两个数组, ...
- Gist - ES6 Promise
The concept of "Promise" Promise is used to asynchronous computations. Introduction " ...
- Ext ApplicationController&ref的使用
Ext ApplicationController&ref的使用 Ext.define('app.controller.ApplicationController', { //继承 Ext.a ...
- 2017寒假零基础学习Python系列之函数之 编写函数
定义一个函数用def语句 格式为:def + 函数名.括号.括号中的参数和冒号 比如定义一个求绝对值的函数: def my_abs(x): if x>= 0: return x else ret ...