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

公司网站做么做百度排名深圳竞价排名网络推广

公司网站做么做百度排名,深圳竞价排名网络推广,平度网站整站优化外包公司,wordpress相册管理插件下载目录 LED LED灯亮的原理图 LED灯光闪烁 电路设计 keil文件 LED流水灯的实现 keil文件 单片机之按键 键盘的结构 按键消抖 软件消抖 硬件消抖 键盘的分类 独立式键盘 行列式键盘 键盘的识别 独立按键案例 电路图 keil文件 行列式键盘案例 电路图 对应按键…

目录

LED

LED灯亮的原理图

LED灯光闪烁

电路设计

keil文件

LED流水灯的实现

keil文件

单片机之按键

键盘的结构

按键消抖

软件消抖

硬件消抖

键盘的分类

独立式键盘

行列式键盘

键盘的识别

独立按键案例

电路图

keil文件

行列式键盘案例

电路图

对应按键判断

keil文件

LED

前言:中文名为发光二极管,用途为:照明、广告灯、指引灯、屏幕等。

注意:以上分别为LED灯的元器件符号,元器件实物和区分元器件正负极的方法。

LED灯亮的原理图

注意:

  • 上面的接法为共阳极接法,左边的接口分别连到单片机的引脚上,若单片机给该引脚低电平,那么就可以形成回路,进而导致LED灯亮。
  • 单片机控制引脚的方式为寄存器,寄存器通常每8位为一组;既可以8位一起处理,也可以按位方式使用(CPU通过控制寄存器来控制我们的硬件电路,硬件电路来执行我们想要完成的功能)
  • 寄存器对应的脚位顺序:P1=01011101——对应脚位顺序:P1.7,P1.6,P1.5,P1.4,P1.3,P1.2,P1.1,P1.0

LED灯光闪烁

电路设计

keil文件

#include "reg51.h"
#共阳极接法
#P2的0号脚位
sbit LED0=P2^0;
#大概nms的延时
void delay(unsigned int n){unsigned int i=0,j=0;for(i=0;i<n;i++){for(j=0;j<120;j++);}
}
void main()
{#我们要让51单片机一直运行while(1){#共阳极接法,那么单片机接口处给低电平,灯方可亮LED0=0;delay(5);LED0=1;delay(5);}
}

LED流水灯的实现

电路设计:和上面LED灯泡闪烁的电路一样

keil文件

#include "reg51.h"
#共阳极接法
sbit LED0=P2^0;
#大概nms的延时
void delay(unsigned int n){unsigned int i=0,j=0;for(i=0;i<n;i++){for(j=0;j<120;j++);}
}
#流水灯的实现
void led(){int i=0;for(i=0;i<8;i++){P2=~(0x01<<i);//0000 0001delay(100);}
}
void main()
{while(1){led();}
}

单片机之按键

键盘的结构

按键消抖

前言:对于机械开关,当机械触点断开,闭合时,由于机械触点的弹性作用,一个开关在闭合时不会马上稳定的接通,在断开时也不会一下子断开,所以在开关闭合及断开的瞬间会伴随着一连串抖动

软件消抖

注意:这个抖动会有个抖动时间,这个时间大概在10ms到20ms之间;我们可以依据这个原理错开这个时间来实现软件消抖。 

硬件消抖

理解:本质上还是利用了延时进行消抖。 

键盘的分类

独立式键盘

特点:

  • 每个独力健占用一根并口线,键位多时占用的并口线多
  • 用于键位较少的情况
  • 处理简单,直接判并口线

行列式键盘

特点:

  • 键位分布在行列交叉点上
  • 占用并口较少,键位越多越明显
键盘的识别

两步:第一步首先检测键盘上是否有键按下;第二部识别是哪一个键按下

  • 检测键盘上是否有键按下的处理方法——全扫描
  • 识别键盘中的哪一个键按下的方法——逐行逐列扫描

独立按键案例

需求:通过独立式按键控制数码管上的显示(每按下一次按键,数码管中显示的值加一)

电路图

keil文件

#include "reg51.h"
sbit key0=P1^0;
unsigned int num=0,flag=0;
unsigned char s[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
void key(){#第一次按下if(key0==0&flag==0){flag=1;}#已经按下了,但是按键抬起if(flag==1&key0==1){num++;flag=0;if(num==10){num=0;}}
}
void seg(){P2=s[num];
}
void main()
{while(1){key();seg();}
}

行列式键盘案例

需求:按第一个键盘,按键亮1;按第二个键盘,按键亮2;

电路图

对应按键判断

原理:按键按下时,高电平会被低电平拉至低电平。

编码H3H2H1H0L3L2L1L0
初值11110000

判断被按下按键的行数:检测第一个按键被按下,L0将H0拉至低电平:1110 0000

编码H3H2H1H0L3L2L1L0
初值00001111

判断被按下案件的列数:检测第一个按键被按下,L0被H0拉至低电平:0000 1110

总结:

  • 由此观之:行数:0xe0;列数:0x0e。由此观之第一个按键的行列标识为——行数+列数=0xe0+0x0e=0xee。
  • 单片机IO口是一种弱上拉,强下拉的工作模式(输出的1驱动能力是有限的,而输出0驱动能力是比较强的)

keil文件

#include "reg51.h"
unsigned char s[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
unsigned char num=99;
void delay(unsigned int n){unsigned int i=0,j=0;for(i=0;i<n;i++){for(j=0;j<120;j++);}
}
void key_scan()
{unsigned char temp=0,temp0=0,temp1=0;P1=0xf0; //为P1置初值,判断被按下按键的行数//检测按键是否被按下if(P1!=0xf0){delay(20); //软件消抖temp0=P1; //取出P1的值P1=0x0f; //为P1置初值,判断被按下按键的列数if(P1!=0x0f){temp1=P1;}}//取得被按下按键的标识temp=temp0+temp1;//被按下对应的按键执行对应的操作if(temp==0xee){num=0;}if(temp==0xed){num=1;}
}
void display(){P2=s[num];
}
void main()
{while(1){key_scan();display();}
}	

http://www.mfbz.cn/news/6/

相关文章:

  • 如何做正版小说网站制作app平台需要多少钱
  • 简单网站设计模板深圳产品网络推广
  • 网站建设企业建站广州百度关键词推广
  • 中国最好的网站制作山东服务好的seo