第一篇:自學(xué)單片機(jī)心得體會(huì)
自學(xué)單片機(jī)心得體會(huì)
無(wú)論是作為一名業(yè)余的電子愛(ài)好者還是一名電子行業(yè)的相關(guān)從業(yè)人員,掌握單片機(jī)技術(shù)無(wú)疑可以使您如虎添翼,為您的電子小制作或者開(kāi)發(fā)設(shè)計(jì)電子產(chǎn)品時(shí)打開(kāi)方便的大門!
而且現(xiàn)在學(xué)習(xí)單片機(jī)技術(shù)的熱潮正在不斷升溫,電子發(fā)燒友網(wǎng)開(kāi)設(shè)了詳細(xì)的單片機(jī)學(xué)習(xí)專欄和人氣非常旺的論壇討論組,對(duì)于想學(xué)習(xí)單片機(jī)的朋友來(lái)說(shuō)幫助很大,可以說(shuō)現(xiàn)在的單片機(jī)學(xué)習(xí)環(huán)境是最好的,經(jīng)過(guò)一段時(shí)間的努力,采用單片機(jī)來(lái)開(kāi)發(fā)設(shè)計(jì)電子產(chǎn)品已經(jīng)不再是專業(yè)電子工程師的“專利”!作為一個(gè)普通的電子愛(ài)好者完全可以通過(guò)一番努力后熟練掌握!國(guó)外的電子愛(ài)好者采用單片機(jī)來(lái)設(shè)計(jì)小制作非常普及,一些智能機(jī)器人、智能自動(dòng)裝置內(nèi)部都離不開(kāi)單片機(jī)的身影~~~
學(xué)習(xí)單片機(jī)技術(shù)有一定的難度,不花費(fèi)一番努力是很難學(xué)會(huì)的,但是只要不斷努力就一定能成功,套用一句廣告歌詞:努力總有回報(bào)!
學(xué)習(xí)單片機(jī)最好從51系列開(kāi)始,第一是書多、資料多,而且掌握51技術(shù)的人多,碰到問(wèn)題能請(qǐng)教的老師也就多了,51系列的實(shí)驗(yàn)芯片AT89C51價(jià)格低廉而且很容易買到,AT89C51芯片而且可以反復(fù)擦寫1000次以上,對(duì)于初學(xué)者來(lái)說(shuō)真是太合適了,就算以后考慮工業(yè)運(yùn)用,也可以先學(xué)透51后再學(xué)其他類型的單片機(jī),畢竟技術(shù)是相通的。
學(xué)習(xí)單片機(jī)的第一步是看書,單片機(jī)是一個(gè)知識(shí)密集的東東,不看書是絕對(duì)不行的,北京航空航天大學(xué)出版社出版了大量單片機(jī)方面的好書,你可以直接登錄他們的網(wǎng)站進(jìn)行郵購(gòu)。本人認(rèn)為第一本書應(yīng)該是8051單片機(jī)的基礎(chǔ)原理書,我看的第一本書是問(wèn)單位一位大學(xué)生同事借的清華大學(xué)出版社的《單片機(jī)的原理及接口技術(shù)》這本是51的大學(xué)教科書,比較系統(tǒng)地介紹了51芯片的基礎(chǔ)知識(shí),我認(rèn)為這本書對(duì)我?guī)椭€是很大的,可以很系統(tǒng)地了解51單片機(jī),雖然一開(kāi)始不容易看懂,不過(guò)確實(shí)很有用,很有嚼頭,可以先大致看一遍,不消化的可以以后在試驗(yàn)實(shí)踐中反復(fù)研究。
這里我推薦初學(xué)者一張學(xué)習(xí)單片機(jī)的多媒體光盤,這張光盤中有比較詳細(xì)的單片機(jī)基礎(chǔ)知識(shí),因?yàn)槭菆D文并茂,所以學(xué)習(xí)起來(lái)比較容易上手,學(xué)習(xí)容易產(chǎn)生興趣,當(dāng)然最終還是要看書的,畢竟書更系統(tǒng)全面。
《MCS-51單片機(jī)實(shí)用接口技術(shù)》這是一本北京航空航天大學(xué)出版社出版的一本好書,它詳細(xì)描述了單片機(jī)的常見(jiàn)接口技術(shù),對(duì)于想以后開(kāi)發(fā)產(chǎn)品的話,那就人手一本吧!《單片機(jī)實(shí)踐與運(yùn)用》這本書詳細(xì)介紹了用單片機(jī)作的實(shí)驗(yàn),有很實(shí)用的匯編源程序,可以通過(guò)學(xué)習(xí)模仿上面的程序加以試驗(yàn),快速掌握單片機(jī)技術(shù)。
學(xué)習(xí)單片機(jī)的第二步是購(gòu)買工具,單片機(jī)芯片必須借助編程器才能寫入程序,站長(zhǎng)用的編程器是一種性能較好的Genius NSP 通用編程器,通用編程器的特點(diǎn)是專為開(kāi)發(fā)單片機(jī)和燒寫各類存儲(chǔ)器而設(shè)計(jì)的通用機(jī)型,它的編程可靠性高,支持的器件品種很多。
Genius NSP 通用編程器:
4Opins萬(wàn)用鎖緊插座。適應(yīng)絕大多數(shù)器件編程之所需。使用適配器能夠支持非DIP封裝器件的編程。
RS232竄口通訊。通訊波特率:57600bit/s
9V/500mA電源轉(zhuǎn)換器。
主要功能:EPROM、EEPROM、FLASH、MPU/CPU、PLD。Serial EEPROM六大類器件的編程;RAM器件及CMOS/TTL器件的測(cè)試等等。
可選擇的器件插入自動(dòng)探測(cè)啟動(dòng)功能,即當(dāng)您選擇該功能并啟動(dòng)后,不再需要每次點(diǎn)擊鼠標(biāo)啟動(dòng)操作,每次當(dāng)您更換芯片并鎖緊萬(wàn)用插座后操作自動(dòng)啟動(dòng)。
Genius NSP 可以在 WINDOS95、98、me、2000、XP上運(yùn)行。
從長(zhǎng)遠(yuǎn)的方面考慮,購(gòu)置一臺(tái)通用編程器是很有必要的。
學(xué)習(xí)單片機(jī)的第三步是反復(fù)編程實(shí)踐,這里需要一塊AT89C51的試驗(yàn)板。
仿真器對(duì)單片機(jī)初學(xué)者來(lái)說(shuō)既是那么耳熟,同時(shí)又有些陌生,這主要是因?yàn)槭袌?chǎng)上傳統(tǒng)的仿真器價(jià)格都在千元以上,對(duì)經(jīng)濟(jì)不是非常寬裕的人來(lái)說(shuō)是不小的開(kāi)支。同時(shí)仿真器是用來(lái)提高調(diào)試程序效率的,也不是非需不可的,所以站長(zhǎng)在自學(xué)單片機(jī)開(kāi)始的時(shí)候也沒(méi)有用過(guò)仿真器,碰到程序出錯(cuò)的時(shí)候,只好苦思冥想,或者在程序中插入一些驅(qū)動(dòng)端口的指令,然后再接上一些發(fā)光二極管做簡(jiǎn)單指示,一般調(diào)試一個(gè)程序,反復(fù)燒寫幾十次芯片是很經(jīng)常的。
現(xiàn)在我們介紹一種新型的廉價(jià)在線仿真器:它使用一片宏晶公司 【SST公司】的STC89C516RD 的單片機(jī),仿真機(jī)通過(guò)串口與 PC 連接,該型號(hào)單片機(jī)是51系列單片機(jī)中的一種,具有ISP(在系統(tǒng)可編程)功能,程序可串行下載,可仿真63K用戶程序空間,具有450個(gè)外部RAM字節(jié)。
具備了必要的工具以后就可以開(kāi)始學(xué)習(xí)單片機(jī)了,對(duì)單片機(jī)進(jìn)行編程可以采用匯編語(yǔ)言或者C語(yǔ)言,匯編語(yǔ)言的特點(diǎn)是代碼緊湊,對(duì)初學(xué)者的電腦水平要求低、上手快,但是程序編寫工作量大,站長(zhǎng)網(wǎng)站的程序范例就是采用匯編語(yǔ)言編寫的,這里說(shuō)的C語(yǔ)言是專用于51單片機(jī)的C語(yǔ)言,它的特點(diǎn)是編寫效率高,但是對(duì)使用者的電腦水平要求高,最好是已經(jīng)會(huì)C語(yǔ)言了,電子發(fā)燒友網(wǎng)網(wǎng)站上也有單片機(jī)C語(yǔ)言教程。我認(rèn)為初學(xué)單片機(jī)的人最好懂一些匯編語(yǔ)言,匯編語(yǔ)言可以直接控制單片機(jī)的資源,比如具體的單片機(jī)引腳、內(nèi)存地址,掌握這些也是很有必要的,學(xué)會(huì)匯編語(yǔ)言可以打下比較好的基礎(chǔ),很多參考書也是這么說(shuō)的,如果你是專業(yè)單片機(jī)開(kāi)發(fā)人員,那么C語(yǔ)言效率高,更適合你。
自學(xué)匯編語(yǔ)言,首先要學(xué)會(huì)看懂別人的匯編語(yǔ)言程序,可以將匯編語(yǔ)言的指令翻譯成自己容易理解的功能描述性文字,詳細(xì)注釋在程序后面,這樣便于自己以后引用或者別人容易看懂。站長(zhǎng)看到別人寫的一些匯編程序的注釋都非常少,這非常不利于初學(xué)者學(xué)習(xí)和互相交流,所以只要是站長(zhǎng)寫的程序都做了非常詳細(xì)的注釋。
學(xué)習(xí)匯編語(yǔ)言可以參考相關(guān)的書,匯編語(yǔ)言有100多條指令,但是常用的指令也就二三十條,可以先記住常用的匯編指令,如果一時(shí)記不住可以打印在紙上慢慢熟悉,然后對(duì)別人的匯編程序再加以試驗(yàn)驗(yàn)證,最后還可以在自己理解的基礎(chǔ)上對(duì)匯編程序的相關(guān)參數(shù)修改再反復(fù)試驗(yàn),這是快速掌握單片機(jī)的捷徑!
一、八路LED跑馬燈實(shí)驗(yàn)
現(xiàn)在讓我們開(kāi)始做第一個(gè)實(shí)驗(yàn):八路發(fā)光二極管輪流點(diǎn)亮的實(shí)驗(yàn),也就是通常所說(shuō)的跑馬燈實(shí)驗(yàn),首先讓我們來(lái)完成必須的硬件部分,我們需要焊接上8個(gè)發(fā)光二極管和8個(gè)限流電阻,可以參考下面的原理圖和實(shí)物圖像進(jìn)行操作,需要注意的是LED是有極性的,引腳長(zhǎng)的為正極,引腳短的為負(fù)極,負(fù)極和電阻一側(cè)連接,如果接錯(cuò)那么相應(yīng)的那一路可能在實(shí)驗(yàn)中不會(huì)點(diǎn)亮了,在焊接前要看仔細(xì)哦~~~
下面我們來(lái)完成軟件編程設(shè)計(jì),這里我們沒(méi)有采用高深的編程技巧,而是用了最笨、最直接的向端口送數(shù)的辦法來(lái)實(shí)現(xiàn),一來(lái)程序比較簡(jiǎn)單,沒(méi)必要玩深沉,而且初學(xué)者看起來(lái)直觀易懂。
ORG 0000H
START:MOV P1,#01111111B;最下面的LED點(diǎn)亮
LCALL DELAY;延時(shí)1秒
MOV P1,#10111111B;最下面第二個(gè)的LED點(diǎn)亮
LCALL DELAY;延時(shí)1秒
MOV P1,#11011111B;最下面第三個(gè)的LED點(diǎn)亮(以下省略)
LCALL DELAY
MOV P1,#11101111B
LCALL DELAY
MOV P1,#11110111B
LCALL DELAY
MOV P1,#11111011B
LCALL DELAY
MOV P1,#11111101B
LCALL DELAY
MOV P1,#11111110B
LCALL DELAY
MOV P1,#11111111B;完成第一次循環(huán)點(diǎn)亮,延時(shí)約0.25秒
AJMP START;反復(fù)循環(huán)
;延時(shí)子程序,12M晶振延時(shí)約250毫秒
DELAY:
MOV R4,#2
L3: MOV R2,#250
L1: MOV R3,#250
L2: DJNZ R3,L2
DJNZ R2,L1
DJNZ R4,L3
RET
END
如何精確計(jì)算延時(shí)子程序的執(zhí)行時(shí)間?
匯編語(yǔ)言的一大優(yōu)勢(shì)就是能夠精確控制程序的執(zhí)行時(shí)間,這在編寫一些對(duì)時(shí)序要求嚴(yán)格的外圍器件驅(qū)動(dòng)時(shí)由為重要!
二、兩位數(shù)碼管循環(huán)顯示00~99的實(shí)驗(yàn)
現(xiàn)在讓我們用實(shí)驗(yàn)板上的兩個(gè)數(shù)碼管來(lái)做一個(gè)循環(huán)顯示00~99數(shù)字的實(shí)驗(yàn),先來(lái)完成必要的硬件部分,數(shù)碼管有共陰和共陽(yáng)的區(qū)分,單片機(jī)都可以進(jìn)行驅(qū)動(dòng),但是驅(qū)動(dòng)的方法卻不同,并且相應(yīng)的0~9的顯示代碼也正好相反。
首先我們來(lái)介紹兩位共陽(yáng)數(shù)碼管的單片機(jī)驅(qū)動(dòng)方法,電路如下圖:
網(wǎng)友可以看到:P2.6和P2.7端口分別控制數(shù)碼管的十位和個(gè)位的供電,當(dāng)相應(yīng)的端口變成低電平時(shí),驅(qū)動(dòng)相應(yīng)的三極管會(huì)導(dǎo)通,+5V通過(guò)IN4148二極管和驅(qū)動(dòng)三極管給數(shù)碼管相應(yīng)的位供電,這時(shí)只要P0口送出數(shù)字的顯示代碼,數(shù)碼管就能正常顯示數(shù)字。
因?yàn)橐@示兩位不同的數(shù)字,所以必須用動(dòng)態(tài)掃描的方法來(lái)實(shí)現(xiàn),就是先個(gè)位顯示1毫秒,再十位顯示1毫秒,不斷循環(huán),這樣只要掃描時(shí)間小于1/50秒,就會(huì)因?yàn)槿搜鄣囊曈X(jué)殘留效應(yīng),看到兩位不同的數(shù)字穩(wěn)定顯示。
下面我們?cè)俳榻B一種共陰數(shù)碼管的單片機(jī)驅(qū)動(dòng)方法,電路如下圖:
網(wǎng)友可以看到:+5V通過(guò)1K的排阻直接給數(shù)碼管的8個(gè)段位供電,P2.6和P2.7端口分別控制數(shù)碼管的十位和個(gè)位的供電,當(dāng)相應(yīng)的端口變成低電平時(shí),相應(yīng)的位可以吸入電流。單片機(jī)的P0口輸出的數(shù)據(jù)相當(dāng)于將數(shù)碼管不要顯示的數(shù)字段對(duì)地短路,這樣數(shù)碼管就會(huì)顯示需要的數(shù)字。
網(wǎng)友可以看到,共陰數(shù)碼管的硬件更簡(jiǎn)單,所以在批量生產(chǎn)時(shí),硬件開(kāi)銷小,節(jié)省PCB面積,減少焊接工作量,降低綜合成本,所以采用共陰數(shù)碼管更有利于批量生產(chǎn),現(xiàn)在銷售的試驗(yàn)板都是采用共陰數(shù)碼管了。
以下是用AT89C51實(shí)驗(yàn)板的兩位數(shù)碼管顯示00~99依次循環(huán)的匯編語(yǔ)言程序
a_bit equ 20h;數(shù)碼管個(gè)位數(shù)存放內(nèi)存位置
b_bit equ 21h;數(shù)碼管十位數(shù)存放內(nèi)存位置
temp equ 22h;計(jì)數(shù)器數(shù)值存放內(nèi)存位置
star: mov temp,#0;初始化計(jì)數(shù)器,從0開(kāi)始
stlop: acall display;調(diào)用顯示子程序
inc temp;對(duì)計(jì)數(shù)器加1
mov a,temp
cjne a,#100,next;判斷計(jì)數(shù)器是否滿100?
mov temp,#0;滿100就清零重新開(kāi)始
next: ljmp stlop;不滿就循環(huán)執(zhí)行
;顯示子程序
display: mov a,temp;將temp中的十六進(jìn)制數(shù)轉(zhuǎn)換成10進(jìn)制
mov b,#10;10進(jìn)制/10=10進(jìn)制
div ab
mov b_bit,a;十位在a
mov a_bit,b;個(gè)位在b
mov dptr,#numtab;指定查表啟始地址
mov r0,#4
dpl1: mov r1,#250;
dplop: mov a,a_bit;取個(gè)位數(shù)
MOVC A,@A+DPTR;查個(gè)位數(shù)的7段代碼
mov p0,a;送出個(gè)位的7段代碼
clr p2.7;開(kāi)個(gè)位顯示
acall d1ms;顯示162微秒
setb p2.7;關(guān)閉個(gè)位顯示,防止鬼影
mov a,b_bit;取十位數(shù)
MOVC A,@A+DPTR;查十位數(shù)的7段代碼
mov p0,a;送出十位的7段代碼
clr p2.6;開(kāi)十位顯示
acall d1ms;顯示162微秒
setb p2.6;關(guān)閉十位顯示,防止鬼影
djnz r1,dplop;循環(huán)執(zhí)行250次
djnz r0,dpl1;循環(huán)執(zhí)行250X4=1000次
ret
;2+2X80=162微秒,延時(shí)按12MHZ計(jì)算
D1MS: MOV R7,#80
DJNZ R7,$
RET
;實(shí)驗(yàn)板上的7段數(shù)碼管0~9數(shù)字的共陰顯示代碼
numtab: DB 0CFH,03H,5DH,5BH,93H,0DAH,0DEH,43H,0DFH,0DBH
end
;如果是共陽(yáng)數(shù)碼管的顯示代碼
numtab: DB 30H,0FCH,0A2H,0A4H,06CH,25H,21H,0BCH,20H,24H
三、單片機(jī)演奏音樂(lè)實(shí)驗(yàn)
利用單片機(jī)演奏音樂(lè)大概是單片機(jī)愛(ài)好者感興趣的問(wèn)題之一。這里我們用網(wǎng)站提供的實(shí)驗(yàn)板來(lái)做這個(gè)實(shí)驗(yàn),并且了解單片機(jī)演奏音樂(lè)的基本原理,和相關(guān)的源程序。
首先來(lái)完成必要的硬件部分,硬件部分比較簡(jiǎn)單,如下圖:
AT89C51單片機(jī)的P2.5口控制一個(gè)8550的三極管,三極管控制電磁蜂鳴器的電源通斷。
我們知道,聲音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來(lái)控制單處機(jī)某個(gè)口線的高電平或低電平,則在該口線上就能產(chǎn)生一定頻率的矩形波,接上喇叭就能發(fā)出一定頻率的聲音,若再利用延時(shí)程序控制“高”“低”電平的持續(xù)時(shí)間,就能改變輸出頻率,從而改變音調(diào)。
例如,要產(chǎn)生200HZ的音頻信號(hào),200HZ音頻的變化周期為1/200秒,即5ms。這樣,當(dāng)P2.5的高電平或低電平的持續(xù)時(shí)間為2.5ms時(shí)就能發(fā)出200HZ的音調(diào)。
樂(lè)曲中,每一音符對(duì)應(yīng)著確定的頻率,我們將每一音符的時(shí)間常數(shù)和其相應(yīng)的節(jié)拍常數(shù)作為一組,按順序?qū)?lè)曲中的所有常數(shù)排列成一個(gè)表,然后由查表程序依次取出,產(chǎn)生音符并控制節(jié)奏,就可以實(shí)現(xiàn)演奏效果。
此外,結(jié)束符和體止符可以分別用代碼00H和FFH來(lái)表示,若查表結(jié)果為00H,則表示曲子終了;若查表結(jié)果為FFH,則產(chǎn)生相應(yīng)的停頓效果。
為了產(chǎn)生手彈的節(jié)奏感,在某些音符(例如兩個(gè)相同音符)音插入一個(gè)時(shí)間單位的頻率略有不同的音符。
程序框圖如圖2所示。
下面給出程序序請(qǐng)單,可直接在51實(shí)驗(yàn)板上進(jìn)行演奏。本程序演奏的是民歌“八月桂花遍地開(kāi)”,C調(diào),節(jié)奏為94拍/分。網(wǎng)友也可以自行找出一首歌,將樂(lè)曲翻譯成碼表輸入機(jī)器,而程序不變。本實(shí)驗(yàn)方法簡(jiǎn)便,即使不懂音樂(lè)的人,將一首陌生的曲子翻譯成代碼也是易事,和著機(jī)器的演奏學(xué)唱一首歌曲,其趣味無(wú)窮。
;標(biāo)題 ‘八月桂花香’發(fā)聲程序
ORG 0000H
LJMP START
ORG 000BH
INC 20H;中斷服務(wù),中斷計(jì)數(shù)器加1
MOV TH0,#0D8H
MOV TL0,#0EFH;12M晶振,形成10毫秒中斷
RETI
START:
MOV SP,#50H
MOV TH0,#0D8H
MOV TL0,#0EFH
MOV TMOD,#01H
MOV IE,#82H
MUSIC0:
NOP
MOV DPTR,#DAT;表頭地址送DPTR
MOV 20H,#00H;中斷計(jì)數(shù)器清0
MUSIC1:
NOP
CLR A ;A清零
MOVC A,@A+DPTR;查表取代碼
JZ END0;是00H,則結(jié)束
CJNE A,#0FFH,MUSIC5 ;如果是休止符,往下執(zhí)行
LJMP MUSIC3
MUSIC5:
NOP
MOV R6,A ;R6=18H音符的頻率
INC DPTR DPTR加一
MOV A,#0
MOVC A,@A+DPTR;取節(jié)拍代碼送R7
MOV R7,A ;R7=30H音符發(fā)音的時(shí)間
SETB TR0;啟動(dòng)計(jì)數(shù)
MUSIC2:
NOP
CPL P2.5 ;P2.5是音樂(lè)輸出引腳
MOV A,R6
MOV R3,A ;R3=R6=18H
LCALL DEL
MOV A,R7
CJNE A,20H,MUSIC2;中斷計(jì)數(shù)器(20H)=R7否?
;不等,則繼續(xù)循環(huán)
MOV 20H,#00H;等于,則取下一代碼
INC DPTR
LJMP MUSIC1
MUSIC3:
NOP;休止100毫秒
CLR TR0
MOV R2,#0DH;R2=13
MUSIC4:
NOP
MOV R3,#0FFH;R3=255
LCALL DEL
DJNZ R2,MUSIC4
INC DPTR
LJMP MUSIC1
END0:
NOP
MOV R2,#0FFH;歌曲結(jié)束,延時(shí)1秒后繼續(xù)
MUSIC6:
MOV R3,#00H
LCALL DEL
DJNZ R2,MUSIC6
LJMP MUSIC0
DEL:
NOP
DEL3:
MOV R4,#02H
DEL4:
NOP
DJNZ R4,DEL4
NOP
DJNZ R3,DEL3
RET
NOP
DAT:
DB 18H,DB 20H,DB 18H,DB 1CH,DB 1CH,DB 1CH,DB 20H,DB 30H,DB 20H,DB 20H,DB 40H,DB 20H,DB 20H,DB 20H,DB 18H,DB 26H,1CH,10H,1CH,10H,20H,10H,18H,40H,20H,20H,18H,20H,0FFH,20H,10H,18H,20H,1CH,20H,26H,20H,2BH,20H,20H,80H,0FFH,1CH,10H,20H,20H,2BH,20H 30H 40H 10H 10H 20H 20H 80H 1CH 15H 20H 20H 26H 30H 20H 10H 20H
DB 30H,20H,2BH,40H
DB 20H,20H,1CH,10H
DB 18H,10H,20H,20H
DB 26H,20H,2BH,20H
DB 30H,20H,2BH,40H
DB 20H,DB 18H,DB 1CH,DB 26H,DB 2BH,DB 20H,DB 20H,DB 20H,DB 20H,DB 2BH,DB 2BH,DB 1FH,DB 1CH,DB 26H,DB 30H,DB 20H,DB 18H,1CH,10H,15H,20H,20H,20H,20H,20H,26H,20H,30H,80H,1CH,10H,1CH,10H,26H,20H,30H,20H,20H,15H,20H,10H,20H,20H,2BH,20H,2BH,40H,1CH,10H,15H,20H 30H 20H 20H 40H 20H 20H 30H 10H 20H 20H 40H 05H 10H 20H 20H 30H 20H
DB 1CH,20H,20H,20H
DB 26H,40H,20H,20H
DB 2BH,20H,26H,20H
DB 20H,20H,30H,30H
DB 20H,30H,1CH,10H
DB 18H,40H,1CH,20H
DB 20H,20H,26H,40H
DB 13H,60H,18H,20H
DB 15H,40H,13H,40H
DB 18H,80H,00H
end
四、單片機(jī)倒計(jì)時(shí)定時(shí)器
這里我們先要安裝好51試驗(yàn)板上的兩個(gè)輕觸按鈕開(kāi)關(guān),我們采用的是獨(dú)立式按鈕開(kāi)關(guān),也就是說(shuō)將開(kāi)關(guān)直接連接到電源的地和單片機(jī)的對(duì)應(yīng)引腳之間,這里K1接到單片機(jī)的P3.6引腳,K2接到P3.7。正常情況下單片機(jī)的P3.6、P3.7都被程序初始化時(shí)置“1” 當(dāng)有按鍵按下時(shí)對(duì)應(yīng)的單片機(jī)引腳被按鈕開(kāi)關(guān)下拉為“0”,這種方法比較直觀,而且比較簡(jiǎn)單,在按鍵數(shù)量不多的場(chǎng)合下使用很廣泛。
因?yàn)闄C(jī)械開(kāi)關(guān)開(kāi)關(guān)時(shí)有抖動(dòng),所以需要在程序中加一個(gè)軟件去抖動(dòng)程序,它的工作原理如下:當(dāng)單片機(jī)檢測(cè)到有按鍵被按下后立即執(zhí)行一個(gè)10毫秒的延時(shí)程序,然后再在檢測(cè)該引腳是否仍然為閉合狀態(tài)?如果仍然為閉合說(shuō)明確認(rèn)該鍵被按下立即執(zhí)行相應(yīng)的處理程序,否則可能是干擾,丟棄這次檢測(cè)結(jié)果。
接下來(lái)我們?cè)侔惭b一個(gè)四位的撥碼開(kāi)關(guān),就是圖中紅色的開(kāi)關(guān),它相當(dāng)于四個(gè)裝在一起的撥動(dòng)開(kāi)關(guān),當(dāng)開(kāi)關(guān)撥到“ON”一側(cè)時(shí),對(duì)應(yīng)的那路就會(huì)接通,反之?dāng)嚅_(kāi)。它在單片機(jī)中一般用于設(shè)置初始參數(shù),而且不經(jīng)常改變的場(chǎng)合。這里因?yàn)閱纹瑱C(jī)引腳資源不夠,所以我們只使用了撥碼開(kāi)關(guān)的第2、3、4位,第1位閑置。三個(gè)開(kāi)關(guān)可以邏輯組合出8種狀態(tài),所以我們能夠方便靈活地預(yù)置多達(dá)7種的倒計(jì)時(shí)時(shí)間。
最后我們來(lái)安裝兩個(gè)繼電器和相關(guān)電路,有了繼電器我們的實(shí)驗(yàn)板不再僅僅是做做實(shí)驗(yàn)而已,可以用于控制一些負(fù)載,比如說(shuō):充電器,洗衣機(jī),電風(fēng)扇等,使我們的實(shí)驗(yàn)板的實(shí)用功能大大增強(qiáng),這也是電子制作實(shí)驗(yàn)室網(wǎng)站的單片機(jī)實(shí)驗(yàn)板和其他公司的產(chǎn)品不同的地方。
這里繼電器由相應(yīng)的S8050三極管來(lái)驅(qū)動(dòng),開(kāi)機(jī)時(shí),單片機(jī)初始化后的P2.3/P2.4為高電平,+5伏電源通過(guò)電阻使三極管導(dǎo)通,所以開(kāi)機(jī)后繼電器始終處于吸合狀態(tài),如果我們?cè)诔绦蛑薪o單片機(jī)一條:CLR P2.3或者CLR P2.4的指令的話,相應(yīng)三極管的基極就會(huì)被拉低到零伏左右,使相應(yīng)的三極管截至,繼電器就會(huì)斷電釋放,每個(gè)繼電器都有一個(gè)常開(kāi)轉(zhuǎn)常閉的接點(diǎn),便于在其他電路中使用,繼電器線圈兩端反相并聯(lián)的二極管是起到吸收反向電動(dòng)勢(shì)的功能,保護(hù)相應(yīng)的驅(qū)動(dòng)三極管,這種繼電器驅(qū)動(dòng)方式硬件結(jié)構(gòu)比較簡(jiǎn)單。
;電子制作實(shí)驗(yàn)室http://004km.cn/
;可設(shè)定時(shí)間的倒計(jì)時(shí)定時(shí)器,可選擇5/15/20/30/35/45/50分鐘倒計(jì)時(shí)
;倒計(jì)時(shí)時(shí)間由四位撥碼開(kāi)關(guān)的2/3/4位來(lái)控制,;第2位表示5分鐘,第3位表示15分鐘,第4位表示30分鐘,;通過(guò)不同的組合可以產(chǎn)生5/15/20/30/35/45/50分鐘倒計(jì)時(shí)
;P1.0口的外接的發(fā)光二極管為狀態(tài)LED,定時(shí)未開(kāi)始時(shí)LED常亮,定時(shí)過(guò)程中LED閃爍
;K1為開(kāi)始按鈕,K2為停止按鈕
a_bit equ 20h;數(shù)碼管個(gè)位數(shù)存放內(nèi)存位置
b_bit equ 21h;數(shù)碼管十位數(shù)存放內(nèi)存位置
temp equ 22h;計(jì)數(shù)器數(shù)值存放內(nèi)存位置
;開(kāi)機(jī)初始化
MOV P3,#0FFH;對(duì)P3口初始化,設(shè)置為高電平,用于按鍵輸入
MOV P0,#0FFH;使顯示時(shí)間數(shù)碼管熄滅
CLR P1.0;點(diǎn)亮LED指示燈
;等待鍵盤輸入
START:JB P3.6,$;循環(huán)判斷開(kāi)始按鈕K1是否按下?
ACALL DELAY10;延時(shí)10毫秒觸點(diǎn)消抖
JB P3.6,START;如果是干擾就返回
JNB P3.6,$;等待按鍵松開(kāi)
;讀撥碼開(kāi)關(guān)的狀態(tài),獲得倒計(jì)時(shí)時(shí)間
SET:MOV A,#0;首先對(duì)A清零
JB P2.0,A1;判斷撥碼開(kāi)關(guān)的第2位是否接通,接通就對(duì)A加5
ADD A,#5
A1:JB P2.1,A2;判斷撥碼開(kāi)關(guān)的第3位是否接通,接通就對(duì)A加15
ADD A,#15
A2:JB P2.2,A3;判斷撥碼開(kāi)關(guān)的第4位是否接通,接通就對(duì)A加30
ADD A,#30
A3:MOV TEMP,A
;這時(shí)TEMP中的值就是倒計(jì)時(shí)時(shí)間
;數(shù)碼管顯示定時(shí)時(shí)間的程序
display:CLR P2.4;使繼電器1釋放,開(kāi)始定時(shí)(開(kāi)機(jī)時(shí)繼電器處于吸合狀態(tài))
CLR P2.3;使繼電器2釋放,開(kāi)始定時(shí)(開(kāi)機(jī)時(shí)繼電器處于吸合狀態(tài))
MOV R2,#120
AB:MOV R3,#250
TIME1:mov a,temp;將temp中的十六進(jìn)制數(shù)轉(zhuǎn)換成10進(jìn)制
mov b,#10;10進(jìn)制/10=10進(jìn)制
div ab
mov b_bit,a;十位在a
mov a_bit,b;個(gè)位在b
mov dptr,#numtab;指定查表啟始地址
mov r0,#4
dpl1: mov r1,#250;
dplop: mov a,a_bit;取個(gè)位數(shù)
MOVC A,@A+DPTR;查個(gè)位數(shù)的7段代碼
mov p0,a;送出個(gè)位的7段代碼
clr p2.7;開(kāi)個(gè)位顯示
ACALL DELY1;顯示1毫秒
setb p2.7;關(guān)閉個(gè)位顯示,防止鬼影
mov a,b_bit;取十位數(shù)
MOVC A,@A+DPTR;查十位數(shù)的7段代碼
mov p0,a;送出十位的7段代碼
clr p2.6;開(kāi)十位顯示
ACALL DELY1;顯示1毫秒
setb p2.6;關(guān)閉十位顯示,防止鬼影
;插入一段判斷定時(shí)過(guò)程中是否有按鍵輸入的程序段
C1:JB P3.6,B1
ACALL DELAY10;延時(shí)10毫秒消抖
JB P3.6,C1
JNB P3.6,$;等待按鍵松開(kāi)
AJMP SET
B1:JB P3.7,M33
ACALL DELAY10;延時(shí)10毫秒消抖
JB P3.7,B1
JNB P3.7,$;等待按鍵松開(kāi)
AJMP OVER
M33:djnz r3,TIME1;2毫秒循環(huán)執(zhí)行250次,時(shí)間約0.5秒
CPL P1.0;使LED每1秒閃爍一次
djnz r2,AB;循環(huán)執(zhí)行120次,時(shí)間為1分鐘
DEC TEMP;滿一分鐘對(duì)定時(shí)時(shí)間減1
MOV A,TEMP
JNZ DISPLAY;判斷TEMP的數(shù)值是否為0?不為0循環(huán)
;結(jié)束定時(shí)
OVER:CLR P1.0;LED指示燈常亮
SETB P2.4;繼電器1吸合,定時(shí)結(jié)束,退回到開(kāi)機(jī)時(shí)的狀態(tài)
SETB P2.3;繼電器2吸合,定時(shí)結(jié)束,退回到開(kāi)機(jī)時(shí)的狀態(tài)
AJMP START;退到開(kāi)機(jī)初始化狀態(tài)
;1毫秒延時(shí)子程序
DELY1:MOV R4,#2
D1:MOV R5,#248
DJNZ R5,$
DJNZ R4,D1
RET
;10毫秒延時(shí)子程序
DELAY10:MOV R4,#20
D2:MOV R5,#248
DJNZ R5,$
DJNZ R4,D2
RET
;實(shí)驗(yàn)板上的7段數(shù)碼管0~9數(shù)字的共陰顯示代碼
numtab: DB 0CFH,03H,5DH,5BH,93H,0DAH,0DEH,43H,0DFH,0DBH
end
五、單片機(jī)和PC機(jī)串口通訊試驗(yàn)
51單片機(jī)有一個(gè)全雙工的串行通訊口,所以單片機(jī)和電腦之間可以方便地進(jìn)行串口通訊。進(jìn)行串行通訊時(shí)要滿足一定的條件,比如電腦的串口是RS232電平的,而單片機(jī)的串口是TTL電平的,兩者之間必須有一個(gè)電平轉(zhuǎn)換電路,我們采用了專用芯片MAX232進(jìn)行轉(zhuǎn)換,雖然也可以用幾個(gè)三極管進(jìn)行模擬轉(zhuǎn)換,但是還是用專用芯片更簡(jiǎn)單可靠。我們采用了三線制連接串口,也就是說(shuō)和電腦的9針串口只連接其中的3根線:第5腳的GND、第2腳的RXD、第3腳的TXD。這是最簡(jiǎn)單的連接方法,但是對(duì)我們來(lái)說(shuō)已經(jīng)足夠使用了,電路如下圖所示,MAX232的第10腳和單片機(jī)的11腳連接,第9腳和單片機(jī)的10腳連接,第15腳和單片機(jī)的20腳連接。電子制作實(shí)驗(yàn)室網(wǎng)站的提供的帶擴(kuò)展元件的51單片機(jī)實(shí)驗(yàn)板上已經(jīng)裝配好了全部硬件。
串口通訊的硬件電路如上圖所示,我們可以采用以下方法來(lái)判斷串口是否存在硬件問(wèn)題,將MAX232的第9腳接地,測(cè)量一下串口的第3腳和第5腳之間是否輸出10V左右的直流電壓?將MAX232的第9腳接正5V,測(cè)量一下串口的第3腳和第5腳之間是否輸出-10V左右的直流電壓?這樣可以判斷MAX232是否完好和串口線的排線壓接處是否有接觸不良。
為了能夠在電腦端看到單片機(jī)發(fā)出的數(shù)據(jù),我們必須借助一個(gè)WINDOWS軟件進(jìn)行觀察,這里我們利用一個(gè)免費(fèi)的電腦串口調(diào)試軟件。
點(diǎn)擊這里可以下載并運(yùn)行這個(gè)串口調(diào)試軟件,這是一個(gè)綠色的軟件,無(wú)需安裝,可以直接在當(dāng)前位置運(yùn)行這個(gè)軟件。軟件界面如上圖,我們先要設(shè)置一下串口通訊的參數(shù),將波特率調(diào)整為4800,勾選十六進(jìn)制顯示。串口選擇為COM1,當(dāng)然將網(wǎng)站提供的51單片機(jī)實(shí)驗(yàn)板的串口也要和電腦的COM1連接,將燒寫有以下程序的單片機(jī)插入單片機(jī)實(shí)驗(yàn)板的萬(wàn)能插座中,并接通51單片機(jī)實(shí)驗(yàn)板的電源,這時(shí)只要按下K1一次,在串口調(diào)試助手軟件的接收區(qū)界面中就會(huì)增加一個(gè)“AF”字符,表示單片機(jī)向電腦發(fā)送“AF”字符成功。串口實(shí)驗(yàn)的源程序如下所示:
;這是一個(gè)AT89C51單片機(jī)實(shí)驗(yàn)開(kāi)發(fā)板向PC機(jī)的串口單向發(fā)送數(shù)據(jù)AF的演示程序
;采用MAX232專用芯片作RS232/TTL電平轉(zhuǎn)換。
;通訊波特率為4800KBPS,只要按下一次K1(就是P3.6引腳變成低電平)
;就發(fā)送一個(gè)16進(jìn)制的AF字符
ORG 0000H
MOV SCON,#50H;設(shè)置成串口1方式
MOV TMOD,#20H;波特率發(fā)生器T1工作在模式2上
MOV PCON,#80H;波特率翻倍為2400x2=4800BPS
MOV TH1,#0F3H;預(yù)置初值(按照波特率2400BPS預(yù)置初值)
MOV TL1,#0F3H;預(yù)置初值(按照波特率2400BPS預(yù)置初值)
SETB TR1;啟動(dòng)定時(shí)器T1
;以上完成通訊初始化設(shè)置
WRIT:JB P3.6,$;判斷K1是否按下,如果沒(méi)有按下就等待
ACALL DELAY10;延時(shí)10毫秒消觸點(diǎn)抖動(dòng)
JB P3.6,WRIT;去除干擾信號(hào)
JNB P3.6,$;等待按鍵松開(kāi)
MOV A,#0AFH;將16進(jìn)制的字符AF發(fā)送到串口去
MOV SBUF,A;將AF通過(guò)串口發(fā)送出去
AJMP WRIT
;10毫秒延時(shí)子程序
DELAY10:MOV R4,#20
D2:MOV R5,#248
DJNZ R5,$
DJNZ R4,D2
RET
END
六、紅外線遙控器聲光測(cè)試器
這里我們要用單片機(jī)實(shí)驗(yàn)板制作一個(gè)紅外線遙控器聲光測(cè)試器,紅外線遙控器廣泛用于電視機(jī)、VCD、音響等家用電器中,經(jīng)過(guò)長(zhǎng)時(shí)間使用可能會(huì)出現(xiàn)一些小故障,用我們制作的測(cè)試器可以方便地判斷遙控器是否能發(fā)射紅外信號(hào)?各個(gè)按鍵工作是否可靠?這個(gè)測(cè)試器非常簡(jiǎn)單,制作也很容易,但是也有一定的實(shí)用價(jià)值,站長(zhǎng)就是用這個(gè)小東東幫鄰居修了不少遙控器哦~~
首先讓我們來(lái)完成試驗(yàn)板上的硬件部分,需要再焊接一個(gè)一體化紅外接收器,一體化紅外線接收器是一種集紅外線接收和放大于一體,不需要任何外接元件,就能完成從紅外線接收到輸出與TTL電平信號(hào)兼容的所有工作,而體積又很小巧,它適合于各種紅外線遙控和紅外線數(shù)據(jù)傳輸。再焊上兩個(gè)濾波電容,可以使接收器工作更可靠
ORG 0000H
START:MOV P0,#0FFH;開(kāi)機(jī)初始化
MOV P1,#0FFH
MOV P2,#11100111B
MOV P3,#0FFH
JB P3.2,$;等待遙控信號(hào)出現(xiàn)
MOV P1,#0
MOV p2,#0
JNB P3.2,$;如果是低電平就原地等待,如果出現(xiàn)高電平就退出
AJMP START
END
七、紅外線遙控器解碼程序
這里我們以紅外線遙控編碼芯片為L(zhǎng)C7461等芯片為例來(lái)說(shuō)明用單片機(jī)實(shí)現(xiàn)紅外遙控解碼的詳細(xì)過(guò)程,站長(zhǎng)琢磨這個(gè)解碼程序花了相當(dāng)多的精力,期間幾經(jīng)修改逐步完善,后來(lái)還用它開(kāi)發(fā)了幾個(gè)小產(chǎn)品,希望能對(duì)網(wǎng)友學(xué)習(xí)單片機(jī)有所幫助。
紅外線遙控是目前使用最廣泛的一種通信和遙控手段。由于紅外線遙控裝置具有體積小、功耗低、功能強(qiáng)、成本低等特點(diǎn),因而,繼彩電、錄像機(jī)之后,在錄音機(jī)、音響設(shè)備、空凋機(jī)以及玩具等其它小型電器裝置上也紛紛采用紅外線遙控。工業(yè)設(shè)備中,在高壓、輻射、有毒氣體、粉塵等環(huán)境下,采用紅外線遙控不僅完全可靠而且能有效地隔離電氣干擾。
紅外遙控系統(tǒng)
通用紅外遙控系統(tǒng)由發(fā)射和接收兩大部分組成,應(yīng)用編/解碼專用集成電路芯片來(lái)進(jìn)行控制操作,如圖1所示。發(fā)射部分包括鍵盤矩陣、編碼調(diào)制、LED紅外發(fā)送器;接收部分包括光、電轉(zhuǎn)換放大器、解調(diào)、解碼電路。遙控發(fā)射器及其編碼
遙控發(fā)射器專用芯片很多,根據(jù)編碼格式可以分成脈沖寬度調(diào)制和脈沖相位調(diào)制兩大類,這里我們以運(yùn)用比較廣泛,解碼比較容易的脈沖寬度調(diào)制來(lái)加以說(shuō)明,現(xiàn)以LC7461組成發(fā)射電路為例說(shuō)明編碼原理。當(dāng)發(fā)射器按鍵按下后,即有遙控碼發(fā)出,所按的鍵不同遙控編碼也不同。這種遙控碼具有以下特征:
采用脈寬調(diào)制的串行碼,以脈寬為0.565ms、間隔0.56ms、周期為1.125ms的組合表示二進(jìn)制的“0”;以脈寬為0.565ms、間隔1.685ms、周期為2.25ms的組合表示二進(jìn)制的“1”
上述“0”和“1”組成的42位二進(jìn)制碼經(jīng)38kHz的載頻進(jìn)行二次調(diào)制以提高發(fā)射效率,達(dá)到降低電源功耗的目的。然后再通過(guò)紅外發(fā)射二極管產(chǎn)生紅外線向空間發(fā)射,7461產(chǎn)生的遙控編碼是連續(xù)的42位二進(jìn)制碼組,其中前26位為用戶識(shí)別碼,能區(qū)別不同的紅外遙控設(shè)備,防止不同機(jī)種遙控碼互相干擾。后16位為8位的操作碼和8位的操作反碼用于核對(duì)數(shù)據(jù)是否接收準(zhǔn)確。
當(dāng)遙控器上任意一個(gè)按鍵按下超過(guò)36ms時(shí),LC7461芯片的振蕩器使芯片激活,將發(fā)射一個(gè)特定的同步碼頭,對(duì)于接收端而言就是一個(gè)9ms的低電平,和一個(gè)4.5ms的高電平,這個(gè)同步碼頭可以使程序知道從這個(gè)同步碼頭以后可以開(kāi)始接收數(shù)據(jù)。
解碼的關(guān)鍵是如何識(shí)別“0”和“1”,從位的定義我們可以發(fā)現(xiàn)“0”、“1”均以0.56ms的低電平開(kāi)始,不同的是高電平的寬度不同,“0”為0.56ms,“1”為1.68ms,所以必須根據(jù)高電平的寬度區(qū)別“0”和“1”。如果從0.56ms低電平過(guò)后,開(kāi)始延時(shí),0.56ms以后,若讀到的電平為低,說(shuō)明該位為“0”,反之則為“1”,為了可靠起見(jiàn),延時(shí)必須比0.56ms長(zhǎng)些,但又不能超過(guò)1.12ms,否則如果該位為“0”,讀到的已是下一位的高電平,因此?。?.12ms+0.56ms)/2=0.84ms最為可靠,一般取0.84ms左右即可。
根據(jù)紅外編碼的格式,程序應(yīng)該等待9ms的起始碼和4.5ms的結(jié)果碼完成后才能讀碼。
如果郵購(gòu)我們開(kāi)發(fā)的51單片機(jī)試驗(yàn)板和擴(kuò)展元件的網(wǎng)友,可以獲得如上圖所示的紅外遙控手柄,這種遙控器的編碼格式符合上面的描述規(guī)律,而且價(jià)格低廉,有32個(gè)按鍵,按鍵外形比較統(tǒng)一,如果用于批量開(kāi)發(fā),可以把遙控器上貼膜換成你需要的字符,這為開(kāi)發(fā)產(chǎn)品提供了便利。
接收器及解碼
LT0038是塑封一體化紅外線接收器,它是一種集紅外線接收、放大、整形于一體的集成電路,不需要任何外接元件,就能完成從紅外線接收到輸出與TTL電平信號(hào)兼容的所有工作,沒(méi)有紅外遙控信號(hào)時(shí)為高電平,收到紅外信號(hào)時(shí)為低電平,而體積和普通的塑封三極管大小一樣,它適合于各種紅外線遙控和紅外線數(shù)據(jù)傳輸。
下面是一個(gè)對(duì)51實(shí)驗(yàn)板配套的紅外線遙控器的解碼程序,它可以把上圖32鍵的紅外遙控器每一個(gè)按鍵的鍵值讀出來(lái),并且通過(guò)實(shí)驗(yàn)板上P1口的8個(gè)LED顯示出來(lái),在解碼成功的同時(shí)并且能發(fā)出“嘀嘀嘀”的提示音。
ORG 0000H
AJMP MAIN;轉(zhuǎn)入主程序
ORG 0003H;外部中斷P3.2腳INT0入口地址
AJMP INT;轉(zhuǎn)入外部中斷服務(wù)子程序(解碼程序)
;以下為主程序進(jìn)行CPU中斷方式設(shè)置
MAIN:SETB EA;打開(kāi)CPU總中斷請(qǐng)求
SETB IT0;設(shè)定INT0的觸發(fā)方式為脈沖負(fù)邊沿觸發(fā)
SETB EX0;打開(kāi)INT0中斷請(qǐng)求
;以下對(duì)單片機(jī)的所有引腳進(jìn)行初始化,全部設(shè)置成高電平
MOV P2,#11100111B
AJMP $
;以下為進(jìn)入P3.2腳外部中斷子程序,也就是解碼程序
INT: CLR EA;暫時(shí)關(guān)閉CPU的所有中斷請(qǐng)求
MOV R6,#10
SB: ACALL YS1;調(diào)用882微秒延時(shí)子程序
JB P3.2,EXIT;延時(shí)882微秒后判斷P3.2腳是否出現(xiàn)高電平如果有就退出解碼程序
DJNZ R6,SB;重復(fù)10次,目的是檢測(cè)在8820微秒內(nèi)如果出現(xiàn)高電平就退出解碼程序
;以上完成對(duì)遙控信號(hào)的9000微秒的初始低電平信號(hào)的識(shí)別。
JNB P3.2,$;等待高電平避開(kāi)9毫秒低電平引導(dǎo)脈沖
ACALL YS2;延時(shí)4.74毫秒避開(kāi)4.5毫秒的結(jié)果碼
MOV R7,#26;忽略前26位系統(tǒng)識(shí)別碼
JJJJA:JNB P3.2,$;等待地址碼第一位的高電平信號(hào)
LCALL YS1;高電平開(kāi)始后用882微秒的時(shí)間尺去判斷信號(hào)此時(shí)的高低電平狀態(tài)
MOV C,P3.2;將P3.2引腳此時(shí)的電平狀態(tài)0或1存入C中
JNC UUUA;如果為0就跳轉(zhuǎn)到UUUA
LCALL YS3;檢測(cè)到高電平1的話延時(shí)1毫秒等待脈沖高電平結(jié)束
UUUA: DJNZ R7,JJJJA
MOV R1,#1AH;設(shè)定1AH為起始RAM區(qū)
MOV R2,#2;接收從1AH到1BH的2個(gè)內(nèi)存,用于存放操作碼和操作反碼
PP: MOV R3,#8;每組數(shù)據(jù)為8位
JJJJ: JNB P3.2,$;等待地址碼第一位的高電平信號(hào)
LCALL YS1;高電平開(kāi)始后用882微秒的時(shí)間尺去判斷信號(hào)此時(shí)的高低電平狀態(tài)
MOV C,P3.2;將P3.2引腳此時(shí)的電平狀態(tài)0或1存入C中
JNC UUU;如果為0就跳轉(zhuǎn)到UUU
LCALL YS3;檢測(cè)到高電平1的話延時(shí)1毫秒等待脈沖高電平結(jié)束
UUU: MOV A,@R1;將R1中地址的給A
RRC A;將C中的值0或1移入A中的最低位
MOV @R1,A;將A中的數(shù)暫時(shí)存放在R1數(shù)值的內(nèi)存中
DJNZ R3,JJJJ;接收滿8位換一個(gè)內(nèi)存
INC R1;對(duì)R1中的值加1,換下一個(gè)RAM
DJNZ R2,PP;接收完8位數(shù)據(jù)碼和8位數(shù)據(jù)反碼,存放在1AH/1BH中
MOV A,1AH
CPL A;對(duì)1AH取反后和1BH比較
CJNE A,1BH,EXIT;如果不等表示接收數(shù)據(jù)發(fā)生錯(cuò)誤,放棄
MOV P1,1AH;將按鍵的鍵值通過(guò)P1口的8個(gè)LED顯示出來(lái)!
CLR P2.5;蜂鳴器鳴響-嘀嘀嘀-的聲音,表示解碼成功
LCALL YS2
LCALL YS2
LCALL YS2
SETB P2.5;蜂鳴器停止
EXIT: SETB EA;允許中斷
RETI;退出解碼子程序
YS1: MOV R4,#20;延時(shí)子程序1,精確延時(shí)882微秒
D1: MOV R5,#20
DJNZ R5,$
DJNZ R4,D1
RET
YS2: MOV R4,#10;延時(shí)子程序2,精確延時(shí)4740微秒
D2: MOV R5,#235
DJNZ R5,$
DJNZ R4,D2
RET
YS3: MOV R4,#2;延時(shí)程序3,精確延時(shí)1000微秒
D3:MOV R5,#248
DJNZ R5,$
DJNZ R4,D3
RET
END
這是按照紅外遙控器按鍵的實(shí)際位置給出的32個(gè)按鍵的鍵值(16進(jìn)制)
八、紅外線電腦遙控器
將燒寫文件燒錄到AT89C51單片機(jī)內(nèi)部后,再將電腦串口連接好帶有擴(kuò)展元件的51實(shí)驗(yàn)板,打開(kāi)51實(shí)驗(yàn)板電源后,P1.0端口上的LED就會(huì)閃爍,這說(shuō)明單片機(jī)程序已經(jīng)正常運(yùn)行了,再把紅色的撥碼開(kāi)關(guān)的第2、第3位開(kāi)關(guān)打開(kāi)。
如上圖所示就可以接收紅外遙控編碼了。這時(shí)實(shí)驗(yàn)板就變成了一個(gè)超級(jí)的PC遙控器了。當(dāng)然我們還要借助Grider軟件來(lái)實(shí)現(xiàn)。
1.安裝軟件
Grider是國(guó)外一款很優(yōu)秀的免費(fèi)紅外遙控軟件,支持多種的硬件,如紅外鍵盤鼠標(biāo),紅外接收器等,軟件的功能強(qiáng)大有OSD屏顯,名種常用的相關(guān)系統(tǒng)操作如開(kāi)關(guān)顯示器等等。這里就簡(jiǎn)單介紹一些簡(jiǎn)單的用法。首先要安裝軟件,點(diǎn)擊這里下載Grider3.2,也可到004km.cnments是注釋命令有的,圖中2是設(shè)定重復(fù)按鍵的等待時(shí)間,就是說(shuō)按下一個(gè)鍵執(zhí)行命令后,要等多久才能再次響應(yīng)該鍵。這樣就定義了一個(gè)鍵的命令。軟件功能很強(qiáng)大這里也無(wú)法一一說(shuō)明。自已多使用摸索幾次就可以輕松上手了。
V
第二篇:C51單片機(jī)自學(xué)第一課
第一課 了解單片機(jī)及單片機(jī)的控制原理,控制一個(gè)LED 燈的亮和滅
本章學(xué)習(xí)內(nèi)容:
單片機(jī)基本原理,如何仿真器,如何編程點(diǎn)亮和滅掉一個(gè)LED 燈,如何進(jìn)入KEILC51uV調(diào)試環(huán)境,如何使用單步,斷點(diǎn),全速,停止的調(diào)試方法
單片機(jī)現(xiàn)在是越來(lái)越普及了,學(xué)習(xí)單片機(jī)的熱潮也一陣陣趕來(lái),許多人因?yàn)楣ぷ餍枰蛘邆€(gè)人興趣需要學(xué)習(xí)單片機(jī)??梢哉f(shuō),掌握了單片機(jī)開(kāi)發(fā),就多了一個(gè)飯碗。
單片機(jī)已經(jīng)有30 多年的歷史了,在中國(guó),高校的單片機(jī)課程大多數(shù)都是51,而51 經(jīng)過(guò)這么多年的發(fā)展,也增長(zhǎng)了許多的系列,功能上有了許多改進(jìn),也擴(kuò)展出了不少分支。而國(guó)內(nèi)書店的單片機(jī)專架上,也大多數(shù)都是51 系列。可以預(yù)見(jiàn),51 單片機(jī)在市場(chǎng)上只會(huì)越來(lái)越多,功能只會(huì)越來(lái)越豐富,在可以預(yù)見(jiàn)的數(shù)十年內(nèi)是不可能會(huì)消失的。
下面以51 為例來(lái)了解一下單片機(jī)是什么東西,控制原理又是什么?
在數(shù)字電路中,電壓信號(hào)只有兩種情況,高電平和低電平,用數(shù)字來(lái)記錄就是1 和0。單片機(jī)內(nèi)部的CPU,寄存器,總線等等結(jié)構(gòu)都是通過(guò)1 和0 兩種信號(hào)來(lái)運(yùn)作的,數(shù)據(jù)也是以1 或者0 來(lái)保存的。單片機(jī)的輸入輸出管腳,也就是IO 口,也是只輸出或識(shí)別1 和0 兩種信號(hào),也就是高電平和低電平。當(dāng)單片機(jī)輸出一個(gè)或一組電平信號(hào)到IO 口后,外部的設(shè)備就可以讀到這些信號(hào),并進(jìn)行相應(yīng)操作,這就是單片機(jī)對(duì)外部的控制。當(dāng)外部一個(gè)或一組電平信號(hào)送到單片機(jī)的IO 口時(shí),單片機(jī)也可以讀到這些信號(hào),并進(jìn)行分析操作,這就是單片機(jī)對(duì)外部設(shè)備信號(hào)的讀取。當(dāng)然實(shí)際的操作中,這些信號(hào)可能十分復(fù)雜,必須嚴(yán)格地按照規(guī)定的時(shí)間順序(時(shí)序)輸入輸出。每種設(shè)備也都規(guī)定了自己的時(shí)序,只要都嚴(yán)格遵守,就可以控制任何設(shè)備,做出只要你想象得出的任何事情。
您可能會(huì)再問(wèn),我如何讓單片機(jī)去控制和分析外部設(shè)備呢?答案是程序,您可以編寫相關(guān)的程序,并且把他們燒寫到單片機(jī)內(nèi)部的程序空間,單片機(jī)在上電時(shí),就會(huì)一步一步按照您寫的程序去執(zhí)行指令,做您想做的事情。
在51 標(biāo)準(zhǔn)芯片中,有32 個(gè)輸入輸出IO,分為4 組,每組8 個(gè),分別為P0 口,P1 口,P2 口,P3 口。P1 口的8 條腳就用P1.0 至P1.7 表示,其余類似。51 就是用這32 個(gè)口來(lái)完成所有外部操作的。對(duì)于51 的內(nèi)部結(jié)構(gòu),如果您已經(jīng)了解,那是最好;如果不懂,也可以先放下,在完成了本教程開(kāi)始的幾個(gè)章節(jié)之后,您就會(huì)大有興趣,自己去尋找資料閱讀了。當(dāng)然,如果您希望成為一個(gè)優(yōu)秀的單片機(jī)開(kāi)發(fā)程序員,還是必須熟悉單片機(jī)的內(nèi)部結(jié)構(gòu)及工作原理,切不可偷懶!
在這一章,您將用程序去控制一個(gè)LED 發(fā)光管的亮和滅。你應(yīng)該知道,LED 發(fā)光管在通過(guò)一定電流時(shí)亮,不通電就滅。為了不讓LED 通過(guò)太大的電流把它燒壞,我們還要串上限流電阻。51 的IO 是弱上拉的方式,在輸出高電平時(shí),只能輸出幾十微安的電流到地,而在輸出低電平時(shí),VCC 電源可以輸入幾十毫安的電流到IO。一般LED 需要10 毫安左右電流點(diǎn)亮,我們就將LED 接在電源VCC 和IO 口之間,中間串上電阻,當(dāng)IO 輸出低電平時(shí),燈就亮了,反之,燈就滅了。我們?cè)谶@個(gè)程序里要控制的是P1.0。請(qǐng)參考一下我們將要使用的試驗(yàn)板的電路圖。
現(xiàn)在可以開(kāi)始做試驗(yàn)了,我們打開(kāi)已經(jīng)建立好的工程和編寫好的程序試驗(yàn)。順便還會(huì)學(xué)習(xí)一下程序調(diào)試的技巧。至于如何建立一個(gè)新工程,請(qǐng)參考C51 的幫助文件。請(qǐng)雙擊lessoncode01 目錄下的lesson1.uv2,打開(kāi)后界面如下:
點(diǎn)一下上圖第三排第2 或者第3 個(gè)按鈕(您的編譯器按鈕位置不一定在那個(gè)位置,自己找找),就可以看到編譯結(jié)果了。上面顯示是0errrs,0warnings,這是最佳的編譯結(jié)果,如果有error,則無(wú)法進(jìn)行下一步仿真,如果有warning,一定要盡量消除,確實(shí)無(wú)法消除的,也要確認(rèn)不會(huì)對(duì)程序造成影響,才進(jìn)行下一步的仿真。在編譯結(jié)果中,我們還可以看到有data,xdata,code 等用了多少字節(jié)的報(bào)告,要注意您的單片機(jī)中是否有這么多的資源,如果不夠,將來(lái)燒片運(yùn)行時(shí)就可能出現(xiàn)問(wèn)題。比如AT89C51 的程序空間是4K,xdata 如果沒(méi)有外擴(kuò)就是0 個(gè),data 是128 個(gè)。超出這些范圍,程序就不能在AT89c51 中運(yùn)行。不同的芯片有不同的容量,如SST89E516RD 就有64K 程序,內(nèi)部768 字節(jié)XDATA,還有256 個(gè)字節(jié)的data。我們的例程中肯定都考慮了這些了,肯定不會(huì)超出,將來(lái)自己開(kāi)發(fā)時(shí)就要注意了。
下面我們故意把第9 行的P10 寫成P11,點(diǎn)編譯,因?yàn)闆](méi)有預(yù)先定義P11,所以就報(bào)告錯(cuò)誤了,如下圖:
雙擊一下錯(cuò)誤報(bào)告的那一行,窗口就也會(huì)跳到這一行,方便您進(jìn)行修改。好了,現(xiàn)在請(qǐng)把錯(cuò)誤改回去,再編譯一次,出現(xiàn)報(bào)告正確了以后,下面開(kāi)始仿真了。點(diǎn)一下第二行第5 個(gè)一個(gè)放大鏡里面一個(gè)d 字母的按鈕,就可以進(jìn)入仿真了,仿真器要事先連接好喲。進(jìn)入仿真后要退出仿真環(huán)境也是點(diǎn)這個(gè)按鈕。注意,等會(huì)如果程序在正在全速運(yùn)行時(shí),仿真環(huán)境是不能直接退出的,得先點(diǎn)停止運(yùn)行后,再點(diǎn)仿真按鈕才可以退出。點(diǎn)進(jìn)入仿真按鈕,程序開(kāi)始裝載,PC 自動(dòng)運(yùn)行到了main()停下,并指向了main()函數(shù)的第一行。
進(jìn)入仿真窗口后,如果出現(xiàn)的不是前面的源代碼窗口,而是夾有反匯編代碼的窗口,直接關(guān)掉這個(gè)窗口就會(huì)恢復(fù)到代碼窗口。下次進(jìn)入也會(huì)直接進(jìn)入到源代碼窗口。
現(xiàn)在先試驗(yàn)單步,點(diǎn)單步(兩個(gè)單步都可以,一般點(diǎn)單步跨過(guò))。可以看到燈亮了。PC 指針也指向了下一個(gè)
程序行。再點(diǎn)一下單步,PC 又走下一步,燈滅了。再點(diǎn)一次,PC 走到掛起的程序行了,繼續(xù)點(diǎn)仍然在這一行。這句指令其實(shí)就是使程序不斷地跳到自己這一行,別的什么也不做。一般稱作程序掛起。
一般的實(shí)際應(yīng)用中的程序是不會(huì)掛起的,一般是在main 函數(shù)里做一個(gè)大循環(huán),程序如下:
void main(void)// 主程序 { while(1){ P11=0;//亮燈 P10=1;//滅燈 } } 請(qǐng)將main 函數(shù)程序改為上面的代碼,我們下一步將試驗(yàn)斷點(diǎn)的操作。
在第15 行雙擊一下,可以看到程序行左邊出現(xiàn)了一個(gè)紅方塊,這就是設(shè)置斷點(diǎn),再雙擊一次,斷點(diǎn)就取消了。如果程序在全速運(yùn)行的過(guò)程中遇到斷點(diǎn),就會(huì)自動(dòng)停下來(lái)給你分析。注意在進(jìn)入仿真后,并且程序是停止?fàn)顟B(tài)時(shí),才可以設(shè)置或者取消斷點(diǎn)。
現(xiàn)在點(diǎn)全速運(yùn)行,可以看到程序在斷點(diǎn)處停了下來(lái),并且由于前一句指令剛剛執(zhí)行了點(diǎn)燈,所以這時(shí)燈是亮著的。
現(xiàn)在在第14 行設(shè)置斷點(diǎn),并且取消上一個(gè)斷點(diǎn)。
現(xiàn)在點(diǎn)全速運(yùn)行,可以看到程序在斷點(diǎn)處停了下來(lái),并且由于剛剛執(zhí)行了滅燈,燈是滅著的。好,現(xiàn)在試驗(yàn)全速運(yùn)行和停止。把斷點(diǎn)取消,再點(diǎn)全速運(yùn)行,可以看到燈是亮著的,但是不是很亮,這是由于程序是循環(huán)的,亮滅交替進(jìn)行,亮的時(shí)間并不是全部的時(shí)間?,F(xiàn)在點(diǎn)停止,可以看到程序停止了,重復(fù)幾次進(jìn)行全速和停止,可以發(fā)現(xiàn)每次停止的地方不一定是同一位置。
演講稿
尊敬的老師們,同學(xué)們下午好:
我是來(lái)自10級(jí)經(jīng)濟(jì)學(xué)(2)班的學(xué)習(xí)委,我叫張盼盼,很榮幸有這次機(jī)會(huì)和大家一起交流擔(dān)任學(xué)習(xí)委員這一職務(wù)的經(jīng)驗(yàn)。
轉(zhuǎn)眼間大學(xué)生活已經(jīng)過(guò)了一年多,在這一年多的時(shí)間里,我一直擔(dān)任著學(xué)習(xí)委員這一職務(wù)。回望這一年多,自己走過(guò)的路,留下的或深或淺的足跡,不僅充滿了歡愉,也充滿了淡淡的苦澀。一年多的工作,讓我學(xué)到了很多很多,下面將自己的工作經(jīng)驗(yàn)和大家一起分享。
學(xué)習(xí)委員是班上的一個(gè)重要職位,在我當(dāng)初當(dāng)上它的時(shí)候,我就在想一定不要辜負(fù)老師及同學(xué)們我的信任和支持,一定要把工作做好。要認(rèn)真負(fù)責(zé),態(tài)度踏實(shí),要有一定的組織,領(lǐng)導(dǎo),執(zhí)行能力,并且做事情要公平,公正,公開(kāi),積極落實(shí)學(xué)校學(xué)院的具體工作。作為一名合格的學(xué)習(xí)委員,要收集學(xué)生對(duì)老師的意見(jiàn)和老師的教學(xué)動(dòng)態(tài)。在很多情況下,老師無(wú)法和那么多學(xué)生直接打交道,很多老師也無(wú)暇顧及那么多的學(xué)生,特別是大家剛進(jìn)入大學(xué),很多人一時(shí)還不適應(yīng)老師的教學(xué)模式。學(xué)習(xí)委員是老師與學(xué)生之間溝通的一個(gè)橋梁,學(xué)習(xí)委員要及時(shí)地向老師提出同學(xué)們的建議和疑問(wèn),熟悉老師對(duì)學(xué)生的基本要求。再次,學(xué)習(xí)委員在學(xué)習(xí)上要做好模范帶頭作用,要有優(yōu)異的成績(jī),當(dāng)同學(xué)們向我提出問(wèn)題時(shí),基本上給同學(xué)一個(gè)正確的回復(fù)。
總之,在一學(xué)年的工作之中,我懂得如何落實(shí)各項(xiàng)工作,如何和班委有效地分工合作,如何和同學(xué)溝通交流并且提高大家的學(xué)習(xí)積極性。當(dāng)然,我的工作還存在著很多不足之處。比日:有的時(shí)候得不到同學(xué)們的響應(yīng),同學(xué)們不積極主動(dòng)支持我的工作;在收集同學(xué)們對(duì)自己工作意見(jiàn)方面做得不夠,有些事情做錯(cuò)了,沒(méi)有周圍同學(xué)的提醒,自己也沒(méi)有發(fā)覺(jué)等等。最嚴(yán)重的一次是,我沒(méi)有把英語(yǔ)四六級(jí)報(bào)名的時(shí)間,地點(diǎn)通知到位,導(dǎo)致我們班有4名同學(xué)錯(cuò)過(guò)報(bào)名的時(shí)間。這次事使我懂得了做事要腳踏實(shí)地,不能馬虎。
在這次的交流會(huì)中,我希望大家可以從中吸取一些好的經(jīng)驗(yàn),帶動(dòng)本班級(jí)的學(xué)習(xí)風(fēng)氣,同時(shí)也相信大家在大學(xué)畢業(yè)后找到好的工作。謝謝大家!
第三篇:?jiǎn)纹瑱C(jī)心得體會(huì)(定稿)
課程設(shè)計(jì)心得體會(huì)
1、認(rèn)真審題,看懂題目的要求!選擇適當(dāng)?shù)恼n題,不益太簡(jiǎn)單或者太難。做到既能把課題完成又能鍛煉自己的能力!
2、根據(jù)課題要求,復(fù)習(xí)相關(guān)的知識(shí),查詢相關(guān)的資料。
3、根據(jù)實(shí)驗(yàn)條件,找到適合的方案,找到需要的元器件及工具,準(zhǔn)備實(shí)驗(yàn)。
4、根據(jù)課程設(shè)計(jì)的要求和自己所要增加的功能寫好程序流程圖,在程序流程圖的基礎(chǔ)上,根據(jù)芯片的功能寫出相應(yīng)的程序。然后再進(jìn)行程序調(diào)試和相應(yīng)的修改,以達(dá)到能夠?qū)崿F(xiàn)所要求的功能的目的。
5、還要根據(jù)實(shí)驗(yàn)的實(shí)際情況,添加些額外程序來(lái)使系統(tǒng)更加的穩(wěn)定,如開(kāi)關(guān)的消震蕩(采用延遲)。
6、程序要盡量做到由各個(gè)子程序組成,在有些程序后面最好加注釋,這樣在程序出錯(cuò)的檢查過(guò)程中可以更容易查找的到,也更簡(jiǎn)潔,更明白易懂。
7、該實(shí)驗(yàn)的程序可以參考DVCC系列單片機(jī)微機(jī)仿真實(shí)驗(yàn)系統(tǒng)實(shí)驗(yàn)指導(dǎo)書中的串并轉(zhuǎn)換實(shí)驗(yàn),也可自己根據(jù)自己熟悉的方法來(lái)編程。
8、在設(shè)計(jì)控制開(kāi)關(guān)時(shí),注意2個(gè)中斷的打開(kāi)和關(guān)閉的先后順序,否則就會(huì)出錯(cuò)。
9、這次的單片機(jī)課程設(shè)計(jì)重點(diǎn)是理論與實(shí)際的相結(jié)合。不再只讀書了。
10、該設(shè)計(jì)從頭到尾都要自己參與,熟悉了對(duì)整個(gè)設(shè)計(jì)的過(guò)程,更系統(tǒng)的鍛煉了自己。課題研究目的和意義及介紹
1、目的意義
通過(guò)本次課程設(shè)計(jì)加深對(duì)單片機(jī)課程的全面認(rèn)識(shí)復(fù)習(xí)和掌握,對(duì)單片機(jī)課程的應(yīng)用進(jìn)一步的了解。
掌握定時(shí)器、外部中斷的設(shè)置和編程原理。
通過(guò)此次課程設(shè)計(jì)能夠?qū)纹瑱C(jī)軟硬件結(jié)合起來(lái),對(duì)程序進(jìn)行編輯,校驗(yàn)。
該實(shí)驗(yàn)通過(guò)單片機(jī)的定時(shí)器/計(jì)數(shù)器定時(shí)和計(jì)數(shù)原理,設(shè)計(jì)簡(jiǎn)單的計(jì)時(shí)器系統(tǒng),擁有正確的計(jì)時(shí)、暫停、清零、快加功能,并同時(shí)可以用數(shù)碼管顯示,在現(xiàn)實(shí)生活中應(yīng)用廣泛,具有現(xiàn)實(shí)意義
第四篇:?jiǎn)纹瑱C(jī)心得體會(huì)
單片機(jī)心得體會(huì)
下面我概括了幾點(diǎn)我的學(xué)習(xí)經(jīng)驗(yàn)和心得體會(huì):
1、萬(wàn)事開(kāi)頭難、要勇敢邁出第一步。開(kāi)始的時(shí)候,不要老是給自己找借口,說(shuō)KEIL不會(huì)建項(xiàng)目啦、沒(méi)有實(shí)驗(yàn)板啦之類的。遇到困難要一件件攻克,不會(huì)建項(xiàng)目,就先學(xué)它,這方面網(wǎng)上教程很多,隨便找找看一下,做幾次就懂了。然后可以參考別的人程序,抄過(guò)來(lái)也無(wú)所謂,寫一個(gè)最簡(jiǎn)單的,讓它運(yùn)行起來(lái),先培養(yǎng)一下自己的感覺(jué),知道寫程序是怎么一回事,無(wú)論寫大程序還是小程序,要做的工序不會(huì)差多少,總得建個(gè)項(xiàng)目,再配置一下項(xiàng)目,然后建個(gè)程序,加入項(xiàng)目中,再寫代碼、編譯、生成HEX,刷進(jìn)單片機(jī)中、運(yùn)行。必須熟悉這一套工序。個(gè)人認(rèn)為,一塊學(xué)習(xí)板還是必要的,寫好程序在上面運(yùn)行一下看結(jié)果,學(xué)習(xí)效果會(huì)好很多,仿真器就看個(gè)人需要了。單片機(jī)是注重理論和實(shí)踐的,光看書不動(dòng)手,是學(xué)不會(huì)的。
2、知識(shí)點(diǎn)用到才學(xué),不用的暫時(shí)丟一邊。厚厚的一本書,看著人頭都暈了,學(xué)了后面的,前面的估計(jì)也快忘光了,所以,最好結(jié)合實(shí)際程序,用到的時(shí)候才去看,不必說(shuō)非要把書從第一頁(yè)看起,看完它才來(lái)寫程序。比如你寫流水燈,完全就沒(méi)必要看中斷的知識(shí),專心把流水燈學(xué)好就是了,這是把整本書化整為零,一小點(diǎn)一小點(diǎn)的啃。
3、程序不要光看不寫,一定要自己寫一次。最開(kāi)始的時(shí)候,啥都不懂,可以抄人家的程序過(guò)來(lái),看看每一句是干什么用的,達(dá)到什么目的,運(yùn)行后有什么后果,看明白了之后,就要自己寫一次,你會(huì)發(fā)現(xiàn),原來(lái)看明白別人的程序很容易,但到自己寫的時(shí)候卻一句也寫不出來(lái),這就是差距。。當(dāng)你自己能寫出來(lái)的時(shí)候,說(shuō)明你就真的懂了。
4、必須學(xué)會(huì)掌握調(diào)試程序的方法。不少人寫程序,把代碼寫好了,然后一運(yùn)行,不是自己想要的結(jié)果,就暈了,然后跑到論壇上發(fā)個(gè)帖子,把程序一貼,問(wèn):為什么我的程序不能正常運(yùn)行?然后就等別人來(lái)給自己分析。這是一種很不好的行為,應(yīng)該自己學(xué)會(huì)發(fā)現(xiàn)問(wèn)題和學(xué)會(huì)如何解決問(wèn)題。這就需要學(xué)習(xí)調(diào)試程序的方法,比如KEIL里,可以下斷點(diǎn)啦,查看寄存器內(nèi)容等等,這些都是調(diào)試程序的手段,當(dāng)你發(fā)現(xiàn)你寫的程序運(yùn)行結(jié)果和你想象中不一樣的時(shí)候,你可以單步,也可以下斷點(diǎn),然后跟蹤,查看各相關(guān)寄存器內(nèi)容,看看程序運(yùn)行過(guò)中是不是有什么偏差,找出影響結(jié)果的地方,改正過(guò)來(lái)。這一個(gè)過(guò)程非常重要,通過(guò)程序的排錯(cuò),你可以學(xué)到的知識(shí)是書上得不到的。
5、多利用網(wǎng)絡(luò)的搜索,學(xué)會(huì)提問(wèn)題。一般來(lái)說(shuō),學(xué)習(xí)過(guò)程中,你遇上的問(wèn)題,前人們多數(shù)也有遇上的,所以如果有什么不懂,在自己解決不了的時(shí)候,最好先到網(wǎng)上搜索一下,看能不能找到答案,找不到再到論壇里發(fā)問(wèn),發(fā)問(wèn)也要有目的性,盡量簡(jiǎn)單明了的描述問(wèn)題,讓幫助你的人可以用最少的時(shí)間就看懂你說(shuō)什么,畢竟人家?guī)椭闶敲赓M(fèi)的,時(shí)間也是有限的。
第五篇:自學(xué)心得體會(huì)
幼兒教師群眾路線教育實(shí)踐活動(dòng)學(xué)習(xí)心得
發(fā)布時(shí)間:2014-03-17來(lái)源:心得體會(huì)網(wǎng)
開(kāi)展黨的群眾線路教育實(shí)踐活動(dòng)具有十分重要的意義,為實(shí)現(xiàn)中華民族偉大復(fù)興的中國(guó)夢(mèng)提供了堅(jiān)強(qiáng)保證。
黨的群眾線路是黨的生命線和根本工作線路,是我們黨獲得革命、建設(shè)和改革成功的一大法寶。黨的群眾線路集中體現(xiàn)了唯物史觀的基本觀點(diǎn)。只有深入理解和正確掌控唯物史觀與黨的群眾線路的關(guān)系,才能更加自覺(jué)堅(jiān)定地貫徹黨的群眾線路,進(jìn)步做好新情勢(shì)下群眾工作的能力,真正做到一切為了群眾,一切依托群眾,從群眾中來(lái),到群眾中往,把黨的正確主張變成群眾的自覺(jué)行動(dòng)。
群眾線路是我們黨創(chuàng)造性地應(yīng)用馬克思主義唯物史觀關(guān)于人民群眾是歷史的創(chuàng)造者的基本原理,在新民主主義時(shí)期創(chuàng)建并在社會(huì)主義革命、建設(shè)和改革中始終堅(jiān)持和不斷完善的根本工作線路,是貫串我們黨90多年奮斗歷程的生命線。理論上的成熟是政治上堅(jiān)定的基礎(chǔ)。深入理解和正確掌控唯物史觀與黨的群眾線路的關(guān)系,對(duì)我們更好地貫徹黨的群眾線路,著力解決人民群眾反映強(qiáng)烈的突出題目,進(jìn)步做好新情勢(shì)下群眾工作的能力,夯實(shí)黨的執(zhí)政基礎(chǔ)、鞏固黨的執(zhí)政地位,具有十分重要的意義。
作為幼兒園一位黨積極分子教師,如何在本職崗位踐行走群眾線路,必須以全面正確掌控科學(xué)發(fā)展觀的深入內(nèi)涵和基本要求,要不斷學(xué)習(xí)政治理論和教育教學(xué)理念,建立先進(jìn)的教育思想,因時(shí)、因人、順手推舟,因材施教,積極參與教育改革,在實(shí)踐中進(jìn)步自己的教育教學(xué)能力。應(yīng)以教人者先教己者的精神為人師表,以身作則,有奉獻(xiàn)精神,吃苦在前,享受在后。黨員有自己的正當(dāng)?shù)恼?dāng)?shù)臋?quán)益,但是當(dāng)個(gè)人利益與黨、國(guó)家、集體利益發(fā)生矛盾時(shí),作為黨員應(yīng)當(dāng)把以黨、國(guó)家、集體利益為重,必要時(shí)能犧牲個(gè)人利益。