單片機實訓(xùn)報告悉元器件與電路原理圖_第1頁
單片機實訓(xùn)報告悉元器件與電路原理圖_第2頁
單片機實訓(xùn)報告悉元器件與電路原理圖_第3頁
單片機實訓(xùn)報告悉元器件與電路原理圖_第4頁
單片機實訓(xùn)報告悉元器件與電路原理圖_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、實 訓(xùn) 報 告課程名稱: 單片機實訓(xùn) 專業(yè): 班級:學(xué)號: 姓名:指導(dǎo)教師: 成績: 完成日期: 2012年7月12日 1 實訓(xùn)任務(wù)名稱:熟悉元器件與電路原理圖1.1 電路板的組成與主要器件工作原理 電路板原理圖圖1.1所示:圖1.1 電路板原理圖1.2 單片機部分 單片微型計算機簡稱單片機,又稱微控制器。是指在一塊芯片上集成了中央處理器、隨機存儲器、程序存儲器、定時/計數(shù)器、并行i/o接口、中斷控制器和串行接口等部件而構(gòu)成的微型計算機系統(tǒng)。目前,新型的單片機內(nèi)還有和a/d和d/a轉(zhuǎn)換器、dma通道、顯示驅(qū)動電路等特殊功能部件。1.2.1 89系列單片機的型號編碼 89系列單片機的型號編碼由三

2、個部分組成,它們是前綴、型號和后綴。格式如下:at89cxxxxxxxx其中,at是前綴,89cxxxx是型號,xxxx是后綴。 (l)前綴 由字母“at”組成,表示該器件是atmel公司的產(chǎn)品。 (2)型號由“89cxxxx”或“89lvxxxx”或“89sxxxx”等表示?!?9cxxxx”中,9是表示內(nèi)部含flash存儲器,c表示為cmos產(chǎn)品?!?9lvxxxx”中,lv表示低壓產(chǎn)品。“89sxxxx”中,s表示含有串行下載flash存儲器。在這個部分的“xxxx”表示器件型號數(shù),如51、1051、8252等。 (3)后綴 由“xxxx”四個參數(shù)組成,每個參數(shù)的表示和意義不同,在型號與

3、后綴部分有“”號隔開。后綴中的第一個參數(shù)x用于表示速度,它的意義如下:x12,表示速度為12mhz。x20,表示速度為20mhz。x16,表示速度為16mhz。x24,表示速度為24mhz。后綴中的第二個參數(shù)x用于表示封裝,它的意義如下:xd,表示陶瓷封裝。xq,表示pqfp封裝。xj,表示plcc封裝。xa,表示tqfp封裝。xp,表示塑料雙列直插dip封裝。xw,表示裸芯片。xs,表示soic封裝。后綴中第三個參數(shù)x用于表示溫度范圍,它的意義如下:xc,表示商業(yè)用產(chǎn)品,溫度范圍為0十70。xi,表示工業(yè)用產(chǎn)品,溫度范圍為40十85。xm,表示軍用產(chǎn)品,溫度范圍為65十 125。后綴中第四個

4、參數(shù)x用于說明產(chǎn)品的處理情況,它的意義如下:x為空,表示處理工藝是標(biāo)準(zhǔn)工藝。x883,表示處理工藝采用milstd883標(biāo)準(zhǔn)。例如:有一個單片機型號為“at89c5112pi”,則表示意義為該單片機是atmel公司的flash單片機,內(nèi)部是cmos結(jié)構(gòu),速度為12mhz,封裝為塑封dip,是工業(yè)用產(chǎn)品,按標(biāo)準(zhǔn)處理工藝生產(chǎn)。1.2.2 新舊型號產(chǎn)品的區(qū)別與聯(lián)系mcs-51系列單片機是美國intel公司于1980年推出的產(chǎn)品,典型產(chǎn)品有 8031(內(nèi)部沒有程序存儲器,實際使用方面已經(jīng)被市場淘汰)、8051(芯片采用hmos,功耗是630mw,是89c51的5倍,實際使用方面已經(jīng)被市場淘汰)和875

5、1等通用產(chǎn)品,一直到現(xiàn)在, mcs-51內(nèi)核系列兼容的單片機仍是應(yīng)用的主流產(chǎn)品(比如目前流行的89s51、已經(jīng)停產(chǎn)的89c51等),各高校及專業(yè)學(xué)校的教材仍用mcs-51單片機作為代表進(jìn)行理論基礎(chǔ)學(xué)習(xí)。有些文獻(xiàn)甚至也將8051泛指mcs-51系列單片機,8051是早期的最典型的代表作,由于mcs-51單片機影響極深遠(yuǎn),許多公司都推出了兼容系列單片機,就是說mcs-51內(nèi)核實際上已經(jīng)成為一個8位單片機的標(biāo)準(zhǔn)。其它的公司的51單片機產(chǎn)品都是和mcs-51內(nèi)核兼容的產(chǎn)品而以。同樣的一段程序,在各個單片機廠家的硬件上運行的結(jié)果都是一樣的,如atmel的89c51(已經(jīng)停產(chǎn))、89s51, philip

