day41 51单片机最小系统、GPIO控制、时序逻辑器件(74HC138/595)与LED点阵驱动原理


一、嵌入式系统基础概念

1.1 嵌入式系统定义

先设计硬件,基于硬件设计软件实现一个具体的功能 —— 专用的计算机系统

  • 硬件/软件可剪裁:根据功能需求裁剪软硬件资源。
  • 主流方案:ARM + Linux(当前主流)
  • 早期方案:单片机 + C语言(至今仍广泛用于教学与简单控制)

1.2 软件操作硬件的核心特点

  • 软件可以直接操作硬件寄存器/引脚电平
  • 程序执行需要时间 → 引入延时函数、定时器、中断机制
  • 接口类型
    • 输入/输出(采集/控制/通信)
    • 模拟量(需ADC/DAC)
  • 关键技术模块
    • 定时器(Timer)
    • 中断(Interrupt)
    • UART(串口通信)

1.3 开发思维三要素(独立思考)

  • 做什么? —— 明确目标(如:点亮LED、显示数字)
  • 怎么做? —— 方法/步骤(如:查原理图→找引脚→写电平)
  • 会不会? —— 评估能力(如:是否掌握GPIO、时序控制)

二、单片机最小系统与电平基础

2.1 最小系统必备组件

  • 电源:直流5V(部分支持3.3V)
  • 晶振:提供标准时钟信号(方波)
  • 复位电路:高电平或低电平复位
  • 51单片机必须外接以上三部分

2.2 电平标准(5V系统)

电压范围逻辑电平
< 0.8V低电平 (0)
> 2.4V高电平 (1)
0.8V ~ 2.4V不确定状态(应避免)

注:实际中,0V = GND = 逻辑0;5V = 逻辑1

2.3 时钟与机器周期

  • 时钟频率决定处理器工作速率
  • STC89C52RC特性
    • 工作电压:5.5V–3.3V
    • 频率:0–40MHz(等效8051的0–80MHz,实际可达48MHz)
    • 6T/12T模式可选(指令周期)
    • 4K–64K ROM,1280/512字节RAM
    • 35/39个I/O口,P0开漏需上拉,其余为准双向口
    • 支持ISP/IAP,通过串口下载程序
    • 内置EEPROM、看门狗、MAX810复位电路(可省外部复位)

在这里插入图片描述

标准时钟信号:方波,协调数字系统各部分时序,保证有序运行。

在这里插入图片描述

晶振波形:正弦波形态,为系统提供稳定基准频率。


三、裸机硬件开发流程

3.1 开发三步骤

  1. 理解硬件工作原理(如LED、数码管、点阵、74HC595等)
  2. 查看原理图 → 找连接关系
    • 在开发板上找器件丝印(白色小字)
    • 在原理图中按丝印定位元器件
    • 查看引脚连接关系(网络标号成对出现)
  3. 控制对应引脚输出电平(高/低)

原理图:逻辑连接关系
PCB:物理连接关系

3.2 复位电路示例

在这里插入图片描述

高电平复位阻容电路

  • 元件:VCC、RSTK1(复位键)、C14(10μF)、R9(10kΩ)、GND
  • 未按键:C14充电 → RST高电平 → 复位
  • 按键:强制拉低 → 释放后重新充电复位

3.3 排阻与灌电流

在这里插入图片描述

  • 排阻:如 RP9、RP10,阻值 471 = 47 × 10¹ = 470Ω
  • 引脚灌电流能力弱 → 需外接驱动或限流电阻

四、GPIO控制与LED点亮实践

4.1 单片机端口结构

  • P0(0x80)、P1(0x90)、P2(0xA0)、P3(0xB0)
  • 每个端口8位,支持读(输入)和写(输出)

4.2 Keil工程与代码示例

#include <reg51.h>  // 包含51单片机寄存器定义头文件void main(void)
{P2 = 0x55; // 0b 0101 0101,P2口输出交替高低电平
}

编译输出

Build target 'Target 1'
assembling STARTUP.A51...
compiling main.c...
"test1" - 0 Error(s), 0 Warning(s).

下载成功提示(STC-ISP):

操作成功 !(2025-09-13 14:30:51)

在这里插入图片描述

示波器实测波形:正弦波,50kSa/s,2V/div,最大值5.20V


五、延时函数与方波生成

5.1 延时函数实现

