|
這個(gè)WORD還算詳細(xì)吧。
單片機(jī)入門級(jí)實(shí)驗(yàn)板制作
隨著單片機(jī)生產(chǎn)成本的降低,其應(yīng)用也隨之增加。對(duì)于廣大電子愛好者來說,在原來硬件設(shè)計(jì)的基礎(chǔ)上,只要掌握了單片機(jī),那對(duì)完成的電子制作產(chǎn)品來說,簡直是如虎添翼。然而對(duì)于一些初學(xué)者來說,雖然也知道掌握了單片機(jī)技術(shù)有很多用武之地,但就是不知如何下手。有些朋友在大學(xué)里也學(xué)過一些關(guān)于單片機(jī)的知識(shí),可就是停留在理論的理解上,更有些自學(xué)的朋友,關(guān)于單片機(jī)入門的書買了不少,結(jié)果就買來的頭幾天看一下,以后的日子里天天讓書在書架上休假,然而自己的單片機(jī)應(yīng)用技術(shù)還是沒有絲毫的長進(jìn)。針對(duì)這些情況,同時(shí)結(jié)合幾位電子工程師學(xué)習(xí)單片機(jī)的經(jīng)驗(yàn),在這里談一下看法:
學(xué)習(xí)單片機(jī)光看書的話進(jìn)展并不大的,對(duì)于有一定硬件技術(shù)的人來說,最好的方法還是看著別人寫的程序自己研究,結(jié)合硬件看實(shí)現(xiàn)的過程,當(dāng)遇到不明白的語句再去查看一下書上關(guān)于這些語句的介紹。這一方法可以使初學(xué)者快速完成對(duì)單片機(jī)的入門,而對(duì)于電子感興趣的人來說,只要入了門,加上后期的多實(shí)踐,提高水平是很容易的事。許多搞單片機(jī)的人,在開始學(xué)習(xí)時(shí),都會(huì)搞一個(gè)專門用于實(shí)驗(yàn)的單片機(jī)實(shí)驗(yàn)板,對(duì)實(shí)驗(yàn)板的選擇,筆者的看法是:實(shí)驗(yàn)板的主要目的是入門時(shí)做實(shí)驗(yàn)用的,真正常握了以后,還有哪個(gè)人會(huì)再去用實(shí)驗(yàn)板,換言之,實(shí)驗(yàn)板只要把你領(lǐng)入單片機(jī)之門,他的任務(wù)就完成了,可以扔了,因此沒必要去買些功能很多但價(jià)格較高的產(chǎn)品,真正要提高水平必須在掌握了基礎(chǔ)后不斷地在實(shí)踐中煅練,初學(xué)時(shí)的單片機(jī)實(shí)驗(yàn)板只要具備幾個(gè)發(fā)光管加蜂鳴器和通訊就足夠了。
學(xué)習(xí)單片機(jī)關(guān)鍵是要掌握以下步驟:
1、如何編寫程序;
2、如何將寫的程序變成二進(jìn)制或十六進(jìn)制代碼;
3、如何將代碼通過編程器(或下載線)寫入單片機(jī);
4、如何在實(shí)驗(yàn)板或應(yīng)用產(chǎn)品上實(shí)現(xiàn)所要達(dá)到的功能(有仿真器的可以直接仿真)。
下面介紹一款初學(xué)者非常適合的2051實(shí)驗(yàn)板,價(jià)格較低,在我們相關(guān)的網(wǎng)頁上全有源程序,初學(xué)者可以對(duì)照程序?qū)W習(xí)單片機(jī)。同時(shí)我們會(huì)在講解第一個(gè)簡單源程序時(shí),介紹如何按上面提到的步驟進(jìn)行具體操作。
一、電路原理圖
1、電路設(shè)計(jì)了6個(gè)輸出口驅(qū)動(dòng)發(fā)光二極管,可以設(shè)計(jì)流水燈等程序之用,也可用為其他指示
2、利用2051的電壓比較器端口,設(shè)計(jì)了光敏電阻輸入,可作為光線檢測等實(shí)驗(yàn);
3、蜂鳴器輸出口設(shè)計(jì),可作為各種動(dòng)作的響應(yīng)及報(bào)警等之用;
4、四位按鍵輸入,可作為類似鍵盤等輸入操作;
5、設(shè)計(jì)了將單片機(jī)的TTL電平轉(zhuǎn)RS232通訊協(xié)議的電平轉(zhuǎn)換電路,可完成各種與上位計(jì)算機(jī)的通訊之用。
制作好的實(shí)驗(yàn)板如下圖所示:
實(shí)戰(zhàn)練習(xí)1:點(diǎn)亮一個(gè)發(fā)光二極管
實(shí)戰(zhàn)練習(xí)2:流水燈程序設(shè)計(jì)
實(shí)戰(zhàn)練習(xí)3:蜂鳴器驅(qū)動(dòng)程序設(shè)計(jì)
實(shí)戰(zhàn)練習(xí)4:鍵盤輸入程序設(shè)計(jì)
實(shí)戰(zhàn)練習(xí)5:光控電路程序設(shè)計(jì)
實(shí)戰(zhàn)練習(xí)6:串行通訊程序設(shè)計(jì)
2051實(shí)驗(yàn)板全套散件:35元/套(不含USB線和串口線)
若需要配置USB電源線,2.5元/條,串口線為4元/條。 |
|
|
第一個(gè)單片機(jī)程序教程 |
一、實(shí)驗(yàn)器材:2051實(shí)驗(yàn)板一塊,USB線一條,51編程器一套,電腦一臺(tái),程序編輯軟件一套,編程器支持軟件一套;
二、程序功能:點(diǎn)亮一只發(fā)光二極管
三、實(shí)驗(yàn)?zāi)康模簬椭鯇W(xué)者了解單片機(jī)程序編制、編譯、生成*.HEX文件(16進(jìn)制文件)和寫入單片機(jī)及運(yùn)行程序等步驟,為學(xué)習(xí)者進(jìn)一步學(xué)習(xí)各種功能的程序編制打下基礎(chǔ)。
三、具體操作:
首先配置好51編程器一套(本站有經(jīng)濟(jì)型供貨,價(jià)格98元),2051實(shí)驗(yàn)板一塊(本站有經(jīng)濟(jì)型供貨,價(jià)格:35元)。
安裝計(jì)算機(jī)軟件。其實(shí)對(duì)于源程序的編寫,在一些文本編輯軟件上都可以進(jìn)行,如:WINDOWS系統(tǒng)上的寫字板、WORD軟件等都可以進(jìn)行,這里我們介紹一款集源程序編輯、編譯、生成十六進(jìn)制文件于一體的集成開發(fā)軟件,有需要的可以點(diǎn)擊下載。編程器的支持軟件下載。
LED1 EQU P1.7 ;引腳定義 ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ORG 0000H ;定位程序起始地址為:0000 ;上電復(fù)位后,程序從0000單元開始執(zhí)行 ;復(fù)位后,單片機(jī)的P1、P3口全部輸出高電平,所有發(fā)光管全部滅 MAIN: CLR LED1 ;P1.7為低電平輸入,點(diǎn)亮一個(gè)發(fā)光二極管 AJMP MAIN ;程序跳回MAIN處 END ;結(jié)束程序
1、編寫匯編源程序:
2、將編寫好的程序進(jìn)行編譯,具體見下圖:
3、生成HEX文件:
點(diǎn)擊“輸出Intel HEX文件...”后,程序彈出輸出文件對(duì)話框,詢問輸出的HEX文件的文件名:
命名好HEX文件名后,按“保存”鍵,輸出HEX文件。
經(jīng)過以上步驟的操作后,我們得到了一個(gè)文件名為:“第一個(gè)程序.HEX”的16進(jìn)制文件,只要將這個(gè)文件寫入單片機(jī),單片機(jī)便可以在實(shí)驗(yàn)板上運(yùn)行。下面我們介紹如何將該文件寫入單片機(jī)。
4、打開編程器支持軟件,進(jìn)行將源文件寫入單片機(jī)操作:
進(jìn)入程序后,依次按:(自動(dòng))打開文件→(自動(dòng))擦除器件→(自動(dòng))寫器件,當(dāng)經(jīng)過這幾步后,程序便寫入了單片機(jī)。
5、插上單片機(jī),運(yùn)行程序結(jié)果:
以上我們介紹了編程及寫入單片機(jī)并在實(shí)驗(yàn)板上運(yùn)行程序的整個(gè)過程,初學(xué)者只要經(jīng)過以上操作,便可以了解整個(gè)單片機(jī)應(yīng)用的過程,有了這個(gè)基礎(chǔ),只要再對(duì)一些常用程序進(jìn)行編寫并試驗(yàn),接下來完成各種實(shí)際應(yīng)用系統(tǒng)的開發(fā)便有了一個(gè)很好的開頭,繼續(xù)努力吧,各種智能電子產(chǎn)品的開發(fā)離你不會(huì)太遙遠(yuǎn)!
一下節(jié):流水燈程序設(shè)計(jì) |
單片機(jī)入門教程之二 |
流水燈程序設(shè)計(jì)
在上一節(jié)中我們講述了第一個(gè)制作實(shí)驗(yàn),從中我們了解了如何編寫一個(gè)程序控制一個(gè)發(fā)光二極管,讓其發(fā)光,在這一節(jié)中,我們要讓幾個(gè)發(fā)光二極管動(dòng)起來,形成一個(gè)流水燈的效果。
源程序下載
LED1 EQU P1.7 ;引腳定義 LED2 EQU P1.6 ; LED3 EQU P1.5 ; LED4 EQU P1.4 ; LED5 EQU P1.3 ; LED6 EQU P1.2 ; ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ORG 0000H ;定位程序起始地址為:0000 ;上電復(fù)位后,程序從0000單元開始執(zhí)行 ;復(fù)位后,單片機(jī)的P1、P3口全部輸出高電平,所有發(fā)光管全部滅 MAIN: SETB LED6 ;關(guān)第六個(gè)發(fā)光二極管 CLR LED1 ;P1.7為低電平輸入,點(diǎn)亮第一個(gè)發(fā)光二極管 ACALL DEL250MS ;延時(shí)250MS SETB LED1 ;關(guān)第一個(gè)燈 CLR LED2 ;點(diǎn)亮第二個(gè)燈 ACALL DEL250MS ;延時(shí) SETB LED2 ;關(guān)第二個(gè)燈 CLR LED3 ;開第三個(gè)燈 ACALL DEL250MS ;延時(shí) SETB LED3 ;關(guān)第三個(gè)燈 CLR LED4 ;開第四個(gè)燈 ACALL DEL250MS ;延時(shí) SETB LED4 ;關(guān)第四個(gè)燈 CLR LED5 ;開第五個(gè)燈 ACALL DEL250MS ;延時(shí) SETB LED5 ;關(guān)第五個(gè)燈 CLR LED6 ;開第六個(gè)燈 ACALL DEL250MS ;延時(shí) AJMP MAIN ;程序跳回MAIN處,循環(huán)執(zhí)行 ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ;12M晶振,每個(gè)機(jī)器周期所用時(shí)間為1uS DEL5MS: MOV R7, #94 ;占用一個(gè)機(jī)器周期 DEL5MS1: MOV R6, #25 ;占用一個(gè)機(jī)器周期 DJNZ R6, $ ;占用二個(gè)機(jī)器周期 DJNZ R7, DEL5MS1 ;占用二個(gè)機(jī)器周期 RET ;總占用機(jī)器周期為:4983個(gè),即4.98MS
DEL250MS: MOV R5, #50 ; DEL250MS1: ACALL DEL5MS ; DJNZ R5, DEL250MS1; RET ;子程序返回 END ;結(jié)束程序
在本程序的基礎(chǔ)上,網(wǎng)友可以根據(jù)自己的理解,將亮燈的方式進(jìn)行設(shè)計(jì),我們的教程是一個(gè)燈一個(gè)燈的點(diǎn)亮,網(wǎng)友可以讓燈二個(gè)二個(gè)點(diǎn)亮,或自己組合設(shè)計(jì)出更多種變化的亮燈過程,具體程序網(wǎng)友可以在我們給出的程序上進(jìn)行改動(dòng)。
上一節(jié):點(diǎn)亮一個(gè)發(fā)光管 下一節(jié):蜂鳴器驅(qū)動(dòng)程序
初學(xué)者如在這個(gè)實(shí)驗(yàn)中遇到問題的,可以通過在線技術(shù)支持進(jìn)行咨詢:QQ:153286663 張工
|
單片機(jī)入門教程之三 |
蜂鳴器驅(qū)動(dòng)程序設(shè)計(jì)
在這一節(jié)中,我們將在上一節(jié)的基礎(chǔ)上,增加對(duì)蜂鳴器的驅(qū)動(dòng)控制。
LED1 EQU P1.7 ;引腳定義 LED2 EQU P1.6 ; LED3 EQU P1.5 ; LED4 EQU P1.4 ; LED5 EQU P1.3 ; LED6 EQU P1.2 ; BL EQU P3.7 ;定義蜂鳴器引腳 ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ORG 0000H ;定位程序起始地址為:0000 ;上電復(fù)位后,程序從0000單元開始執(zhí)行 ;復(fù)位后,單片機(jī)的P1、P3口全部輸出高電平,所有發(fā)光管全部滅 MAIN: SETB LED6 ;關(guān)第六個(gè)發(fā)光二極管 CLR LED1 ;P1.7為低電平輸入,點(diǎn)亮第一個(gè)發(fā)光二極管 CLR BL ; ACALL DEL250MS ;延時(shí)250MS SETB BL ; ACALL DEL250MS ; SETB LED1 ;關(guān)第一個(gè)燈 CLR LED2 ;點(diǎn)亮第二個(gè)燈 CLR BL ; ACALL DEL250MS ;延時(shí)250MS SETB BL ; ACALL DEL250MS ; SETB LED2 ;關(guān)第二個(gè)燈 CLR LED3 ;開第三個(gè)燈 CLR BL ; ACALL DEL250MS ;延時(shí)250MS SETB BL ; ACALL DEL250MS ; SETB LED3 ;關(guān)第三個(gè)燈 CLR LED4 ;開第四個(gè)燈 CLR BL ; ACALL DEL250MS ;延時(shí)250MS SETB BL ; ACALL DEL250MS ; SETB LED4 ;關(guān)第四個(gè)燈 CLR LED5 ;開第五個(gè)燈 CLR BL ; ACALL DEL250MS ;延時(shí)250MS SETB BL ; ACALL DEL250MS ; SETB LED5 ;關(guān)第五個(gè)燈 CLR LED6 ;開第六個(gè)燈 CLR BL ; ACALL DEL250MS ;延時(shí)250MS SETB BL ; ACALL DEL250MS ; AJMP MAIN ;程序跳回MAIN處,循環(huán)執(zhí)行 ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ;12M晶振,每個(gè)機(jī)器周期所用時(shí)間為1uS DEL5MS: MOV R7, #94 ;占用一個(gè)機(jī)器周期 DEL5MS1: MOV R6, #25 ;占用一個(gè)機(jī)器周期 DJNZ R6, $ ;占用二個(gè)機(jī)器周期 DJNZ R7, DEL5MS1 ;占用二個(gè)機(jī)器周期 RET ;總占用機(jī)器周期為:4983個(gè),即4.98MS
DEL250MS: MOV R5, #50 ; DEL250MS1: ACALL DEL5MS ; DJNZ R5, DEL250MS1; RET ;子程序返回 END ;結(jié)束程序
上一節(jié):流水燈程序設(shè)計(jì) 下一節(jié):鍵盤輸入程序設(shè)計(jì)
初學(xué)者如在這個(gè)實(shí)驗(yàn)中遇到問題的,可以通過在線技術(shù)支持進(jìn)行咨詢:QQ:153286663 張工
如何購買? 我要訂貨!
說明:為了滿足部分網(wǎng)友的要求:希望我們幫他把套件做成調(diào)試好的成品,我們提供套件的制作業(yè)務(wù),統(tǒng)一收取的費(fèi)用為:一個(gè)人工工資或半個(gè)人工工資,即80元/人工,若簡單的則為半個(gè)人工工資,40元! |
單片機(jī)入門教程之四 |
按鍵輸入程序設(shè)計(jì)
在這一節(jié)中,我們將介紹如何利用按鍵輸入控制信號(hào),來控制燈的變化。
LED1 EQU P1.7 ;引腳定義 LED2 EQU P1.6 ; LED3 EQU P1.5 ; LED4 EQU P1.4 ; LED5 EQU P1.3 ; LED6 EQU P1.2 ; BL EQU P3.7 ;定義蜂鳴器引腳 K1 EQU P3.5 ;定義按鍵引腳 K2 EQU P3.4 ; K3 EQU P3.3 ; K4 EQU P3.2 ; ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ORG 0000H ;定位程序起始地址為:0000 ;上電復(fù)位后,程序從0000單元開始執(zhí)行 ;復(fù)位后,單片機(jī)的P1、P3口全部輸出高電平,所有發(fā)光管全部滅 MAIN: JB K1, MAIN ;若K1為"1"(表示沒有按下鍵)則返回 ACALL DEL5MS ;延時(shí),去除抖動(dòng) JB K1, MAIN ;短暫延時(shí)后,若K1變?yōu)?1",則為干擾,返回 CLR BL ;確為按鍵輸入后,蜂鳴器叫 JNB K1, $ ;若K1一直按著,則程序原地等待 SETB BL ;按鍵松開,開蜂鳴器 MOV A, P1 ;讀入P1口數(shù)據(jù) CLR C ;C位清0 RRC A ;將亮的燈移動(dòng)一位 MOV P1, A ;從P1口輸出,點(diǎn)亮相應(yīng)指示燈 JNB P1.1, LOOP1 ;若1.1口為低電平輸出,則跳轉(zhuǎn) AJMP MAIN ;返回主程序 LOOP1: MOV P1, #0FFH ;關(guān)斷所有輸出燈 AJMP MAIN ;返回主程序 ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ;12M晶振,每個(gè)機(jī)器周期所用時(shí)間為1uS DEL5MS: MOV R7, #94 ;占用一個(gè)機(jī)器周期 DEL5MS1: MOV R6, #25 ;占用一個(gè)機(jī)器周期 DJNZ R6, $ ;占用二個(gè)機(jī)器周期 DJNZ R7, DEL5MS1 ;占用二個(gè)機(jī)器周期 RET ;總占用機(jī)器周期為:4983個(gè),即4.98MS
DEL250MS: MOV R5, #50 ; DEL250MS1: ACALL DEL5MS ; DJNZ R5, DEL250MS1; RET ;子程序返回 END ;結(jié)束程序
功能擴(kuò)展:通過按不同的按鍵,實(shí)現(xiàn)多種亮燈方式選擇
上一節(jié):蜂鳴器驅(qū)動(dòng)程序 下一節(jié):光控電路程序設(shè)計(jì) |
單片機(jī)入門教程之五 |
光控電路程序設(shè)計(jì)
在這一節(jié)中,我們要介紹利用AT89C2051中的電壓比較器,來實(shí)現(xiàn)光線控制燈的亮與滅。
在編程前,我們先介紹一下電壓比較器,在AT89C2051單片機(jī)中,其P1.0和P1.1及P3.6組成一個(gè)電壓比較器。
其中P3.6引腳沒有外接端口,正常工作時(shí),當(dāng)P1.0腳電壓值大于P1.1腳時(shí),P3.6便輸出邏輯“1”,反之則輸出邏輯“0”,從2051實(shí)驗(yàn)板的原理圖我們可以看到,P1.0腳通過一個(gè)光敏電阻接地,當(dāng)光線較亮?xí)r,P1.0引腳上的電低于P1.1腳,這時(shí)P3.6輸出低電平,而當(dāng)光線較暗時(shí),光敏電阻阻值增大,隨之使P1.0腳的電壓上升,當(dāng)此腳電壓大于P1.1腳時(shí),P3.6便輸出“1”,這樣我們只要判斷P3.6腳的狀態(tài),便可以判斷出外界光線的明與暗。
LED1 EQU P1.7 ;引腳定義 LED2 EQU P1.6 ; LED3 EQU P1.5 ; LED4 EQU P1.4 ; LED5 EQU P1.3 ; LED6 EQU P1.2 ; BL EQU P3.7 ;定義蜂鳴器引腳 K1 EQU P3.5 ;定義按鍵引腳 K2 EQU P3.4 ; K3 EQU P3.3 ; K4 EQU P3.2 ; SUN_IN EQU P3.6 ; ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ORG 0000H ;定位程序起始地址為:0000 ;上電復(fù)位后,程序從0000單元開始執(zhí)行 ;復(fù)位后,單片機(jī)的P1、P3口全部輸出高電平,所有發(fā)光管全部滅 MAIN: JNB SUN_IN, MAIN ;光線亮?xí)r,返回 ACALL DEL250MS ;延時(shí)250毫秒 JNB SUN_IN, MAIN ;為干擾則返回 LOOP1: MOV P1, #3H ;確實(shí)為光線暗了,開啟所有燈 JB SUN_IN, LOOP1 ;光線檢測,為暗時(shí)一直循環(huán)亮燈 ACALL DEL250MS ;延時(shí)250毫秒 JB SUN_IN, LOOP1 ;為干擾,則返回,繼續(xù)亮燈 MOV P1, #0FFH ;光線亮后,關(guān)所有燈 AJMP MAIN ;返回主程序 ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ;12M晶振,每個(gè)機(jī)器周期所用時(shí)間為1uS DEL5MS: MOV R7, #94 ;占用一個(gè)機(jī)器周期 DEL5MS1: MOV R6, #25 ;占用一個(gè)機(jī)器周期 DJNZ R6, $ ;占用二個(gè)機(jī)器周期 DJNZ R7, DEL5MS1 ;占用二個(gè)機(jī)器周期 RET ;總占用機(jī)器周期為:4983個(gè),即4.98MS
DEL250MS: MOV R5, #50 ; DEL250MS1: ACALL DEL5MS ; DJNZ R5, DEL250MS1; RET ;子程序返回 END ;結(jié)束程序
在本實(shí)驗(yàn)程序中我們將光線亮?xí)r,關(guān)所有燈,而當(dāng)光線暗時(shí),點(diǎn)亮所有燈,這一功能便是一般的路燈控制的基本原理,若讀者在掌握了本實(shí)驗(yàn)后,通過單片機(jī)輸出不同的控制信號(hào),驅(qū)動(dòng)繼電器或其他設(shè)備,便可以設(shè)計(jì)出許多利用光線進(jìn)行控制的自動(dòng)化產(chǎn)品,這里不再詳述,留給感興趣的網(wǎng)友思考。
初學(xué)者如在這個(gè)實(shí)驗(yàn)中遇到問題的,可以通過在線技術(shù)支持進(jìn)行咨詢:QQ:153286663 張工
|
單片機(jī)入門教程之六 |
串行通訊程序設(shè)計(jì)
單片機(jī)的強(qiáng)大功能不光表現(xiàn)在本機(jī)進(jìn)行自動(dòng)化控制上,還可以通過與其他計(jì)算機(jī)的通訊進(jìn)行數(shù)據(jù)傳輸,實(shí)現(xiàn)遠(yuǎn)程控制。要實(shí)現(xiàn)計(jì)算機(jī)與計(jì)算機(jī)之間的通訊,目前應(yīng)用最廣的便是用RS232通訊協(xié)議。在這一節(jié)中,我們要介紹一個(gè)上位計(jì)算機(jī)與單片機(jī)的數(shù)據(jù)通訊的實(shí)驗(yàn)。對(duì)于計(jì)算機(jī)上的軟件,可以選用串口調(diào)試工具來完成,若沒有的網(wǎng)友,可以在我們這里下載
單片機(jī)通訊程序,所要完成的功能為:當(dāng)接收到16進(jìn)制數(shù):88后,改變6只發(fā)光二極管的狀態(tài),同時(shí)蜂鳴器響二聲,若接收到的數(shù)據(jù)不為88H,則蜂鳴器叫二聲表示接收到的數(shù)據(jù),P1口的輸出狀態(tài)不變。具體匯編程序如下:
LED1 EQU P1.7 ;引腳定義 LED2 EQU P1.6 ; LED3 EQU P1.5 ; LED4 EQU P1.4 ; LED5 EQU P1.3 ; LED6 EQU P1.2 ; BL EQU P3.7 ;定義蜂鳴器引腳 K1 EQU P3.5 ;定義按鍵引腳 K2 EQU P3.4 ; K3 EQU P3.3 ; K4 EQU P3.2 ; ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ORG 0000H ;程序定位于0000開始執(zhí)行 AJMP START ;跳轉(zhuǎn)至START ORG 0023H ;定位于串行中斷入口地址 AJMP RECIVE ;執(zhí)行串行中斷程序 START: MOV SCON,#50H ;設(shè)置成串口1方式0101,0000 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 SETB ES ;開串口中斷 SETB EA ;開總中斷 ;以上完成通訊初始化設(shè)置 MOV P1, #0FFH ; MOV P3, #0FFH ; MAIN: AJMP MAIN ;程序原地等待 ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ;串行中斷子程序 RECIVE: CLR EA ;關(guān)總中斷 MOV A, SBUF ;讀取串口接收到的數(shù)據(jù) CJNE A, #88H, RE1 ;不等于88H,則跳轉(zhuǎn)RE1 MOV A, P1 ;讀取P1口數(shù)據(jù) CPL A ;取反 MOV P1, A ;送回P1口,顯示與原來相反 RE1: CLR BL ;蜂鳴器響二聲 ACALL DEL250MS ; SETB BL ; ACALL DEL250MS ; CLR BL ; ACALL DEL250MS ; SETB BL ; CLR RI ;清串口中斷標(biāo)志 SETB EA ;開總中斷,繼續(xù)接收數(shù)據(jù) RETI ; ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ;12M晶振,每個(gè)機(jī)器周期所用時(shí)間為1uS DEL5MS: MOV R7, #94 ;占用一個(gè)機(jī)器周期 DEL5MS1: MOV R6, #25 ;占用一個(gè)機(jī)器周期 DJNZ R6, $ ;占用二個(gè)機(jī)器周期 DJNZ R7, DEL5MS1 ;占用二個(gè)機(jī)器周期 RET ;總占用機(jī)器周期為:4983個(gè),即4.98MS
DEL250MS: MOV R5, #50 ; DEL250MS1: ACALL DEL5MS ; DJNZ R5, DEL250MS1; RET ;子程序返回 END ;結(jié)束程序
程序演示說明:
將串口線插在計(jì)算機(jī)的串行通訊口上,另一端與實(shí)驗(yàn)板上的串口插座相連,接通實(shí)驗(yàn)板電源,打開串口調(diào)試助手軟件,其界面如下:
設(shè)定相應(yīng)的參數(shù),串口選實(shí)際計(jì)算機(jī)上的串口號(hào),在我們操作的計(jì)算機(jī)上選用的COM4,因此所選項(xiàng)也為:COM4;
波特率選4800,因?yàn)閱纹瑱C(jī)的程序我們設(shè)為4800,兩者要一致,否則無法通訊;
其他各項(xiàng)參數(shù)設(shè)成和我們給出的圖上一致就可以了。
全部設(shè)好后,用鼠標(biāo)點(diǎn)“手動(dòng)發(fā)送”鍵,88H這個(gè)數(shù)據(jù)就發(fā)送到單片機(jī)上了,這時(shí)你可以看到輸出的發(fā)光管的狀態(tài)改變了,同時(shí)蜂鳴器叫二聲,若發(fā)送的是另外的數(shù)據(jù),則蜂鳴器叫二聲,但發(fā)光管的狀態(tài)不會(huì)改變。
通過以上程序練習(xí),學(xué)習(xí)者可以掌握如何用計(jì)算機(jī)向單片機(jī)發(fā)出控制指令,單片機(jī)在接收到上位機(jī)傳來的控制指令后,執(zhí)行相應(yīng)的動(dòng)作。在本程序中,只傳輸了一個(gè)控制字,傳輸多個(gè)字節(jié)的內(nèi)容,原來也基本相同,學(xué)習(xí)者可以根據(jù)自己的理解,通過對(duì)接收到的不同字節(jié)信息,控制單片機(jī)的相關(guān)設(shè)備執(zhí)行不同的動(dòng)作,從而實(shí)現(xiàn)點(diǎn)動(dòng)鼠標(biāo)便可以控制各種電子硬件設(shè)備的目的。
|
|
|