6、s(菲利浦),和winbond(華邦)等,已經(jīng)停產(chǎn)的89c51指的是atmel公司的 at89c51單片機,同時是在原基礎(chǔ)上增強了許多特性,如時鐘,由flash(程序存儲器的內(nèi)容至少可以改寫1000次)存儲器取帶了原來的rom(一次性寫入),at89c51的性能相對于8051已經(jīng)算是非常優(yōu)越的了。在市場化方面,89c51受到了pic單片機陣營的挑戰(zhàn),89c51最致命的缺陷在于不支持isp(在線更新程序)功能。89s51就是在這樣的背景下取代89c51的。89s51在工藝上進(jìn)行了改進(jìn),89s51采用0.35新工藝,成本降低,而且將功能提升,增加了競爭力。89sxx可以向下兼容89cxx等51系列

7、芯片。1.2.3 89s51與89c51比較 (1)新增加很多功能,性能有了較大提升,價格基本不變,甚至比89c51更低。 (2)isp在線編程功能,這個功能的優(yōu)勢在于改寫單片機存儲器內(nèi)的程序不需要把芯片從工作環(huán)境中剝離。 (3)最高工作頻率為33mhz,89c51的極限工作頻率是24m,就是說s51具有更高工作頻率,從而具有了更快的計算速度。 (4)兼容性方面,向下完全兼容51全部字系列產(chǎn)品。比如8051、89c51等等早期mcs-51兼容產(chǎn)品。也就是說所有教科書上的程序(不論教科書上采用的單片機是8051還是89c51還是mcs-51等等),在89s51上一樣可以照常運行,這就是向下兼容。

8、 (5)程序存儲器寫入方式,二者的寫入程序的方式不同,89c51只支持并行寫入,同時需要vpp燒寫高壓。89s51則支持isp在線可編程寫入技術(shù),串行寫入、速度更快、穩(wěn)定性更好,燒寫電壓也僅僅需要45v即可。 (6)電源范圍,89s5*電源范圍寬達(dá)45.5v,而89c5*系列在低于4.8v和高于5.3v的時候則無法正常工作。 (7)燒寫壽命更長,89s5*標(biāo)稱的1000次,實際最少是1000次10000次,這樣更有利初學(xué)者反復(fù)燒寫,降低學(xué)習(xí)成本。1.3 led數(shù)碼管顯示部分1.3.1 led器件規(guī)格、顏色、極性 led器件規(guī)格為圓形,顏色為單紅色,在本部分采用了4個數(shù)碼管組合共陽極接法。1.3

9、.2 led器件與單片機連接方式 led器件在本部分與單片機連接時采用動態(tài)顯示方式。1.3.3 led器件的驅(qū)動問題 led器件在本部分采用了單管放大驅(qū)動。1.3.4 單片機引腳的占用或分配 led器件在本部分將p0口與段連接,四個數(shù)碼管的陽極分別與p2口的p2.4、p2.5、p2.6、p2.7連接。1.3.5 led器件的譯碼問題led器件在本部分在該部分是通過軟件譯碼。1.3.6 字型編碼字型編碼,用的是按共陽極標(biāo)準(zhǔn)形式的,09的編碼定義是(0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90)。1.4 矩陣鍵盤部分1.4.1 按鍵的類型、數(shù)量

10、、功能定義、使用方式 本部分采用的是2行2列的矩陣式按鍵鍵盤,有4個按鍵,通過這些按鍵可以控制發(fā)光二級管的點亮與熄滅。在使用時,通過掃描的方式來確定鍵值。1.4.2 與單片機的連接方式 與單片機之間連接采用了矩陣式,如圖1.2所示,矩陣式鍵盤注意行和列的概念,一般采用行掃描法。行線一般接上拉電阻,作為輸入口與單片機連接,列線作為輸出口與單片機連接,按鍵跨接行列線。圖1.2 單片機與鍵盤連接方式1.4.3 鍵盤編程掃描法識別按鍵 (1)判別有無鍵按下:向所有的列線上輸出低電平,再讀入所有的行信號。如果4個鍵中任意一個鍵被按下,那么讀入的行電平則不全部為高;如果4個鍵中無鍵按下,則讀入的行全部為高

11、電平。如上圖所示,如果k4被按下,則k4所在的第一行第一列被導(dǎo)通,第一行被拉低,讀入行信號為低電平,表示有鍵按下。 (2)鍵盤掃描取得閉合鍵的行、列號:往列線上逐列送低電平,先送第0列為低電平,第1列為高電平,讀入的行電平的狀態(tài)就顯示了位于第0列的k1和k2的按鍵狀態(tài),如果讀入的行值全為高電平,則無鍵按下,再送第1列為低電平,第0列為高電平,讀入的行電平的狀態(tài)就顯示了位于第1列的k3和k4的按鍵狀態(tài),最后再重新從第0列開始。 (3)用計算法或查表法得到鍵值:鍵值=列號*2+行號。 (4)判斷閉合鍵是否釋放,如沒釋放則繼續(xù)等待。 (5)將閉合鍵的鍵值保存,同時轉(zhuǎn)去執(zhí)行該閉合鍵的功能。1.4.4

12、矩陣式鍵盤與單片機的連接 本部分的矩陣式鍵盤用了p2口的個4個i/o口,列線用的是p2.0和p2.1,行線用的是p2.2和p2.3。1.4.5 按鍵消抖 通常的按鍵所用開關(guān)為機械彈性開關(guān),當(dāng)機械觸點斷開、閉合時,電壓信號小型,如圖1.3所示。由于機械觸點的彈性作用,一個按鍵開關(guān)在閉合時不會馬上穩(wěn)定地接通,在斷開時也不會一下子斷開。因而在閉合及斷開的瞬間均伴隨有一連串的抖動,如下圖。抖動時間的長短由按鍵的機械特性決定,一般為5ms10ms。這是一個很重要的時間參數(shù),在很多場合都要用到。 圖1.3 按鍵觸點的機械抖動 按鍵穩(wěn)定閉合時間的長短則是由操作人員的按鍵動作決定的,一般為零點幾秒至數(shù)秒。鍵抖

