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

教育局两学一做网站网站权重

教育局两学一做网站,网站权重,海外网app下载,国家公示系统官网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.yidumall.com/news/678.html

相关文章:

  • 网站安全保障机制如何做青岛网站seo
  • 会展相关网站建设情况视频号链接怎么获取
  • 上海市信阳seo
  • 珠海网站建设及优化泉州seo优化
  • 个人怎么做影视网站百度云电脑网页版入口
  • 怎样做的英文网站类似58的推广平台有哪些平台
  • 企业营销型网站系统长尾关键词爱站网
  • 四川网站营销seo什么价格网络营销的应用研究论文
  • 东莞网站优化关键词公司唐山seo
  • 2000个免费货源网站网络搭建的基本流程
  • 网站会员系统方案百度服务中心官网
  • 珠海 网站建设口碑营销的优势有哪些
  • 网站建设死人接单如何快速搭建一个网站
  • 网站更新和维护怎么做营销型网站建设要点
  • 网站建设合同违约条款南京seo网站管理
  • ecshop做视频电商网站百度本地推广
  • kuler网站兰州网络推广与营销
  • 长沙做网站备案seo网站优化培训价格
  • 未来做哪个网站致富seo排名优化怎样
  • 仿站小工具下载全网整合营销平台
  • 中小企业网站建设与管理主要讲授什么阿里巴巴seo排名优化
  • 网站建设对比分析百度广告联盟一个月能赚多少
  • 人民日报客户端视界常州网站优化
  • 贵阳好的网站建设百度营销app
  • 烟台商城网站建设手机系统优化
  • wordpress代码打包关键词优化软件哪家好
  • 珠海做网站推广公司网络广告策划方案范文
  • 天府健康通二维码图片高清下载网站是怎么优化的
  • 男科医院在线咨询免费英文seo兼职
  • 东莞网络公司网站建设潍坊今日头条新闻