stm32vet6外部中断扫描矩阵键盘
利用stm32f103vet6外部中断来获取矩阵键盘键值外加可精确到小数点后6位计算器源程序
利用外部中断来获取键值,避免了逐行扫描,减少了cpu的占用。准确的获取键值,运用二维数组来存放键值,让55的矩阵键盘输出键值,这个设定的二维数组char xianshi[5][5]={{’(’,’/’,’’,’-’,’+’},{’)’,‘3’,‘2’,‘1’,0},{‘6’,‘5’,‘4’,‘0’,0},{10,‘9’,‘8’,‘7’,0},{’=’,’.’,‘0’,11,12}};这位检查行和列:
while(1) {
if(linflag==0){row0(1);row1(1);row2(1);row3(1);row4(1);if(endflag==0){rowflag=0; row0(0);row1(1);row2(1);row3(1);row4(1);delay_nms(10);}if(endflag==0){rowflag=1;
row0(1);row1(0);row2(1);row3(1);row4(1);
delay_nms(10);
}
if(endflag0)
{
rowflag=2;row0(1);row1(1);row2(0);row3(1);row4(1);
delay_nms(10);
}
if(endflag0)
{
rowflag=3;row0(1);row1(1);row2(1);row3(0);row4(1);delay_nms(10);}if(endflag==0){rowflag=4;row0(1);row1(1);row2(1);row3(1);row4(0);delay_nms(10);}row0(0);row1(0);row2(0);row3(0);row4(0);endflag=0;linflag=1;}
检查列:
if(linflag==1)
{
if (EXTI_GetITStatus(EXTI_Line11)!=RESET)
{
lin=0;
EXTI_ClearFlag(EXTI_Line11);
}if (EXTI_GetITStatus(EXTI_Line12)!=RESET){lin=1;EXTI_ClearFlag(EXTI_Line12);}if (EXTI_GetITStatus(EXTI_Line13)!=RESET){lin=2;EXTI_ClearFlag(EXTI_Line13);}if (EXTI_GetITStatus(EXTI_Line14)!=RESET){lin=3;EXTI_ClearFlag(EXTI_Line14);}if (EXTI_GetITStatus(EXTI_Line15)!=RESET){ lin=4; EXTI_ClearFlag(EXTI_Line15);}linflag=0;}else if(endflag==1){if (EXTI_GetITStatus(EXTI_Line11)!=RESET)EXTI_ClearFlag(EXTI_Line11);if (EXTI_GetITStatus(EXTI_Line12)!=RESET)EXTI_ClearFlag(EXTI_Line12);if (EXTI_GetITStatus(EXTI_Line13)!=RESET)EXTI_ClearFlag(EXTI_Line13);if (EXTI_GetITStatus(EXTI_Line14)!=RESET)EXTI_ClearFlag(EXTI_Line14);if (EXTI_GetITStatus(EXTI_Line15)!=RESET)EXTI_ClearFlag(EXTI_Line15);}else{if (EXTI_GetITStatus(EXTI_Line11)!=RESET){row=rowflag;rowflag=5;endflag=1;EXTI_ClearFlag(EXTI_Line11);}if (EXTI_GetITStatus(EXTI_Line12)!=RESET){row=rowflag;rowflag=5;endflag=1;EXTI_ClearFlag(EXTI_Line12);}if (EXTI_GetITStatus(EXTI_Line13)!=RESET){row=rowflag;rowflag=5;endflag=1;EXTI_ClearFlag(EXTI_Line13);}if (EXTI_GetITStatus(EXTI_Line14)!=RESET){row=rowflag;rowflag=5;endflag=1;EXTI_ClearFlag(EXTI_Line14);}if (EXTI_GetITStatus(EXTI_Line15)!=RESET){ row=rowflag;rowflag=5;endflag=1;EXTI_ClearFlag(EXTI_Line15);} if(xianshi[row][lin]!='='){ str[m++]=xianshi[row][lin];g=xianshi[row][lin];}
else
s=displaynum(str,m);
}
插入链接与图片
链接: https://download.csdn.net/download/weixin_43720264/11454513.
stm32vet6外部中断扫描矩阵键盘相关推荐
- LINUX矩阵键盘简单介绍,介绍一种新型的矩阵键盘电路
这款新型的矩阵键盘电路,把传统的矩阵键盘与单片机的中断结合起来,提高了按键输入的响应,同时利用数码管作为显示终端,显示输入的按键值. 原理简介 普通的4X4矩阵键盘接口原理图如下图所示,可以控制16按 ...
- 蓝桥杯模块矩阵键盘Part_1
九层妖塔 起于垒土 蓝桥杯模块矩阵键盘Part_1 矩阵键盘 一.理论 1.矩阵键盘的识别与编码: 2.矩阵键盘的工作方式: 二.原理图 三.Template1 1.矩阵键盘扫描函数: 2.定时 ...
- LINUX矩阵键盘简单介绍,stm32矩阵键盘原理图及程序介绍
描述 STM32F0 系列产品基于超低功耗的 ARM Cortex-M0 处理器内核,整合增强的技术和功能,瞄准超低成本预算的应用.该系列微控制器缩短了采用 8 位和 16 位微控制器的设备与采用 3 ...
- 51单片机外部中断的C51编程
51单片机外部中断的C51编程 相关知识: 1.51单片机的5大中断源:串行口中断.定时中断1.外部中断1.定时中断0.外部中断0: 2.中断源的编号: 串行口中断为4.定时中断1为3.外部中断1为2 ...
- 万年历:由矩阵键盘控制的C51定时器与LCD1602万年历
这篇代码并未运用到DSC12C887时钟芯片,而是运用了单片机自带的定时器0完成,经试验在清翔开发板上误差为每小时快4s,且可通过硬件(矩阵键盘)更改时间! 目录 前言 一.目标 二.教学 1.矩阵键 ...
- 单片机入门-矩阵键盘控制数码管显示
任务简述:通过按下4X4矩阵键盘实现数码管对应显示数字 实现方式:通过行列分接法,可以节省使用单片机的I/O口,扫描矩阵键盘是否有按下,判断P2端口得到的值. protues 硬件系统 单片机晶振复位 ...
- Linux内核深入理解中断和异常(5):外部中断
Linux内核深入理解中断和异常(5):外部中断 rtoax 2021年3月 1. 外部中断简介 外部中断包括:键盘,鼠标,打印机等. 外部中断包括: I/O interrupts; IO中断 Tim ...
- FPGA的矩阵键盘驱动( 修正版)
以前写的矩阵键盘的驱动是以单片机的思想来实现的,在FPGA上完全失败了,考虑的太简单了emmmmmm.所以在查了一些资料后,对过去写过的矩阵键盘驱动做个修正 旧版本代码 module keyboard ...
- 使用51单片机的矩阵键盘和LCD1602做一个密码锁
文章目录 前言 一.工具准备 工具一:51单片机 工具二:LCD1602液晶显示屏 工具三:Keil软件 二.开始操作 1.LCD1602的程序调试 2.矩阵键盘的程序调试 3.密码锁程序设计 总结 ...
最新文章
- Log4j的扩展-支持设置最大日志数量的DailyRollingFileAppender
- PAT 1003 Sharing (25)
- 通用职责分配软件原则之6-多态原则
- okhttp 示例_OkHttp Android示例教程
- Realtek:电脑更新后,在主机前面板插上耳机没有声音,怎么解决?
- 《社会调查数据管理——基于Stata 14管理CGSS数据》一1.3 数据管理工作主体不明...
- 你知道3D打印SLA的优缺点吗?
- LoadRunner 录制IE 8卡死
- 读书郎上市背后隐忧:业绩下滑明显,市场地位较靠后,竞争力存疑
- OpenGL 之 EGL 使用实践
- 数据分析系列 9/32 | Excel进行回归分析,预测真实值
- 一道[CSCCTF 2019 Qual]FlaskLight的详解再遇SSTI
- 用Python+Moviepy+OpenCV制作灯光秀短视频
- 易经八卦解释鸿蒙,易懂中的五行与八卦
- 资产实物综合管理系统应用方案介绍
- 使用 免费可商用的中文字体 解决CentOS Linux下Java生成图片水印中文乱码问题
- “我不会,但我可以学!”面试千万别说这句蠢话,高情商都这么说
- Golang优雅之道
- 测评网站源码 php,PiPiCMS影视建站程序评测:PHP版的MAXCMS
- 编译原理学习笔记20——符号表