13、動會引起一次按鍵被誤讀多次。為確保cpu對鍵的一次閉合僅作一次處理,必須去除鍵抖動。在鍵閉合穩(wěn)定時讀取鍵的狀態(tài),并且必須判別到鍵釋放穩(wěn)定后再作處理。按鍵的抖動,可用硬件或軟件兩種方法。 (1)硬件消抖:在鍵數(shù)較少時可用硬件方法消除鍵抖動。圖1.4所示的rs觸發(fā)器為常用的硬件去抖。圖1.4 按鍵去抖電路 圖中兩個“與非”門構(gòu)成一個rs觸發(fā)器。當(dāng)按鍵未按下時,輸出為1;當(dāng)鍵按下時,輸出為0。此時即使用按鍵的機械性能,使按鍵因彈性抖動而產(chǎn)生瞬時斷開(抖動跳開b),中要按鍵不返回原始狀態(tài)a,雙穩(wěn)態(tài)電路的狀態(tài)不改變,輸出保持為0,不會產(chǎn)生抖動的波形。也就是說,即使b點的電壓波形是抖動的,但經(jīng)雙穩(wěn)態(tài)電路之

14、后,其輸出為正規(guī)的矩形波。這一點通過分析rs觸發(fā)器的工作過程很容易得到驗證。 利用電容的放電延時,采用并聯(lián)電容法,也可以實現(xiàn)硬件消抖,如圖1.5所示。圖1.5 電容法去抖電路 (2)軟件消抖:如果按鍵較多,常用軟件方法去抖,即檢測出鍵閉合后執(zhí)行一個延時程序,產(chǎn)生5ms10ms的延時,讓前沿抖動消失后再一次檢測鍵的狀態(tài),如果仍保持閉合狀態(tài)電平,則確認(rèn)為真正有鍵按下。當(dāng)檢測到按鍵釋放后,也要給5ms10ms的延時,待后沿抖動消失后才能轉(zhuǎn)入該鍵的處理程序。1.5 繼電器控制部分繼電器是一種電控制器件,一般由鐵芯、線圈、銜鐵、觸點簧片等組成的。只要在線圈兩端加上一定的電壓,線圈中就會流過一定的電流,從

15、而產(chǎn)生電磁效應(yīng),銜鐵就會在電磁力吸引的作用下克服返回彈簧的拉力吸向鐵芯,從而帶動銜鐵的動觸點與靜觸點(常開觸點)吸合。當(dāng)線圈斷電后,電磁的吸力也隨之消失,銜鐵就會在彈簧的反作用力返回原來的位置,使動觸點與原來的靜觸點(常閉觸點)釋放。這樣吸合、釋放,從而達(dá)到了在電路中的導(dǎo)通、切斷的目的。對于繼電器的“常開、常閉”觸點,可以這樣來區(qū)分:繼電器線圈未通電時處于斷開狀態(tài)的靜觸點,稱為“常開觸點”;處于接通狀態(tài)的靜觸點稱為“常閉觸點”。由于繼電器的強電觸點與吸合線圈之間是隔離的,所以繼電器控制輸出電路不需要專門設(shè)計隔離電路。其工作電路如下圖1.5所示,圖中二極管的作用是把繼電器吸合線圈的反電動勢吸收掉

16、,從而保護(hù)晶體管。圖1.6 繼電器工作電路1.6 溫度檢測部分1.6.1 溫度檢測工作電路 溫度檢測工作電路圖如圖1.7所示。圖1.7 溫度檢測工作電路1.6.2 溫度傳感器ds18b20結(jié)構(gòu) 溫度傳感器ds18b20結(jié)構(gòu)圖如圖1.8所示。   圖1.8 ds18b20封裝圖1.6.3 ds18b20的主要特性 (1)適應(yīng)電壓范圍更寬,電壓范圍為3.05.5v,在寄生電源方式下可由數(shù) 據(jù)線供電 (2)獨特的單線接口方式,ds18b20在與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與ds18b20的雙向通訊 (3) ds18b20支持多點組網(wǎng)功能,多個ds18b20可以并聯(lián)

17、在唯一的三線上,實現(xiàn)組網(wǎng)多點測溫 (4)ds18b20在使用中不需要任何外圍元件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi) (5)溫范圍55125,在-10+85時精度為±0.5 (6)可編程的分辨率為912位,對應(yīng)的可分辨溫度分別為0.5、0.25、0.125和0.0625,可實現(xiàn)高精度測溫 (7)在9位分辨率時最多在 93.75ms內(nèi)把溫度轉(zhuǎn)換為數(shù)字,12位分辨率時最多在750ms內(nèi)把溫度值轉(zhuǎn)換為數(shù)字,速度更快 (8)測量結(jié)果直接輸出數(shù)字溫度信號,以"一 線總線"串行傳送給cpu,同時可傳送crc校驗碼,具有極強的抗干擾糾錯能力 (9)負(fù)壓特性:

