自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 收藏
  • 关注

原创 51单片机中断系统

这里我们只讲51单片机所共有的端口,有外部中断0,1,定时器0,1和串口(必不可少,其他看外设是否有增加,使用方法也一致),我们在使用的时候,需要设定程序,打开对应的中断源放行,最终使电信号得以传导,实现目的。本程序可实现按下按键,使得led灯亮,再次按下灭灯,所以定义led灯和按键,在四个按键中,P3^2(从左往右数第三个按键对应IT0),P3^3(对应IT1)不但有独立按键功能,还有中断功能(51单片机的设定),因此我们利用按键按下的信号,模拟中断申请的信号,按下按键,触发中断,进而接下来的程序。

2024-04-20 11:06:10 1058

原创 51单片机矩阵按键线翻转法

接着就是对于这个函数的设定,我们再来复习一下线翻转法,这个方法需要进行两次判断,这里我们将按键输出的数字放入一维数组,所以只需要直接算出位数,不用将行列分开,所以我们先判断列数,再判断行数(加上(行数-1)×4),首先我们还是要先定义一个变量来储存输出值,就是key,然后用开头宏定义P1的变量matirx(意思是矩阵),将所有行赋予低电频,也就是P17~P14为0,因此为0x0f(不理解看上一节,有关于它的讲解),然后用条件语句进行判断,如果不为低电频,则进入语句开始检测。

2024-04-15 20:12:32 457

原创 51单片机矩阵按键行列式扫描

先检测第一列,如果为低电频则无按键被按下,如果是高电频,则出现按下的按键,进入if语句进行判断,用上经典延迟函数消抖,再对输入的信号进行判断,这里需要用到开发板里面的知识点:(理解为什么是0xf7可直接跳过下一段)判断出那一个按键被按下之后,将对应的值赋予key,并记录,为后续输入数码管做准备,赋的值为对应按键的数字(S1~S16)。然后进入重点内容,我们的思路是先输入一列为低电频,然后检测是否被按下(转为高电频),没有则继续检测下一列,重复四次,则可检测完整个矩阵键盘。

2024-04-14 17:01:31 483

原创 51单片机独立按键与矩阵按键

标号继承,第一次检测,我们先对所有行的I0上述口赋予低电频0,此时假如第三行第二列那个按键被按下,则在扫描的过程中,第二列全为低电频,而其他列因为没有被按下,全为高电频,无法判断是哪一个按键被按下(不管第二列哪一行的按键被按下,只要有一个按下,则整列就全变为低电频,因此需要检测第二次)。第二次检测,我们将所有列的I0口赋予低电频,然后用同样的方法判断行,第三行第二列按键被按下,则第三行会输出低电频,其他行均为高电频,通过列和行分别扫描检测,最终定位到具体按键。方法一:行列式扫描法。

2024-04-14 11:29:14 375

原创 51单片机独立按键

此时要谈了一下static的用法,定义了k值,用完不被释放持续到程序运行结束,并且保留上一次的值,所以说当进入“有一个按键按下语句”之后,k就变为0不满足k==1,不能进入第一个if中,松手后为无按键,进入42行的else if循环,如果不改变k值,则就算后续再按按键,也无法进入29行的if循环内,所以必须加入k=1,return key-unpress可放于else if内也可放在外面,看个人习惯。初始值为k=1,当有一个按键按下之后,高电频就变为低电频,从而进入of循环。

2024-04-14 09:43:18 410

原创 51单片机数码管

简单来说,就是我们可以通过三位数,来表示数码管的位数,里面八路信号收发代表数码管的数值(一共有八位),而三态输出这是可以通过三位数(二进制,十进制为0~7)附给芯片,即A0~A7管脚内,并由B0~B7进行数据反馈,从而再不同位置输出数值。单片机能识别的三位代码为P2^4,P2^3,P2^2,第二张图的switch语句中为对应0~7的值。在学习动态数码管时候,我们或许会遇到一些问题,没有搞懂其中换位的原理,这时就需要我们理解开发板相应的原理。

2024-04-13 16:14:01 345

原创 51单片机typedef与define

关于typedef与define,简单来说typedef就是一个强制转化器,在外层强制定义一个新的类型(类似c里面计算机定义int之类),与c相同,不可用系统原本类型定义(会报错)。而define则类似于c的函数定义,定义函数并再后续引用,以上就是typedef与define的区别。

2024-04-13 09:59:20 227

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除