542 按键扫描(单片机最简洁的键盘扫描程序详解)

发布时间:2024-05-17 12:25:16 来源:ub8登录1.0 作者:ub8登录1.0 ub8登录1.0

  发现规律了吗?P1 是个8位的接口,P0.1 对应最右边的一位 00000001 对应电源按键

  其他按键类似,所以我们开始可以将P1这个接口的寄存器变为11111111,那一位变成0就对应那个按键按下,可以对应8个按键,本产品我们用到了5个按键 P1.5 P1.6 P1.7未用

  另外注意单片机接口从P1.0 ~P1.7 而不是P1.1~P1.8 开始,C语言程序中后续学到的数组、引脚控制都是从0~7代表8位的值,而不是从1开始的。

  语法结构:类型 变量名 = 值; 类型与变量名之间必须有空格,等号两边空格可有可无

  开始定义变量时,是可以不赋值的,也就是说 = 和=后面的部分可以没有,但是实际上类似keil这种编程软件后台已经把变量自动初始化了,也就是自动赋予了一个默认值,不过建议最好是自己赋初始值,避免出错。

  变量类型,最大意义是标明变量需要多大的存储空间,unsigned char 无符号字符型占用8个位的存储空间,也就是类似于我们快递柜,占了8个格子。

  unsigned char 和 char 类型的唯一区别是,8个格子最左侧(最高位)格子填充1代表负数,填充0 代表正数,但是仍然都是占用8个格子

  变量的根本意义是提前规划好存储空间里准备去放置未知的数,犹如我们中学学到的x,y,它不是凭空就有,而是我们的大脑开辟了一个空间放置,如果写在纸上,纸面的空间被x,y占用了,但是这个x,y是未知数,也就是经过运算或者转换才能具体确定值,电脑里面存放的这个变量和实际上我们脑袋里存放的没什么区别。

  各种类型的变量,最终都是转换为一个数字,然后转换为一个二进制数字,二进制数字的0,1最终转换为一个开关信号,转换为一个有和无(高和低)电信号存储或者在某个时间段不消失。

  一个文件中,在所有函数的前面定义的变量是全局变量,可以被文件中所有函数使用

  程序受两个基本的规则约束,一个是时间,一个是空间,全局的意义就是空间约束

  实际所有看得见的事物都脱离不了时间和空间,一段程序的位置就决定了它的作用范围

  注意:图形化代码,并赋值为空,但是实际看右边代码自动初始化为0,这是有编辑器自动完成的。

  最终形成的C语言代码一致。图形化代码只是辅助,最终的C语言代码是执行最后编译时使用!

  函数的作用是,把一些程序执行语句集中起来放到一块,可以被另外的地方的函数或程序使用。程序清晰化,另外是将需要运算或者传递的数据包括起来,执行特定的操作,并返回运算结果。

  本节课的键盘扫描函数 void KeyScan() 没有返回数据,所以用void表示,代表无的意思,没有输入的变量所以只有()

  局部变量有时候称为函数的局部变量,局部变量只能被定义它的函数使用,不能被其他函数使用

  这四句网络搜索到的核心代码实现了键盘扫描的基本功能,具体那位大神最先实现的无法查到。但是非常高明。大部分键盘扫描至少10句20句代码才能完成。

  定义了一个局部变量readKeyValue (这个变量因为是在KeyScan函数内写的,所以是局部变量)

  在定义变量的同时为其赋值,赋值的意思是为readKeyValue占用的空间中填充上0或1

  unsigned char 是无符号整数,这个估计是最常用的一种变量类型,无符号整数这种类型的意义是,在单片机内部的存储空间中开辟8位的一个小存储块,犹如快递柜的8个格子。每个格子里面只能放0或1,用二进制标识就是00000000、11111111、00100000等等。

  如果你写 readKeyValue = 300; 是不对的,因为300存不到这8个格子中,存不下。

  8个格子太多,我们分别用2个格子、3个格子、4个格子存二级制数来试试最多能存多少,注意每个格子只能存0或者1

  P1 是一个8位的寄存器,也是8个格子,这些格子里面存放的是P1.0~P1.7 各个引脚的状态,是0还是1,是0代表这个引脚是低电平,1代表这个引脚是高电平

  0xFF 是十六进制的写法,一位十六进制和四位二进制是一一对应的 也就是说F = 1111

  ^是一种位运算符,也就是异或运算符,它将8个格子与另外8个格子对应的位一一运算,基本规则是相同为0,不同为1,实现了取反码的功能,原先为0变为1 原先为1变为0;

  readKeyValue^keyDownValueing 的作用是,当前值与一直按着的键值运算,相同为0,不同为1,运算结果意义就是0时,此按键还在一直按住没有释放。为1时,已经释放。

  如果不能理解,针对按键扫描的这几行代码,我们直接借用即可,不需要深入理解。

  上一小节我们分析了keyDownValue是短按按键时的值,只要判断它就不难得知那个按键按下

  注意本节课按键扫描函数在主函数中直接调用,主定时器只是100us的情况,实际应用需要延时20ms再调用键盘扫描函数。下节课修正。

  7、proteus仿线个按键,RGB灯红、绿、蓝、黄、紫色依次变化关键字:编辑:什么鱼 引用地址:5.4.2 按键扫描(单片机最简洁的键盘扫描程序详解)

  上一篇:基于51单片机用DS1302和LCD1602设计可调式电子日历与时钟

  近日,芯海科技发布公告称,公司拟向不特定对象发行可转换公司债券,募集资金总额不超过4.2亿元,将投建于汽车MCU芯片研发及产业化项目和补充流动资金。 其中,汽车MCU芯片研发及产业化项目建设地位于四川省成都市。项目达产后,将形成每年21,312万颗汽车MCU芯片的设计、销售能力。 芯海科技作为一家集感知、计算、控制、连接于一体的全信号链芯片设计企业,专注于高精度ADC、高可靠性MCU、测量算法以及物联网一站式解决方案的研发设计。通过本次募投项目的实施,公司将在已有技术和产品基础上,实现业务战略的继续延伸,扩展新的应用市场和客户群体,一直在优化提升产品结构,从而 增强公司核心竞争力。 同时,公司车规级信号链MCU已

  芯片项目 /

  主程序1: void main() { uchar i,j,k i=0; j=0; while(1) { i=key();//键盘循环扫描,其值赋给变量数组table if(i!=0)//键盘子程序返回值非0,即有按键按下 { table =i;//将值存在变量数组中 j++; } if(j==6) { j=0; for(k=0;k 6;k++)//当数组存满6位时核对 { P3=table ;//P3接有一排指示灯 delay (1000);

  瑞萨电子(Renesas Electronics)的32位元微控制器(MCU) RX100 系列推出新款 RX111 产品,采用超低功耗零等待状态快闪记忆体制程,支援领先市场的 32位元耗电量/效能等级,并支援快速唤醒及各种标准周边装置与多种安全功能,并内建 USB 2.0 周边装置可支援主控、装置及On-The-Go (OTG)功能。 RX111将瑞萨8/16位元RL78 MCU系列的超低功耗带入32位元RX产品系列,提供更大范围的装置扩充性与功能。新款RX111的设计可支援多种低阶32位元嵌入式应用,包括行动医疗保健、智慧电表、感测器/侦测器,以及工业与大楼自动化。瑞萨真正的低功耗功能可在广大的温度与电压范围内,为设计工程师

  函数名称: HC595SendData //8位串行输入/输出,并行输出 功能描述: 向SPI总线发送数据 这里只说明并行输入的正常的情况 管脚描述:请参考相关的芯片资料 void HC595SendData(unsigned int SendVal) { unsigned char i; for(i=0;i 8;i++) { if((SendVal i)&0x80) MOSIO=1; // set dataline high //若输入最高位为1,则令串行输入为1,反之输入0 else MOSIO=0; S_CLK=0; //上升沿输入每一位 NOP(); //datasheet给

  1 引言 数 7 钟能长期、连续、可靠、稳定地工作;同时还具有体积小,功耗低等特点,便于携带,使用起来更便捷。数字钟是采用数字电路实现对 “ 时、分、秒 ” 数字显示的计时装置,大范围的应用于个人家庭、车站、码头、办公室等公共场所,已成为人类日常生活中必不可少的必需品。由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度远超于老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。传统 MCS51 系列单片机的所有数据处理都基于一个累加器,因此累加器与程序存储器、数据存储器之间的数据转换就成了单片机的瓶颈;在 AVR 单片机中,寄存器由 32 个通用工作寄存器组成,并且任何一个

  Megal6的电子时钟设计 /

  2015年年底,中国本土电子元器件分销商 世强 宣布,其“智能物联创新技术及应用巡回研讨会”深圳站完美收官并取得超预期效果。本次世强研讨会行程以青岛为起点,深圳、北京站紧随其后巡展,全面展示有关物联网的核心技术,涉及到的细分应用领域包括智能可穿戴、 智能家居 、智能监控、智慧医疗、移动支付以及车联网,产品涵盖了动态心率检测 传感器 、全球首款UV(紫外线)传感器、手势传感器、Touch IC、低功耗 MCU 、自组网 ZigBee 、通讯远距离Bluetooth等。 根据IDC的预测,亚太区物联网产业未来几年持续保持强劲增长,截止到2020年,连网设备将增加至86亿台,而市场规模则达到5,830亿元。世强物联网技术论坛旨在帮助参会

  1概述 随着远程教育体系的持续不断的发展和日趋完善,多媒体教学手段在各级各类学校都得到了广泛应用。近年来,我们在进行多媒体教学系统的开发和研制过程中,经常遇到多种用于教学中的红外遥控设备,如:数字投影机、DVD、VCD、录像机、电视机等,由于各种设备都自带遥控器,而且不同的设备所遵循的红外遥控规程也不完全一样,操纵这些设备得使用多种遥控器,给使用者带来了诸多不便。我们采用集中控制各设备的方式如图(1)所示解决了该问题。集中控制各设备的方法是首先对各设备的红外遥控信号进行识别并存储(自学习),然后在需要时进行还原。图(1)中由PC或集中控制器发送设备号及控制命令号至红外遥控信号自学习及还原电路,再由自学习及还原电路恢复对应的红外遥控信号,

  的红外遥控信号自学习及还原新方法 /

  触摸屏是目前最简单、方便、自然的而且又适用于中国多媒体信息查询国情的输入设备,它具有坚固耐用、反应速度快、节约空间、易于交流等许多优点。触摸屏技术被认为是未来人机交互科技的主流方向之一,相关的产业及其产品的应用也正在成为一个热点。但是传统的触摸屏因为成本比较高而难以适用到更广泛的工业控制设备中,目前武汉谷鑫科技的触摸屏设计的具体方案而能够很好的解决这个难题,利用触摸屏、单片机和液晶屏搭建了一个人机界面系统。 在用C8051F020实现对TFT6448BS-5.7的控制过程中,采用总线方式来进行控制。因为TFT6448BS-5.7液晶控制器自带有锁存功能,所以在使用总线方式来控制时并不需要外加锁存芯片,只须使用单片机C8051F020的

  对触摸屏的驱动控制 /

  的车载动力锂电池管理系统关键技术研究

  研讨会 : 用于感测应用 带可配置信号链元素的新型 MSP430™ MCU

  直播回放: 借助Sitara™ AM263x MCU 创造电气化的未来

  ADI世健工业嘉年华——深度体验:ADI伺服电机控制方案

  解锁【W5500-EVB-Pico】,探秘以太网底层,得捷电子Follow me第4期来袭!

  【下载】LAT1317 STM32CubeProgrammer和STM32CubeIDE协同调试的方法

  【下载】LAT1334 基于MCSDK5.4.8电机库修改两电阻采样方法

  【直播】轻松使用STM32MP13x如MCU般在Cortex A 核上裸跑应用程序

  【新品】STM32H5-Arm® Cortex®-M33 内核,主频高达250MHz,提升性能与信息安全性

  【新品】STM32MP13X-支持Linux、RTOS和Bare Metal应用,新一代通用工业级MPU

  【新品】Arm® Cortex®-M33处理器内核,运行频率160 MHz,基于Armv8-M架构并带有TrustZone®

  【Matter】康普和意法半导体强强联手,让物联网设备Matter证书管理既安全又简便

  【方案】STM32WLE5 x 利尔达LoRa模组助力亚残会开幕式惊艳秀

  【新品】意法半导体发布远距离无线微控制器,提高智能计量、智能建筑和工业监控的连接能效

  0概述《计算机网络》课程是大学计算机及相关专业开设的一门计算机与通信的专业课程。本课程具有很强的实践性,很多教学内容都需要高成本的 ...

  引言随着科学技术的进步和工农业生产的发展,水产养殖这一传统的行业也在向工厂化和智能化方向发展。水质监控仪器的设计是实现工厂化水产养殖的 ...

  本应用笔记向用户介绍DS5000(兼容8051)微控制器与DS1620数字温度传感器的接口软件。DS1620通过3线串行数字接口进行通信。提供的软件代码 ...

  数字电压表是一种测量电信号电压的电子仪器。它用在所有应用,包括电子、电力系统和自动化领域。在本文中,我们将讨论使用8051微控制器的数 ...

  针对某型航行器自沉系统中,要掌握某合金材料在海水中因不一样的温度条件下的受腐蚀时间长短。采用模块化硬件设计,使用浸水传感器为检测单元 ...

  站点相关:综合资讯51单片机PIC单片机AVR单片机ARM单片机嵌入式系统汽车电子消费电子数据处理视频教程电子百科其他技术STM32MSP430单片机资源下载单片机习题与教程

上一篇:编程猫新一代自研图形化编辑器上新打通三端助力孩子创作自由 下一篇:晋江全市中小学将遍及App Inventor开发教育