18、電源極性接反時,芯片不會因發(fā)熱而燒毀,但不能正常工作。 1.6.4 ds18b20的外形和內(nèi)部結(jié)構(gòu)ds18b20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻rom 、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器th和tl、配置寄存器,如圖1.9所示。  圖1.9 ds18b20內(nèi)部結(jié)構(gòu)圖 1.6.5 ds18b20工作原理 ds18b20的讀寫時序和測溫原理與ds1820相同,只是得到的溫度值的位數(shù)因分辨率不同而不同,且溫度轉(zhuǎn)換時的延時時間由2s 減為750ms。 ds18b20測溫原理如圖1.10所示。圖中低溫度系數(shù)晶振的振蕩頻率受溫度影響很小,用于產(chǎn)生固定頻率的脈沖信號送給計數(shù)器1。高溫度系數(shù)晶振

19、 隨溫度變化其振蕩率明顯改變,所產(chǎn)生的信號作為計數(shù)器2的脈沖輸入。計數(shù)器1和溫度寄存器被預(yù)置在55所對應(yīng)的一個基數(shù)值。計數(shù)器1對 低溫度系數(shù)晶振產(chǎn)生的脈沖信號進(jìn)行減法計數(shù),當(dāng)計數(shù)器1的預(yù)置值減到0時,溫度寄存器的值將加1,計數(shù)器1的預(yù)置將重新被裝入,計數(shù)器1重 新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進(jìn)行計數(shù),如此循環(huán)直到計數(shù)器2計數(shù)到0時,停止溫度寄存器值的累加,此時溫度寄存器中的數(shù)值即 為所測溫度。圖1.10中的斜率累加器用于補償和修正測溫過程中的非線性,其輸出用于修正計數(shù)器1的預(yù)置值。   圖1.10 ds18b20測溫原理框圖1.6.6 ds1820使用中注意事項 ds

20、1820雖然具有測溫系統(tǒng)簡單、測溫精度高、連接方便、占用口線少等優(yōu)點,但在實際應(yīng)用中也應(yīng)注意以下幾方面的問題: (1)較小的硬件開銷需要相對復(fù)雜的軟件進(jìn)行補償,由于ds1820與微處理器間采用串行數(shù)據(jù)傳送,因此,在對ds1820進(jìn)行讀寫編程時,必須嚴(yán)格的保證讀寫時序,否則將無法讀取測溫結(jié)果。在使用plm、c等高級語言進(jìn)行系統(tǒng)程序設(shè)計時,對ds1820操作部分最好采用匯編語言實現(xiàn)。 (2)在ds1820的有關(guān)資料中均未提及單總線上所掛ds1820數(shù)量問題,容易使人誤認(rèn)為可以掛任意多個ds1820,在實際應(yīng)用中并非如此。當(dāng)單總線上所掛ds1820超過8個時,就需要解決微處理器的總線驅(qū)動問題,這一點

21、在進(jìn)行多點測溫系統(tǒng)設(shè)計時 要加以注意。 (3)連接ds1820的總線電纜是有長度限制的。試驗中,當(dāng)采用普通信號電纜傳輸長度超過50m時,讀取的 測溫數(shù)據(jù)將發(fā)生錯誤。當(dāng)將總線電纜改為雙絞線帶屏蔽電纜時,正常通訊距離可達(dá)150m,當(dāng)采用每米絞合次數(shù)更多的雙絞線帶屏蔽電纜時,正常通訊距離進(jìn)一步加長。這種情況主要是由總線分布電容使信號波形產(chǎn)生畸變造成的。因此,在用ds1820進(jìn)行長距離測溫系統(tǒng)設(shè)計時要充分考 慮總線分布電容和阻抗匹配問題。 (4)在ds1820測溫程序設(shè)計中,向ds1820發(fā)出溫度轉(zhuǎn)換命令后,程序總要等待ds1820的返回信號,一旦某個ds1820接觸不好或斷線,當(dāng)程序讀該ds1820

22、時,將沒有返回信號,程序進(jìn)入死循環(huán)。這一點在進(jìn)行ds1820硬件連接和軟件設(shè)計時也要給予一定的重視。測溫電纜線建議采用屏蔽4芯雙絞線,其中一對線接地線與信號線,另一組接vcc和地線,屏蔽層在源端單點接地。1.7 串行通信部分1.7.1 串行通信部分工作電路 微機與單片機最簡單的連接是零調(diào)制3線經(jīng)濟(jì)型,這是進(jìn)行全雙工通信所必須的最少數(shù)目的線路。其工作電路圖如圖1.11所示。圖1.11 串行部分工作電路1.7.2 串行通信電平由于89c52單片機輸入、輸出電平為ttl電平,而pc機配置的是rs-232c標(biāo)準(zhǔn)串行接口,二者的電氣規(guī)范不一致。數(shù)字值: 1 0ttl電平: +5v 0v232電平: -3

23、v-15v +3v+15v1.7.3 串行通信電平轉(zhuǎn)換 要完成pc機與單片機的數(shù)據(jù)通信必須進(jìn)行電平轉(zhuǎn)換。max232單芯片可實現(xiàn)89c52單片機與pc機的rs-232c之間的電平轉(zhuǎn)換。max232芯片是maxim公司生產(chǎn)的、包含兩路接收器和驅(qū)動器的ic芯片,適用于各種eia-232c和v.28/v.24的通信接口。1.7.4 max232芯片功能 max232內(nèi)部有一個電源電壓變換器,可以把輸入的+5v電源電壓變換成為rs-232c輸出電平所需的±10v電壓。采用此芯片接口的串行通信系統(tǒng)只需單一的+5v電源就可以了。對于沒有±12v電源的場合,其適應(yīng)性更強。其引腳圖如圖1.

24、12所示。圖1.12 max232引腳圖2 實訓(xùn)任務(wù)名稱:發(fā)光二級管點亮效果控制單片機程序下載練習(xí)2.1 keil c51調(diào)試軟件 使用c語言肯定要使用到c編譯器,以便把寫好的c程序編譯為機器碼,這樣單片機才能執(zhí)行編寫好的程序。keil uvision2是眾多單片機應(yīng)用開發(fā)軟件之一,它支持眾多不同公司的mcs51架構(gòu)的芯片,它集編輯,編譯,仿真等于一體,同時還支持plm、匯編和c語言的程序設(shè)計。要使用keil51軟件,必需先要安裝。首先是運行keil51軟件,出現(xiàn)如圖2.1的屏幕。圖2.1啟動時的屏幕2.1.1 keil項目的建立 (1)點擊project菜單,選擇彈出的下拉式菜單中的new

25、project,如圖2.2。接著彈出一個標(biāo)準(zhǔn)windows文件對話窗口,如圖2.3。在"文件名"中輸入一個c程序項目名稱,這里用"test",只要符合windows文件規(guī)則的文件名都行。"保存"后的文件擴(kuò)展名為uv2,這是keil uvision2項目文件擴(kuò)展名,可以直接點擊此文件以打開先前做的項目。圖2.2new project菜單圖2.3文件窗口 (2)選擇所要的單片機,這里選擇常用的ateml公司的at89s51。此時屏幕如圖2.4所示。完成上面步驟后,就可以進(jìn)行程序的編寫了。 (3)首先要在項目中創(chuàng)建新的程序文件或加入舊程序文

26、件。如果沒有現(xiàn)成的程序,那么就要新建一個程序文件,點擊新建文件的快捷按鈕,出現(xiàn)一個新的文字編輯窗口,這個操作也可以通過菜單filenew或快捷鍵ctrl+n來實現(xiàn)。圖2.4 選取芯片圖2.5 新建程序文件 (4)保存新建的程序,可以用菜單filesave或快捷鍵ctrl+s進(jìn)行保存。因是新文件所以保存時會彈出類似圖2.3的文件操作窗口,把第一個程序命名為test1.c,保存在項目所在的目錄中,這時程序單詞有了不同的顏色,說明keil的c語法檢查生效了。如圖2.6鼠標(biāo)在屏幕左邊的source group1文件夾圖標(biāo)上右擊彈出菜單,在這里可以做在項目中增加減少文件等操作。add file to g

27、roup 'source group 1'"彈出文件窗口,選擇剛剛保存的文件,按add按鈕,關(guān)閉文件窗,程序文件已加到項目中了。這時在source group1文件夾圖標(biāo)左邊出現(xiàn)了一個小+號說明,文件組中有了文件,點擊它可以展開查看。圖2.6 把文件加入到項目文件組中 (5)c程序文件已被加到了項目中了,下面就剩下編譯運行了。這個項目只是用做學(xué)習(xí)新建程序項目和編譯運行仿真的基本方法,所以使用軟件默認(rèn)的編譯設(shè)置,它不會生成用于芯片燒寫的hex文件。編譯見圖2.7。圖2.7 編譯程序(6) 進(jìn)入調(diào)試模式,軟件窗口樣式如圖2.8所示。這個窗口可以看到運行結(jié)果,這些在菜單中也

28、有。要停止程序運行回到文件編輯模式中,就要先按停止按鈕再按開啟關(guān)閉調(diào)試模式按鈕,就可以進(jìn)行關(guān)閉keil等相關(guān)操作了。 圖2.8 調(diào)試運行程序2.2 hex文件的生成hex文件格式是intel公司提出的按地址排列的數(shù)據(jù)信息,數(shù)據(jù)寬度為字節(jié),所有數(shù)據(jù)使用16進(jìn)制數(shù)字表示,常用來保存單片機或其它處理器的目標(biāo)程序代碼。它保存物理程序存儲區(qū)中的目標(biāo)代碼映象,一般的編程器都支持這種格式。打開項目,打開它的所在目錄,找到test.uv2的文件就可以打開先前的項目了。然后右擊圖2.9中的項目文件夾,彈出項目功能菜單,選options for target'target1',彈出項目選項設(shè)置窗口

29、,同樣先選中項目文件夾圖標(biāo),這時在project菜單中也有一樣的菜單可選。打開項目選項窗口,轉(zhuǎn)到output選項頁圖2.9所示,再將它重新編譯一次,編譯信息窗口中就顯示hex文件創(chuàng)建到指定的路徑中,如圖2.10,編譯的信息窗口如圖2.11所示,可用編程器附帶的軟件讀取并燒到芯片中。圖2.9 項目功能菜單圖2.10項目選項窗口圖2.11編譯信息窗口2.3 程序下載工具及下載過程2.3.1 安裝usb轉(zhuǎn)串行口驅(qū)動程序 常用軟件文件夾stc89c52rc單片機燒寫資料文件夾usb轉(zhuǎn)串口線驅(qū)動程序文件夾ch341ser文件夾雙擊setup.exe文件。2.3.2 安裝下載驅(qū)動程序常用軟件文件夾stc8

30、9c52rc單片機燒寫資料文件夾stc下載軟件非安裝版文件夾雙擊stc-isp v38a.exe文件。2.3.3 程序下載步驟 (1)打開stc-isp v38a.exe,出現(xiàn)界面如圖2.12所示。圖2.12 stc-isp v38a.exe打開界面 (2)選擇單片機型號,如圖2.13所示。圖2.13 單片機型號選擇操作圖 (3)添加程序文件,如圖2.14所示,點擊打開程序文件,出現(xiàn)界面如圖2.15所示。圖2.14 程序文件添加圖圖2.15 文件添加界面 (4)選擇串行口,設(shè)置波特率,操作界面如圖2.16所示。圖2.16 串行口選擇操作圖 (5)設(shè)置一些相關(guān)選項,操作界面如圖2.17所示。圖2

