tft每日頭條

 > 生活

 > 零基礎一個月學會51單片機

零基礎一個月學會51單片機

生活 更新时间:2024-11-11 02:30:34

大家好,我是小麥,最近有朋友問,已經學過51單片機了,如何進階?

零基礎一個月學會51單片機(已經學過51單片機)1

問題

事情是這樣的,他在本科時期已經有相應的單片機開發經驗,做過簡單的項目,流水燈,倒計時,紅綠燈,後面該如何提高呢?

首先我感覺得給進階下一個定義,也就是明确也學習目标,怎麼樣才算進階?我掌握哪些東西,可以獨立完成哪些開發任務,才算達到了進階的目的呢?

如果單純是單片機開發的進階?

我認為入門的階段是這樣的:

  • 如果剛開始以51單片機起步,能基于開發闆做簡單的項目,比如搞個流水燈,再複雜點會做電子萬年曆(DS1302 LCD1602)就挺不錯了;
  • 如果一開始就上STM32了,那麼能在常用的STM32開發闆上做一些功能,實現一些小的功能,或者能用CubeMX配置和初始化代碼,然後做一些項目;

我認為的進階是這樣的,需要掌握這些;

  • 首先我覺得硬件設計是必要的,能根據需求,進行硬件開發,進行原理圖設計,PCB的Layout,繪制簡單的雙層PCB闆;
  • 在進行硬件設計的過程中,可以試着抄一下已經開源的原理圖,或者一般集成電路的DataSheet中都有相應的參考電路,根據這些參考電路進行原理圖設計,後面可能會進行一些修改,在新的改版中進行修改即可。
  • 焊接技能,如果有最好了,沒有的話,可以在PCB打樣的時候找廠家進行貼片,配套服務還是很不錯的,節省了時間成本;
  • 樣闆到了之後,就要動手對闆子進行調試了,這時候會比較複雜,配套的技能包,比如示波器如何使用如何捕獲波形如何使用萬用表?有時候問題會比較玄乎,感覺可能在硬件上,又感覺在軟件上,這裡建議最好有一個方案驗證闆(至少保證硬件沒問題);
  • 最後是編寫安全可靠的代碼,當然如果移植性好,代碼框架好最好了;

之前也有朋友問我,自己想做一些DIY項目,軟硬件都自己設計,該如何學習?他是搞互聯網專業的,做嵌入式單純是愛好,享受生命在于折騰的快樂而已;

硬件設計

新手建議使用Altium Designer,教程比較多,國産軟件立創EDA也不錯,開源的KiCad也可以使用,選一款就行,軟件都大同小異,不要在糾結選擇哪一款軟件上而浪費時間,我個人建議使用Altium Designer,下面簡稱AD;

網上有很多免費的教程,可以去搜一下,看完教程一定要自己嘗試着設計一個電路,可以簡單一點,設計一個單片機的最小系統。

零基礎一個月學會51單片機(已經學過51單片機)2

零基礎一個月學會51單片機(已經學過51單片機)3

鍊接:https:///s/1yKfsttgIBeKKMK65m9H91g

提取碼:pzsz

軟件設計

單片機的編程開發是必須要掌握C語言的,彙編語言可以簡單能讀懂就行,調試的時候能簡單看懂反彙編就行,所以要把主要精力放在C語言上,其實,初期C語言會常用的語法:

  • 循環:for,while
  • 分支:if else,switch

就可以做很多事情了,但是後面還需要進階,因為寫出健壯高效,可複用,可移植的程序,隻會這些還遠遠不夠。

好了,我們學習了C語言是為了開發單片機的,是要直接對硬件進行操作,直接操作單片機上的外設寄存器,所以

這裡以STM32舉例,通常我們需要熟悉常用的接口和協議,和一些常用的外設,後面你會發現,不論是什麼廠家的單片機,其實都大同小異;

比較常用的,我們會遇到GPIO,TIM定時器,systick,UART,I2C,SPI,CAN等;

一般來說,像STM32這種硬件平台,前期使用的人很多,網絡資源非常豐富,很多時候會Ctrl C和Ctrl V就行了,另外ST提供了cubeMX這種工具,初始化根本不需要人為幹預,但是有時候過于依賴工具,往往會被工具反噬,我就遇到過用cubeMX配置代碼,遇到問題一臉懵逼,不知道如何下手的朋友。

當然我不是提倡大家穿着新鞋走老路,因為時代在發展,不能換一個寄存器一個寄存器去手撸,不過這時候,需要對底層有一個更全面的認識了,從單片機内核架構層面去理解,這需要學習其他的體系知識了,比如地址總線,數據總線,ARM的架構,外設是如何CPU進行數據交換的等等;

比如今年缺芯嚴重,不得不進行國産替代,不吹不黑,今年換了幾款國産的MCU,資料不太完善,也沒有太多參考的Demo,後來使用固件庫的時候發現了幾處BUG,最後還是得靠自己參考開發手冊排查錯誤。

言歸正傳,我們要學會去官網找資料,有很多應用方案,芯片的開發手冊UM( user manual),自己搭建開發環境,然後找到相應的芯片的固件庫,這些都能自力更生,就非常不錯了。

多提問,多交流

一個人,走得快,一群人,走得遠;所以要多與人交流溝通,不恥下問,這裡一定要注意提問的技巧;下面是我認為的幾點;

  • 盡量别問搜索引擎能解決的問題;
  • 盡量收集問題相關的信息;
    • 例如單片機而言,你不能問:為什麼我的燈點不亮?或者你可以問:我的燈點不亮,測量了IO輸出電平正常,但是沒有亮?
    • 不要使用難懂、模糊化等詞句,盡量簡短,清晰,簡明,扼要地描述你的問題;
    • 對的時間,問對的人,在别人全神貫注思考或搬磚的時候,就不要輕易打擾他人;
    • 明确你的提問目的是什麼,如果你自己都不在自己要問什麼,那還是先整理一下問題再問吧;

加入嵌入式技術交流群一起進步

最後

這篇文章裡我簡單地聊了一下如何進行單片機進階,個人認為需要硬件設計和軟件設計兩部分;

  • 硬件設計;
  • 軟件設計;

如果詳細展開,每個部分都有很多東西可以學習的,其實感覺最初能做簡單的PCB,然後在這硬件基礎上進行相應的軟件開發,就已經達到了一個進階的目的,後續需要的是不斷在項目中進行提高,可以不斷積累硬件方面的經驗,另外還需要系統地學習基礎知識,比如計算機系統(微機原理),C語言,數據結構等,軟件部分可以多看一下開源的優秀項目,學習他們的設計思想,這樣會提高得很快。

好了,這期先這樣,時間比較趕,簡單地說一下哈,我是小麥,我們下期再見。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved