当前位置: 首页 > news >正文

桂林北站怎么去阳朔推广资源网

桂林北站怎么去阳朔,推广资源网,无锡网站制作公司报价,企业网站建设报价方案6.1矩阵键盘 矩阵键盘: 在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式 采用逐行或逐列的“扫描”,就可以读出任何位置按键的状态 1.数码管扫描(输出扫描) 原理:显示第1位→显示第2位→显示第3位→ …… ,然后快速循环这个过程,最终实现所…

6.1矩阵键盘

矩阵键盘:
· 在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式
· 采用逐行或逐列的“扫描”,就可以读出任何位置按键的状态
1.数码管扫描(输出扫描)
原理:显示第1位→显示第2位→显示第3位→ …… ,然后快速循环这个过程,最终实现所有数码管同时显示的效果
2.矩阵键盘扫描(输入扫描)
原理:读取第1行(列)→读取第2行(列)→读取第3行(列)→ …… ,然后快速循环这个过程,最终实现所有按键同时检测的效果
· 以上两种扫描方式的共性:节省I/O口
在这里插入图片描述
main.c

#include <REGX52.H>
#include "Delay.h"		//包含Delay头文件
#include "LCD1602.h"	//包含LCD1602头文件
#include "MatrixKey.h"	//包含矩阵键盘头文件unsigned char KeyNum;void main()
{LCD_Init();							//LCD初始化LCD_ShowString(1,1,"MatrixKey:");	//LCD显示字符串while(1){KeyNum=MatrixKey();				//获取矩阵键盘键码if(KeyNum)						//如果有按键按下{LCD_ShowNum(2,1,KeyNum,2);	//LCD显示键码}}
}

MatrixKey.c

#include <REGX52.H>
#include "Delay.h"/*** @brief  矩阵键盘读取按键键码* @param  无* @retval KeyNumber 按下按键的键码值如果按键按下不放,程序会停留在此函数,松手的一瞬间,返回按键键码,没有按键按下时,返回0*/
unsigned char MatrixKey()
{unsigned char KeyNumber=0;P1=0xFF;P1_3=0;if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=1;}if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=5;}if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=9;}if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=13;}P1=0xFF;P1_2=0;if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=2;}if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=6;}if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=10;}if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=14;}P1=0xFF;P1_1=0;if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=3;}if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=7;}if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=11;}if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=15;}P1=0xFF;P1_0=0;if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=4;}if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=8;}if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=12;}if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=16;}return KeyNumber;
}

例:if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=1;}
1.在扫描第一列时,如果P1_7 == 0,那么此时是判断开关1的状态
2.由于是机械按键,加入延时函数消除抖动,然后判断是否松手;如果松手,继续消除抖动
3.返回值KeyNumber

MatrixKey.h

#ifndef __MATRIXKEY_H__
#define __MATRIXKEY_H__unsigned char MatrixKey();#endif

6.2矩阵键盘密码锁

1.定义按键功能:S1-S9定义为数字的1-9,S10定义为0,S11为确认键,S12为取消键,S13-S16按键不用
2.判断KeyNum <= 10,然后实现密码左移,同时要加入一个计次变量,按下确认或者取消按键后密码计次清零

#include <REGX52.H>
#include "Delay.h"
#include "LCD1602.h"
#include "MatrixKey.h"unsigned char KeyNum;
unsigned int Password,Count;void main()
{LCD_Init();LCD_ShowString(1,1,"Password:");while(1){KeyNum=MatrixKey();if(KeyNum){if(KeyNum<=10)	//如果S1~S10按键按下,输入密码{if(Count<4)	//如果输入次数小于4{Password*=10;				//密码左移一位Password+=KeyNum%10;		//获取一位密码Count++;	//计次加一}LCD_ShowNum(2,1,Password,4);	//更新显示}if(KeyNum==11)	//如果S11按键按下,确认{if(Password==2345)	//如果密码等于正确密码{LCD_ShowString(1,14,"OK ");	//显示OKPassword=0;		//密码清零Count=0;		//计次清零LCD_ShowNum(2,1,Password,4);	//更新显示}else				//否则{LCD_ShowString(1,14,"ERR");	//显示ERRPassword=0;		//密码清零Count=0;		//计次清零LCD_ShowNum(2,1,Password,4);	//更新显示}}if(KeyNum==12)	//如果S12按键按下,取消{Password=0;		//密码清零Count=0;		//计次清零LCD_ShowNum(2,1,Password,4);	//更新显示}}}
}
http://www.hkea.cn/news/74094/

相关文章:

  • 贵阳网站建设搜王道下拉重庆seo网络推广关键词
  • 大型 网站的建设 阶段百度官方网站下载
  • 江苏专业做网站的公司百度地图导航网页版
  • 怎么去投诉做网站的公司宁波seo外包推广软件
  • 网络营销跟做网站有什么区别线上推广如何引流
  • 如何进行网店推广seo排名优化怎样
  • 什么建站程序好收录上海网络公司seo
  • 电子商务网站建设投资预算小程序平台
  • 广州外贸营销型网站成都移动seo
  • 如何韩国视频网站模板下载 迅雷下载sem竞价托管费用
  • 做网站去哪个平台seo培训学院
  • 网站移动端优化的重点有哪些营销策略ppt
  • 养车网站开发搜狗seo快速排名公司
  • 企业电子商务网站建设武汉百度快速排名提升
  • 建一个网站的流程今天刚刚发生的新闻
  • 建立网站请示优化服务是什么意思
  • 有一个做场景动画的网站山东seo费用多少
  • 阿里云服务器的网站备案流程图营销推广有哪些形式
  • 做宣传用什么网站好手游推广平台有哪些
  • 免费全国网站在线客服软件新手电商运营从哪开始学
  • 0317网站建设怎么建个网站
  • 做网站做电脑版还是手机版好电话营销
  • 深圳网站建设 设计搜索引擎的工作原理是什么?
  • 在线网站设计百度收录查询方法
  • 最新体育新闻足球百度seo收费
  • 手机网站做跳转好吗个人在百度上发广告怎么发
  • 民宿网站的建设最近热搜新闻事件
  • 企业网站建设的核心是企业推广视频
  • 设计素材网站蜂产品推广文章
  • wordpress站点描述seo哪个软件好