31、.17 相關(guān)選項設(shè)置圖 (6)程序下載,操作界面如圖2.18所示。圖2.18 下載程序操作圖 (7)等待上電,出現(xiàn)如圖2.19所示界面時,就給mcu上電。圖2.19 上電允許圖2.4 流水燈設(shè)計2.4.1 程序?qū)崿F(xiàn)功能 首先讓發(fā)光二極管依次被點亮,接著讓發(fā)光二級管每隔一個被點亮,最后使發(fā)光二級管每隔三個被點亮。2.4.2 硬件設(shè)計 發(fā)光二級管我們采用了共陽極連接方式,陰極分別與單片機p0口8的i/o口相連接。其工作電路原理圖如圖2.20所示。圖2.20 流水燈控制電路圖2.4.3 軟件設(shè)計 由工作原理圖可以看出,當(dāng)給i/o口送低電平時發(fā)光二級管被點亮,給不同的i/o口送低電平就可以使不同的發(fā)光

32、二級管被點亮,從而有閃爍的效果,產(chǎn)生出流水燈。流水燈控制程序如下:#include<reg51.h>#include<intrins.h>void delay() /延時函數(shù) unsigned int i; for(i=0;i<25000;i+);void main() unsigned char j,k,m,led; led=1; while(1) for(j=0;j<8;j+) p1=led; led=_crol_(led,1); /發(fā)光二極管依次點亮 delay(); for(k=0;k<4;k+) p1=led; led=_crol_(led,

33、2); /發(fā)光二級管每隔一個被點亮 delay(); for(m=0;m<2;m+); led=p1; led=_crol_(led,4); /發(fā)光二級管每隔三個被點亮 delay(); 2.5 任務(wù)總結(jié) 在本任務(wù)中使用了軟件延時,循環(huán)變量的循環(huán)次數(shù)是25000,因為單片機是采用的是12mhz的,所以振蕩周期為1us,循環(huán)執(zhí)行語句25000次,耗時25000us,即延時25ms。以下任務(wù)中的軟件延時函數(shù)應(yīng)用也是以同樣方法推算出來。 通過該任務(wù)學(xué)會了keil軟件的使用,及程序的下載。keil軟件使用時值得注意的是,在編寫程序之前必須先建立工程,在生成hex文件之前應(yīng)該在工程里面先進(jìn)行“選項

34、”設(shè)置。在燒寫程序時應(yīng)該按照步驟操作,先選擇單片機型號,接著選擇串行口,點擊下載后應(yīng)該等到握手連接成功,顯示給mcu上電時才按開關(guān)按鈕上電。通過編寫程序也認(rèn)識到了不同的程序就可以實現(xiàn)不同的功能效果,我們可以做出復(fù)雜而與好看的流水燈。3 實訓(xùn)任務(wù)名稱:一般應(yīng)用設(shè)計與調(diào)試-矩陣鍵盤的使用3.1 任務(wù)目的 通過該任務(wù)將獨立式鍵盤和矩陣式鍵盤區(qū)別開來,學(xué)會矩陣式鍵盤的使用,學(xué)會矩陣式鍵盤的每種掃描方式,能夠巧妙地將其運用在其他程序中。3.2 硬件設(shè)計 我們采用了2*2的矩陣式鍵盤,將單片機的p2口的p2.0和p2.1分別與鍵盤的列線相連,將p2.2和p2.3分別與鍵盤的行線相連,還采用了數(shù)碼管顯示,其

35、工作原理圖如圖3.1所示。圖3.1 矩陣式鍵盤工作原理圖3.3 軟件設(shè)計 最常用的矩陣式鍵盤識別按鍵方法是編程掃描法,這里采用列掃描法。給兩行均送高電平,給列線逐次送低電平,如果有鍵被按下,行線上就會出現(xiàn)低電平,如果沒有鍵按下,行線上全是高電平。當(dāng)有一個鍵被按下時,發(fā)光二級管被點亮一個,另一個鍵被按下時,先前點亮的發(fā)光二級管熄滅,另外一個被點亮。同時,第一個鍵被按下時,4個數(shù)碼管顯示1,第二個鍵被按下時,4個數(shù)碼管顯示2,第,三個鍵被按下時,4個數(shù)碼管顯示3,第四個鍵被按下時,4個數(shù)碼管顯示4。矩陣式鍵盤使用程序如下:#include<reg51.h>#define uchar u

36、nsigned charcode uchar table4=0xfe,0xfd,0xfb,0xf7; /發(fā)光二級管亮滅數(shù)組code uchar led4=0xf9,0x4c,0x58,0x99; /數(shù)碼管顯示數(shù)組void delay(uchar i); /延時函數(shù)聲明void keyscan(); /掃描函數(shù)聲明void main() uchar com=0; p1=0xff; /先讓燈燈全滅 while(1) keyscan(); p2=com; void delay(uchar i) uchar j,k; for(k=0;k<i;k+) for(j=1;j<1;j+); voi

