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

付费推广的途径和原因seo工资水平

付费推广的途径和原因,seo工资水平,河北省建设厅网站电话,网站建设需要云主机吗文章目录 一、按键原理二、独立键盘&矩阵键盘2.1 独立按键2.2 矩阵键盘2.2.1 列扫描2.2.2 行扫描2.2.3 代码实现(行扫描实现) 三、矩阵键盘注意事项3.1 为什么要设置C1C2C3C413.2 按键消抖 一、按键原理 原理很简单,当我们没有按下SW2时,由于上拉电阻…

文章目录

  • 一、按键原理
  • 二、独立键盘&矩阵键盘
    • 2.1 独立按键
    • 2.2 矩阵键盘
      • 2.2.1 列扫描
      • 2.2.2 行扫描
      • 2.2.3 代码实现(行扫描实现)
  • 三、矩阵键盘注意事项
    • 3.1 为什么要设置C1=C2=C3=C4=1
    • 3.2 按键消抖

一、按键原理

在这里插入图片描述

原理很简单,当我们没有按下SW2时,由于上拉电阻得作用,使得输入引脚得信号为高电平,当按下按键后,引脚直接接地,输入单片机引脚的信号就为低电平。

二、独立键盘&矩阵键盘

在这里插入图片描述

在比赛的板子上,独立键盘和矩阵键盘是合在一起的,通过跳线帽来选择是独立按键还是矩阵键盘(图中已经框起)。上图所示的是矩阵键盘,将跳线帽拔了换到另一边就是独立按键了。

2.1 独立按键

在这里插入图片描述

独立按键一段接着GND,说明只要按下按键引脚就输入低电平。这时候我们只需要读取按键所连接的IO口状态就可以判断按键是否被按下

2.2 矩阵键盘

矩阵键盘中每个按键两端都接着单片机IO口,如果我们要使用某个按键就先设置按键一段IO为低电平,然后读取另一端IO口电平状态。矩阵键盘的原理就是键盘扫描,按照扫描的方式可以分为列扫描行扫描

2.2.1 列扫描

以下图为例,设置第二列的按键的一端为低电平(P42=0;),然后读取另一端的按键电平状态,如果读取到低电平就说明哪个按键被按下。例如读取P30口,如果P30==0,那么S11被按下。
在这里插入图片描述

2.2.2 行扫描

类似的,设置第一行的按键的一端为低电平(P30=0;),然后读取另一端的按键电平状态,如果读取到低电平就说明哪个按键被按下。例如读取P42口,如果P42==0,那么S11被按下。
在这里插入图片描述

2.2.3 代码实现(行扫描实现)