#include <reg51.h>// 延时函数,参数i控制延时长度
void delay(unsigned int i)
{unsigned int num = i;  // 初始化计数值int j = 0;             // 循环变量for(j = 0; j < 10; j++) // 外层循环放大延时{num = i;           // 重置内层计数while(num--);      // 空循环消耗时间}
}void main(void)
{while(1){P2 = 0;            // 输出全低电平// P2 = 0xff;      // 若取消注释,将输出全高电平,形成方波}
}

在这里插入图片描述

示波器实测方波

  • 2μs/div,250MSa/s采样率
  • 2V/div(10X探头),最大值5.04V
  • 波形稳定,高低电平分明

六、数码管与74HC138译码器驱动

6.1 数码管段码

  • P0 = 0x5b; // 显示数字“2”

在这里插入图片描述

74HC138译码器电路

  • 输入:A(P22)、B(P23)、C(P24) → 组合0~7
  • 输出:Yn低电平有效(选中第n个LED/数码管)
  • G1=VCC,G2A=G2B=GND → 使能译码器

在这里插入图片描述

74HC138真值表:输入组合决定哪个Yn输出低电平

在这里插入图片描述

动态数码管模块:P0口控制段码,P2口经74HC138控制位选

6.2 动态扫描代码

#include <reg51.h>void delay(unsigned int i)
{unsigned int num = i;int j = 0;for(j = 0; j < 10; j++){num = i;while(num--);}
}void main(void)
{while(1){P2 = 0;          // 选中第0位P0 = 0x5b;       // 显示数字2delay(10000);P2 = (1 << 2);   // 选中第1位(P2.2=1, P2.3=0, P2.4=0 → ABC=001)P0 = 0x5b;delay(10000);P2 = (2 << 2);   // 选中第2位(ABC=010)P0 = 0x5b;delay(10000);P2 = (3 << 2);   // 选中第3位(ABC=011)P0 = 0x5b;delay(10000);}
}

6.3 优化:循环扫描0~7位

void main(void)
{unsigned char i = 0;while(1){for(i = 0; i < 8; i++){P2 = i << 2;     // 位选:i左移2位送P2口(控制ABC)P0 = 0x5b;       // 段码:显示数字2delay(6000);}}
}

6.4 显示0~7数字

// 数码管0~9的段码表(共阴)
unsigned char digit_data[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};void main(void)
{unsigned char i = 0;while(1){for(i = 0; i < 8; i++){P2 = i << 2;           // 位选第i个数码管P0 = digit_data[i];    // 显示数字idelay(1);              // 短暂延时P0 = 0;                // 熄灭,避免残影(动态扫描关键)}}
}

七、8×8 LED点阵驱动原理

在这里插入图片描述
175775507819211.png&pos_id=img-ptGkiVTP-1757759177008)
8×8 LED点阵模块

  • 行:A1-A8(DPa-DPh)→ 接P0口
  • 列:K1-K8 → 接P2口(或其他控制口)
  • 显示“1”示例:
    • a=0, b=1, c=1, d=0, e=0, f=0, g=0 (需根据实际连接推导)

7.1 控制原理(以共阳点阵为例)

  • 共阳极:行接VCC(高电平),列接地(低电平)则LED亮
  • 共阴极:列接VCC(高电平),行接地(低电平)则LED亮
  • 扫描方式:逐行/逐列扫描 + 视觉暂留 → 显示完整图案

八、74HC595 串转并移位寄存器详解

在这里插入图片描述

74HC595模块电路

  • SER (P34):串行数据输入
  • SRCLK (P36):移位寄存器时钟
  • RCLK (P35):存储寄存器时钟(与OE共用P35,实际应分开)
  • OE (P35):输出使能(低电平有效)
  • QA-QH → DPa-DPh(并行输出)

在这里插入图片描述

引脚功能表

  • Q0~Q7 (15,1,7…):并行输出
  • MR (10):主复位(低有效,通常接VCC)
  • SHCP (11):移位时钟(SCK)
  • STCP (12):存储时钟(RCK)
  • OE (13):输出使能(低有效)
  • DS (14):串行数据输入(SER)
  • Q7’ (9):串行数据输出(级联用)

8.1 控制端说明

  • /SCLR (MR, 10脚):低电平时清零移位寄存器。通常接VCC。
  • SCK (SHCP, 11脚)
    • 上升沿:数据移位 QA→QB→…→QH
    • 下降沿:数据保持不变
    • 脉宽 > 几十纳秒(5V系统)
  • RCK (STCP, 12脚)
    • 上升沿:移位寄存器 → 存储寄存器
    • 下降沿:存储寄存器保持
    • 通常先置低,移位完成后给一个正脉冲(微秒级)更新输出
  • /G (OE, 13脚)
    • 高电平:输出高阻态(禁止输出)
    • 低电平:正常输出
    • 用单独引脚控制可轻松实现闪烁效果(比数据移位更高效)

在这里插入图片描述

工作逻辑示意图

  • 输入数据:0b 11001010
  • 步骤:
    1. RCLK=0; SRCLK=0;
    2. 8次 SRCLK 上升沿 → 数据逐位移入 QA~QH
    3. 1次 RCLK 上升沿 → 数据锁存到输出端
    4. 输出:DPa=QA, DPb=QB, …, DPh=QH

本日知识点:嵌入式概念、最小系统、电平标准、GPIO控制、延时函数、74HC138译码器、数码管动态扫描、8×8点阵原理、74HC595串转并驱动 —— 构成单片机外设控制核心知识体系。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/96507.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/96507.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/96507.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html列表总结补充

1.有序列表的type属性不同的type值表示不同的排序标号1 表示列表项目用数字标号&#xff08;1,2,3...&#xff09; 1 a 表示列表项目用小写字母标号&#xff08;a,b,c...&#xff09; 2 A 表示列表项目用大写字母标号&#xff08;A,B,C...&#xff09; 3 i 表示列表项目用小写罗…

smartctl Current_Pending_Sector 硬盘待处理扇区

smartctl -a /dev/sdae当前值: 312 个待处理扇区 严重警告信号&#xff0c;硬盘发现了 312 个可疑扇区&#xff0c;正在等待重新分配 197 Current_Pending_Sector 0x0022 100 100 000 Old_age Always - 312读取错误频发 错误计数: 38 次 ATA 错误 …

MATLAB1-基本操作和矩阵输入-台大郭彦甫

目录 基础的指令 format 矩阵和向量 找出某行某列的矩阵元素 快速打出多个矩阵或者向量 矩阵连接 矩阵计算 一些特殊矩阵fuction 矩阵相关函数 基础的指令 clc 清空命令行窗口 clear all 清空工作区的全部变量 who 将工作区的全部变量显示出来 whos 工作区的变量信息详…

【CSS 3D 交互】实现精美翻牌效果:从原理到实战

效果图 前言 在现代网页设计中&#xff0c;交互效果是提升用户体验的重要手段。3D 翻牌效果作为一种常见的交互模式&#xff0c;广泛应用于卡片展示、问答切换、产品详情等场景。本文将详细介绍如何使用 CSS 3D 技术实现一个精美的翻牌效果&#xff0c;并深入解析其实现原理。…

Python核心技术开发指南(062)——静态方法

版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 静态方法的定义 静态方法是类中定义的一种特殊方法,它不需要依赖类实例或类本身即可调用,也不隐含传递self(实例引用)或cls(类引用)参数。在Python中,通过@staticmethod装饰器来定义静态…

炒股进阶理论知识

学完前面的《从零开始学炒股》这样的入门课程后&#xff0c;你已經有了一个基本的框架&#xff0c;接下来需要做的是深化、拓展和建立自己的交易系统。以下是为你量身定制的后续学习路径和理论知识建议&#xff0c;分为几个核心模块&#xff1a;模块一&#xff1a;技术分析的深…

华为OD机试真题-跳马-OD统一考试(C卷)

题目描述: 马是象棋(包括中国象棋和国际象棋)中的棋子,走法是每步直一格再斜一格,即先横着或直着走一格,然后再斜着走一个对角线,可进可退,可越过河界,俗称“马走‘日’字。 给顶m行n列的棋盘(网格图),棋盘上只有有棋子象棋中的棋子“马”,并且每个棋子有等级之分,…

PyTorch 模型保存与加载 (速查版)

文章目录1. 推理用: 保存 & 加载权重 (最常见)2. 继续训练用: 保存 & 加载完整状态3. 微调用: 部分加载 (分类头不同等情况)1. 推理用: 保存 & 加载权重 (最常见) import torch import torch.nn as nnmodel nn.Linear(10, 2)# 保存权重 torch.save(model.state_d…

oneshape acad数据集 sam-dataset

Full Text Search - Hugging Face sketchai (Sketch AI)

0913刷题日记

今日计划10道1/10两眼一睁就是刷209. 长度最小的子数组target 396893380 超时头疼看下题解我的问题在于&#xff0c;中间有一个又写了一个遍历&#xff0c;思路和滑动窗口差不多&#xff0c;但是那个遍历就把时间倍数了。头疼还能做题&#xff0c;你很棒了,身体健康最重要。没…

【JAVA】网络编程

引言 在学习网络编程之前&#xff0c;我们编写的程序几乎都是“单机版”的——只能在本地运行&#xff0c;自娱自乐&#xff0c;无法与其他主机&#xff08;用户&#xff09;进行交互。 有些同学可能会产生误解&#xff1a;既然 Java 号称“一次编译&#xff0c;到处运…

HTML标签关系详解:构建网页的骨架结构

前言 在上一篇教程中&#xff0c;我们学习了HTML5的基本结构。今天&#xff0c;让我们深入探讨HTML标签之间的关系。理解HTML标签之间的关系对于构建结构清晰、语义明确的网页至关重要。就像在现实生活中&#xff0c;建筑物的各个部分需要按照一定的规则组合在一起一样&#x…

238 除自身以外数组的的乘积

我的解法&#xff08;没头绪&#xff0c;参考AI的思路&#xff09; 好奇怪啊&#xff0c;这个题目&#xff0c;没什么思路 题目的主要难点是&#xff0c;如何通过这个线性运算得出所有的乘积和&#xff0c;同时不适用除法。 问了下AI&#xff0c;这种题目我可以从什么方向入手&…

智能体:从技术架构到产业落地的深度解析

在人工智能技术从 “感知智能” 向 “认知智能” 跨越的关键阶段&#xff0c;智能体&#xff08;Intelligent Agent&#xff09;作为具备自主决策与环境交互能力的核心载体&#xff0c;正成为连接 AI 算法与产业应用的重要桥梁。不同于传统被动执行指令的软件系统&#xff0c;智…

MATLAB基于组合近似模型和IPSO-GA的全焊接球阀焊接工艺参数优化研究

引言与研究背景 全焊接球阀的重要性&#xff1a;广泛应用于石油、天然气、化工等长输管道和关键装置&#xff0c;其安全性、密封性和耐久性至关重要。阀体一旦发生焊接缺陷&#xff0c;可能导致灾难性后果。 焊接工艺的挑战&#xff1a;焊接是一个涉及电、热、力、冶金的复杂瞬…

EzRemove(ezremove.ai)评测与实操:5 秒在线抠图、支持批量与换底(电商/设计团队提效指南)

摘要&#xff1a;做主图、白底图、海报的小伙伴&#xff0c;经常被“抠图—换底—导出”这套流程折磨。EzRemove 是一个在线 AI 抠图工具&#xff0c;支持5 秒自动抠图、透明 PNG 导出、批量处理、背景替换与基础编辑&#xff0c;无需安装本地软件&#xff0c;适合电商商家、设…

RStudio 教程:以抑郁量表测评数据分析为例

R 语言是一种专为统计计算、数据分析和图形可视化而设计的编程语言&#xff0c;在学术界和工业界都备受青睐。RStudio是一款为 R 语言量身打造的集成开发环境&#xff08;IDE&#xff09;。它如同一个功能强大的指挥中心&#xff0c;能够将数据科学工作所需的一切&#xff1a;控…

Rupert Baines加入CSA Catapult董事会

英国半导体行业领军人物鲁珀特贝恩斯&#xff08;Rupert Baines&#xff09;正式出任英国化合物半导体应用公司&#xff08;CSA Catapult&#xff09;非执行董事&#xff0c;宛若一位经验丰富的航海家将为这艘科技旗舰指引航向。这位三次成功创业退出的科技企业家&#xff0c;将…

第七篇:识破“共因失效”——如何阻止汽车系统的“团灭”危机

想象一下这个场景&#xff1a; 你精心设计了一套双备份的刹车系统&#xff0c;就像给车装了两条独立的刹车线&#xff0c;心想&#xff1a;“这下总万无一失了吧&#xff01;”结果&#xff0c;一场寒潮来袭&#xff0c;两条刹车线因为同一个原因——低温&#xff0c;同时被冻住…

健康大数据与传统大数据技术专业有何不同?

在“数据即资产”的时代&#xff0c;大数据技术已渗透至各行各业。从电商推荐到金融风控&#xff0c;从智能制造到智慧城市&#xff0c;数据驱动的决策模式正在重塑产业格局。然而&#xff0c;随着医疗健康领域数字化进程的加速&#xff0c;一个新兴且高度专业化的分支——健康…