37、d keyscan() uchar temp,key,x; p2=0xfe; /第二列送零 temp=p2; temp=temp&0x0c; if(temp!=0x0c) /有鍵按下 第二列 delay(6); /去抖 p2=0xfe; /再次確認(rèn) temp=p2; temp=temp&0x0c; if(temp!=0x0c) /讀行值 switch(temp) case 0x08: key=table0;x=led0; break; case 0x04: key=table1;x=led1; break; p1=key;p0=x; /發(fā)光二級管點亮,數(shù)碼管顯示 p2=0xfd

38、; /第一列送零temp=p2; temp=temp&0x0c; if(temp!=0x0c) delay(6); /去抖 p2=0xfd; /再次確認(rèn) temp=p2; temp=temp&0x0c; if(temp!=0x0c) /讀行值 switch(temp) case 0x08: key=table2;x=led2;break; case 0x04: key=table3;x=led3;break; p1=key;p0=x; /發(fā)光二級管點亮,數(shù)碼管顯示 3.4 任務(wù)小結(jié) 通過該任務(wù)學(xué)會了矩陣式鍵盤的掃描方法和矩陣式鍵盤與獨立式鍵盤的區(qū)別。4 實訓(xùn)任務(wù)名稱:基本功能設(shè)

39、計與調(diào)試-繼電器觸點通斷與蜂鳴器控制4.1 任務(wù)目的通過對繼電器觸點通斷與蜂鳴器控制,更進(jìn)一步的認(rèn)識繼電器與蜂鳴器的工作原理,和更加熟悉掌握程序的下載與調(diào)試。4.2 實現(xiàn)功能 先讓繼電器工作,蜂鳴器不工作,接著在兩次循環(huán)里面,讓蜂鳴器工作2秒,停止工作1秒,接著使繼電器停止工作。4.3 硬件設(shè)計 我們采用的是單片機的p3.2口與蜂鳴器相連接,p3.6與p3.7分別與兩個繼電器相連接,如圖4.1所示。圖4.1 繼電器與蜂鳴器工作電路圖4.4 軟件設(shè)計 由圖4.1可以看出:當(dāng)給p3.2口送入低電平時,蜂鳴器工作;當(dāng)給p3.6和p3.7送入低電平時,繼電器觸點吸合。繼電器觸點通斷與蜂鳴器控制程序如下

40、:#include<reg51.h>unsigned char t0;sbit j1=p37; /定義繼電器j1sbit j2=p36; /定義繼電器j2sbit bell=p32; /定義蜂鳴器belluchar i,k,t0;void delay0_5s() /0.5秒延時函數(shù) unsigned char i; / 定義循環(huán)變量i for(i=0;i<10;i+) th0=0x3c; /定時/計數(shù)器0賦初值 tl0=0xb0; tr0=1; /定時/計數(shù)器0啟動標(biāo)志 while(!tf0); /查詢計數(shù)是否溢出 tf0=0; /溢出標(biāo)志位清零 void delay_t0(

41、uchar t) / 實現(xiàn)0.5*t延時 for(t0=0;t0<t;t0+) /采用變量t0作為循環(huán)變量 delay0_5s(); void main() tmod=0x01; /選工作方式1 j1=0; /繼電器工作 j2=0; bell=1; /蜂鳴器不工作 while(1) for(k=0;k<2;k+) bell=0; /蜂鳴器工作 delay_t0(4); /延時2秒 bell=1; /蜂鳴器不工作 delay_t0(2); /延時1秒 j1=1; /繼電器不工作 j2=1; 1.5 任務(wù)總結(jié)在本次任務(wù)中運用了定時/計數(shù)器0,定時時間50ms。采用方式1,定時時間為2的

42、16次方,即66636乘上單片機的機械周期1us,所以定時50ms的初值應(yīng)該是65536-50000,為15536,化為十六進(jìn)制后為3cb0h。 通過對繼電器觸點通斷與蜂鳴器控制系統(tǒng)的設(shè)計,更加了解了繼電器與蜂鳴器的工作原理,為以后在使用時打下了堅實的基礎(chǔ)。通過該任務(wù)也讓我們更加熟悉了單片機keil軟件的使用與程序的下載。5 實訓(xùn)任務(wù)名稱:基本功能設(shè)計與調(diào)試- led數(shù)碼管顯示控制(顯示:班號末兩位+學(xué)號)5.1 任務(wù)目的 通過用單片機編程實現(xiàn)學(xué)號的顯示,從而更好地了解led數(shù)碼管顯示的控制。5.2 實現(xiàn)功能 先讓4個數(shù)碼管依次顯示我學(xué)號中的數(shù)字5 2 0 6,最后讓4個數(shù)碼管完整的將我的學(xué)號

43、5206顯示出來。5.3 硬件設(shè)計 我們采用的是共陽極數(shù)碼管,將單片機的p1口與數(shù)碼管的8個段控制段相連,將p2口的高四位分別與數(shù)碼管的com端相連接,如圖4.1所示。圖4.1 數(shù)碼管顯示工作電路圖5.4 軟件設(shè)計 數(shù)碼管采用的是共陽極,單片機p0的8個i/o口分別與數(shù)碼管的a、b、c、dp、e、g、f、d段控制端相連,vcc及com端與p2口高四位相連,因此可以計算出0到9的字型編碼是:0x28,0xf9,0x4c,0x58,0x99,0x1a,0x0a,0xf8,0x08,0x18。學(xué)號顯示程序如下:#include<reg51.h>#define uchar unsigned

