官术网_书友最值得收藏!

1.4 STC89C52基礎實驗

1.4.1 LED閃爍實驗

1. 實驗目的

LED閃爍實驗主要針對STC89C52開發板上的LED2發光二極管,通過編寫LED閃爍控制程序,控制單只二極管以1s的時間間隔順序閃亮。

1)熟悉發光二極管的基礎控制電路。

2)掌握STC89C52單片機引腳高低電平輸出的編程控制方法。

3)掌握延時函數的編程及使用方法。

2. 實驗原理

LED2發光二極管與單片機P1.0引腳連接,當P1.0端口輸出低電平時,發光二極管LED2被點亮,而當P1.0引腳輸出高電平時,LED2熄滅,其對應C語言關鍵程序段如下:

3. 實驗步驟

1)在Keil C51中新建工程,工程名稱為“LDE閃爍實驗.uvproj”。

2)編寫C語言程序,編譯輸出“LED閃爍實驗.hex”燒錄文件。

3)通過USB接口將開發板連接計算機,按下開發板的電源開關。

4)下載“.hex”燒錄文件至單片機。

5)觀察實驗結果。

4. 實驗現象

如圖1-53所示,LED2發光二極管以1s時間間隔循環閃爍。

圖1-53 LED閃爍實驗

小試牛刀

1)嘗試編程實現其他LED發光二極管的閃爍控制。

2)嘗試編程實現LED發光二極管閃爍時間間隔的控制。

1.4.2 流水燈實驗

1. 實驗目的

LED流水燈實驗主要針對STC89C52開發板上的8只LED發光二極管,通過編寫流水燈控制程序,控制8只LED發光二極管以1s的時間間隔自上而下順序點亮,形成流水般的動態效果。

1)熟悉LED流水燈實驗原理。

2)掌握移位操作編程方法。

2. 實驗原理

8只LED發光二極管通過P1引腳控制。首先,設置P1口狀態為0xfe(1111 1110),對應LED1點亮;要實現循環點亮,用左移“<<”運算,令P1<<=1,則P1口狀態變為0xfc(1111 1100),第一只LED和第二只LED燈同時點亮,依次循環。其對應C語言關鍵程序段如下:

3. 實驗步驟

1)在Keil C51中新建工程,工程名稱為“流水燈實驗.uvproj”。

2)編寫C語言程序,編譯輸出“流水燈實驗.hex”燒錄文件。

3)通過USB接口將開發板連接計算機,按下開發板的電源開關。

4)下載“流水燈實驗.hex”燒錄文件至單片機。

5)觀察實驗現象。

4. 實驗現象

如圖1-54所示,單片機上電后,8只LED燈按1s的時間間隔順序依次點亮,循環往復,形成流水般的動態效果。

圖1-54 流水燈實驗

a)狀態1 b)狀態2 c)狀態3

小試牛刀

1)嘗試編程實現8只LED發光二極管形成“逆流而上”的流水燈效果。

2)嘗試通過移位操作,編程實現8只LED按每次點亮兩只的順序形成流水燈。

1.4.3 跑馬燈實驗

1. 實驗目的

針對STC89C52開發板上的8只LED發光二極管,通過編寫跑馬燈控制程序,實現8只LED按1s的時間間隔順序閃亮1次,即首先第一只LED點亮1s后熄滅,隨后第二只LED點亮1s,依次往復循環,形成8只LED按自上而下的順序交替閃爍的效果。

1)熟悉跑馬燈實驗原理,以及跑馬燈實驗與流水燈實驗的區別。

2)進一步掌握單片機普通I/O的時序控制。

3)掌握字符循環左移函數“_crol_”的用法,以及其他移位函數的使用方法。

2. 實驗原理

8只LED發光二極管通過P1引腳控制,首先,設置P1口狀態為0xfe(1111 1110),對應LED1點亮;接著運用左移函數“_crol_”實現P1口8位二進制數循環左移,第一次位移結果為0xfd(1111 1101),依次循環,實現8只LED順序單個點亮,其對應C語言關鍵程序段如下:

3. 實驗步驟

1)在Keil C51中新建工程,工程名稱為“跑馬燈實驗.uvproj”。

2)編寫C語言程序,編譯輸出“跑馬燈實驗.hex”燒錄文件。

3)通過USB接口將開發板連接計算機,按下開發板的電源開關。

4)下載“跑馬燈實驗.hex”燒錄文件至單片機。

5)觀察實驗結果。

4. 實驗現象

如圖1-55所示,單片機上電后,8只LED按1s的時間間隔順序閃亮1次,形成8只LED按自上而下的順序交替閃爍的效果。

圖1-55 跑馬燈實驗

a)狀態1 b)狀態2 c)狀態3

小試牛刀

1)嘗試利用字符循環右移“_cror_”函數實現反向跑馬燈效果。

2)嘗試改變移位操作位數,實現其他形式的跑馬燈效果。

1.4.4 按鍵輸入實驗

1. 實驗目的

按鍵輸入實驗主要針對STC89C52開發板上的按鍵KEY1和KEY2,通過編寫按鍵輸入捕獲程序,實現8只LED的整體開關的控制,即按下KEY1按鍵,LED全部點亮,按下KEY2按鍵,LED全部熄滅。

1)熟悉基礎的按鍵控制電路。

2)掌握編程過程中按鍵輸入捕獲的判斷方法。

3)掌握基本的I/O控制方法及編程實現。

2. 實驗原理

STC89C52開發板按鍵電路如圖1-13所示,按鍵KEY1和KEY2分別與單片機P3.2和P3.3引腳連接,當按鍵按下時對應引腳為低電平,松開后為高電平。按下KEY1,點亮8只LED,按下KEY2,熄滅8只LED,其對應C語言關鍵程序段如下:

3. 實驗步驟

1)在Keil C51中新建工程,工程名稱為“按鍵輸入實驗.uvproj”。

2)編寫C語言程序,編譯輸出“按鍵輸入實驗.hex”燒錄文件。

3)通過USB接口將開發板連接計算機,按下開發板的電源開關。

4)下載“按鍵輸入實驗.hex”燒錄文件至單片機。

5)觀察實驗現象。

4. 實驗現象

如圖1-56所示,按下按鍵KEY1后,8只發光二極管全部點亮,而按下按鍵KEY2后,8只二極管全部熄滅。

圖1-56 按鍵輸入實驗

a)KEY1按下 b)KEY2按下

小試牛刀

在上述功能的基礎上,嘗試編程實現以下功能。

1)按下按鍵KEY3,切換到流水燈模式。

2)按下按鍵KEY4,切換到跑馬燈模式。

1.4.5 數碼管顯示實驗

1. 實驗目的

數碼管顯示實驗主要針對STC89C52開發板上的4位8段數碼管,通過編寫數碼管顯示程序,實現數字的靜態顯示。

1)熟悉數碼管的基礎控制電路。

2)掌握數碼管的位選和段選的編程控制方法。

3)掌握數碼管靜態和動態顯示的編程方法。

2. 實驗原理

數碼管顯示電路原理圖如圖1-16所示,數碼管4只陽極引腳分別受單片機P2.0~2.3端口控制,數碼管8只段位引腳分別受單片機P0.0~P0.7端口控制。以第一位數碼管顯示數字“6”為例,需要將位選引腳P2.0置低電平,其余位選引腳置高電平,令段選引腳P0賦值0x82,則數碼管第一位顯示“6”。同樣,需要令第二位數碼管顯示數字“8”,將位選引腳P2.1置低電平,其余位選引腳置高電平,控制第二個數碼管,為段選引腳P0賦值0x80,則第二位數碼管顯示數字“8”,如此往復循環,形成“68”靜態顯示字樣。其對應C語言關鍵程序段如下:

3. 實驗步驟

1)在Keil C51中新建工程,工程名稱為“數碼管顯示實驗.uvproj”。

2)編寫C語言程序,編譯輸出“數碼管顯示實驗.hex”燒錄文件。

