單片機入門實例20150302_第1頁
單片機入門實例20150302_第2頁
單片機入門實例20150302_第3頁
單片機入門實例20150302_第4頁
單片機入門實例20150302_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、單片機入門實例李素敏2015.3 實例1: 點亮一個發(fā)光管P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78RST/VPD9RXD P3.010TXD P3.111INT0 P3.212INT1 P3.313T0 P3.414T1 P3.515WR P3.616RD P3.717XTAL218XTAL119VSS20P2.021P2.122P2.223P2.324P2.425P2.526P2.627P2.728PSEN29ALE/PROG30EA/VPP31P0.732P0.633P0.534P0.435P0.336P0.237P0.138P0.039VCC408

2、031 8051 8751一、單片機的外部結構最基本的必要連線v1、 電源:電源:單片機使用的是單片機使用的是5V電源,其中正極接電源,其中正極接40引腳,負極(地)接引腳,負極(地)接20引腳。引腳。 v2、振蒎電路:、振蒎電路:單片機是一種時序電路,必須提供單片機是一種時序電路,必須提供脈沖信號才能正常工作,在單片機內部已集成了振脈沖信號才能正常工作,在單片機內部已集成了振蕩器,使用晶體振蕩器,接蕩器,使用晶體振蕩器,接18、19腳。只要買來晶腳。只要買來晶振,電容,連上就可以了,按圖振,電容,連上就可以了,按圖1接上即可。接上即可。v 3、復位引腳:、復位引腳:按圖按圖1中畫法連好,至于

3、復位是何含中畫法連好,至于復位是何含義及為何需要復要復位,在單片機功能中介紹。義及為何需要復要復位,在單片機功能中介紹。v 4、 EA引腳:引腳:EA引腳接到正電源端。引腳接到正電源端。 至此,一個單片機就接好,通上電,單片機至此,一個單片機就接好,通上電,單片機就開始工作了。就開始工作了。發(fā)光管(圖1)R1二、 任務分析v我們的第一個任務是要用單片機點亮一只發(fā)光二極管LED,顯然,這個LED必須要和單片機的某個引腳相連,否則單片機就沒法控制它了,那么和哪個引腳相連呢?v單片機上除了剛才用掉的單片機上除了剛才用掉的6個引腳,還有個引腳,還有34個,我個,我們將這個們將這個LED和和1腳相連。(

4、見圖腳相連。(見圖1,其中,其中R1是限是限流電阻)流電阻) u按照這個圖的接法,當按照這個圖的接法,當1腳是高電平時,腳是高電平時,LED不亮,不亮,只有只有1腳是低電平時,腳是低電平時,LED才發(fā)亮。才發(fā)亮。u因此要因此要1腳我們要能夠控制,也就是說,我們要能夠腳我們要能夠控制,也就是說,我們要能夠讓讓1引腳按要求變?yōu)楦呋虻碗娖?。引腳按要求變?yōu)楦呋虻碗娖?。u既然我們要控制既然我們要控制1腳,就得給它起個名字,總不能就腳,就得給它起個名字,總不能就叫它一腳吧?叫它一腳吧?u叫它什么名字呢?設計叫它什么名字呢?設計51芯片的芯片的INTEL公司已經起公司已經起好了,就叫它好了,就叫它P1.0,

5、這是規(guī)定,不可以由我們來更改。,這是規(guī)定,不可以由我們來更改。 v名字有了,我們又怎樣讓它變高或變低呢?v叫人做事,說一聲就可以,這叫發(fā)布命令,要計叫人做事,說一聲就可以,這叫發(fā)布命令,要計算機做事,也得要向計算機發(fā)命令,計算機能聽算機做事,也得要向計算機發(fā)命令,計算機能聽得懂的命令稱之為計算機的指令。得懂的命令稱之為計算機的指令。v讓一個引腳輸出高電平的指令是讓一個引腳輸出高電平的指令是SETBSETB,讓一個引,讓一個引腳輸出低電平的指令是腳輸出低電平的指令是CLRCLR。v因此,我們要因此,我們要P1.0P1.0輸出高電平,只要寫輸出高電平,只要寫SETB P1.0SETB P1.0,要

