ARM开发(3)基于STM32的矩阵键盘控制蜂鸣器
来源:互联网 发布:网络套路是什么意思 编辑:程序博客网 时间:2024/05/17 19:58
基于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代码(实现矩阵键盘控制蜂鸣器):
#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注意事项:蜂鸣器的文件在上次实验中,本次就不在赘述了。
阅读全文
0 0
- ARM开发(3)基于STM32的矩阵键盘控制蜂鸣器
- ARM开发(6) 基于STM32的矩阵键盘按键触发外部中断引起蜂鸣器鸣叫
- ARM开发(4)基于STM32的矩阵键盘按键控制TM1629A LED显示
- ARM开发(10)基于STM32的通用定时器中断控制蜂鸣器响
- ARM开发(2)基于STM32的蜂鸣器
- arm中stm32中矩阵键盘的问题
- 基于fl2440开发板的按键以及蜂鸣器控制
- 基于ARM-contexA9蜂鸣器驱动开发
- 基于ARM-contexA9-蜂鸣器pwm驱动开发
- 基于ARM-contexA9蜂鸣器驱动开发
- STM32控制蜂鸣器
- 基于stm32的遥控小船(四)矩阵键盘
- 基于stm32处理器的PWM 异步驱动蜂鸣器
- ARM开发(1) 基于stm32的led跑马灯
- ARM开发(7)基于STM32的独立看门狗
- ARM开发(8)基于STM32的窗口看门狗
- ARM开发(9)基于STM32的简单四则运算计算器
- 基于S3C2440芯片的蜂鸣器驱动开发
- Tips3 编写测试用例
- nginx(虚拟主机配置、ip、域名、端口号)
- Storing and Loading Strings
- C语言 基本数据类型
- 小明の魔法计划
- ARM开发(3)基于STM32的矩阵键盘控制蜂鸣器
- 用Opencv实现简单的图片翻页
- MySQL索引底层数据结构
- JSP案例_Cookie传值
- 重学设计模式——中介者模式
- canvas 穿透效果
- 程序员最核心的竞争力是学习力
- Android 代码优化
- 文件I/O