硬件驱动——51单片机、LED、动态数码管

目录

一、51单片机

1.寄存器

二、LED点灯

1.原理

2.封装函数

3.顺序点灯

4.特定位点灯

三、动态数码管

1.原理

2.封装函数

3.0~9跳变

4.顺序移位0~9跳变


一、51单片机


1.寄存器

51单片机共40个引脚,其中P0,P1,P2,P3是四个有8引脚的寄存器 ,寄存器可视为全局变量 ,寄存器在keil 中以特殊宏的形式储存,例如:

用C语言规范写法,需将寄存器地址的值强转为指针,然后访问修改指针所指向内容,因此上图中的寄存器代码等价于:

二、LED点灯


1.原理

单片机通电后,51单片机的40个引脚均为高电平(即值均为1),其中引脚21~28为寄存器P2 的八个引脚P20~P27,负责控制LED模块的8个发光二极管

若将P20置为低电平(即值改为0),则发光二极管D1两端产生电势差,从而产生电流,二极管导通发光。方法为用位运算的方式将寄存器P2的值由1111 1111改为1111 1110,例:

cs 复制代码
    P2 &= ~(1 << 0);
    // (1 << 0)即二进制数  0000 0001
    //~(1 << 0)按位取反后为1111 1110
    //&=即与等于,执行置0操作

2.封装函数

封装一个延时函数

封装一系列LED相关函数

3.顺序点灯

让灯顺序点亮 ,再循环亮回来

4.特定位点灯

令能被2整除的位数上的灯亮,再让能被3整除的灯亮,交替闪烁

三、动态数码管


1.原理

单片机通电后,51单片机的40个引脚均为高电平(即值均为1),其中引脚39~32为寄存器P0 的八个引脚P00~P07,负责控制数码管a,b,c,d,e,f,g,dp的亮灭。

另外引脚1~4为寄存器P1 的前四个引脚P10~P13,负责控制4位数码管模块的亮灭。

2.封装函数

封装一系列数码管相关函数

3.0~9跳变

从指定数码管由0~9进行跳变

4.顺序移位0~9跳变

先第0位数码管从0跳变到9,再第1位数码管从0跳变到9,直到第3位数码管跳变完再循环至第0位数管

相关推荐
纳祥科技20 小时前
Switch快充方案,内置GaN,集成了多个独立芯片
单片机
资料,小偿21 小时前
4.1.2基于51单片机汇编语言出租车计价器proteus仿真出租车计价器,汇编语言51单片机
汇编·51单片机·proteus
单片机日志1 天前
【单片机毕业设计】【mcugc-mcu826】基于单片机的智能风扇系统设计
stm32·单片机·嵌入式硬件·毕业设计·智能家居·课程设计·电子信息
松涛和鸣1 天前
从零开始理解 C 语言函数指针与回调机制
linux·c语言·开发语言·嵌入式硬件·排序算法
小曹要微笑1 天前
STM32F7 时钟树简讲(快速入门)
c语言·stm32·单片机·嵌入式硬件·算法
XINVRY-FPGA1 天前
XCVP1802-2MSILSVC4072 AMD Xilinx Versal Premium Adaptive SoC FPGA
人工智能·嵌入式硬件·fpga开发·数据挖掘·云计算·硬件工程·fpga
沐欣工作室_lvyiyi1 天前
家用按摩椅控制系统设计(论文+源码)
单片机·物联网·毕业设计·按摩椅控制系统
天天爱吃肉82181 天前
电机控制技术深度解析:从基础原理到前沿实战
python·嵌入式硬件·汽车
学习路上_write1 天前
FREERTOS_互斥量_创建和使用
c语言·开发语言·c++·stm32·单片机·嵌入式硬件
czhaii1 天前
单片机RTOS“实时响应时间”的定义与测量方法
单片机