6、要P1.0P1.0輸出低電平,只要寫輸出低電平,只要寫 CLR P1.0CLR P1.0就可以了。就可以了。v讓燈亮的程序簡單如下:讓燈亮的程序簡單如下: clr p1.0clr p1.0 end end現(xiàn)在我們已經有辦法讓計算機去將現(xiàn)在我們已經有辦法讓計算機去將P1.0輸出高或低電輸出高或低電平了,但是我們怎樣才能計算機執(zhí)行這條指令呢?平了,但是我們怎樣才能計算機執(zhí)行這條指令呢?v總不能也對計算機也說一聲了事吧。要解決這個問總不能也對計算機也說一聲了事吧。要解決這個問題,還得有幾步要走。題,還得有幾步要走。v第一步,第一步,計算機看不懂計算機看不懂SETB CLR之類的指令,我之類的指令,我

7、們得把指令翻譯成計算機能懂的方式,再讓計算機們得把指令翻譯成計算機能懂的方式,再讓計算機去讀。去讀。 計算機能懂什么呢?它只懂一樣東西計算機能懂什么呢?它只懂一樣東西數(shù)字。數(shù)字。因此我們得把因此我們得把SETB P1.0變?yōu)椋ㄗ優(yōu)椋―2H,90H ),把),把CLR P1.0變?yōu)樽優(yōu)?(C2H,90H ),至于為什么是這兩),至于為什么是這兩個數(shù)字,這也是由個數(shù)字,這也是由51芯片的設計者芯片的設計者-INTEL規(guī)定的,規(guī)定的,我們不去研究。我們不去研究。v第二步,第二步,在得到這兩個數(shù)字后,怎樣讓這兩個數(shù)字在得到這兩個數(shù)字后,怎樣讓這兩個數(shù)字進入單片機的內部呢?進入單片機的內部呢? 這要借助

8、于一個硬件工具這要借助于一個硬件工具“編程器編程器”。 v這里是我們邁出單片機編程的第一步,別看很簡單這里是我們邁出單片機編程的第一步,別看很簡單可是卻有重要的意義,沒錯,我們已經在編程序了可是卻有重要的意義,沒錯,我們已經在編程序了 v然后用軟件編程,再燒入然后用軟件編程,再燒入5151芯片里,這時,按圖芯片里,這時,按圖1 1連線的情況下,通上電源,這個連線的情況下,通上電源,這個LEDLED燈就亮了。燈就亮了。這時可能有的朋友會問;這么簡單的問題,這時可能有的朋友會問;這么簡單的問題, 為啥要為啥要用單片機搞得這么復雜?接一個電池,用單片機搞得這么復雜?接一個電池, 燈不就亮了?燈不就亮

9、了?v沒錯,但是這是在編程序,如果我們不要沒錯,但是這是在編程序,如果我們不要p1.0p1.0亮。亮。 而是要而是要p2.0p2.0亮,那么寫入亮,那么寫入clr p2.0clr p2.0就可以啦,不就可以啦,不需要你動烙鐵來改線。需要你動烙鐵來改線。v這樣我們看到,硬件電路的連線沒有做任何改變,這樣我們看到,硬件電路的連線沒有做任何改變,只要改變寫入單片機中的內容,就可以改變電路只要改變寫入單片機中的內容,就可以改變電路的輸出效果。的輸出效果。三、單片機內部結構分析三、單片機內部結構分析v我們來思考一個問題:當我們在編程器中把一條我們來思考一個問題:當我們在編程器中把一條指令寫進單片要內部,

10、然后取下單片機,單片機指令寫進單片要內部,然后取下單片機,單片機就可以執(zhí)行這條指令,那么這條指令一定保存在就可以執(zhí)行這條指令,那么這條指令一定保存在單片機的某個地方,并且這個地方在單片機掉電單片機的某個地方,并且這個地方在單片機掉電后依然可以保持這條指令不會丟失,這是個什么后依然可以保持這條指令不會丟失,這是個什么地方呢?地方呢?v這個地方就是單片機內部的只讀存儲器即這個地方就是單片機內部的只讀存儲器即ROMROM(READ ONLY MEMORYREAD ONLY MEMORY)。)。v為什么稱它為只讀存儲器呢?剛才我們不是明明為什么稱它為只讀存儲器呢?剛才我們不是明明把兩個數(shù)字寫進去了嗎?

