實(shí)驗(yàn)?zāi)康?/strong>- 了解51單片機(jī)各個(gè)模塊內(nèi)部結(jié)構(gòu)及特點(diǎn);
- 掌握軟件設(shè)計(jì)的基本知識(shí),學(xué)會(huì)使用Keil進(jìn)行編程;
- 通過編程設(shè)計(jì)完整程序來實(shí)現(xiàn)51單片機(jī)各項(xiàng)功能組合。
2.2 實(shí)驗(yàn)內(nèi)容- 熟悉51單片機(jī),并完成51單片機(jī)開發(fā)板的調(diào)試;
- 運(yùn)用Keil軟件進(jìn)行編程實(shí)現(xiàn)不同功能的組合:
(1)液晶屏顯示姓名、學(xué)號(hào);
(2)液晶屏顯示矩陣鍵盤鍵值;
(3)數(shù)碼管顯示矩陣鍵盤鍵值;
(4)液晶屏顯示紅外遙控器鍵值;
(5)遙控器控制電機(jī)開關(guān);
(6)蜂鳴器播放音樂;
(7)單片機(jī)與計(jì)算機(jī)之間串口通信;
(8)液晶屏顯示DS18B20溫度。
2.3 程序流程圖
2.4 實(shí)驗(yàn)功能匯總- 用液晶器顯示自己的姓名、學(xué)號(hào)以及按鍵值;
- 用數(shù)碼管顯示任意字符;
- 利用遙控器顯示按鍵值;
- 利用遙控器控制風(fēng)扇的開/關(guān);
- 利用蜂鳴器演奏一段音樂;
- 單片機(jī)與PC機(jī)之間利用串口進(jìn)行“聊天”;
- 用按鍵切換蜂鳴器演奏的音樂;
- 用液晶屏顯示ASCII碼表;
- 液晶屏顯示DS18B20溫度;
第三章 實(shí)驗(yàn)功能的原理3.1 液晶屏顯示姓名、學(xué)號(hào)a.LCD1602模塊
圖3.1.1 LCD1602模塊
圖3.1.2 操作時(shí)序
液晶顯示器(Liquid Crystal Display,LCD)的主要原理是以電流刺激液晶分子產(chǎn)生點(diǎn)、線、面并配合背部燈管構(gòu)成畫面。各種型號(hào)的液晶通常是按照顯示字符的行數(shù)和液晶點(diǎn)陣的行、列數(shù)來命名的。比如:1602的意思是每行顯示16個(gè)字符,一共可以顯示兩行。
液晶體積小、功耗低、顯示操作簡(jiǎn)單,但它有個(gè)致命的弱點(diǎn),其使用的溫度范圍很窄,因此在設(shè)計(jì)相應(yīng)產(chǎn)品時(shí),務(wù)必要考慮周全,選取合適的液晶。
LCDEN為使能端,RS為數(shù)據(jù)/命令選擇口,RW為讀/寫選擇口,D0—D9為數(shù)據(jù)線。先給使能端一個(gè)高電平使LCD1602進(jìn)行工作,需要寫入數(shù)據(jù)時(shí),設(shè)置RS=1,RW=0;需要讀數(shù)據(jù)時(shí),設(shè)置RS=0,RW=1,通過數(shù)據(jù)線給1602輸送數(shù)據(jù),可以實(shí)現(xiàn)1602顯示不同字符。
而液晶顯示屏顯示的字符已經(jīng)存儲(chǔ)在液晶屏內(nèi)部存儲(chǔ)器中,以ASCII碼形式存放在相應(yīng)地址單元中,可以通過編程選擇相應(yīng)的地址單元從而顯示所需要的字符。也可以通過相關(guān)軟件,如漢字取模軟件等自行編輯字符。
3.2 液晶屏顯示矩陣鍵盤鍵值a.LCD1602模塊
b.矩陣鍵盤模塊
圖3.2 矩陣鍵盤模塊
為了減少鍵盤與單片機(jī)接口時(shí)所占用I/O線的數(shù)目,在鍵數(shù)較多時(shí),通常都將鍵盤排列成行列矩陣形式。每一水平線(行線)與垂直線(列線)的交叉處不相通,而是通過一個(gè)按鍵來連通。利用這種行列矩陣結(jié)構(gòu)只需N條行線和M條列線,即可組成具有N