sbit R1=P3^0;
sbit R2=P3^1;
sbit R3=P3^2;
sbit R4=P3^3;sbit C4=P3^4;
sbit C3=P3^5;
sbit C2=P4^2;
sbit C1=P4^4;void delayForKeyboard()		//@12.000MHz
{unsigned char i, j;i = 234;j = 115;do{while (--j);} while (--i);
}void keyBoard(){R1=0;R2=R3=R4=1;			// 设置第一行按键一段为低电平,其他行(hang)为高电平C1=C2=C3=C4=1;				// 将按键另一端设置为高电平(上拉)if(C1==0){					// 读取按键状态delayForKeyboard();		// 延时20ms,按键消抖if(C1==0){//......			// 在这里编写按下按键你想要完成的任务}}else if(C2==0){delayForKeyboard();if(C2==0){//......			// 在这里编写按下按键你想要完成的任务}}else if(C3==0){delayForKeyboard();if(C3==0){//......			// 在这里编写按下按键你想要完成的任务}}else if(C4==0){delayForKeyboard();if(C4==0){//......			// 在这里编写按下按键你想要完成的任务}}R2=0;R1=R3=R4=1;			// 设置第二行按键一段为低电平,其他行(hang)为高电平C1=C2=C3=C4=1;if(C1==0){delayForKeyboard();if(C1==0){//......			// 在这里编写按下按键你想要完成的任务}}else if(C2==0){delayForKeyboard();if(C2==0){//......			// 在这里编写按下按键你想要完成的任务}}else if(C3==0){delayForKeyboard();if(C3==0){//......			// 在这里编写按下按键你想要完成的任务}}else if(C4==0){delayForKeyboard();if(C4==0){//......			// 在这里编写按下按键你想要完成的任务}}R3=0;R1=R2=R4=1;			// 设置第三行按键一段为低电平,其他行(hang)为高电平C1=C2=C3=C4=1;if(C1==0){delayForKeyboard();if(C1==0){//......			// 在这里编写按下按键你想要完成的任务}}else if(C2==0){delayForKeyboard();if(C2==0){//......			// 在这里编写按下按键你想要完成的任务}}else if(C3==0){delayForKeyboard();if(C3==0){//......			// 在这里编写按下按键你想要完成的任务}}else if(C4==0){delayForKeyboard();if(C4==0){//......			// 在这里编写按下按键你想要完成的任务}}R4=0;R1=R3=R3=1;			// 设置第四行按键一段为低电平,其他行(hang)为高电平C1=C2=C3=C4=1;if(C1==0){delayForKeyboard();if(C1==0){//......			// 在这里编写按下按键你想要完成的任务}}else if(C2==0){delayForKeyboard();if(C2==0){//......			// 在这里编写按下按键你想要完成的任务}}else if(C3==0){delayForKeyboard();if(C3==0){//......			// 在这里编写按下按键你想要完成的任务}}else if(C4==0){delayForKeyboard();if(C4==0){//......			// 在这里编写按下按键你想要完成的任务}}
}

三、矩阵键盘注意事项

3.1 为什么要设置C1=C2=C3=C4=1

为什么要设置C1=C2=C3=C4=1,原因在于51系列单片机的I/O端口设计为双向的,当没有指明IO的状态时,我们不知道IO口是处于高电平还是低电平,处于一种不稳定的状态,举个例子,如果不指定IO为高电平,那么这个时候由于之前的程序设置IO的状态不确定导致按键还没被按下IO就为低电平,这时候我们读取到的按键状态就是不正确的,所以需要我们指定它默认为高电平,然后才能通过读取IO判断按键是否按下。

3.2 按键消抖

按键抖动是由于按键的机械特性引起的,解决办法可以分为硬件消抖和软件消抖。

这个问题有很多人已经总结了,我就不再赘述。

【单片机】按键消抖及原理(硬件和软件方法详解)

http://www.hkea.cn/news/361924/

相关文章:

  • 用java做的游戏下载网站有哪些内容成都网络推广优化
  • 慈溪市网站建设google官网
  • 网站建设计划seo网站排名优化软件是什么
  • 大连网站建设谁家好郴州网站定制
  • 网站建设背景怎么写一个企业该如何进行网络营销
  • 为女朋友做的表白网站百度大数据分析工具
  • 上海高端网站建设服务公seo推广公司
  • 找人合伙做网站平台仿站定制模板建站
  • 深圳市网站建设科技公司腾讯网网站网址
  • wordpress语言文件夹seo销售好做吗
  • 河北建设集团官网西安网站seo
  • 在外汇局网站做登记报告恢复原来的百度
  • 做外贸做的很好的网站全国疫情突然又严重了
  • 开发app需要什么样的团队百度seo优化培训
  • ftp上传网站之后软文什么意思范例
  • 询广西南宁网站运营推广系统
  • wordpress侧边栏小工具佛山网站优化
  • 用vs做网站原型企业培训课程有哪些内容
  • wordpress评论自定义百度刷排名seo
  • 四川建设网官网登录入口泉州seo外包
  • 网站有备案 去掉备案网络营销意思
  • 新建网站推广给企业百度问一问在线咨询客服
  • 曹鹏wordpress建站seo视频广东疫情防控措施
  • 网站开发的岗位排名优化工具
  • 岳阳做网站怎么做推广让别人主动加我
  • 不断改进网站建设公司百度官网优化
  • 万户网站宁波网站制作优化服务
  • 潍坊快速网站排名网站是怎么做出来的
  • 聚美优品的pc网站建设注册网址
  • 陕西省住房与城乡建设厅网站免费b站推广软件