3)通過USB接口將開發板連接計算機,按下開發板的電源開關。

4)下載“數碼管顯示實驗.hex”燒錄文件至單片機。

5)觀察實驗現象。

4. 實驗現象

如圖1-57所示,單片機上電以后,4位數碼管的前兩位顯示靜態數字“68”。

圖1-57 數碼管顯示實驗

小試牛刀

在上述功能的基礎上,嘗試編程實現以下功能。

1)利用4位數碼管靜態顯示自己學號的后4位。

2)單片機上電后,數碼管動態循環顯示數字0~9999。

1.4.6 蜂鳴器實驗

1. 實驗目的

蜂鳴器實驗主要針對STC89C52開發板上的蜂鳴器模塊,編寫蜂鳴器控制程序,控制蜂鳴器蜂鳴的開啟和關閉。

1)熟悉發光蜂鳴器的基礎控制電路。

2)掌握蜂鳴器開啟和關閉的程序控制方法。

2. 實驗原理

STC89C52開發板蜂鳴器電路原理圖如圖1-20所示,蜂鳴器控制引腳與單片機P2.5引腳連接,令P2.5端口輸出低電平時,蜂鳴器開啟,而當P2.5引腳輸出高電平時,蜂鳴器關閉,為直觀展示蜂鳴器的開啟和關閉,令LED2與其同步開啟和關閉,對應C語言關鍵程序段如下:

3. 實驗步驟

1)在Keil C51中新建工程,工程名稱為“蜂鳴器實驗.uvproj”。

2)編寫C語言程序,編譯輸出“蜂鳴器實驗.hex”燒錄文件。

3)將開發板通過USB接口連接計算機,按下開發板的電源開關。

4)下載“蜂鳴器實驗.hex”燒錄文件至單片機。

5)觀察實驗現象。

4. 實驗現象

如圖1-58所示,單片機上電后,蜂鳴器蜂開啟,同時LED2點亮,2s后,蜂鳴器與LED2同時關閉。

小試牛刀

1)嘗試編程實現蜂鳴器控制引腳發送脈沖信號,觀察蜂鳴器的輸出音調。

2)改變脈沖信號頻率,觀察蜂鳴器輸出音調的變化。

圖1-58 蜂鳴器實驗

1.4.7 DS18B20溫度采集實驗

1. 實驗目的

溫度采集實驗主要利用STC89C52開發板連接DS18B20溫度傳感器,通過編寫程序,實現溫度的實時采集,并將溫度數據通過數碼管實時顯示。

1)熟悉DS18B20溫度傳感器與單片機的連接方式。

2)熟悉DS18B20單總線協議,掌握DS18B20溫度傳感器的數據采集方法。

3)掌握數碼管動態顯示數字的編程方法。

2. 實驗原理

DS18B20溫度傳感器與開發板連接示意圖如圖1-59所示,其數據引腳與單片機P2.6引腳連接,通過P2.6引腳軟件模擬DS18B20單總線協議,對傳感器進行數據讀寫操作,獲取溫度數據,并通過數碼管實時顯示。

圖1-59 DS18B20溫度傳感器與開發板連接示意圖

為了描述DS18B20單總線協議,首先給出DS18B20單總線協議時序圖中各總線的狀態,如圖1-60所示。DS18B20單總線協議操作包括“初始化”“讀數據”“寫數據”。

圖1-60 總線時序圖中各總線的狀態

(1)初始化

DS18B20初始化總線時序圖如圖1-61所示。初始化過程包括以下步驟。

1)數據線拉至高電平1。

2)延時一段時間。

3)數據線拉至低電平0。

4)延時480~960μs。

5)數據線拉至高電平1。

6)等待應答,若初始化成功,在15~60ms內DS18B20會返回一低電平。

7)延時等待CPU讀取返回的低電平。

圖1-61 初始化總線時序圖

(2)寫數據

DS18B20寫數據總線時序圖如圖1-62所示。以寫入一個字節為例,寫入數據過程包括以下步驟。

1)數據線拉至低電平0。

2)延時15μs。

