開啟單片機

前言:

為未來拼搏的第n天,從單片機開始。

為什么要學習單片機呢,單片機的工作涉及范圍及其廣如:消費電子,游戲機·音響

工業控制:機器人控制;醫療設備,通信設備,物聯網等等。

前途大大滴!! 好好學吧。

本章節我們要了解的是51單片機。51單片機也是單片機中最簡單的,最基礎的,最好理解的。

PS 在學習單片機前還是要有一定的c語言基礎的,模電數電可以邊學單片機邊學習,問題不大

一·原理圖

學習51單片機需要了解他的原理圖,才能更好的理解。

這是各個功能 模塊的原理圖

這是板子的真實摸樣還有個lcd屏幕沒有安裝,也就是顯示屏

引腳示意圖

  • 電源引腳
    • VCC(引腳 40):主電源輸入端,提供 + 5V 電壓。
    • GND(引腳 20):接地端。
  • I/O 端口引腳
    • P0.0-P0.7(引腳 32-39):雙功能端口,可作為通用 I/O 端口或地址 / 數據總線使用。當用作地址 / 數據總線時,需要外接上拉電阻。
    • P1.0-P1.7(引腳 1-8):通用雙向 I/O 端口,每個引腳均可獨立配置為輸入或輸出,內部提供上拉電阻。
    • P2.0-P2.7(引腳 21-28):通用雙向 I/O 端口,也可用于擴展外部存儲器的高 8 位地址。
    • P3.0-P3.7(引腳 10-17):通用雙向 I/O 端口,同時具備復用功能,如 P3.0 為 RXD 串行輸入端,P3.1 為 TXD 串行輸出端,P3.2 為 INT0 外部中斷請求 0 輸入等。
  • 控制引腳
    • RST(引腳 9):復位輸入端,高電平有效,保持兩個機器周期的高電平可使單片機復位。
    • ALE/PSEN(引腳 29):地址鎖存允許 / 程序存儲使能信號,訪問外部存儲器時,ALE 用于鎖存地址的低字節,PSEN 用于選通外部程序存儲器。
    • EA/VPP(引腳 30):訪問外部程序存儲器信號,當 EA=1 時,優先訪問內部程序存儲器;當 EA=0 時,僅訪問外部程序存儲器。在 Flash 編程期間,此引腳也用于施加 12V 編程電源(VPP)。
  • 時鐘引腳
    • XTAL1(引腳 19):反相振蕩放大器的輸入及內部時鐘工作電路的輸入。
    • XTAL2(引腳 18):反相振蕩放大器的輸出,外接晶振和電容構成時鐘電路。

需要軟件

? ?編程軟件:Keil C51 是常用的集成開發環境,它提供了 C 編譯器、宏匯編、鏈接器、庫管理和仿真調試器等完整的開發方案,可以方便地進行單片機的程序編寫、編譯和調試,支持 C 語言和匯編語言編程。

燒錄軟件:STC-ISP?它們都能實現將編譯好的程序燒錄到芯片中。

芯片推薦STC89C52。結構經典、資料海量、成本極低,是理解底層原理的理想起點。

入門內容

led燈的點亮 閃爍?獨立按鍵控制,流水燈。

點亮:

#include <REGX52.H>void main()
{P2=0x5d;while(1){}}

閃爍:

