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