
發布
注冊
/
登錄51單片機的案例
為什么51單片機愛用11.0592MHZ晶振?
Q:為什么51單片機愛用11.0592MHZ晶振?
(1)因為它能夠準確地劃分成時鐘頻率,與UART(通用異步接收器/發送器)量常見的波特率相關。特別是較高的波特率(19600,19200),不管多么古怪的值,這些晶振都是準確,常被使用的。
(2)用11.0592晶振的原因是51單片機的定時器導致的。用51單片機的定時器做波特率發生器時,如果用11.0592Mhz的晶振,根據公式算下來需要定時器設置的值都是整數;如果用12Mhz晶振,則波特率都是有偏差的,比如9600,用定時器取0XFD,實際波特率10000,一般波特率偏差在4%左右都是可以的,所以也還能用STC90C516 晶振12M 波特率9600,倍數時誤差率6.99%,不倍數時誤差率8.51%,數據肯定會出錯。 這也就是串口通信時大家喜歡用11.0592MHz晶振的原因,在波特率倍速時,最高可達到57600,誤差率0.00%。
展開 51單片機的啟動代碼里面都寫了啥?
在我們使用kei c51創建一個51單片機項目時,會有如下圖所示的提示:
keil創建新項目時,提示是否添加啟動文件
一般情況下,需要選擇“是”。當然,也可以選擇不加。那么,這個啟動文件的作用是什么?什么情況下需要加,什么情況下可以不加?
今天我們就來詳細了解一下這個啟動文件的內容,看明白這個內容后,我們就會有種恍然大悟的感覺:“哦,原來是這樣??!”
基于51單片機的風速測量儀設計
整個系統由風速測量模塊、單片機模塊、風速顯示模塊、供電模塊組成,整個系統的硬件框圖如圖 1 所示。
圖1 系統硬件框圖
1.2 電源電路方案
系統電源電路部分需要為單片機最小系統提供+5 V 直流電源,同時需要為三杯風速傳感器提供 24 V直流電源,考慮到整個電路的 +5 V 部分需求功率較小,且整體功耗均不高的情況,直接使用市場上現有的直流+24 V/+5 V 開關電源作為供電電源,經過測試完全能夠滿足系統需求。
1.3 主控制器設計方案
本系統需要處理的數據不多,運算程度不復雜,使用 STM32 系列 32 位微控制器會造成資源浪費,而且STM32 方案外圍電路比較復雜,需要比較精準的電源,這些都將會造成系統實用性和性價比降低,因此采用 8位微控制器 STC89C51 單片機作為主控制器即可[4]。
單片機最小系統主要由主芯片、時鐘發生電路,復位電路組成,時鐘發生電路主要為整個單片機的運行提供精準的時鐘信號,使單片機的程序運行不會出現混亂。
圖2 單片機最小系統電路圖
1.4 風速測量方案設計
風速測量模塊主要實現對風力數據的采樣和輸出。三杯風速測量傳感器是一種用于測量風速的傳感器,通過查閱數據手冊可知,該傳感器在有風的時候吹動風杯帶動轉軸轉動,其傳感器內集成的電路可把風速轉換成為 0~5 V 的模擬信號輸出,其模擬電壓單片機無法直接處理,因此需要在傳感器的信號輸出和單片機輸入之間接入 ADC 轉換電路,把傳感器輸出的模擬信號轉換為數字信號,方便單片機處理。從表 1 可以看到不同的風速對應的風級和強度[5-7]。
ADC 轉換電路選用 ADC0832 作為轉換芯片,無需外圍電路,結構簡單。
展開 干貨 | 嵌入式和單片機,是同一個東西嗎?
這么說來,單片機不就是一個嵌入式系統?別急,我們往下看。
“單片機”其實是一種古老的叫法。以前半導體工藝技術不成熟,不同的功能無法做進一個芯片(Chip),所以會有多片機?,F在半導體技術早已非常發達,所以不存在多片機。但是,“單片機”的叫法卻一直延用至今。
很多高校老師喜歡強調單片機姓“單”,除了指單片機只是一個硅片之外,更多是指單片機的功能單一,它是完成運算、邏輯控制、通信等功能的單一模塊。即便它性能再強大,功能依然是單一的。
單片機技術從上世紀70年代末誕生,早期的時候是4位,后來發展為8位,16位,32位。它真正崛起,是在8位時代。8位單片機功能很強,被廣泛應用于工業控制、儀器儀表、家電汽車等領域。
我們在研究單片機的時候,經常會聽到兩個詞——51單片機、STM32。我來介紹一下它們究竟是什么。
51單片機,其實就是一系列單片機的統稱。該系列單片機,兼容Intel 8031指令系統。它們的始祖,是Intel(英特爾)的8004單片機。
注意,51單片機并不全是英特爾公司的產品。包括ATMEL(艾德梅爾)、Philips(飛利浦)、華邦、Dallas(達拉斯)、Siemens(西門子)、STC(國產宏晶)等公司,也有很多產品屬于51單片機系列。
ATMEL公司的51單片機,AT89C51
這是一個51單片機的開發板,中間那個芯片才是51單片機
51單片機曾經在很長時間里都是市面上最主流、應用最廣泛的單片機,占據大量的市場份額。
51單片機其實放在現在毫無技術優勢,是一種很老的技術。
展開 
嵌入式和單片機,是同一個東西嗎?
這么說來,單片機不就是一個嵌入式系統?別急,我們往下看。
“單片機”其實是一種古老的叫法。以前半導體工藝技術不成熟,不同的功能無法做進一個芯片(Chip),所以會有多片機?,F在半導體技術早已非常發達,所以不存在多片機。但是,“單片機”的叫法卻一直延用至今。
很多高校老師喜歡強調單片機姓“單”,除了指單片機只是一個硅片之外,更多是指單片機的功能單一,它是完成運算、邏輯控制、通信等功能的單一模塊。即便它性能再強大,功能依然是單一的。
單片機技術從上世紀70年代末誕生,早期的時候是4位,后來發展為8位,16位,32位。它真正崛起,是在8位時代。8位單片機功能很強,被廣泛應用于工業控制、儀器儀表、家電汽車等領域。
我們在研究單片機的時候,經常會聽到兩個詞——51單片機、STM32。我來介紹一下它們究竟是什么。
51單片機,其實就是一系列單片機的統稱。該系列單片機,兼容Intel 8031指令系統。它們的始祖,是Intel(英特爾)的8004單片機。
注意,51單片機并不全是英特爾公司的產品。包括ATMEL(艾德梅爾)、Philips(飛利浦)、華邦、Dallas(達拉斯)、Siemens(西門子)、STC(國產宏晶)等公司,也有很多產品屬于51單片機系列。
ATMEL公司的51單片機,AT89C51
這是一個51單片機的開發板,中間那個芯片才是51單片機
51單片機曾經在很長時間里都是市面上最主流、應用最廣泛的單片機,占據大量的市場份額。
51單片機其實放在現在毫無技術優勢,是一種很老的技術。
展開 5分鐘了解單片機數據、地址、控制總線結構
單片機的三總線結構
51系列單片機具有完善的總線接口時序,可以擴展控制對象,其直接尋址能力達到64k( 2的16次方) 。在總線模式下,不同的對象共享總線,獨立編址、分時復用總線,CPU 通過地址選擇訪問的對象,完成與各對象之間的信息傳遞。
數據總線
51單片機的數據總線為P0口,P0口為雙向數據通道,CPU從P0 口送出和讀回數據。
地址總線
51系列單片機的地址總線為16位。
如何學習單片機
學習單片機,最忌諱心浮氣燥,遇到問題時在網上到處發帖求人,不去自己解決問題。
在剛開始學的時候,不要怕自己會犯錯誤,程序調不通,或者燒幾個單片機,是非常正常的事情?;A需要自己一點一點的積累,當積累的一定的數量后,自然就會有質的飛躍。但如果你遇到問題后就到處求人,自己不動腦筋的去解決問題,你就決不可能有質的飛躍。而且,誰都有這么一個初學階段,沒什么大不了的
基礎知識,在我們學習單片機的過程中十分重要。打好基礎,就可以從一個點出發,逐漸觸及其他知識。這也就是為什么網上有人認為先學好51單片機再去學arm會更好。
三、開始學習前你需要了解的幾個概念
單片機:單片機是個廣義的叫法,mcs51系列,96系列,arm系列,msp430系列等等,都可以叫單片機。單片機其實就是指那些把輸入輸出部分,控制器,運算器等各個部件集成到一個芯片的ic。國外也叫SingalChip。至于把單片機叫做mcu,我覺得因為51系列單片機多用于工業控制領域,所以叫micro control unit。
燒錄: 早期的單片機,要執行某個程序的話,需要從單片機以外的地方(一般是外部存儲器)獲取指令; 現代的單片機內部集成了存儲器,執行時可以直接從內部存儲器獲取指令。而這些指令是如何寫進內部或外部存儲器中的呢?當然是通過一種比較特殊的手段寫入,這個寫入過程就稱為燒錄
仿真: 單片機獲取了指令后,就會執行下去,執行過程中,你無法看到單片機內部的狀態。現在我有這樣一個設備,這個設備可以模擬單片機的全部功能,我通過這個設備執行某個程序,這樣我就可以查看單片機內部的狀態了,這個操作程為仿真。
展開 科普:指令集——CPU芯片江湖中的門派標志
一、指令集與微架構的三個代表
基于上述原因,以及ARM CPU通常被嵌入到SoC芯片中,本文選擇了MCS-51作為MCU指令集的代表,x86既作為CISC指令集的代表也作為了CPU指令集的代表,ARM既作為RISC指令集的代表也作為了SoC指令集的代表,下文對它們做簡要介紹和展示。
1.MCS-51指令集和微架構
MCS-51指令集是Intel公司1980年前后開發的單片機指令集,該指令集包含數據傳送、位操作、邏輯運算及轉移、算術運算、控制轉移5個大類共計111條指令(圖3)。該指令集對應的單片機微架構如圖4所示。
通過對該微架構硬件的增、減、改變,Intel先后開發了兼容MCS-51指令集的系列單片機芯片,共計16個型號(圖3)。另外Intel也向許多公司開放MCS-51指令集和微架構,允許他們生產兼容MCS-51指令集的單片機。這些公司包括ATMEL、PHILIPS、NXP、OKI等,以及日本、臺灣和國內的一些公司。因此,MCS-51單片機在全球應用十分普及。MCS-51開辟了一個規模龐大、應用甚廣的單片機大家族。
圖3.MCS-51單片機指令集(來源:無憂文檔)
圖4. MCS-51單片機內部的微架構(來源:百度百科)
圖5. MCS-51單片機家族(來源:參考資料5)
2. x86指令集和微架構
1978年,Intel公司開發出了16位的CPU,并命名為i8086,同時還開發出與之相配合的數學協處理器i8087,這兩種芯片使用相互兼容的指令集,再加上i8087用于對數、指數和三角函數等數學計算的指令集,就形成了今天人們常說的x86指令集。
展開 招聘仿真模擬工程師兼職
單片機:擅長51單片機/fpga/verilog/vivado/modelsim/通信/接口控制/quartus ise 任何軟件都可。
有興趣加微信: CAE320
學電氣如何點技能樹?
分支一:單片機——嵌入式
開發板:由51單片機(8位)入門,然后msp430(16位)(可選),然后stm32,ARM等等;
裸機開發——跑嵌入式系統;
分支二:數字電路——嵌入式
數字電路原理——VHDL,FPGA——等等
分支三:模擬電路——嵌入式
分支四:電機——電機控制——嵌入式
主要開發板:TMSF3202812,TMSF32028335;
需要學習:異步電機矢量控制原理,異步電機直接轉矩控制原理,永磁同步電機矢量控制原理,永磁同步電機直接轉矩控制原理+現代控制策略。
軟件支持:SIMULINK,CCS
分支五:PLC技術——自動化控制
需要學習:常見PLC控制器的使用,西門子,歐姆龍,三菱。
軟件支持:PLC相關軟件
分支六:電力電子技術——嵌入式
需要學習:《電力電子技術》整流,逆變,斬波,開關電源等等。
軟件支持:SIMULINK
分支七:電力系統分析——國家電網
需要學習:《電力系統暫態穩態分析》《高電壓技術》
分支八:C語言——互聯網
總結:
1.電氣工程專業課程學的多,能用的也多啊,萬金油專業這個名號可以說是名副其實的,尤其本科畢業的學生,就業面相當的寬。但是存在的問題是,由于專業課多,稍不努力學,就會啥也不會,或者說面寬沒有深度。
2.本專業學生不管畢業以后想從事哪方面的工作,專業課還是要好好學的。怎么好好學法?反正知乎上是學不好專業課的,喜歡讀科普的是小學生。
3.不要再去質疑本科學的課程的價值和實用性,你如果覺得沒價值那就學你喜歡的。
4.也不要在如此之多的技能選擇中迷失了自我,希望可以早點思考自己的就業方向,不要大四找工作的時候,才發現自己這也不會那也不懂。
展開 PLC與單片機控制系統,本質區別在哪?
PLC與單片機的差別是:
1、PLC是應用單片機構成的比較成熟的控制系統,是已經調試成熟穩定的單片機應用系統的產品,有較強的通用性。
2、而單片機可以構成各種各樣的應用系統,使用范圍更廣。單就“單片機”而言,它只是一種集成電路,還必須與其它元器件及軟件構成系統才能應用。
3、從工程的使用來看,對單項工程或重復數極少的項目,采用PLC快捷方便,成功率高,可靠性好,但成本較高。
4、對于量大的配套項目,采用單片機系統具有成本低、效益高的優點,但這要有相當的研發力量和行業經驗才能使系統穩定。
從本質上說,PLC其實就是一套已經做好的單片機(單片機范圍很廣的)系統。
但PLC也有其特點:PLC廣泛使用梯形圖代替計算機語言,對編程有一定的優勢。你可以把梯形圖理解成是與匯編等計算器語言一樣,是一種編程語言,只是使用范圍不同!而且通常做法是由PLC軟件把你的梯形圖轉換成C或匯編語言(由PLC所使用的CPU決定),然后利用匯編或C編譯系統編譯成機器碼!PLC運行的只是機器碼而已。梯形圖只是讓使用者更加容易使用而已。
如上所說,那么MCS-51單片機當然也可以用于PLC制作,只是8位CPU在一些高級應用如: 大量運算(包括浮點運算),嵌入式系統(現在UCOS也能移植到MCS-51)等,有些力不從心而已,不過加上DSP就已經能滿足一般要求了,而且同樣使用梯形圖編程,我們可把梯形圖轉化為C51再利用KEIL的C51進行編譯。
展開 
那些年畫電路時干的傻事,你干了幾個?
當年我第一次畫的板子是一個51單片機的通信板,用的RS232芯片,犯過幾個嚴重的錯誤,第一個錯誤:用的Protel里DIP-40的封裝庫,但是單片機要用一個40P的母座,結果孔徑太小放不進去;第二個錯誤:把RS232芯片的RX和TX引腳搞反了;第三個錯誤:把六腳帶鎖開關的引腳搞反了,不管怎么按都是常通狀態。板子焊好了不能用,被導師一頓很批,最后重新畫的板。
1、有極性的電容,原理圖和PCB把管腳搞反了?
↑ 極性電容反了容易炸
2.電源和地忘記接了。。。。還有接反的。。。
↑ 以前很納悶為什么有這么多相同但獨立的引腳
3、連接器的線序搞反了
↑ 這個拿反了很容易錯
4、RX、TX接反了。。。
↑ 一定要搞清楚TX和RX是相對MCU而言,還是器件本身而言
5、想當然的寫一個封裝,結果沒有這個規格的器件。百度文庫下載datasheet,結果根本買不到這個器件。
↑ 封裝要根據datasheet或者實物畫
6、直接抄電路,結果器件根本買不著。
曾經一個做智能鎖的團隊,電路直接抄三星的智能鎖,結果里面一個電容式觸摸按鍵的控制器,是韓國產的很難買到,而且沒有什么代理和支持。純靠自己試驗和摸索。
↑初學階段這是常態
7、選擇電容的時候,只考慮容量,沒有考慮耐壓,結果這么大的封裝放不下滿足規格電容。
↑ 初學階段基本這樣
8、選擇電阻的時候,只看阻值,不看功耗。
展開 基于555多諧振蕩器及STM32的簡易智能阻值測量儀
1.2 STM32控制模塊
該儀器使用STM32F 系列單片機作為主控芯片,相比51 單片機,該芯片有51 個I/O 口,集成了8 個TIM定時器,除了TIM6、7 外都具有輸入捕獲功能[2],可以用來測量脈沖寬度,滿足進行多個元件測量的需求,如圖3 所示。該芯片集成了多個定時器且有多個通道可對外部信號源進行測量,可以實現對555 多諧振蕩器的頻率測量,并且通過軟件計算求得測量阻值,接收通過按鍵電路輸入的阻值閾值,與測量的阻值進行比較,若超過設定范圍則報警。
圖3 STM32及AT51單片機
1.3 USB模塊
該系統使用通用串行總線方式下載程序,該總線采用RS-232 標準,因此需要將通信電平USB 和TTL 電平相互轉換。采用CH640G 集成芯片設計USART 串口模塊,且在此模塊中已將數據的接收發送引腳相互交叉連接,給程序下載提供了一個可靠的路徑,如圖4 所示。
圖4 USB模塊
1.4 電源模塊
系統中STM32 需要3.3 V 電壓工作,而555 多諧振蕩器的工作電壓為5 V,需要一個電源模塊分別供電;在該儀器中集成了燈光報警和多個555 多諧振蕩器,需要用負載能力強的電源模塊。采用LM7805 電源芯片實現12 V 外部供電電壓,外接μF 濾波電容和防止大電壓輸出的保護二極管將12 V 電壓降到5 V[3],給多個555多諧振蕩器和LCD1602 顯示屏供電,如圖5 所示。
圖5 12V轉5V
采用ASM1117 集成電源芯片的固定輸出版本能高效地將電壓線性地從5 V 轉為3.3 V。
展開 為什么單片機接通電源,要加入一定的延遲時間?
80C51單片機的上電復位POR(Pmver On Reset)實質上就是上電延時復位,也就是在上電延時期間把單片機鎖定在復位狀態上。
為什么在每次單片機接通電源時,都需要加入一定的延遲時間呢?
分析如下。
01
上電復位時序
在單片機及其應用電路每次上電的過程中,由于電源同路中通常存在一些容量大小不等的濾波電容,使得單片機芯片在其電源引腳VCC和VSS之間所感受到的電源電壓值VDD,是從低到高逐漸上升的。該過程所持續的時間一般為1~100ms(記作 tsddrise)。上電延時taddrise的定義是電源電壓從lO%VDD上升到90%VDD所需的時間,如圖1所示。
在單片機電源電壓上升到適合內部振蕩電路運行的范圍并且穩定下來之后,時鐘振蕩器開始了啟動過程(具體包括偏置、起振、鎖定和穩定幾個過程)。該過程所持續的時間一般為1~50 ms(記作tOSC)。起振延時tOSC的定義是時鐘振蕩器輸出信號的高電平達到Vih1所需的時間。從圖1所示的實際測量圖中也可以看得很清楚。這里的 Vih1是單片機電氣特性中的一個普通參數,代表XTALl和RST引腳上的輸入邏輯高電平。例如,對于常見的單片機型號AT89C5l和 AT89S5l,廠家給出的Vih1值為0.7VDD~VDD 0.5V。
從理論上講,單片機每次上電復位所需的很短延時應該不小于treset。這里,treset等于上電延時taddrise與起振延時tOSC之和,如圖1所示。從實際上講,延遲一個treset往往還不夠,不能夠保障單片機有--一個良好的工作開端。
展開 單片機的排阻有啥用?掰開揉碎給你講清楚
51單片機最小系統排阻作用
起上拉作用:
上拉就是將不確定的信號通過一個電阻嵌位在高電平,電阻同時起限流作用,下拉同理。上拉是對器件注入電流,下拉是輸出電流,弱強只是上拉電阻的阻值不同,沒有什么嚴格區分,對于非集電極(或漏極)開路輸出型電路(如普通門電路)提升電流和電壓的能力是有限的,上拉電阻的功能主要是為集電極開路輸出型電路輸出電流通道。
另外其他I/O口都是準雙向口且都有驅動能力,P0口也是準雙向口但是驅動能力小,加排阻說白了就是給P0加驅動電路,電源通過排阻向P0口供電,使其能夠驅動與P0口相連的元件。
單片機中排阻的焊接方法
先找出排阻的公共端。公共端在排阻標有小白點的一側。也可以用萬用表電阻檔測量一下,任意選擇一端,測量該端與其余引腳的電阻,若個引腳的電阻相等,該端為公共端,否則,另一端為公共端。
公共端連接單片機電源,其它引腳分別連接單片機IO口。具體焊接方法與焊接普通電阻一樣,只是引腳多一點而已??上群附觾啥耍ㄎ缓?,再焊接中間引腳。
如圖:帶點的一端為排阻的公共端。
RP是排阻,J0就接數碼管的段碼。
展開