#include <REGX52.H>
#include <INTRINS.H>
void Delay500ms()		//@12.000MHz
{unsigned char i, j, k;_nop_();i = 4;j = 205;k = 187;do{do{while (--k);} while (--j);} while (--i);
}void main()
{while(1){P2=0xFE;Delay500ms();//Delay500us();P2=0xFF;Delay500ms();}}

這里添加了延遲代碼delay

這個函數自己可以編輯,也可以由stc提供

如下:

流水燈:

#include <REGX52.H>void Delay1ms(unsigned int xms)		//@12.000MHz
{unsigned char i, j;while (xms){i = 2;j = 239;do{while (--j);} while (--i);xms--;}}void main()
{while(1){P2=0xFE;Delay1ms(500);P2=0xFD;Delay1ms(500);P2=0xFC;Delay1ms(500);P2=0xFB;Delay1ms(500);P2=0xF7;//1110 1111Delay1ms(500);P2=0xEF;Delay1ms(500);P2=0xDF;Delay1ms(500);P2=0xCF;Delay1ms(500);P2=0xBF;Delay1ms(500);P2=0x7F;Delay1ms(500);}}

按鍵控制:

#include <REGX52.H>void main()
{while(1){if (P3_0==0 || P3_1==0)//當按下鍵后亮燈 松開后就熄滅{P2_0=0;//亮}else//按下其他鍵無反應{P2_0=1;//滅}}
}

按鍵控制亮滅狀態:

#include <REGX52.H>  // 包含STC89C52寄存器定義頭文件// 延時函數:精確延時x毫秒(12MHz晶振)
void Delay1ms(unsigned int xms)
{unsigned char i, j;while (xms){i = 2;j = 239;do{while (--j);  // 內層循環延時} while (--i);   // 外層循環延時xms--;}
}// 主函數
void main()
{while(1)  // 無限循環{if(P3_0 == 0)  // 檢測按鍵按下(P3.0低電平){ Delay1ms(30);            // 按下消抖延時30mswhile(P3_0 == 0);         // 等待按鍵釋放(阻塞式)Delay1ms(20);             // 釋放消抖延時20msP2_0 = ~P2_0;  // LED狀態翻轉(P2.0取反)}}
}

~是取反符號 狀態取反

數碼管顯示

#include <REGX52.H>unsigned char table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39};
void shuma(unsigned char Loction,Number )
{switch(Loction){case 1: P2_4=1;P2_3=1;P2_2=1;break;case 2: P2_4=1;P2_3=1;P2_2=0;break;case 3: P2_4=1;P2_3=0;P2_2=1;break;case 4: P2_4=1;P2_3=0;P2_2=0;break;case 5: P2_4=0;P2_3=1;P2_2=1;break;case 6: P2_4=0;P2_3=1;P2_2=0;break;case 7: P2_4=0;P2_3=0;P2_2=1;break;case 8: P2_4=0;P2_3=0;P2_2=0;break;}P0=table[Number];
}void main()
{shuma(3,3);while(1){}
}

可以更改shuma中的數子,位置,顯示數字。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/92502.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/92502.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/92502.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

人工智能系列(8)如何實現無監督學習聚類(使用競爭學習)?

案例&#xff1a;鳶尾花數據集的聚類一.聚類簡介神經網絡能夠從輸入數據中自動提取有意義的特征&#xff0c;而競爭學習規則使得單層神經網絡能夠根據相似度將輸入樣本進行聚類&#xff0c;每個聚類由一個輸出神經元代表并作為該類別的“原型”&#xff0c;從而實現對輸入模式的…

Windows安裝mamba全流程(全網最穩定最成功)

windows系統下安裝mamba會遇到各種各樣的問題。博主試了好幾天&#xff0c;把能踩的坑都踩了&#xff0c;總結出了在windows下安裝mamba的一套方法&#xff0c;已經給實驗室的windows服務器都裝上了。只要跟著我的流程走下來&#xff0c;大概率不會出問題&#xff0c;如果遇到其…

Autosar Dem配置-最大存儲的DTC信息個數配置-基于ETAS軟件

文章目錄 前言 Autosar Dem相關配置 ETAS工具中的配置 生成文件分析 測試驗證 總結 前言 診斷DTC開發中,會有故障快照和擴展數據的存儲需求,但由于控制器的可用存儲空間有限,所以無法存儲所有DTC的信息,這時就需要限制存儲的數量,本文介紹該參數在ETAS軟件中的配置。 Au…

【MySQL】EXISTS 與 NOT EXISTS 深度解析:從原理到實戰的完整指南

在復雜的業務查詢中&#xff0c;我們常常需要判斷“是否存在滿足某條件的記錄”或“找出不滿足某些條件的記錄”。這時&#xff0c;EXISTS 和 NOT EXISTS 子查詢便成為強大的工具。它們不僅邏輯清晰、語義明確&#xff0c;而且在某些場景下性能遠超 IN 或 JOIN。然而&#xff0…

面對信號在時頻平面打結,VNCMD分割算法深度解密

“ 信號迷宮中的破壁者&#xff1a;VNCMD如何分解糾纏的時空密碼&#xff1f;——從鯨歌到機械故障&#xff0c;寬帶信號分解新紀元。”01—痛點直擊&#xff1a;為什么傳統方法集體失效&#xff1f;2017年&#xff0c;上海交大團隊提出了一項突破性研究&#xff1a;變分非線性…

CSS優先級、HTTP響應狀態碼

CSS優先級 優先級&#xff1a;看CSS的來源、樣式引入方式、選擇器、源碼順序。 行內樣式/內聯樣式&#xff1a;直接在HTML元素的style屬性中編寫CSS樣式。這種方式適用于少量樣式的情況&#xff0c;但不推薦在大規模開發中使用&#xff0c;因為它會使HTML文件變得冗長和難以維…

項目一系列-第2章 Git版本控制

第2章 Git版本控制 2.1 Git概述 Git是什么&#xff1f;Git是一個分布式版本控制工具&#xff0c;于管理開發過程中的文件。 Git有哪些作用&#xff1f; 遠程備份&#xff1a;Git可以將本地代碼備份到遠程服務器&#xff0c;防止數據丟失。多人協作&#xff1a;Git運行多個開發者…

Java異常:認識異常、異常的作用、自定義異常

目錄1.什么是異常&#xff1f;1&#xff09;運行時異常2&#xff09;編譯時異常2.異常的作用1&#xff09;Java 異常在定位 BUG 中的核心作用2&#xff09;Java 異常作為方法內部特殊返回值的作用3&#xff09;自定義異常1.什么是異常&#xff1f; Error:代表的系統級別錯誤(屬…

第十九天-輸入捕獲實驗

一、輸入捕獲概述1、輸入捕獲框圖2、輸入捕獲工作詳解①設置輸入捕獲濾波器可以設置濾波&#xff0c;濾除一些高電平脈寬不足的脈沖信號。②設置捕獲極性③輸入捕獲映射④輸入捕獲分頻器這里的捕獲是將計數器的值存入比較寄存器中&#xff0c;分頻次的作用是設置幾個上升沿/下降…

多線程問題,子線程同時操作全局變量,使用后需要清空嗎 ?

背景&#xff1a;目前有一個全局變量 &#xff0c;某個方法中通過多線程&#xff0c;都操作這個變量&#xff0c;向這個全局變量中去添加元素&#xff0c;然后等所有子線程執行完了之后&#xff0c;對這個全局變量進行批量保存&#xff0c;然后這個全局變量還需要手動去清空嗎&…

Netty知識儲備:BIO、NIO、Reactor模型

學習Netty之前&#xff0c;首先先掌握這些基礎知識&#xff1a;阻塞&#xff08;Block&#xff09;與非阻塞&#xff08;Non-Block&#xff09;&#xff0c;同步&#xff08;Synchronous&#xff09;與異步&#xff08;Asynchronous&#xff09;&#xff0c;Java BIO與NIO對比。…

用生成器守住架構,用 AI 放大效率:一套可落地的 AI 編程方法論

背景與問題 現實困境: 直接讓 AI 產出整塊業務代碼&#xff0c;常常與現有架構風格、分層邊界、依賴策略不一致&#xff0c;后續改造成本高&#xff1b;AI 對現實業務語境、領域規則難以精準把握&#xff1b;在既定模板成熟的場景下&#xff0c;代碼生成器往往更快、更整齊。目…

碼頭岸電系統如何保障供電安全?安科瑞絕緣監測及故障定位方案解析

當岸電電網是TN-S系統時&#xff0c;船體未接專用接地線且船舶電網未與岸電零線接通&#xff0c;船舶電網發生單相接地故障時&#xff0c;人站在岸上觸及船體會有觸電危險&#xff0c;零線上可能出現高電壓&#xff0c;單相接地電流大。當船體接專用接地線且船舶電網接入岸電零…

ESP32_u8g2移植

前言 U8g2 是一個用于嵌入式設備的單色圖形庫。U8g2支持單色OLED和LCD&#xff0c;并支持如SSD1306 SSD1315等多種類型的OLED驅動&#xff0c;幾乎市面上常見都支持。 U8g2源碼 download&#xff1a;https://github.com/olikraus/u8g21&#xff1a;環境 ESP32 S3(ESP32-S3-Dev…

MCP實現:.Net實現MCP服務端 + Ollama ,MCP服務端工具調用

本文使用.Net編寫MCP服務端 Ollama &#xff0c;實現簡單MCP調用&#xff0c;代碼僅實現基本演示功能。 文章目錄一、Ollama如何安裝使用二、創建.Net8項目&#xff0c;開發MCP服務端三、開發MCP客戶端&#xff0c;并對接Ollama一、Ollama如何安裝使用 請移步&#xff1a;htt…

Docker的安裝使用以及常見的網絡問題

一、什么是DockerDocker是一種容器化技術&#xff0c;用于快速打包、分發和運行程序。他的核心思想是"一次構建&#xff0c;到處運行"&#xff0c;通過將應用及其依賴的環境打包到一個輕量級、可移植的容器中&#xff0c;實現跨平臺一致運行。二、Docker的安裝1.Cent…

C++入門學習

1.命名空間的介紹首先我們看到如下的代碼&#xff0c;在C語言中&#xff1a;#include <stdio.h> #include <stdlib.h> int rand 10; // C語言沒辦法解決類似這樣的命名沖突問題&#xff0c;所以C提出了namespace來解決 int main() {printf("%d\n", rand…

解決python錯誤:playwright._impl._errors.TimeoutError: Timeout 30000ms exceeded.

from playwright.sync_api import sync_playwrightwith sync_playwright() as p:browser = p.chromium.launch(headless=False)page = browser.new_page() page.goto(url)page.wait_for_load_state(networkidle) 在Python環境中運行以上代碼后報錯: page.wait_for_load_…

爬蟲逆向之雷池waf

本文章中所有內容僅供學習交流使用&#xff0c;不用于其他任何目的。否則由此產生的一切后果均與作者無關&#xff01; 雷池waf概念 雷池 WAF&#xff08;SafeLine&#xff09;是長亭科技開源的一款 Web 應用防火墻&#xff0c;部署在網站前面&#xff0c;把所有進來的 HTTP/…

23種設計模式解析--行為型

行為型模式&#xff08;協作的藝術&#xff09; 觀察者模式 觀察者模式詳解 模式定義 觀察者模式&#xff08;Observer Pattern&#xff09;是一種行為設計模式&#xff0c;用于建立對象間一對多的依賴關系。當一個對象&#xff08;Subject&#xff09;狀態變化時&#xff0c;所…