手把手教你單片機(jī)快速入門 站長原創(chuàng),如需引用請注明出處
筆者在2004--2009年期間撰寫了大量的單片機(jī)學(xué)習(xí)文章,給讀者朋友帶來了很大的幫助,在此也讓筆者感覺非常高興,同時(shí),我們也收到了大量讀者朋友們的來信及反饋建議,為此,筆者寫下“手把手教你單片機(jī)快速入門”一文,配合文中所講的單片機(jī)學(xué)習(xí)、開發(fā)設(shè)備,提供給學(xué)習(xí)者一個(gè)理論與實(shí)踐相結(jié)合的平臺,使廣大單片機(jī)初學(xué)者朋友能夠以最快的速度入門,文中寫講述一些單片機(jī)常用的開發(fā)設(shè)備,我們應(yīng)該如何去使用、操作它們,目前市場上各類單片機(jī)開發(fā)學(xué)習(xí)器材有很多,在此,我們挑選了一種最經(jīng)濟(jì)的實(shí)惠的組合介紹給大家,能大家在最短的時(shí)間內(nèi)能盡快上手。 首先,我們先來看一看,在下面的學(xué)習(xí)過程中將要用到的硬件設(shè)備有哪些,它們分別是:A51編程器,微型51仿真器和增強(qiáng)型51實(shí)驗(yàn)板,實(shí)物如圖所示,你只需要有一臺電腦就可以進(jìn)行學(xué)習(xí)和開發(fā)了。三板在手,可謂是資源足矣,學(xué)習(xí)起來夠你用的了。至于一些難度較高的應(yīng)用我們在此先不作介紹,說多了,反而會使問題復(fù)雜化。
以下我們將與這些單片機(jī)開發(fā)設(shè)備相結(jié)合來講述具體的實(shí)踐學(xué)習(xí)過程。 我們的第一個(gè)實(shí)驗(yàn)是要用單片機(jī)點(diǎn)亮實(shí)驗(yàn)板上的第一只LED發(fā)光管。想用單片機(jī)來完成一些智能化的控制,這個(gè)是最簡單的一個(gè)程序例子,以給大家一個(gè)感性的認(rèn)識。 我們的實(shí)驗(yàn)板上共有8個(gè)LED發(fā)光二極管,分別與單片機(jī)的P1.0腳——P1.7腳相連?,F(xiàn)在我們就來點(diǎn)亮第一個(gè)發(fā)光管,即與P1.0腳相連的那個(gè)發(fā)光管。首先,我們將仿真器插上串口線,把串口線的另一頭插至計(jì)算機(jī)的COM口上,并把仿真器插在51實(shí)驗(yàn)板上,至此硬件設(shè)備連接已OK。如圖所示: 接下來,我們得安裝仿真器軟件——Keil,用戶可以在配帶的軟件光盤“仿真軟件KEIL”目錄下找到,運(yùn)行Setup.exe文件進(jìn)行安裝,無需特別的參數(shù)設(shè)置,按其默認(rèn)值確認(rèn)即可,具體安裝方法可看目錄下的說明文件。安裝完成之后,點(diǎn)擊開始菜單“程序”中的“Keil uVision2”。進(jìn)入軟件界面,如圖所示: 我們在“工程”菜單中執(zhí)行“新建”命令,新建工程文件名取為“my.uv2”。接下來是選擇我們要做實(shí)驗(yàn)使用的CPU類型,我們在此使用市面上最為常見的Ateml公司的AT89C51型號,選好,點(diǎn)擊確定即可,這時(shí)我們的工程向?qū)б呀?jīng)做完,下一步我們將編寫源程序代碼,即點(diǎn)亮第一個(gè)LED發(fā)光管所需要的程序代碼。我們執(zhí)行“新建”操作,在彈出的文本編緝框內(nèi)鍵入以下代碼: loop: CLR P1.0 Ajmp loop END 這里我們僅使用了四條語句,CLR P1.0的作用是用來使單片機(jī)的P1.0管腳置成低電平,因?yàn)槲覀円沟谝粋€(gè)發(fā)光管點(diǎn)亮,從電路圖中,我們可以看到,只要使P1.0腳上為低電平信號即可。第一行的“Loop”是語句標(biāo)號;“AJMP LOOP”這條語句的意思是程序運(yùn)行到此跳轉(zhuǎn)到開始標(biāo)號loop,重復(fù)執(zhí)行程序。END則是程序結(jié)束的標(biāo)記,如我們看完電影后,在演員表出現(xiàn)完之后,也會出現(xiàn)一個(gè)“END”的字樣。一個(gè)最簡單的程序就這樣編寫完成了,下面我們得保存我們已經(jīng)編好的程序,即執(zhí)行“文件”菜單中的“另存為”命令,文件名我們在此取為led.asm,注意.asm是匯編語言的擴(kuò)展名,如果使用C語言編寫的話,則擴(kuò)展名應(yīng)是.c。在此,我們先使用匯編語言來介紹。如圖所示: OK,現(xiàn)在我們已經(jīng)保存好了這個(gè)文件,還記得嗎,我們剛才新建了一個(gè)叫“my”的工程,而led.asm文件應(yīng)該是我們my這個(gè)工程的其中一份子,換句話說,我們還應(yīng)該把這個(gè)led.asm文件添加到my這個(gè)工程當(dāng)中去。具體操作如下,點(diǎn)擊屏幕左側(cè)的Target1字樣旁邊的“+”圖標(biāo),則會彈出一個(gè)子項(xiàng),名為“Source Group 1”,在其上面單擊鼠標(biāo)右鍵,選擇“增加文件到組Source Group 1”這項(xiàng),把我們剛才保好的led.asm加進(jìn)去。如圖所示: 接下來,我們要為源程序做一項(xiàng)編譯工作,即產(chǎn)生目標(biāo)文件,等會我們要把該文件燒入到我們的AT89C51單片機(jī)芯片中去。在執(zhí)行編譯之前,我們需要進(jìn)行一些設(shè)置,右擊“Target 1”,在彈出菜單中選擇“目標(biāo)Target 1屬性”選項(xiàng),進(jìn)入彈出菜單中的“輸出”頁,頁面中有一項(xiàng)為“生成HEX文件”,我們在其選擇框內(nèi)打上勾,然后,點(diǎn)擊確定完成設(shè)置。現(xiàn)在,我們只要按一下快捷鍵F7,就可以完成編譯工作了,這時(shí),你會在led.asm文件所在目錄下發(fā)現(xiàn)一個(gè)名為“my.hex”的文件,這就是我們所用來完成燒寫芯片工作時(shí)使用到的目標(biāo)程序文件,該文件為16進(jìn)制文件。 編程編完了,我們自然要使用仿真器來驗(yàn)證一下程序有否正確,但在使用仿真器之前,我們還需要手動設(shè)置一些相關(guān)參數(shù),同樣是在“目標(biāo)Target 1屬性”選項(xiàng),進(jìn)入“目標(biāo)”頁面,將晶振頻率設(shè)置為11.0592M,因?yàn)槲覀兊姆抡嫫魇褂玫念l率值為11.0592M,如圖所示: 進(jìn)入“調(diào)試”頁,選擇使用“Keil Monitor-51 Driver”硬件仿真器,點(diǎn)擊其后邊的“設(shè)置”按鈕,進(jìn)行仿真器的串口通訊設(shè)置,如果你的仿真器串口線插在計(jì)算機(jī)的COM1口上,則我們在此選擇為“COM1”,因?yàn)楣P者使用時(shí)是插在COM2口上,所以在此我們選擇“COM2”,將波特率設(shè)置為“38400”,點(diǎn)擊確定后,我們在“啟動時(shí)加載程序”的復(fù)選框打個(gè)勾,頁面內(nèi)的“恢復(fù)調(diào)試設(shè)置”安需選擇即可,我們在此將“斷點(diǎn)”、“工具欄”、“存儲器顯示”這幾項(xiàng)打上勾。詳細(xì)的設(shè)置,請如圖所示: 現(xiàn)在我們已經(jīng)將所有的設(shè)置都完成了,下面就讓我們來看看我們的成果吧。首先,點(diǎn)擊Keil軟件“調(diào)試”菜單中的“開始/停止調(diào)試”項(xiàng),或者也可以按鍵盤快捷鍵Ctrl+F5。如屏幕左下角出現(xiàn)如圖所示的樣子,則表示仿真器連接成功,“Monitor-51 V3.4”是軟件版本號。 然后,再選擇“調(diào)試”菜單中的“運(yùn)行到”按鈕,或使用鍵盤快捷鍵F5,這地仿真器才真正地起到仿真的作用了,你會發(fā)現(xiàn)我們的實(shí)驗(yàn)板上的第一個(gè)LED發(fā)光管亮了,這正是我們所想要得到的結(jié)果。如圖所示: 至此,我們已經(jīng)完成了程序調(diào)試工作及硬件的仿真。完了之后,我們還需要做一件事,就是斷開連接,如我們在生活中打完電話一定要掛機(jī)一樣,斷開連接的操作非常簡單,首先,按一下仿真器硬件電路板上的一個(gè)復(fù)位按鈕(見仿真器圖片中左上角那個(gè)按鈕)。然后在“開始/停止調(diào)試”按鈕,即我們剛才用來連接時(shí)按的那個(gè)按鈕。至此,仿真工作全部結(jié)束,現(xiàn)在對仿真器的使用應(yīng)該有了大致地了解了吧。 咱們繼續(xù)講,我們現(xiàn)在已經(jīng)完成了軟件程序的編制及仿真工作,下面我們就來講一講,咱們的最后一道工序,即程序定形后,我們?nèi)绾螌⑵錈轿覀兊膯纹瑱C(jī)芯片中去。我們以現(xiàn)在Atmel公司最新的AT89C51芯片來講。 首先,我們將串口線從仿真器上拔下,然后插在51編程器上,同時(shí)插上USB線,如圖所示: 將光盤上的“A51經(jīng)濟(jì)型編程器軟件”文件夾全部復(fù)制到你的電腦硬盤上,并將其目錄下的所有文件的“只讀”屬性去掉,具體操作,全選所有文件,在文件屬性中將其“只讀”項(xiàng)前面復(fù)選框內(nèi)的勾去掉即可。現(xiàn)在,我們打開“編程器.exe”,進(jìn)入程序界面,同樣編程器在第一次使用前也需要手動設(shè)置一些參數(shù),進(jìn)入“設(shè)置”項(xiàng),根據(jù)你編程器所插的COM口號,設(shè)置好COM口序號,波特率設(shè)置為:28800,圖中筆者所插的COM口為COM2,將界面左上角的芯片類型設(shè)為AT89C51,詳細(xì)設(shè)置如圖所示: 現(xiàn)在該設(shè)置的都已經(jīng)設(shè)置完了,下面我們就需要將要燒寫的程序文件調(diào)進(jìn)來,執(zhí)行“打開文件操作”,找到剛才我們剛才已經(jīng)準(zhǔn)備好的my.hex文件,選中打開即可。然后,我們插在要燒寫的AT89C51芯片,如圖所示: 首先,我們執(zhí)行一下“擦除器件”操作,差不多1秒鐘即可完成芯片的擦除工作,速度很快。好了,現(xiàn)在已經(jīng)到最后一步了,用鼠標(biāo)點(diǎn)一下“寫器件”按鈕吧,OK,大功告成。至此,我們已經(jīng)完成了從軟件編寫,仿真,直到燒寫芯片的全部步驟。一定很辛苦了吧:)下面就讓我們來看看我們的成果吧,把剛才燒寫好的AT89C51芯片插在實(shí)驗(yàn)板上,并接上USB線,來看看板上的第一個(gè)LED發(fā)光管是不是亮了,板上的第一個(gè)LED發(fā)光管點(diǎn)亮,現(xiàn)在我們已經(jīng)脫離了我們的仿真器而使用的是單片機(jī)芯片。 筆者寫到這里,整個(gè)實(shí)驗(yàn)、開發(fā)步驟已經(jīng)全部完成,雖然這是一個(gè)很簡單的實(shí)驗(yàn),但很大復(fù)雜的例子都是基于各種簡單的原理之上。如下面是一段流水燈的程序,你可以將其直接粘到Keil程序編程器中仿真執(zhí)行,編譯后燒到芯片中去,看一下流水燈的效果,簡單吧:)所有的實(shí)驗(yàn)方法、步驟完全一樣,只是程序代碼變了。 org 0000h ljmp start org 10 start: mov a,#0feh loop:mov p1,a rl a lcall delaytime ljmp loop delaytime: mov r7,#255 c1:mov r6,#255 c2:djnz r6,c2 djnz r7,c1 ret end 最后,筆者寫下此文,希望能夠幫助廣大單片機(jī)初學(xué)者可以盡快入門,給大家一個(gè)感性的認(rèn)識,最重要的是能夠提供給大家一個(gè)實(shí)驗(yàn)的硬件環(huán)境以及軟硬件相結(jié)合的實(shí)踐性描述,以使增加單片機(jī)初學(xué)者的實(shí)踐動手能力。我們提供的實(shí)驗(yàn)板上資源非常豐富,可以做流水燈、數(shù)碼管、蜂鳴器、鍵盤、繼電器控制、IIC總線通信等實(shí)驗(yàn),光盤上也都配有例程、實(shí)驗(yàn)中的一些視頻操作錄像及編程器、仿真器的全部驅(qū)動程序,以供大家方便學(xué)習(xí),實(shí)驗(yàn)中的一些視頻錄像請見光盤“單片機(jī)實(shí)驗(yàn)視頻錄像”下的視頻文件。因此,你只要有一臺電腦就可以進(jìn)行學(xué)習(xí)、開發(fā)了,相信只要你發(fā)揮你的想象,一定可以將單片機(jī)發(fā)揮出它更大的潛力 |
|