11、把兩個數(shù)字寫進去了嗎?v原來在原來在89C5189C51中的中的ROMROM是一種電可擦除的是一種電可擦除的ROMROM,稱為,稱為FLASH ROMFLASH ROM,剛才我們是用的編程器,在特殊的條,剛才我們是用的編程器,在特殊的條件下由外部設備對件下由外部設備對ROMROM進行寫的操作,在單片機正進行寫的操作,在單片機正常工作條件下,只能從那面讀,不能把數(shù)據寫進常工作條件下,只能從那面讀,不能把數(shù)據寫進去,所以我們還是把它稱為去,所以我們還是把它稱為ROMROM。實例實例2:點亮一個閃爍的發(fā)光管:點亮一個閃爍的發(fā)光管一、任務分析一、任務分析v怎樣才能讓燈不斷地閃爍呢?怎樣才能讓燈不斷地閃

12、爍呢?v實例實例1 1中的程序實在是沒什么用,要燈不亮還要重中的程序實在是沒什么用,要燈不亮還要重寫一下片子,下面我們要讓燈不斷地閃爍,這就寫一下片子,下面我們要讓燈不斷地閃爍,這就有一定的實用價值了,比如可以把它當成汽車上有一定的實用價值了,比如可以把它當成汽車上的一個信號燈用了。的一個信號燈用了。v實際上就是要燈亮一段時間,再滅一段時間,也實際上就是要燈亮一段時間,再滅一段時間,也就是說要就是說要P10P10不斷地輸出高和低電平。怎樣實現(xiàn)這不斷地輸出高和低電平。怎樣實現(xiàn)這個要求呢?個要求呢?請考慮用下面的指令是否可行:請考慮用下面的指令是否可行:vSETB P1.0 SETB P1.0 v

13、CLR P1.0 CLR P1.0 v這是不行的,有兩個問題:這是不行的,有兩個問題:第一,計算機執(zhí)行指令的時間很快,執(zhí)行完第一,計算機執(zhí)行指令的時間很快,執(zhí)行完SETB SETB P1.0P1.0后,燈是滅了,但在極短時間(微秒級)后,后,燈是滅了,但在極短時間(微秒級)后,計算機又執(zhí)行了計算機又執(zhí)行了CLR P1.0CLR P1.0指令,燈又亮了,所以根指令,燈又亮了,所以根本分辨不出燈曾滅過。本分辨不出燈曾滅過。第二,在執(zhí)行完第二,在執(zhí)行完CLR P1.0CLR P1.0后,不會再去執(zhí)行后,不會再去執(zhí)行SETB SETB P1.0P1.0指令,所以以后再也沒有機會讓滅了。指令,所以以后再

14、也沒有機會讓滅了。為了解決這兩個問題,我們可以做如下設想:為了解決這兩個問題,我們可以做如下設想:v第一,在執(zhí)行完第一,在執(zhí)行完SETB P10SETB P10后,延時一段時間(幾后,延時一段時間(幾秒或零點幾秒)再執(zhí)行第二條指令,就可以分辨秒或零點幾秒)再執(zhí)行第二條指令,就可以分辨出燈曾滅過了。出燈曾滅過了。v第二在執(zhí)行完第二條指令后,讓計算機再去執(zhí)行第二在執(zhí)行完第二條指令后,讓計算機再去執(zhí)行第一條指令,不斷地在原地兜圈,我們稱之為第一條指令,不斷地在原地兜圈,我們稱之為 循循環(huán)環(huán) ,這樣就可以完成任務了。,這樣就可以完成任務了。v以下先給出程序(后面括號中的數(shù)字是為以下先給出程序(后面括號

15、中的數(shù)字是為了便于講解而寫的,實際不用輸入):了便于講解而寫的,實際不用輸入): ;主程序:;主程序: LOOPLOOP: SETB P1.0 SETB P1.0 ;();() LCALL DELAY LCALL DELAY ;();() CLR P1.0 CLR P1.0 ;();() LCALL DELAY LCALL DELAY ;();() AJMP LOOP AJMP LOOP ;();() ;以下子程序以下子程序 DELAYDELAY: MOV R7MOV R7,#250 #250 ;();() D1D1: MOV R6MOV R6,#250 #250 ;();() D2D2: D

