单片机通过配置寄存器来控制内部线路的连接。内部线路的不同连接方式实现不同电路,不同电路完成不同的功能。
[2-1] 点亮一个LED P4 - 17:47 LED灯点亮原理
LED灯具有单向导电性,只有电流正向通过时才会点亮。
图中,正极都给定了恒定高电平,当负极这边为低电平的时候,对应的LED灯才会有正向电流通过,灯才会亮。
即,只要CPU通过控制负极,使其输出低电平的时候,LED灯就会亮。
[3-1] 独立按键控制LED亮灭 P7 - 06:30 检测按键原理
按键的两边是两个连续的电路。当按下时,按键的金属圆片会导通两个电路。
在开发板原理图中,一个独立按键的一方电路导入GND,另一边电路接到IO口上。
单片机上电时所有IO口默认都是高电平,如果按键按下,IO口就会变成低电平。
寄存器会检测IO口的电平,从而知道按键是否按下。
[3-2] 独立按键控制LED状态 P8 - 01:26 按键的软件防抖
当按键按下时,可能会存在不稳定的抖动。可以通过硬件或者软件防抖。
软件防抖主要是延迟检测。按键按下时,先延迟到不再抖动(比如delay20ms),再检测按键状态,如果状态还是按下,就认为按键真正的状态是按下了。
检测按键一次按下和松开:
检测按键按下(如p3_1==0),在这个状态下循环,直到检测到按键松开(如p3_1!=0)
这样就可以视为一次按键按下再松开的过程。然后再在后面添加逻辑操作。
[3-4] 独立按键控制LED移位 P10 - 13:54 按键控制LED左右移动
通过两个按键,对应LED的八位地址进行修改。这里使用循环左移。使用LEDNum计数,对地址计算需要左移几位。
注意:这里按键左右移动都是循环左移,因为本质上是对P2_0 (0x01地址)移动。
注意判断边界值。
[4-1] 静态数码管显示 P11 - 04:01 数码管驱动原理
一个数字有8个数码管,A~G和DP,有十个引脚1~10。有两种连接方式,共阴极连接(右上)和共阳极连接(右下)。
显示一个“6”数字,需要把A,C,D,E,F,G编号的数码管点亮。
以共阴极连接为例:
位选:选中公共端,阴极给0接低电平
段选:段选阳极7,4,2,1,9,10引脚给高电平
共阳极同理类推。
和1位数字显示原理基本一致,区别在于有多个公共端。
显示数字时,先位选公共端,然后段选需要点亮的数码管。
为了节省引脚,各个数字之间的数码管共用引脚,所以同一时刻,只能显示一个数字。
显示多个数字的原理,利用的是数字高速刷新,人眼的视觉暂留会让数字看起来像是同时显示了多位数字。
89C52单片机的数码管,有8个公共阴极端。
138译码器有三个输入端,C是高位,A是低位。可表示2^3=8种状态,对应数码管8个公共端。
用138译码器可以实现选中任意一个公共端口,节省了IO口。
如 CBA=001,选中的是Y1,Y1有效,给低电平,其他给高电平。
总结:如果让某一位显示数字
通过138译码器,位选选中公共端口(LED1~7),使其输出0。然后给予P0口段码的数据。【位选,段选】
动态数码管显示实际会出现位置错乱问题,原因是:
位选 段选 位选 段选 位选 段选 …
当显示完一个数字重新位选时,因为上一次显示的数字对应的数码管有值,会造成下一个数字也会短暂显示上一个数字,造成显示错乱问题。
解决方法:显示后把数码管的值清零,再显示下一个值。
[5-1] 模块化编程 P13 - 04:53 模块化编程
将各个模块的代码放到不同.c文件中,通过.h文件提供声明,其他.c文件只需要#include "xx.h" 文件即可。
使用 # 的作用是在编译开始前,对代码进行预编译。
如 #ifndef XX_H 意思是如果没有定义 XX_H
配合 #define XX_H 可以实现如果没有定义某个文件,就让这个文件参与编译。
这是头文件中常见的一种写法,被称为"头文件保护"或"防止重复包含"。
它的作用是防止同一个头文件被多次包含导致的重定义错误。
[5-2] LCD1602调试工具 P14 - 00:12
[6-1] 矩阵键盘 P15 - 00:23
为了减少IO口的使用,将按键排列成矩阵形式,然后扫描。
每一行或者每一列的按键共用行、列线。可按行或者按列进行扫描来获取键码。
以按列扫描为例:
第一列按键共用P13引脚,每一列的按键和之前的独立按键电路类似。
对于第一列来说,给P13低电平,看做是公共的GND。第一列的按钮按下,对应的P17~P14引脚的电平就会变为低电平,从而判断是哪一个按钮按下。
PS:单片机电路图上没有特别标注GND等地线的话,默认接高电平
[7-1] 定时器 P17 - 00:12 定时器驱动原理
定时器&中断系统

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/156581.html