3)按從低位到高位的順序發送數據,每次發送一位。

4)延時45μs。

5)數據線拉至高電平1。

6)重復1)~5)步,直到發送完一個字節。

(3)讀數據

DS18B20讀數據總線時序圖如圖1-63所示。以讀出一個字節為例,讀數據過程包括以下步驟。

圖1-62 寫數據總線時序圖

1)數據線拉至高電平1。

2)延時2μs。

3)數據線拉至低電平0。

4)延時6μs。

5)數據線拉至高電平1。

6)延時4μs。

7)從數據線上讀出一個狀態位,并進行數據處理。

8)延時30μs。

9)重復1)~7)步,直到讀取出1個字節。

圖1-63 讀數據總線時序圖

以讀取DS18B20溫度數據,并通過數碼管顯示為例,其對應程序如下:

3. 實驗步驟

1)在Keil C51中新建工程,工程名稱為“DS18B20溫度采集實驗.uvproj”。

2)編寫C語言程序,編譯輸出“DS18B20溫度采集實驗.hex”燒錄文件。

3)通過USB接口將開發板連接計算機,按下開發板的電源開關。

4)下載“DS18B20溫度采集實驗.hex”燒錄文件至單片機。

5)觀察實驗現象。

4. 實驗現象

如圖1-64所示,單片機上電以后,實時采集當前環境溫度,并通過數碼管顯示。

圖1-64 DS18B20溫度采集實驗

小試牛刀

1)嘗試編程實現當溫度超過38℃時,蜂鳴器鳴響提示。

2)嘗試編程實現8只LED發光二極管隨溫度實時變化的動態效果。

1.4.8 串口通信實驗

1. 實驗目的

串口通信實驗主要針對STC89C52開發板與PC之間的通信,利用開發板CH340G板載USB轉TTL芯片,實現P C與開發板之間的雙向數據傳輸。

1)熟悉串口通信的基本原理。

2)掌握單片機與PC之間串口通信連接電路及通信格式的設置方法。

3)掌握串口數據發送與接收的編程方法。

2. 實驗原理

STC89C52開發板串口通信電路連接示意圖如圖1-65所示,PC端需要安裝CH340驅動以及串口調試助手,將開發板與P C連接成功后,選擇對應的通信端口,設置通信格式如下:波特率為“9600”,傳輸數據位為“8”,奇偶校驗位為“NONE”,停止位為“1”。

圖1-65 串口通信電路連接示意圖

以按下按鍵KEY1后單片機向PC發送字符串“JUST”為例,編寫控制程序如下:

3. 實驗步驟

1)在Keil C51中新建工程,工程名稱為“串口通信實驗.uvproj”。

2)編寫C語言程序,編譯輸出“串口通信實驗.hex”燒錄文件。

3)將開發板通過USB接口連接計算機,按下開發板的電源開關。

4)下載“串口通信實驗.hex”燒錄文件至單片機。

5)觀察實驗現象。

4. 實驗現象

如圖1-66所示,單片機上電以后,按下按鍵KEY1,發送字符串“JUST”至PC。

圖1-66 串口通信實驗

小試牛刀

在上述功能的基礎上,嘗試編程實現以下功能。

1)PC向單片機發送字符串“hello”,單片機接收該字符串后回傳至PC。

2)PC向單片機發送字符“A”“B”,單片機接收字符“A”后點亮LED,接收字符“B”后關閉LED。

主站蜘蛛池模板: 龙江县| 高邮市| 连平县| 鹤庆县| 屯昌县| 莱芜市| 长治市| 察雅县| 固始县| 西青区| 酉阳| 左贡县| 宿州市| 景洪市| 杭锦旗| 贺兰县| 海盐县| 玛多县| 福州市| 都昌县| 贡觉县| 习水县| 金堂县| 红原县| 谢通门县| 北海市| 贵南县| 凌云县| 九江县| 马鞍山市| 淅川县| 绿春县| 会昌县| 丰台区| 万全县| 繁峙县| 岳池县| 积石山| 普定县| 胶南市| 沙坪坝区|