day41 51單片機最小系統、GPIO控制、時序邏輯器件(74HC138/595)與LED點陣驅動原理

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 × 101 = 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;一個新興且高度專業化的分支——健康…