44、 charcode uchar table4=0x1a,0x4c,0x28,0x0a; /數(shù)碼管顯示數(shù)組uchar t0;void delay() /延時函數(shù) unsigned int i; for(i=0;i<50;i+); void delay_t0(uchar t) /t*delay()的延時函數(shù) for(t0=0;t0<t;t0+) delay(); void main(void) while(1) p2=0xef; /第1個數(shù)碼管被點亮 p0=table0; delay_t0(255); /顯示數(shù)組中第一個數(shù)5 p2=0xdf; /第2個數(shù)碼管被點亮 p0=table1;

45、 delay_t0(255); /顯示數(shù)組中第二個數(shù)2 p2=0xbf; /第三個數(shù)碼管被點亮 p0=table2; delay_t0(255); /顯示數(shù)組中第三個數(shù)0 p2=0x7f; /第4個數(shù)碼管被點亮 p0=table3; delay_t0(255); /顯示數(shù)組中第四個數(shù)6 for(;) /實現(xiàn)完整顯示學(xué)號10305206 p2=0xef; p0=table0; delay(); p2=0xdf; p0=table1; delay(); p2=0xbf; p0=table2; delay(); p2=0x7f; p0=table3; delay(); 5.5 任務(wù)小結(jié) 通過該任務(wù)了

46、解了數(shù)碼管顯示時應(yīng)注意的東西,應(yīng)該首先判斷采用的是共陽極還是共陰極,看清楚段控制端的順序,再算出各個數(shù)字的字型碼。6 實訓(xùn)任務(wù)名稱:一般應(yīng)用設(shè)計與調(diào)試-分秒顯示(顯示:分分+秒秒)6.1 任務(wù)目的 通過數(shù)碼管顯示實現(xiàn)分分秒秒的動態(tài)顯示,更加熟悉掌握數(shù)碼管工作原理。6.2 實現(xiàn)功能 主要功能是顯示分分秒秒,完成0到60分鐘的顯示,其次是發(fā)光二級管的閃爍,當(dāng)定時時間50ms每到一次時d5,d6閃爍一次,定時時間1秒每到一次時d7,d8閃爍一次,定時時間1分鐘每到一次時d9,d10閃爍一次。6.3 硬件設(shè)計 數(shù)碼管顯示部分和學(xué)號顯示任務(wù)中設(shè)計相同,發(fā)光二級管部分與流水燈任務(wù)中設(shè)計相同。其工作電路圖如

47、圖6.1所示。圖6.1 分分秒秒顯示工作電路圖6.4 軟件設(shè)計數(shù)碼管顯示部分和學(xué)號顯示任務(wù)中的設(shè)計思想一樣,只是在本任務(wù)中顯示的數(shù)據(jù)有0到9,用到了中斷,定時50ms每到一次,k加1,k值等于20時,k值清零,sec加1,當(dāng)sec等于60時,sec值清零,min加1,當(dāng)min等于60時,min清零。數(shù)碼管采用了動態(tài)顯示,因此設(shè)計了一個微小延時。分分秒秒顯示程序如下:#include<reg51.h>unsigned char led=0x28,0xf9,0x4c,0x58,0x99,0x1a,0x0a,0xf8,0x08,0x18;/定義數(shù)字0到9的字型顯示碼void delay(

48、unsigned char i); /延時函數(shù)聲明void int_0(); /中斷函數(shù)聲明unsigned char sec=0,min=0,k;void main() tmod=0x01; /選擇工作方式1 th0=0x3c; /定時/計數(shù)器0賦初值 tl0=0xb0; tr0=1; /啟動定時/計數(shù)器0 ea=1; /開中斷 et0=1; /定時/計數(shù)器0中斷允許 while(1) p0=ledsec%10; /顯示秒的個位 p2=0x7f; delay(5); /選通第一個數(shù)碼管 p0=ledsec/10; /顯示秒的十位 p2=0xbf; delay(5); /選通第二個數(shù)碼管 p0

49、=ledmin%10; /顯示分的個位 p2=0xdf; delay(5); / 選通第三個數(shù)碼管 p0=ledmin/10; /顯示分的十位 p2=0xef; delay(5); /選通第四個數(shù)碼管 void int_0() interrupt 1 th0=0x3c; /重新送初值 tl0=0xb0; tr0=1; k+; /50ms到,k加1 p1=0xfc; /50ms到,第1,2個發(fā)光二級管點亮 if(k=20) k=0; /1秒到,k清零 sec+; /1秒到,sec加1 p1=0xf3; /1秒到,第3,4個發(fā)光二級管點亮 if(sec=60) sec=0; /1分鐘到,sec清零

50、 min+; /1分鐘到,min加1 p1=0xcf; /1分鐘到,第5,6個發(fā)光二級管點亮 if(min=60) min=0; /60分鐘到,min清零 void delay(unsigned char i) /數(shù)碼管顯示微小延時函數(shù) unsigned char m,n; for(m>0;m<i;m+) for(n=0;n<255;n+);6.5 任務(wù)小結(jié) 通過本任務(wù)更好地理解了數(shù)碼管動態(tài)顯示,充分掌握了中斷函數(shù)的運用。6 實訓(xùn)任務(wù)名稱:一般應(yīng)用設(shè)計與調(diào)試-交通燈模擬控制系統(tǒng)設(shè)計6.1 內(nèi)容與要求 根據(jù)已知電路圖,用單片機設(shè)計交通信號燈模擬控制系統(tǒng),晶振采用12mhz,南北方向和東西方向組成十字路口,南北是主道,東西是支道,輪流放行

溫馨提示

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

評論

0/150

提交評論