M個(gè)按鍵的鍵盤。
掃描顯示鍵值是通過行列反轉(zhuǎn)法讀入矩陣鍵值,然后返回給LCD1602屏顯示。行列反轉(zhuǎn)法工作原理如下:
如圖,選擇P3口與矩陣鍵盤的行線和列線相連,P30-P33接行線,P34-P37接列線。按鍵識(shí)別時(shí),首先判斷是否有鍵按下,并進(jìn)行消抖確定鍵按下;首先將行作為輸出,列作為輸入,給P3口一個(gè)0FH信號(hào),使行線輸出全為0,從而讀入列線值;再將行列進(jìn)行反轉(zhuǎn),行作為輸入,列作為輸出,給一個(gè)F0H信號(hào),將上一步讀取到的列線輸入值從列線輸出,讀取行線值,根據(jù)輸出的列線值和讀取到的行線值就可以確定按下鍵所在的位置,從而查表確定鍵值。然后將掃描所得的鍵值返回給key_value,從而在LCD1602的函數(shù)中進(jìn)行調(diào)用。
3.3 數(shù)碼管顯示矩陣鍵盤鍵值圖3.3.1 數(shù)碼管鎖存器模塊 圖3.3.2 8位共陰極數(shù)碼管
實(shí)習(xí)所用單片機(jī)開發(fā)板使用的是八位共陰極數(shù)碼管,其內(nèi)部為八個(gè)陰極相連的二極管,當(dāng)給一個(gè)高電平時(shí),二極管導(dǎo)通,從而二極管發(fā)光,數(shù)碼管相應(yīng)的段點(diǎn)亮。
數(shù)碼管和數(shù)碼管鎖存器相連,打開鎖存器時(shí),數(shù)據(jù)可以流通,從而數(shù)碼管可以顯示相應(yīng)的數(shù)值。通過編程進(jìn)行位選,選擇哪一位數(shù)碼管點(diǎn)亮,在通過段選信號(hào)選擇數(shù)碼管哪一段點(diǎn)亮,數(shù)碼管八段分別為a~g和dp,對(duì)應(yīng)八位二進(jìn)制碼的低位到高位,通過掃描按鍵值,發(fā)送相應(yīng)的十六進(jìn)制數(shù)值,可以給數(shù)碼管不同的段賦高電平和低電平,從而實(shí)現(xiàn)數(shù)碼管顯示按鍵數(shù)值。
數(shù)碼管顯示和按鍵值對(duì)應(yīng)表:
3.4 液晶屏顯示紅外遙控器鍵值-
運(yùn)用到的模塊
圖3.4 紅外接收模塊
實(shí)現(xiàn)紅外遙控需要信號(hào)的發(fā)送和接收,發(fā)送數(shù)據(jù)的一方將紅外信號(hào)進(jìn)行調(diào)制后發(fā)送給接收數(shù)據(jù)的一方,接收方收到調(diào)制后的信號(hào)后需要進(jìn)行解調(diào)才能讀取信息的內(nèi)容。
遙控器內(nèi)部電路將遙控器的按鍵信息進(jìn)行編碼、調(diào)制后,發(fā)送紅外信號(hào);紅外接收頭收到遙控器發(fā)送的信號(hào)后,通過1引腳給P32口輸出信號(hào),然后我們通過編寫程序,對(duì)接收到的信號(hào)進(jìn)行解碼,讀取原有信息。
通常為了使信號(hào)能更好的被傳輸,發(fā)送端將基帶二進(jìn)制信號(hào)調(diào)制為脈沖串信號(hào),通過紅外發(fā)射管發(fā)射。
遙控器使用的是NEC協(xié)議,NEC標(biāo)準(zhǔn)下的編碼:引導(dǎo)碼高電平約9000us左右,低電平約4500us左右;用戶碼16位,數(shù)據(jù)碼16位,共32位;數(shù)據(jù)0是用“高電平約560us加上低電平約560us”表示;數(shù)據(jù)1可用“高電平約560us加低電平約1680us”表示。
3.5 遙控器控制電機(jī)開關(guān)-
運(yùn)用到的模塊
- LCE1602模塊
- 紅外接收模塊
- 電機(jī)驅(qū)動(dòng)模塊
圖3.5 電機(jī)驅(qū)動(dòng)模塊
電機(jī)驅(qū)動(dòng)模塊上有4個(gè)端口:1IN到4IN,分別控制電機(jī)的接入端口ABCD,將P10引腳與4IN引腳相連,電機(jī)(不區(qū)分正負(fù)端)接在驅(qū)動(dòng)輸出接口的“D”和“+”,然后通過P10引腳輸出高低電平控制電機(jī)的轉(zhuǎn)動(dòng)與停止。
通過紅外接收裝置,對(duì)遙控器發(fā)送的信號(hào)進(jìn)行接收,在通過變成解調(diào),讀取其中信息,然后通過P10輸出。按“+”鍵,P10=1,電機(jī)轉(zhuǎn)動(dòng);按“-”鍵,P10=0時(shí),電機(jī)停止工作。
3.6 音樂播放器-
運(yùn)用到的模塊
圖3.6 蜂鳴器模塊
音樂的產(chǎn)生主要是通過單片機(jī)的I/O口輸出高低不同的脈沖信號(hào)來控制蜂鳴器發(fā)音,要想產(chǎn)生音頻脈沖信號(hào),需要算出某音頻的周期(1/頻率),然后將此周期除以2,即為半周期的時(shí)間。利用單片機(jī)定時(shí)器計(jì)時(shí)這個(gè)半周期的時(shí)間,每當(dāng)計(jì)時(shí)到后就輸出脈沖的I/O口反相,這樣就在此I/O口上得到此脈沖的頻率。
本實(shí)驗(yàn)中,蜂鳴器與P23相連,輸入低電平時(shí),蜂鳴器工作。使用定時(shí)器1,工作在方式1,改變計(jì)數(shù)初始值TH0和TL0來產(chǎn)生不同的頻率。
首先定義音符數(shù)組和音調(diào)數(shù)組,再通過編寫代碼來確定歌曲的歌譜,三個(gè)數(shù)為一組,第一個(gè)數(shù)表示音符,數(shù)值表示定義音符數(shù)組的第幾個(gè)十六進(jìn)制數(shù);第二個(gè)數(shù)表示音調(diào),數(shù)值對(duì)應(yīng)音調(diào)數(shù)組的相應(yīng)值;第三個(gè)數(shù)表示延時(shí)時(shí)間(節(jié)拍)。然后通過P23口輸出高低電平使蜂鳴器進(jìn)行工作,播放已經(jīng)編寫好的音樂代碼。
通過掃描按鍵值,進(jìn)行歌曲間的切換。
3.7 單片機(jī)與計(jì)算機(jī)之間的串口通信-
運(yùn)用到的模塊
圖3.7 串口通信模塊
在串行通信中,數(shù)據(jù)是在兩個(gè)站之間傳送的。傳送數(shù)據(jù)還需要一個(gè)中間媒介,將傳輸?shù)奈募未鎯?chǔ),即SBUF。SUBF分為兩個(gè)寄存器,一個(gè)是發(fā)送緩沖寄存器SBUF,另一個(gè)是接收緩沖寄存器SBUF。如果CPU寫SBUF,數(shù)據(jù)就會(huì)被送入發(fā)送寄存器準(zhǔn)備發(fā)送;如果CPU讀SBUF,則讀入的數(shù)據(jù)一定來自接收緩沖器。即CPU對(duì)SBUF的讀寫,實(shí)際上是分別訪問上述兩個(gè)不同的寄存器。
串行控制寄存器SCON用于設(shè)置串行口的工作方式、監(jiān)視串行口的工作狀態(tài)、控制發(fā)送與接收的狀態(tài)等。它是一個(gè)既可以字節(jié)尋址又可以位尋址的8位特殊功能寄存器。其中,SM0、SM1為串行口工作方式選擇位,實(shí)習(xí)中我們選擇工作方式1;REN為允許接受控制位,在進(jìn)行串口通訊時(shí)設(shè)置REN=1;TI和RI分別為發(fā)送中斷標(biāo)志和接收中斷標(biāo)志。
在串行通信中,收發(fā)雙方對(duì)發(fā)送或接收數(shù)據(jù)的速率要有約定。波特率表示每秒鐘傳輸二進(jìn)制代碼的位數(shù),單位是:位/秒(bps)。本實(shí)驗(yàn)中設(shè)置波特率為9600bps。
本實(shí)驗(yàn)進(jìn)行串口通信時(shí),設(shè)置定時(shí)器T1工作在模式2,打開串行口中斷,當(dāng)中斷觸發(fā),檢測(cè)到接受完成,即RI=1時(shí),讀取接收緩存器的數(shù)值,然后通過對(duì)此數(shù)值進(jìn)行處理,在液晶顯示屏上顯示相應(yīng)的字符,從而實(shí)現(xiàn)串口通信。
3.8 液晶屏顯示DS18B20溫度-
運(yùn)用到的模塊
圖3.8 溫度傳感器接口
DS18B20具有如下特點(diǎn):通信采用1-Wire接口,有唯一的64位序列碼儲(chǔ)存在板載ROM中,可測(cè)量的溫度范圍在-55℃ ~ +125℃,溫度計(jì)分辨率可設(shè)置為9~12位,12位時(shí)分辨率對(duì)應(yīng)為0.0625℃。
單總線訪問DS18B20時(shí),首先初始化,再執(zhí)行ROM操作指令,再執(zhí)行功能指令,對(duì)溫度進(jìn)行轉(zhuǎn)換和讀取暫存器內(nèi)容,再通過函數(shù)在LCD1602顯示屏上進(jìn)行顯示。
第四章 使用說明4.1啟動(dòng)首先將單片機(jī)通過數(shù)據(jù)線與電腦相連,按下電源開關(guān),電源指示燈亮,同時(shí)LED1亮,單片機(jī)正常啟動(dòng)。LCD1602液晶顯示屏第一行顯示“MENU”,第二行顯示“AnJ:0→7;Retn:15”。效果:
圖4.1 菜單頁面
4.2功能選擇(1)液晶屏顯示姓名、學(xué)號(hào):
按矩陣鍵盤的鍵S6(KEY0),進(jìn)入功能1,LCD1602液晶顯示屏第一行顯示姓名“name:Zhong Ye”,第二行顯示學(xué)號(hào)“num:20161001271”。
按S21(KEY15)返回主菜單界面。效果:
圖4.2.1 液晶屏顯示姓名學(xué)號(hào)效果圖
按矩陣鍵盤的鍵S7(KEY1),進(jìn)入功能2,此時(shí)LCD1602液晶顯示屏第一行顯示“Anjianzhi: 9”。按矩陣鍵盤S6—S20,液晶屏第一行的數(shù)值將從0變化至14。
按S21(KEY15)返回主菜單界面。效果:
圖4.2.2 液晶屏顯示按鍵值效果圖
按矩陣鍵盤的鍵S8(KEY2),進(jìn)入功能3,此時(shí)LCD1602液晶顯示屏第一行顯示“Shumaguan Anjian”,數(shù)碼管左邊第一位顯示,按矩陣鍵盤S6—S15,數(shù)碼管第一位從0變換至9,按S16—S20,數(shù)碼管第一位從a顯示至e,此時(shí)數(shù)碼管顯示的實(shí)際上是十六進(jìn)制的0到15。
按S21(KEY15)返回主菜單界面。效果:
圖4.2.3 8位共陰極數(shù)碼管顯示按鍵值效果圖
按矩陣鍵盤的鍵S9(KEY3),進(jìn)入功能4,此時(shí)LCD1602液晶顯示屏第一行顯示“HW_Anjianzhi:”,使用遙控器對(duì)準(zhǔn)紅外接收裝置,按按鍵值0-9,液晶顯示屏第一行末尾將顯示相應(yīng)的數(shù)值。
按S21(KEY15)返回主菜單界面。效果:
圖4.2.4 液晶屏顯示紅外遙控器按鍵值
將電機(jī)的兩個(gè)接口與左下角電機(jī)驅(qū)動(dòng)模塊的“+”、“D”相連,無線序要求。用一根杜邦線將單片機(jī)P10引腳與電機(jī)驅(qū)動(dòng)模塊“4IN”相連。
按矩陣鍵盤的鍵S10(KEY4),進(jìn)入功能5,此時(shí)LCD1602液晶顯示屏第一行顯示“Dianjikongzhi:”,第二行顯示“Zhuangtai:”。使用遙控器,按遙控器“+”鍵,液晶屏第二行顯示狀態(tài)“ ON”,電機(jī)轉(zhuǎn)動(dòng);按遙控器“-”鍵,液晶屏第二行顯示狀態(tài)“OFF”,電機(jī)停止工作。
按S21(KEY15)返回主菜單界面。效果:
圖4.2.5 電機(jī)轉(zhuǎn)動(dòng)效果圖
圖4.2.6 電機(jī)停止效果圖
按矩陣鍵盤的鍵S11(KEY5),進(jìn)入功能6,此時(shí)LCD1602液晶顯示屏第一行顯示“MUSIC:”,蜂鳴器工作,播放編寫好的歌曲。
按鍵S19和鍵S20進(jìn)行歌曲之間的切換。
按S21(KEY15)返回主菜單界面。效果:
圖4.2.7 音樂播放器液晶屏效果圖
- 單片機(jī)與計(jì)算機(jī)之間串口通信(用液晶屏顯示ASCII碼表);
打開燒錄軟件,點(diǎn)擊右上角模塊的“串口助手”,選擇串口為單片機(jī)驅(qū)動(dòng)端口,調(diào)節(jié)波特率為9600,點(diǎn)擊下方“打開串口”按鈕,按矩陣鍵盤的鍵S12(KEY6),進(jìn)入串口通信功能,此時(shí)LCD1602液晶顯示屏第一行顯示“Chuankou:”,液晶顯示屏第二行顯示“C: H: Num: ”,分別表示接受到的文本模式、HEX模式、接收到的數(shù)據(jù)總數(shù)。
在“串口助手”的發(fā)送緩沖區(qū)輸入一個(gè)數(shù)據(jù)(數(shù)字或字母),選擇文本模式,點(diǎn)擊下方“發(fā)送數(shù)據(jù)”,接收緩沖區(qū)方框內(nèi)將顯示相應(yīng)模式下的數(shù)值,同時(shí)液晶顯示屏第二行分別顯示發(fā)送數(shù)據(jù)的文本形式、HEX形式和接收到的數(shù)據(jù)總數(shù)。
按S21(KEY15)返回主菜單界面。
效果:比如顯示#。如表,#對(duì)應(yīng)的ASCII值為35(十進(jìn)制),這里將它轉(zhuǎn)換成23(十六進(jìn)制),
圖4.2.8 液晶屏顯示ASCII碼表效果圖
將DS18B20原件插到單片機(jī)預(yù)留的位置,注意絲印面向外。
按矩陣鍵盤的鍵S13(KEY7),進(jìn)入溫度計(jì)功能,此時(shí)LCD1602液晶顯示屏第一行顯示“Dangqianwendu:”,液晶顯示屏第二行顯示當(dāng)前溫度值。由于當(dāng)前溫度會(huì)有微小的改變,會(huì)發(fā)現(xiàn)顯示的溫度值在不停地跳變。
按S21(KEY15)返回主菜單界面。效果:
圖4.2.9 液晶屏顯示DS18B20溫度效果圖
4.3返回按矩陣鍵盤最后一個(gè)鍵S21(KEY15),系統(tǒng)將返回主菜單,LCD1602顯示菜單界面。需注意,每次進(jìn)行功能選擇后,不能直接按KEY0—KEY7進(jìn)行功能切換,必須按鍵返回主菜單才可繼續(xù)進(jìn)行其他功能的選擇。
以上內(nèi)容Word格式文檔51黑下載地址: