




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第7章 發(fā)光二極管實驗 本章實驗采取先講解原理,再按照代碼分類進(jìn)行實驗的方式,將實驗匯總到一起,以便集中解決問題。 注意:本指導(dǎo)書以講解原理為主,本章實驗我們提供了多種代碼例程,請參考資料相關(guān)文件夾。 7.1 原理圖 LED為共陽連接,帶有一片鎖存器芯片74HC573,控制口為P0口,低電平有效。 我們以一個程序為例來練習(xí)編寫:led閃爍。 這個程序大家一定要弄懂,也算是一個基礎(chǔ),懂了這個程序,也算是進(jìn)入單片機(jī)的領(lǐng)域了接下來我會詳細(xì)講解這個例程。另外需要注意的是單片機(jī)寫程序的時候,一定是英文狀態(tài)下的字符,尤其注意“;”,往往就因為這個分號,程序出現(xiàn)問題,所以輸入時一定要注意是在英文狀態(tài)下的。
2、我們在編輯框中輸入以下程序: /* * * LED閃爍的簡單試驗 */ #include <reg51.h> /此文件中定義了51的一些特殊功能寄存器 void delay(unsigned int i); /聲明延時函數(shù) void main() /*延時函數(shù)*/ void delay(unsigned int i) 我們先編譯一下:第一次編譯我們點擊 ,看一下結(jié)果 unsigned char j; for(i; i > 0; i-) /循環(huán) 600*255 次 for(j = 255; j > 0; j-); while(1) P0 =
3、 0x00; /置P0口為低電平 delay(600); /調(diào)用延時程序 P0 = 0xff; /置P0口為高電平 delay(600); / 調(diào)用延時程序 結(jié)果的意思: 編譯led2.c? 鏈接? data=9.0-占用內(nèi)部RAM9個字節(jié),xdata=0:外部RAM 0字節(jié), Code=56代碼長度為56字節(jié) 生成單片機(jī)可下載的HEX(十六進(jìn)制)文件。 沒有錯誤,沒有警告。 接下來我們分析上面的程序: /* */作用,它是用來注釋一段內(nèi)容的,編譯器不對其進(jìn)行編譯,只要在/* */直接的內(nèi)容都被注釋掉。 / 是用來注釋其后面的內(nèi)容,只能注釋一行。 #include <reg51.
4、h> /這句告訴我們包涵51的頭文件,那這個頭文件里面放的是什么東西呢?放的是51單片機(jī)對應(yīng)的操作的寄存器地址,如我們直接用來操作的P1口就是代表0x90地址,我們可以將光標(biāo)低位在<reg51.h>上然后右鍵 打開頭文件, #ifndef _REG51_H_ #define _REG51_H_ /* BYTE Register */ sfr P0 = 0x80; sfr P1 = 0x90; sfr P2 = 0xA0; sfr P3 = 0xB0; sfr PSW = 0xD0; sfr ACC = 0xE0; ? /* SCON */ sbit S
5、M0 = 0x9F; sbit SM1 = 0x9E; sbit SM2 = 0x9D; sbit REN = 0x9C; sbit TB8 = 0x9B; sbit RB8 = 0x9A; sbit TI = 0x99; sbit RI = 0x98; #endif 頭文件中定義了51系列單片機(jī)的所有功能寄存器,我們直接使用其代號就可以,P0,P1等。 如:sfr P0=0x80,意思是把單片機(jī)內(nèi)部地址0x80處的寄存器重新起名字叫P0,以后我們在程序中直接操作P0,就相當(dāng)于對單片機(jī)內(nèi)部0x80地址處的寄存器進(jìn)行操作。通俗的講,也就是說,通過sfr這個關(guān)鍵字,讓Keil編譯器在單片機(jī)與人之間
6、搭建一個橋梁,我們操作P0口,單片機(jī)對應(yīng)就去操作內(nèi)部0x80的地址。所以我們寫程序要在開始處直接包涵單片機(jī)的頭文件。 sbit SM0 = 0x9F;是定義位操作地址0x9F的,這個地址只代表一個位。我們操作SM0,對應(yīng)單片機(jī)就是操作位地址0x9F。 總結(jié)起來sfr與sbit區(qū)別 sfr 是定義字節(jié)的 8位 sbit 是定義位的 1位 我們在返回主程序: void delay(unsigned int i) unsigned char j; for(i; i > 0; i-) for(j = 100; j > 0; j-); 定義一個函數(shù)delay();與c語言一樣
7、,要用一個函數(shù),先定義,我們可以叫它子函數(shù),可以調(diào)用的。 void main() / 結(jié)構(gòu)同c語言一樣,main()函數(shù)開始 / 大括號。 P0 = 0x00; /置P0口為低電平 從這句開始,你現(xiàn)在控制單片機(jī)了,告訴單片機(jī)把你的P0口都輸出0,如果你不操作P0口了,那么P0口一直保持這個狀態(tài),直到你去改變它。 delay(1000); /調(diào)用延時程序 調(diào)用子函數(shù)delay(),告訴單片機(jī)去執(zhí)行delay那個函數(shù),那么P0口一直保持0這狀態(tài)。 P0 = 0xff; /置P0口為高電平 這時告訴P0口全部輸出1,(0xff=1111 1111).狀態(tài)從0變成1了,對應(yīng)的燈的輸出也由低電平變成高電
8、平了 delay(1000); / 調(diào)用延時程序,再進(jìn)行延時, 這個程序里執(zhí)行完了一次又干什么呢, Keil編譯器會編譯成一直重復(fù)執(zhí)行main()函數(shù)里面的代碼,整個代碼的效果就是: P0輸出低電平 延時一段時間,目的是P0輸出的低電平保持一段時間 P0輸出高電平 延時一段時間,目的是P0輸出的高電平保持一段時間 重復(fù)到的過程 實際效果就是led一閃一閃 通過更改delay(延時時間i),參數(shù)i,可以改變閃爍頻率。 然后按照上述章節(jié)方法下載到單片機(jī)即可觀察效果。 基礎(chǔ)知識介紹: 排阻: 一般在排阻上都標(biāo)有阻值號,其公共端附近也有明顯標(biāo)記。如下下圖表示為472, 表示47*=4700歐姆,還有的
9、標(biāo)號如3R0,表示阻值為3 歐姆, 4K7表示阻值為4.7k, R002表示阻值為0.002歐姆。 (2)發(fā)光二極管。它具有單向?qū)щ娦?,通過5mA左右電流即可發(fā)光,電流越大,其亮度越強(qiáng),但若電流過大,會燒毀二極管,一般我們控制在3 mA-20mA之間。在這里,給發(fā)光二極管串聯(lián)一個電阻的目的就是為了限制通過發(fā)光二極管的電流不要太大,因此這個電阻又稱為“限流電阻”。當(dāng)發(fā)光二極管發(fā)光時,測量它兩端電壓約為1.7V,這個電壓又叫做發(fā)光二極管的“導(dǎo)通壓降”。圖2.2.9和圖2.2.10分別為直插式發(fā)光二極管和貼片式發(fā)光二極管實物圖。發(fā)光二極管正極又稱陽極,負(fù)極又稱陰極,電流只能從陽極流向陰極。直插式發(fā)光
10、二極管長腳為陽極,短腳為陰極。仔細(xì)觀察貼片式發(fā)光二極管正面的一端有彩色標(biāo)記,通常有標(biāo)記的一端為陰極。 圖 圖 關(guān)于排阻大小的選擇:歐姆定律想必大家都清楚,U=IR,當(dāng)發(fā)光二極管正常導(dǎo)通時,其兩端電壓約為1.7V,發(fā)光管的陰極為低電平,即0V,陽極串接一電阻,電阻的另一端為Vcc , 為5V,因此加在電阻兩端的電壓為5V-1.7V=3.3V,計算穿過電阻的電流,3.3 V/ 1000=3.3mA。即穿過發(fā)光管的電流也為3.3mA,若想讓發(fā)光管再亮一些,我們可以適當(dāng)減小該電阻。 看我們的原理圖,可以知道:LED的正極接在VCC上,只要給了低電平,那么LED就會亮,低電平對應(yīng)到單片機(jī)的邏輯就是0,只
11、要單片機(jī)的某一個管腳輸出0,那么對應(yīng)的發(fā)光二極管就會亮。 講解:移位操作<< >> 1. 左移。C51中操作符為“<<”,每執(zhí)行一次左移指令,被操作的數(shù)將最高位移 入單片機(jī)PSW寄存器的CY位,CY位中原來的數(shù)丟棄,最低位補(bǔ)0,其他位依次向左移動一位,如下圖所示: 2. 右移。C51中操作符為“>>,每執(zhí)行一次右移指令,被操作的數(shù)將最低位 移入單片機(jī)PSW寄存器的CY位,CY位中原來的數(shù)丟棄,最高位補(bǔ)0,其他位依次向右移動一位,如下圖所示。 3. 循環(huán)左移。最高位移入最低位,其他位依
12、次向左移一位。C語言中沒有專門 的指令,通過移位指令與簡單邏輯運算可以實現(xiàn)循環(huán)左移,或直接利用C51庫中自帶的函數(shù)_crol_實現(xiàn),如下圖所示。_crol_函數(shù)所在的頭文件是 <intrins.h> 4. 循環(huán)右移。最低位移入最高位,其他位依次向右移一位。C語言中沒有專門 的指令,通過移位指令與簡單邏輯運算可以實現(xiàn)循環(huán)右移,或直接利用C51庫中自帶的函數(shù)-cror實現(xiàn),如下圖所示。_cror_函數(shù)所在的頭文件是 <intrins.h> 5. 講解:PSW寄存器 PSW (Program Status Word)全稱為程序狀態(tài)字標(biāo)志寄存器,
13、是一個8位寄存器,位于單片機(jī)片內(nèi)的特殊功能寄存器區(qū),字節(jié)地址DOH,用來存放運算結(jié)果的一些特征,如有無進(jìn)位、借位等,使用匯編編程時PSW寄存器很有用,但在利用C語言編程時,編譯器會自動控制該寄存器,很少人為操作它,大家只需做簡單了解即可.其每位的具體含義如下圖所示 . 1) CY一進(jìn)位標(biāo)志位,它表示運算是否有進(jìn)位(或借位).如果操作結(jié)果在最 高位有進(jìn)位(加法)或者借位(減法),則該位為1,否則為0. 2) AC一輔助進(jìn)位標(biāo)志,又稱半進(jìn)位標(biāo)志,它指兩個8位數(shù)運算低四位是否 有半進(jìn)位,即低四位相加(或相減)是否進(jìn)位(或借位),如有AC為1,否則為0e 3) FO一由用戶使用的一個狀態(tài)標(biāo)志位,可用軟件來使它置1或清0,也可 由軟件來測試它,以控制程序的流向. 4) RS1, RSO-4組工作寄存器區(qū)選擇控制位,在匯編語言中這兩位用來選擇 4組工作寄存器區(qū)中的哪一組為當(dāng)前工作寄
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)校洗漱臺管理制度
- 學(xué)校網(wǎng)格化管理制度
- 學(xué)校陶藝社管理制度
- 學(xué)雷鋒員工管理制度
- 安技處安全管理制度
- 安置點保潔管理制度
- 實訓(xùn)室使用管理制度
- 實驗室活動管理制度
- 客服部內(nèi)部管理制度
- 室內(nèi)高爾夫管理制度
- 安徽省教師資格認(rèn)定體檢表
- 肌肉注射評分標(biāo)準(zhǔn)
- 廣州市二中應(yīng)元數(shù)學(xué)新初一分班試卷
- 企業(yè)服飾生產(chǎn)制造單模板
- 出國人員行前教育基本知識(-)課件
- 貴州省六盤水市2022-2023學(xué)年高二下學(xué)期期末教學(xué)質(zhì)量監(jiān)測英語試題(含答案)
- Spark大數(shù)據(jù)技術(shù)與應(yīng)用教學(xué)大綱
- 籃球場、羽毛球場項目施工方案
- 大型滑坡災(zāi)害的識別預(yù)警及應(yīng)急治理國家重點實驗室
- 鋼屋架安裝施工吊裝方案
- JJG 97-2001測角儀
評論
0/150
提交評論