51單片機二十天的學(xué)習(xí)心得
單片機最小系統(tǒng)實驗板學(xué)習(xí)總結(jié)
在過去的二十多天里,我通過自學(xué)的方式,在哈爾濱工程大學(xué)郭天祥老師的視頻為輔導(dǎo)下。自己借了同學(xué)的一塊單片機學(xué)習(xí)實驗板,從單片機最基礎(chǔ)的部分學(xué)起,感覺收獲不少,現(xiàn)將我最近的學(xué)習(xí)心得分享給大家,也希望那些在單片機外面迷茫的同學(xué)們能夠快速入門。以獲得更高的知識儲備。
以前的我對單片機不知迷茫,甚至恐懼。但是現(xiàn)在我發(fā)現(xiàn)喜歡上了單片機。單片機用途太廣泛了,我才發(fā)現(xiàn)基本上沒有哪個領(lǐng)域能離開單片機了。單片機非常好玩,真的能讓人上癮。本著不想虛度大學(xué)生活的想法,我試著開始接觸單片機,現(xiàn)在感覺已不能自拔。郭天翔老師的單片機教學(xué)視頻非常的棒,真的很感謝郭老師能把這么好的學(xué)習(xí)方法和大家分享。在這個視頻的輔助下,我基本上已經(jīng)對單片機入門了。從點亮第一個LED燈開始,到現(xiàn)在對液晶的熟練使用。一點一點剖析單片機的內(nèi)部結(jié)構(gòu)。就像郭老師說的一樣,實踐真的很重要,有理論沒實踐的摸索,很困難,而且很枯燥,很難有毅力堅持下去。經(jīng)濟能力許可的話最好買一個單片機快速開發(fā)板或者自己做一個都行。把每一個理論從單片機上顯示出來。你就會越學(xué)越想學(xué),越來越感覺自己會的東西太少了,你就會像餓狼一樣不停的去咀嚼每一個知識點。越學(xué)越有意思。
單片機外圍電路的實驗,可以通過proteus或Altium-design去仿真實現(xiàn),這些軟件非常好用,也非常好學(xué)。更進(jìn)一步的話,如果學(xué)校實驗室條件許可的話,也可以去實驗室學(xué)習(xí),在這里回收的更多,里面的牛人很多的。因為之前匯編學(xué)的不是太好,我現(xiàn)在直接用的C語言去編寫程序。緊湊程度,方便閱讀,可移植性都是其他語言不能比擬的,而且對幫助快速入門單片機很有幫助。編譯器是KEIL51.可編程,也可軟件仿真。
單片機真的不是太難,但是要學(xué)的東西真是太多了。也希望你能掌握正確的學(xué)習(xí)方法,學(xué)習(xí)順利,獲得更高的知識儲備。
擴展閱讀:MCS51單片機入門學(xué)習(xí)心得
MSC51單片機入門學(xué)習(xí)心得
1、Keil&C51基本知識和技巧:
(1)調(diào)試時間之前記得調(diào)整晶振頻率
(2)程序改過之后要點擊“rebuildalltargetfile”才能更新hex文件(3)新建text文件后要保存為“文件名.c”,然后放進(jìn)工程(4)引用各串口時記得用大寫(如“P0”)
(5)用STC-ISP燒程序時,當(dāng)hex文件進(jìn)行了更新,需要重新“打開程序文件”(6)用sbit可以給單片機上某個指定I/O口進(jìn)行定義,如“sbitD1=P0^0”(7)對程序進(jìn)行調(diào)試之前需要進(jìn)行保存和編譯
(8)宏定義#define的格式:#define字符串字符串代表的內(nèi)容(不需要加分號)(9)如要調(diào)用子函數(shù),需在主函數(shù)之前進(jìn)行聲明,(聲明格式:“函數(shù)類型函數(shù)名(形
參類型);”,如“voiddelay(unsignedint);”。記得其后要加分號)
(10)主函數(shù)里面記得先添加一個大循環(huán)while(1){}(11)每當(dāng)需要放{}的時候記得要成對地放
(12)延時函數(shù)一般用嵌套的for()語句來設(shè)計,無限循環(huán)則一般用while()來實現(xiàn)(13)求反碼的技巧:以用8位二進(jìn)制表示的數(shù)00000001為例,求反碼只需用1111
1111減去00000001,用十六進(jìn)制表示即為0xff0x01,相減的結(jié)果即為00000001(0x01)的反碼
(14)向左循環(huán)移位函數(shù)“_crol_(變量名,移位的位數(shù))”能夠?qū)崿F(xiàn)二進(jìn)制數(shù)的循環(huán)左
移,使用該函數(shù)須添加頭文件“”
(15)向右循環(huán)移位函數(shù)“_cror_(變量名,移位的位數(shù))”能夠?qū)崿F(xiàn)二進(jìn)制數(shù)的循環(huán)右
移,使用該函數(shù)須添加頭文件“”
(16)char型變量一個字節(jié)(8位二進(jìn)制),int型變量2個字節(jié)(16位二進(jìn)制),longint
型4個字節(jié)(32位二進(jìn)制)
(17)用C51編程的時候出現(xiàn)“warning”的主要原因:定義出來的變量或者函數(shù)在程
序執(zhí)行過程中無法用到,一般出現(xiàn)了warning也要重新修正程序
(18)用keil編程時,不能在變量聲明語句之前加其它語句(C51看作是嚴(yán)格的C語
言)
(19)return語句的作用是退出函數(shù)和返回函數(shù)值,一個函數(shù)內(nèi)部允許有多個return
函數(shù)。如果函數(shù)有返回值,則函數(shù)的類型不能為Void型
(20)在函數(shù)A中被調(diào)用的函數(shù)B中的break不能對函數(shù)A產(chǎn)生作用(21)特殊延時函數(shù):voiddelay(){;;},延時時間大約為5us(22)在keil環(huán)境下,需要按兩下backspace才能刪掉一個中文字
2、單片機硬件知識:
(1)單片機復(fù)位管腳RST:復(fù)位信號輸入端,高電平有效,當(dāng)輸入不少于2個機器
周期的高電平時,單片機復(fù)位,內(nèi)部的程序指針指向0;單片機正常工作時RST加0.5V的低電平電壓;RST管腳同時還是單片機的備用電源接入端VPD,當(dāng)Vdd過低時,單片機接上連接在VPD端的備用電源,用來保證單片機RAM內(nèi)的數(shù)據(jù)不丟失
(2)單片機只在上電之后檢測計算機是否有傳來下載指令,如果有則上電后先從計算機上下載hex文件,然后再運行;單片機上電后則無法對其發(fā)送下載指令(單片機只能在上電之后運行之前進(jìn)行下載)
(3)關(guān)于P3總線:P3總線的每一個管腳除了能作為I/O接口,還有另外一個功能。
8個管腳默認(rèn)為I/O接口,要改變管腳的功能需要對內(nèi)部寄存器進(jìn)行設(shè)置
P3總線的第二功能介紹:
P3.0串行輸入口RXDP3.1串行輸出口TXDP3.2外部中斷0INT0P3.3外部中斷1INT1
P3.4定時器0/外部計數(shù)輸入T0&P3.5定時器1/外部計數(shù)輸入T1:能夠?qū)苣_輸入的方波數(shù)(高低電平轉(zhuǎn)換次數(shù))進(jìn)行計數(shù)
(4)30管腳ALE/PROG:單片機正常工作時向外輸出周期為六分之一個時鐘周期
的方波,用于檢測單片機是否正常工作
(5)31管腳EA/Vpp:低電平時單片機只訪問外部存儲器,高電平時當(dāng)單片機內(nèi)部
存儲器不夠用就訪問外部存儲器
3、數(shù)碼管的顯示:
(1)數(shù)碼管的動態(tài)顯示:利用了人類的視覺停留效應(yīng),即一個人正在看某個物體,
如果這個物體消失了,但能夠在1mS(0.001S)內(nèi)重新出現(xiàn),則人眼會覺得物體沒有消失過。則在設(shè)計數(shù)碼管動態(tài)顯示時,只要保證每位數(shù)碼管都能在消失后0.01s內(nèi)重新出現(xiàn)。(每位數(shù)碼管的發(fā)光時間應(yīng)該盡量長,保證有足夠的發(fā)光亮度)
(2)在數(shù)碼管的動態(tài)顯示中,先改變段選再改變位選能夠有效提高各段數(shù)碼管的清
晰度
3、定時器:
工作模式寄存器TMOD
控制寄存器TCON
(1)
定時器/計數(shù)器計數(shù)一次的時間約為0.0000011S(2)定時器的工作特征:每12個時鐘周期計數(shù)一次;計數(shù)完成后執(zhí)行一次定時器
中斷,定時器中斷其執(zhí)行的一般是對計時器的重新賦值;
(3)打開定時/計數(shù)器中斷的語句是“ET0/ET1=1;”,打開總中斷的語句是“EA=1;”(4)定時器無法啟動的原因:
1、沒有打開總中斷(EA沒有置1)2、沒有打開定時器中斷(IE沒有置1)
3、沒有設(shè)定定時器的工作方式(以上原因?qū)儆诙〞r器初始化失。4、沒有給計數(shù)變量count賦初值;5、沒有打開定時器(TR沒有置1)
(5)需要定時器/計數(shù)器計數(shù)N次,則給定時器/計數(shù)器賦的初值應(yīng)該是65536-N(6)使用定時器定時比較麻煩,而且定時器的數(shù)量有限,通常在需要精確定時的情
況下才用
(7)定時器中不能處理進(jìn)行太多的數(shù)據(jù)處理,否則會影響定時的準(zhǔn)確性(8)工作模式寄存器(TMOD):
1、GATE:當(dāng)GATE=0時,TR置1即可啟動定時器;當(dāng)GATE=1時,則需要在外部引腳信號INT=1的條件下把TR置1才能啟動定時器2、C/T:定時器/計數(shù)器選擇位,C/T=1時為計數(shù)方式,C/T=0時為定時方式
3、M0M1:工作方式選擇位,一般選擇M1=0,M0=1,此時定時器工作在16位定時器方式
(9)控制寄存器(TCON):
1、TR:定時器運行控制位,當(dāng)GATE=0時,TR=1啟動定時器,TR=0關(guān)閉定時器
2、TF:定時器溢出標(biāo)志位(與外部中斷有關(guān))3、IE:外部中斷請求標(biāo)志位
5、中斷:
(1)中斷的兩種觸發(fā)方式1、電平觸發(fā),中斷發(fā)生在低電平,除非重新回到高
電平,否則單片機無法返回中斷;2、CP脈沖上升/下降沿觸發(fā),中斷在CP脈沖的上升/下降沿觸發(fā),中斷響應(yīng)完之后程序自動返回中斷繼續(xù)執(zhí)行主程序
(2)外部中斷的使用方法(以外部中斷0為例):首先必須打開CPU中斷和外部中
斷,具體在主程序中寫入“EA=1;EX0=1;”;然后編寫中斷后要執(zhí)行的程序,格式為“void函數(shù)名()interrupt0”;設(shè)置外部中斷觸發(fā)方式,“IT0=1;”代表脈沖邊沿觸發(fā),“IT0=0”代表電平觸發(fā);IT0,EX0,EA的默認(rèn)值都為0
(3)8051支持的5個中斷源分別為外部中斷0、定時器0溢出中斷、外部中斷1、
定時器1溢出中斷和串口中斷。對應(yīng)的中斷號為0、1、2、3、4;
(4)中斷函數(shù)不需要在主函數(shù)之前聲明6、獨立鍵盤:
(1)使用獨立鍵盤的技巧:如果需要系統(tǒng)按一下按鍵執(zhí)行一次指令,則應(yīng)設(shè)定為按
下按鍵后進(jìn)入死循環(huán),松開按鍵后才執(zhí)行指令,則按鍵按下的時間不會影響到執(zhí)行指令的次數(shù),避免了系統(tǒng)的錯誤工作;同樣是針對按一下按鍵執(zhí)行一次指令的系統(tǒng),按下按鍵后和松開按鍵后設(shè)定約10毫秒的延時能夠消除由于振蕩而造成的錯誤執(zhí)行
(2)消抖一般是延時10ms,是否要進(jìn)行消抖需要結(jié)合具體情況進(jìn)行分析7、IIC總線:(1)
I^2C總線由兩條線組成:SCL(時間線)和SDA(數(shù)據(jù)線),當(dāng)SCL為低電平時,SDA的高低電平才能發(fā)生變化,SCL為高電平時SDA上的數(shù)據(jù)被讀取,此時SDA上的數(shù)據(jù)應(yīng)該保持穩(wěn)定
(2)
(3)(4)(5)(6)(7)(8)
(起始信號與終止信號)
在起始信號后必須傳送一個從機的地址(7位),第8位是數(shù)據(jù)的傳送方向位(發(fā)送T/接收R),0代表主機發(fā)送數(shù)據(jù),1代表主機接收數(shù)據(jù)
當(dāng)接收器要處理內(nèi)部中斷,無法繼續(xù)接收數(shù)據(jù)時,可以先把SCL拉低使發(fā)送器暫停工作,等到可以繼續(xù)接收數(shù)據(jù)時再釋放SCL
用IIC總線傳送數(shù)據(jù)時,stop信號和start信號之間應(yīng)該有一定的時間間隔。時間間隔太短機器有可能反應(yīng)不過來
IIC總線進(jìn)行數(shù)據(jù)傳送時,時鐘信號為高電平期間,數(shù)據(jù)線上的數(shù)據(jù)必須保持穩(wěn)定
養(yǎng)成良好習(xí)慣,數(shù)據(jù)總線不用的時候要將其釋放
IIC總線空閑時,SCL和SDA兩根線均為高電平;各器件與SCL、SDA的關(guān)系都是線“與”的關(guān)系
IIC主機進(jìn)行讀操作時,步驟是:起始信號從機地址+0(主機發(fā)送數(shù)據(jù))應(yīng)答從機內(nèi)部存儲單元地址應(yīng)答再次發(fā)送起始信號從機地址+1(主機讀取數(shù)據(jù))應(yīng)答讀取指定存儲單元中的數(shù)據(jù)非應(yīng)答終止信號(使用IIC總線的關(guān)鍵是嚴(yán)格按照操作步驟進(jìn)行操作!)IIC主機發(fā)出終止信號之后要隔一段時間才能重新發(fā)送起始信號傳送數(shù)據(jù)時從數(shù)據(jù)的最高位開始傳送
數(shù)據(jù)傳送進(jìn)行到應(yīng)答位時,要保證應(yīng)答位時鐘脈沖出現(xiàn)后和消失前SDA保持穩(wěn)定低電平
當(dāng)主機接收數(shù)據(jù)時,它收到最后一個數(shù)據(jù)字節(jié)后,必須向從機發(fā)出一個結(jié)束傳送的信號。這個信號是由對從機的“非應(yīng)答”來實現(xiàn)的。然后,從機釋放SDA線,以允許主機產(chǎn)生終止信號。
無論是讀數(shù)據(jù)還是寫數(shù)據(jù),讀/寫完一個字節(jié)之后必須添加應(yīng)答信號
(9)(10)(11)(12)
(13)
8、繼電器:
繼電器的作用是利用小電流控制大電流,相當(dāng)于一個電控開關(guān)。常用的繼電器有五個引腳,其中兩個通電后繼電器進(jìn)入“常閉”狀態(tài)。不通電時繼電器處于“常開”狀態(tài)。
9、時鐘芯片DS1302:
用BCD碼來存儲數(shù)據(jù),BCD碼的高4位對應(yīng)一個十進(jìn)制數(shù)的十位,低4位對應(yīng)十進(jìn)制數(shù)的個位
友情提示:本文中關(guān)于《51單片機二十天的學(xué)習(xí)心得》給出的范例僅供您參考拓展思維使用,51單片機二十天的學(xué)習(xí)心得:該篇文章建議您自主創(chuàng)作。
來源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問題,請聯(lián)系我們及時刪除。