16、JNZ R6DJNZ R6,D2 D2 ;();() DJNZ R7DJNZ R7,D1 D1 ;();() RET RET ;();() END END ;();()按上面的設想分析一下前面的五條指令:按上面的設想分析一下前面的五條指令:v第一條是讓燈滅,第二條應當是延時,第三條是讓第一條是讓燈滅,第二條應當是延時,第三條是讓燈亮,第四條和第二條一模一樣,也是延時,第五燈亮,第四條和第二條一模一樣,也是延時,第五條應當是轉去執(zhí)行第一條指令。條應當是轉去執(zhí)行第一條指令。v第二和第四條實現(xiàn)的原理稍后談,先看第五條,第二和第四條實現(xiàn)的原理稍后談,先看第五條,AJMP是一條指令,意思是轉移,往什么地

17、方轉移是一條指令,意思是轉移,往什么地方轉移呢?后面跟的是呢?后面跟的是LOOP,看一下,什么地方還有,看一下,什么地方還有LOOP,對了,在第一條指令的前面有一個,對了,在第一條指令的前面有一個LOOP,所以很直觀地,我們可以認識到,它要轉到第一條所以很直觀地,我們可以認識到,它要轉到第一條指令處。這個第一條指令前面的指令處。這個第一條指令前面的LOOP被稱之為標被稱之為標號,它的用途就是給這一行起一個名字,便于使用。號,它的用途就是給這一行起一個名字,便于使用。v第二條和第四條指令的用途是延時,它是怎樣實現(xiàn)第二條和第四條指令的用途是延時,它是怎樣實現(xiàn)的呢?的呢?v指令的形式是指令的形式是L

18、CALL,這條指令稱為調用子程序指,這條指令稱為調用子程序指令,看一下指令后面跟的是什么,令,看一下指令后面跟的是什么,DELAY,找一下,找一下DELAY,在第六條指令的前面,顯然,這也是一個,在第六條指令的前面,顯然,這也是一個標號。標號。v這條指令的作用是這樣的:當執(zhí)行這條指令的作用是這樣的:當執(zhí)行LCALL指令時,指令時,程序就轉到程序就轉到LCALL后面的標號所標定的程序處執(zhí)行,后面的標號所標定的程序處執(zhí)行,如果在執(zhí)行指令的過程中遇到如果在執(zhí)行指令的過程中遇到RET指令,則程序就指令,則程序就返回到返回到LCALL指令的下面的一條指令繼續(xù)執(zhí)行,從指令的下面的一條指令繼續(xù)執(zhí)行,從第六行

19、開始的指令中,可以看到確實有第六行開始的指令中,可以看到確實有RET指令。指令。v在執(zhí)行第二條指令后,將轉去執(zhí)行第條指令,而在執(zhí)行第二條指令后,將轉去執(zhí)行第條指令,而在執(zhí)行完,條指令后將遇到第條在執(zhí)行完,條指令后將遇到第條令:令:RET,執(zhí)行該條指令后,程序將回來執(zhí)行第三,執(zhí)行該條指令后,程序將回來執(zhí)行第三條指令,即將條指令,即將P10清零,使燈亮;清零,使燈亮;v然后又是第四條指令,執(zhí)行第四條指令就是轉去執(zhí)然后又是第四條指令,執(zhí)行第四條指令就是轉去執(zhí)行第行第6,7,8,9,10條指令,然后回來執(zhí)行第條指令,然后回來執(zhí)行第5條條指令,第指令,第5條指令就是讓程序回到第條指令就是讓程序回到第1條開始執(zhí)行,條開始執(zhí)行,如此周而復始,燈就在不斷地亮、滅了。如此周而復始,燈就在不斷地亮、滅了。 v在標號在標號DELAY標志的這一行到標志的這一行到RET這一行中的所有這一行中的所有程序,這是一段延時程序,大概延時零點幾秒,至程序,這是一段延時程序,大概延時

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論