利用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外部中断扫描矩阵键盘相关推荐

  1. LINUX矩阵键盘简单介绍,介绍一种新型的矩阵键盘电路

    这款新型的矩阵键盘电路,把传统的矩阵键盘与单片机的中断结合起来,提高了按键输入的响应,同时利用数码管作为显示终端,显示输入的按键值. 原理简介 普通的4X4矩阵键盘接口原理图如下图所示,可以控制16按 ...

  2. 蓝桥杯模块矩阵键盘Part_1

       九层妖塔 起于垒土 蓝桥杯模块矩阵键盘Part_1 矩阵键盘 一.理论 1.矩阵键盘的识别与编码: 2.矩阵键盘的工作方式: 二.原理图 三.Template1 1.矩阵键盘扫描函数: 2.定时 ...

  3. LINUX矩阵键盘简单介绍,stm32矩阵键盘原理图及程序介绍

    描述 STM32F0 系列产品基于超低功耗的 ARM Cortex-M0 处理器内核,整合增强的技术和功能,瞄准超低成本预算的应用.该系列微控制器缩短了采用 8 位和 16 位微控制器的设备与采用 3 ...

  4. 51单片机外部中断的C51编程

    51单片机外部中断的C51编程 相关知识: 1.51单片机的5大中断源:串行口中断.定时中断1.外部中断1.定时中断0.外部中断0: 2.中断源的编号: 串行口中断为4.定时中断1为3.外部中断1为2 ...

  5. 万年历:由矩阵键盘控制的C51定时器与LCD1602万年历

    这篇代码并未运用到DSC12C887时钟芯片,而是运用了单片机自带的定时器0完成,经试验在清翔开发板上误差为每小时快4s,且可通过硬件(矩阵键盘)更改时间! 目录 前言 一.目标 二.教学 1.矩阵键 ...

  6. 单片机入门-矩阵键盘控制数码管显示

    任务简述:通过按下4X4矩阵键盘实现数码管对应显示数字 实现方式:通过行列分接法,可以节省使用单片机的I/O口,扫描矩阵键盘是否有按下,判断P2端口得到的值. protues 硬件系统 单片机晶振复位 ...

  7. Linux内核深入理解中断和异常(5):外部中断

    Linux内核深入理解中断和异常(5):外部中断 rtoax 2021年3月 1. 外部中断简介 外部中断包括:键盘,鼠标,打印机等. 外部中断包括: I/O interrupts; IO中断 Tim ...

  8. FPGA的矩阵键盘驱动( 修正版)

    以前写的矩阵键盘的驱动是以单片机的思想来实现的,在FPGA上完全失败了,考虑的太简单了emmmmmm.所以在查了一些资料后,对过去写过的矩阵键盘驱动做个修正 旧版本代码 module keyboard ...

  9. 使用51单片机的矩阵键盘和LCD1602做一个密码锁

    文章目录 前言 一.工具准备 工具一:51单片机 工具二:LCD1602液晶显示屏 工具三:Keil软件 二.开始操作 1.LCD1602的程序调试 2.矩阵键盘的程序调试 3.密码锁程序设计 总结 ...

最新文章

  1. Log4j的扩展-支持设置最大日志数量的DailyRollingFileAppender
  2. PAT 1003 Sharing (25)
  3. 通用职责分配软件原则之6-多态原则
  4. okhttp 示例_OkHttp Android示例教程
  5. Realtek:电脑更新后,在主机前面板插上耳机没有声音,怎么解决?
  6. 《社会调查数据管理——基于Stata 14管理CGSS数据》一1.3 数据管理工作主体不明...
  7. 你知道3D打印SLA的优缺点吗?
  8. LoadRunner 录制IE 8卡死
  9. 读书郎上市背后隐忧:业绩下滑明显,市场地位较靠后,竞争力存疑
  10. OpenGL 之 EGL 使用实践
  11. 数据分析系列 9/32 | Excel进行回归分析,预测真实值
  12. 一道[CSCCTF 2019 Qual]FlaskLight的详解再遇SSTI
  13. 用Python+Moviepy+OpenCV制作灯光秀短视频
  14. 易经八卦解释鸿蒙,易懂中的五行与八卦
  15. 资产实物综合管理系统应用方案介绍
  16. 使用 免费可商用的中文字体 解决CentOS Linux下Java生成图片水印中文乱码问题
  17. “我不会,但我可以学!”面试千万别说这句蠢话,高情商都这么说
  18. Golang优雅之道
  19. 测评网站源码 php,PiPiCMS影视建站程序评测:PHP版的MAXCMS
  20. 编译原理学习笔记20——符号表

热门文章

  1. 大黄蜂(HORNET):比Tor更快更安全的匿名网络
  2. Fast-slam算法流程及优化
  3. RHEL虚拟机安装与命令使用
  4. 张驰课堂:老板会武术,谁也挡不住!六西格玛培训的魅力
  5. java解析nmea_Java Marine API – 寻找NMEA数据
  6. linux web放在哪个文件夹下,Linux中的Web应用程序应该放在哪里?
  7. Oracle 生成一张测试表并插入随机的个人基本信息数据
  8. 计算机主机平时怎么保养,电脑如何保养和维护?电脑日常保养和维护技巧
  9. 负载均衡集群技术LVS
  10. 博图V15,V16,单部六层电梯控制SCL实现, 方便适配多部电梯,带注释