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

硬件驱动——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,例:

    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位数管


http://www.kler.cn/a/584249.html

相关文章:

  • 概率论的基本知识
  • Java版本切换~Linux
  • K8S学习之基础二十八:k8s中的configMap
  • Java 大视界 -- Java 大数据在智慧文旅虚拟导游与个性化推荐中的应用(130)
  • 软考数据结构四重奏:软件工程师的线性、树、图、矩阵算法精要
  • 本地部署DeepSeek-R1模型详细流程
  • 【数据结构】2算法及分析
  • Oracle 查询数据库对象的DDL语句
  • HarmonyOS Next 全栈开发深度解析:从架构设计到分布式应用实战
  • 面试之《什么是流式渲染》
  • 微店平台商品关键字搜索接口调用指南:Python代码实现与实战解析
  • Qemu 详解与 ARM 虚拟机搭建指南
  • Vue3计算属性深度解析:经典场景与Vue2对比
  • Python 进程与线程-分布式进程
  • 工作记录 2017-01-09
  • React Next项目中导入Echart世界航线图 并配置中文
  • Flink 中RocksDB 为什么将每个键和值的限制为 2^31 字节
  • SpringCloud带你走进微服务的世界
  • 零信任架构实战手册-企业安全升级
  • 使用 Excel 实现绩效看板的自动化