欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    STM32-矩阵键盘程序.docx

    • 资源ID:96537934       资源大小:41.58KB        全文页数:18页
    • 资源格式: DOCX        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    STM32-矩阵键盘程序.docx

    STM32-矩阵键盘程序 4×4 LtD/*-* 矩阵键盘驱动* 文 件: keyboard.c* 编写人: LiuHui* 描述: 扫描 4x4 矩阵键盘输入,并返回键值* 适用范围: 驱动承受 ST3.5 库编写,适用于STM32F10x 系列单片机* 所用引脚: PA0-PA7* 编写时间: 2021 年 5 月 20 日-*/#include “stm32f10x.h“ #include “keyboard.h“ #include “dealy.h“/*- 矩 阵 键 盘 初 始 化-* 功能: 初始化stm32 单片机 GPIO /PA0-PA7* 参数传递:* 输入: 无* 返回值:无-*/void KeyBoard_Init(void)GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3;GPIO_InitStructure.GPIO_Speed= GPIO_Speed_10MHz; GPIO_InitStructure.GPIO_Mode= GPIO_Mode_Out_PP;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;GPIO_InitStructure.GPIO_Speed= GPIO_Speed_10MHz; GPIO_InitStructure.GPIO_Mode= GPIO_Mode_IPD;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_SetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3);GPIO_ResetBits(GPIOA,GPIO_Pin_4|GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7);/*-矩 阵 键 盘 扫 描-* 功能: 扫描矩阵键盘,并返回键值* 参数:* 输入: 无* 返回: 有键按下返回该键值* 无键按下时那么返回 0-*/u8 Read_KeyValue(void)u8 KeyValue=0; if(GPIO_ReadInputData(GPIOA)&0xff)!=0x0f)Delay_ms(10); if(GPIO_ReadInputData(GPIOA)&0xff)!=0x0f)GPIO_SetBits(GPIOA, GPIO_Pin_0); GPIO_ResetBits(GPIOA,GPIO_Pin_1|GPIO_Pin_2 | GPIO_Pin_3); switch(GPIO_ReadInputData(GPIOA)&0xff)case 0x11: KeyValue = 1; break; case 0x21: KeyValue = 5; break; case 0x41: KeyValue = 9; break; case 0x81: KeyValue = 13;break;GPIO_SetBits(GPIOA, GPIO_Pin_1);GPIO_ResetBits(GPIOA, GPIO_Pin_2 | GPIO_Pin_3);GPIO_Pin_0|switch(GPIO_ReadInputData(GPIOA)&0xff)case 0x12: KeyValue = 2; break; case 0x22: KeyValue = 6; break; case 0x42: KeyValue = 10;break; case 0x82: KeyValue = 14;break;GPIO_SetBits(GPIOA, GPIO_Pin_2);GPIO_ResetBits(GPIOA, GPIO_Pin_1 | GPIO_Pin_3);GPIO_Pin_0|switch(GPIO_ReadInputData(GPIOA)&0xff)case 0x14: KeyValue = 3; break; case 0x24: KeyValue = 7; break; case 0x44: KeyValue = 11;break; case 0x84: KeyValue = 15;break;GPIO_SetBits(GPIOA, GPIO_Pin_3);GPIO_ResetBits(GPIOA, GPIO_Pin_1 | GPIO_Pin_2);GPIO_Pin_0|switch(GPIO_ReadInputData(GPIOA)&0xff)case 0x18: KeyValue = 4; break; case 0x28: KeyValue = 8; break; case 0x48: KeyValue = 12;break; case 0x88: KeyValue = 16;break;GPIO_SetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3);GPIO_ResetBits(GPIOA, GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7);GPIO_Pin_4|while(GPIO_ReadInputData(GPIOA)&0xff)!=0x0f);return KeyValue;return 0;/*THEEND*/*-* 矩阵键盘驱动* 文 件: keyboard.h* 编写人: LiuHui* 描述: 扫描 4x4 矩阵键盘输入,并返回键值* 适用范围: 驱动为 ST3.5 库编写,适用于STM32F10x 系列单片机* 所用引脚: PA0-PA7* 编写时间: 2013 年 11 月 22 日* 版本: 1.0-*/#ifndefKEYBOARD_H #defineKEYBOARD_Hvoid KeyBoard_Init(void); u8 Read_KeyValue(void); #endif/*THEEND*#include “stm32f10x.h“void KeyBoard_Init(void)GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin= GPIO_Pin_All; GPIO_InitStructure.GPIO_Speed= GPIO_Speed_2MHz; GPIO_InitStructure.GPIO_Mode= GPIO_Mode_Out_PP;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_All; GPIO_InitStructure.GPIO_Speed= GPIO_Speed_2MHz; GPIO_InitStructure.GPIO_Mode= GPIO_Mode_IPD;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_SetBits(GPIOB,GPIO_Pin_3|GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6);GPIO_ResetBits(GPIOB,GPIO_Pin_7|GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10);/³õʼ»¯ PA,PBvoid Delay_ms(int time) int i=0;while(time-)i=12000;while(i-);u8 Read_KeyValue(void)u8 KeyValue=1; if(GPIO_ReadInputData(GPIOB)&0xff)!=0x0f)Delay_ms(10); if(GPIO_ReadInputData(GPIOB)&0xff)!=0x0f)GPIO_SetBits(GPIOB, GPIO_Pin_3);GPIO_ResetBits(GPIOB, GPIO_Pin_5 | GPIO_Pin_6);GPIO_Pin_4|switch(GPIO_ReadInputData(GPIOB)&0xff)case 0x11: KeyValue = 7; break; case 0x21: KeyValue = 4; break; case 0x41: KeyValue = 1; break; case 0x81: KeyValue = 0; break;GPIO_SetBits(GPIOB, GPIO_Pin_4);GPIO_ResetBits(GPIOB, GPIO_Pin_5 | GPIO_Pin_6);GPIO_Pin_3|switch(GPIO_ReadInputData(GPIOB)&0xff)case 0x12: KeyValue = 8; break; case 0x22: KeyValue = 5; break; case 0x42: KeyValue = 2; break; case 0x82: KeyValue = 0; break;GPIO_SetBits(GPIOB, GPIO_Pin_5);GPIO_ResetBits(GPIOB, GPIO_Pin_4 | GPIO_Pin_6);GPIO_Pin_3|switch(GPIO_ReadInputData(GPIOB)&0xff)case 0x14: KeyValue = 9; break; case 0x24: KeyValue = 6; break; case 0x44: KeyValue = 3; break; case 0x84: KeyValue = 0; break;GPIO_SetBits(GPIOB, GPIO_Pin_6);GPIO_ResetBits(GPIOB, GPIO_Pin_4 | GPIO_Pin_5);GPIO_Pin_3|switch(GPIO_ReadInputData(GPIOB)&0xff)case 0x18: KeyValue = 0; break; case 0x28: KeyValue = 0; break; case 0x48: KeyValue = 0;break; case 0x88: KeyValue = 0;break;GPIO_SetBits(GPIOB,GPIO_Pin_3|GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6);GPIO_ResetBits(GPIOB,GPIO_Pin_7|GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10);/while(GPIO_ReadInputData(GPIOB)&0xff)!=0x0f);return KeyValue;return 0;uint16_t table=0xEB,0x28,0xB3,0xBA,0x78,0xDA,0xD B,0xA8,0xFB,0xFA;int mainRCC_APB2PeriphClockCmd(RCC_APB2Perip h_GPIOA,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Perip h_GPIOB,ENABLE);KeyBoard_Init;int keyvalue=Read_KeyValue; GPIO_Write(GPIOA, tablekeyvalue);/*while(1) int i;for(i=0;i<10;i+) GPIO_Write(GPIOA, tablei);Delay_ms(500);*/*u8 keyvalue; for(int i=0;i+)KeyBoard_Init; keyvalue=Read_KeyValue; GPIO_Write(GPIOA,tablekeyvalue); Delay_ms(500);*/#include “stm32f10x.h“void KeyBoard_Init(void)GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin= GPIO_Pin_All; GPIO_InitStructure.GPIO_Speed= GPIO_Speed_2MHz; GPIO_InitStructure.GPIO_Mode= GPIO_Mode_Out_PP;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin= GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_ Pin_6|GPIO_Pin_7|GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10;GPIO_InitStructure.GPIO_Speed= GPIO_Speed_2MHz; GPIO_InitStructure.GPIO_Mode= GPIO_Mode_IPD;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_SetBits(GPIOB,GPIO_Pin_3|GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6);GPIO_ResetBits(GPIOB,GPIO_Pin_7|GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10);void Delay_ms(int time) int i=0;while(time-)i=12000;while(i-);u8 Read_KeyValue(void)if(GPIO_ReadInputData(GPIOB)&0xff)!=0x 73)/ 在 这 个 程 序 下 为 什 么 无 论 是GPIO_ReadInputData(GPIOB)&0xff)!=0x73 还是GPIO_ReadInputData(GPIOB)&0xff)=0x73 都能往下运行,而在屏蔽 Delay_ms(10)后那么只能运行一种,是由于这个 Delay_ms(10)对 if 里的推断有影响吗?Delay_ms(10); GPIO_Write(GPIOA,0x33);return 0;int mainRCC_APB2PeriphClockCmd(RCC_APB2Perip h_GPIOA,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Perip h_GPIOB,ENABLE);KeyBoard_Init; Read_KeyValue;

    注意事项

    本文(STM32-矩阵键盘程序.docx)为本站会员(1513****116)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开