單片機(jī)應(yīng)用技術(shù)項目教程(C語言版)(第三版)教學(xué)課件匯總整本書電子教案全套教學(xué)教程完整版電子教案_第1頁
單片機(jī)應(yīng)用技術(shù)項目教程(C語言版)(第三版)教學(xué)課件匯總整本書電子教案全套教學(xué)教程完整版電子教案_第2頁
單片機(jī)應(yīng)用技術(shù)項目教程(C語言版)(第三版)教學(xué)課件匯總整本書電子教案全套教學(xué)教程完整版電子教案_第3頁
單片機(jī)應(yīng)用技術(shù)項目教程(C語言版)(第三版)教學(xué)課件匯總整本書電子教案全套教學(xué)教程完整版電子教案_第4頁
單片機(jī)應(yīng)用技術(shù)項目教程(C語言版)(第三版)教學(xué)課件匯總整本書電子教案全套教學(xué)教程完整版電子教案_第5頁
已閱讀5頁,還剩450頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、項目1 控制一個LED項目1 控制一個LED促成目標(biāo)知道AT89S52單片機(jī)結(jié)構(gòu)和引腳功能;會AT89S52單片機(jī)最小系統(tǒng)電路設(shè)計;知道C語言基本構(gòu)成和基本語句;會利用單片機(jī)I/O口實現(xiàn)點(diǎn)亮一個LED和控制LED閃爍。終極目標(biāo)能完成單片機(jī)最小系統(tǒng)和輸出電路設(shè)計與制作;能應(yīng)用C語言程序完成單片機(jī)輸入輸出控制,實現(xiàn)對LED控制的設(shè)計、運(yùn)行及調(diào)試。教學(xué)目標(biāo)任務(wù)1 控制一個LED的第一個Proteus仿真電路任務(wù)描述AT89S52單片機(jī)P1.0引腳接發(fā)光二極管LED的陰極;通過C語言程序控制,從P1.0引腳上輸出低電平,使發(fā)光二極管LED點(diǎn)亮。 認(rèn)識PROTEUSProteus 8.6 Profess

2、ional是英國Labcenter Electronics公司開發(fā)的多功能EDA軟件。PROTEUS不僅是模擬電路、數(shù)字電路、模數(shù)混合電路的設(shè)計與仿真平臺,也是目前較先進(jìn)的單片機(jī)和嵌入式系統(tǒng)的設(shè)計與仿真平臺。PROTEUS實現(xiàn)了在計算機(jī)上完成從原理圖與電路設(shè)計、電路分析與仿真、單片機(jī)代碼級調(diào)試與仿真、系統(tǒng)測試與功能驗證到形成PCB的完整的電子設(shè)計、研發(fā)過程。 單片機(jī)控制一個LED電路分析按照任務(wù)描述,點(diǎn)亮一個LED電路是由AT89S52單片機(jī)最小系統(tǒng)和1個LED電路構(gòu)成。AT89S52單片機(jī)是美國ATMEL公司生產(chǎn)的低電壓、高性能8位單片機(jī),具有豐富的內(nèi)部資源, 使用AT89S52單片機(jī)無須外

3、部存儲器。AT89S52單片機(jī)的P1.0引腳接LED的陰極,LED的陽極通過220限流電阻后連接到5V電源上,限流電阻在這里起到了限流的作用,使通過LED的電流被限制在十幾個毫安左右。根據(jù)二極管單向?qū)щ娦?,?dāng)單片機(jī)的P1.0引腳輸出低電平時,由于P1.0引腳接LED的陰極,使得LED點(diǎn)亮。當(dāng)單片機(jī)的P1.0引腳輸出高電平時,使得LED熄滅。簡而言之,LED加正向電壓點(diǎn)亮,反之熄滅。任務(wù)實施新建Proteus工程在設(shè)計原理圖之前,必須新建一個Proteus工程。由于本書沒有涉及PCB繪制內(nèi)容,在這里新建一個帶有原理圖和無PCB的Proteus工程。設(shè)置圖紙設(shè)置圖紙尺寸、設(shè)置網(wǎng)格。添加元器件添加A

4、T89C52、CRYSTAL(晶振)、CAP(電容)、CAP-ELEC(電解電容)、RES(電阻)、LED-RED等元器件。任務(wù)實施繪制電路圖放置元器件調(diào)整元器件位置放置終端連線屬性設(shè)置電氣規(guī)則檢測認(rèn)識單片機(jī)單片機(jī)實質(zhì)上是一個芯片,單片機(jī)芯片上主要集成了如下部件:中央處理器CPU;數(shù)據(jù)存儲器RAM;程序存儲器ROM;定時器/計數(shù)器;中斷系統(tǒng);輸入/輸出接口電路。單片機(jī)的發(fā)展 第一階段(1974-1976年)為單片機(jī)初級階段由于受工藝及集成度的限制,單片機(jī)采用雙片形式,且功能比較簡單。第二階段(1976-1978年)為低性能單片機(jī)階段單片機(jī)采用單芯片形式,是“小而全”。第三階段(1978-198

5、2年)為高性能單片機(jī)階段是單片機(jī)普及階段,如:MCS-51系列單片機(jī)第四階段(1982年以后)為16位單片機(jī)階段是16位CPU,如:MCS-96系列單片機(jī)單片機(jī)的特點(diǎn) 由于單片機(jī)芯片上集成了CPU、存儲器、輸入/輸出部件和時鐘電路等。因此它具有如下特點(diǎn)。體積小、重量輕,價格低、功能強(qiáng),電源單一、功耗低,可靠性高、抗干擾能力強(qiáng);使用方便靈活、通用性強(qiáng);目前大多數(shù)單片機(jī)采用哈佛(Harvard)結(jié)構(gòu)體系;突出控制功能的指令系統(tǒng);較低的處理速度和較小的存儲容量。單片機(jī)的應(yīng)用 單片機(jī)主要應(yīng)用在以下幾個方面: 家用電器智能卡智能儀器儀表網(wǎng)絡(luò)與通信工業(yè)控制單片機(jī)的分類單片機(jī)可分為通用型單片機(jī)和專用型單片機(jī)

6、兩大類。通用型單片機(jī)是把可開發(fā)資源全部提供給使用者的微控制器。這就是我們通常所說的單片機(jī),即指通用型單片機(jī)專用型單片機(jī)則是為過程控制、參數(shù)檢測、信號處理等方面的特殊需要而設(shè)計的單片機(jī)。51系列單片機(jī)51系列單片機(jī)有51子系列型和52子系列型51子系列是基本型產(chǎn)品片內(nèi)帶有4KBROM/EPROM(8031、80C31除外)、128BRAM、2個16位定時器/計數(shù)器、5個中斷源等。52子系列則是增強(qiáng)型產(chǎn)品片內(nèi)帶有8KBROM/EPROM(8032、80C32除外)、256BRAM、3個16位定時器/計數(shù)器、6個中斷源等。51系列單片機(jī)一覽表AT89系列單片機(jī)在MCS-51系列的基礎(chǔ)上,Atmel公

7、司開發(fā)的AT89系列單片機(jī),具有較低廉的價格和獨(dú)特的程序存儲器(快閃存儲器)。Flash程序存儲器可以用電擦除方式瞬間擦除、改寫, 寫入單片機(jī)內(nèi)的程序還可以進(jìn)行加密。AT89S52單片機(jī)結(jié)構(gòu) 一個8位CPU;一個片內(nèi)振蕩器及時鐘電路;8K字節(jié)可重復(fù)擦寫的Flash閃速存儲器三級加密程序存儲器;2568字節(jié)內(nèi)部RAM;3個16位定時器/計數(shù)器;32條可編程的I/O線(四個8位并行I/O端口);一個可編程全雙工串行口;具有6個中斷源、兩個優(yōu)先級嵌套中斷結(jié)構(gòu)。 AT89S52引腳功能 電源線:VCC(+5V)、VSS(地)振蕩電路:XTAL1、XTAL2復(fù)位引腳:RST并行口:P0、P1、P2、P3

8、EA:訪問程序存儲控制信號PSEN:外部ROM讀選通信號ALE:地址鎖存控制信號P3口線的第二功能AT89S52引腳功能電源引腳(2根) VCC(40腳):電源端,接+5V電源。VSS(20腳):接地端。時鐘引腳(2根) XTAL1(19腳):接外部晶振和微調(diào)電容的一端。XTAL2(18腳):接外部晶振和微調(diào)電容的另一端。STC89C52引腳功能控制引腳(4根)RST/VPD(9腳):復(fù)位信號當(dāng)輸入的復(fù)位信號延續(xù)兩個機(jī)器周期以上的高電平時即為有效,用以完成單片機(jī)的復(fù)位初始化操作。ALE/PROG (30腳):地址鎖存控制信號系統(tǒng)擴(kuò)展時,ALE用于控制把P0口輸出的低8位地址鎖存起來,以實現(xiàn)低位

9、地址和數(shù)據(jù)的隔離。EA/VPP(31腳):訪問程序存儲控制信號當(dāng)信號為低電平時,對ROM的讀操作限定在外部程序存儲器;當(dāng)信號為高電平時,對ROM的讀操作是從內(nèi)部程序存儲器開始,并可延至外部程序存儲器。PSEN(29腳):片外ROM讀選通信號端讀片外ROM時,PSEN為低電平有效,實現(xiàn)對片外ROM的讀操作。AT89S52引腳功能P0口(引腳32-39)普通I/O口P1口(引腳1-8) 普通I/O口P2口(引腳21-28)普通I/O口P3口(引腳10-17)普通I/O口,或作為其他第二功能口P3口各引腳與第二功能表引腳 第二功能 功能說明 P3.0RXD串行口輸入P3.1TXD串行口輸出P3.2I

10、NT0外部中斷0輸入P3.3INT1外部中斷1輸入P3.4T0定時器/計數(shù)器0計數(shù)輸入P3.5T1定時器/計數(shù)器1計數(shù)輸入P3.6WR片外RAM寫選通信號(輸出)P3.7RD片外RAM讀選通信號(輸出)任務(wù)2 用Keil C51設(shè)計第一個程序控制一個LED任務(wù)描述使用Keil C51,設(shè)計一個C語言程序,控制AT89S52單片機(jī)P1.0引腳輸出一個低電平,使LED點(diǎn)亮。 認(rèn)識KEIL C51Keil C51 是德國Keil軟件公司開發(fā)的基于8051 內(nèi)核的微控制器軟件開發(fā)平臺。Keil C51 是51系列單片機(jī)C語言軟件開發(fā)系統(tǒng),是目前開發(fā)8051 內(nèi)核單片機(jī)的主流工具。Keil C51軟件提

11、供豐富的庫函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具,全Windows界面。Keil C51 具有集成開發(fā)環(huán)境,可以完成從工程建立和管理、編譯、連接、目標(biāo)代碼的生成、軟件仿真和硬件仿真等完整的開發(fā)流程。 單片機(jī)控制一個LED實現(xiàn)分析P1.0引腳接發(fā)光二極管(LED)的陰極,P1.0引腳輸出低電平時,發(fā)光二極管點(diǎn)亮。 問題:為什么P1.0引腳輸出低電平,發(fā)光二極管點(diǎn)亮?通過程序控制,使P1.0引腳輸出低電平,使發(fā)光二極管點(diǎn)亮。問題:程序怎么使P1口的引腳輸出低電平? 在下面我們可以找到答案。單片機(jī)控制一個LED實現(xiàn)分析在圖1-1中,AT89S52單片機(jī)的P1.0引腳接LED的陰極,LED的陽極通過220限

12、流電阻后連接到5V電源上。當(dāng)單片機(jī)的P1.0引腳輸出低電平時,LED點(diǎn)亮。sbit LED=P10; /定義LED為P1.0引腳LED=0; /P1.0引腳輸出低電平,LED點(diǎn)亮當(dāng)單片機(jī)的P1.0引腳輸出高電平時,LED熄滅。sbit LED=P10; /定義LED為P1.0引腳LED=1; /P1.0引腳輸出高電平,LED熄滅任務(wù)實施建立第一個Keil C51工程項目新建工程并保存在“任務(wù)2 控制一個LED”的文件夾中;在CPU類型中,單擊左側(cè)列表框中“Atmel”項前面的“+”號,展開該層,單擊選中列表中的“AT89S52”;不添加啟動文件。建立“點(diǎn)亮一個LED”源文件“點(diǎn)亮一個LED.c

13、”與工程文件放在同一文件夾中。添加源文件到工程項目文件中將“點(diǎn)亮一個LED.c”添加到工程項目中任務(wù)實施“點(diǎn)亮一個LED”源文件#include /包含AT89X52.H頭文件sbit LED=P10; /定義LED為P1.0引腳void main (void) LED=0; /P1.0引腳輸出低電平點(diǎn)亮LED while(1);任務(wù)實施工程配置與編譯在“Target(目標(biāo))”標(biāo)簽頁的晶振頻率欄中,建議初學(xué)者修改成12MHz,因為12MHz方便計算指令時間;在“Output”標(biāo)簽頁中,選中“Greate HEX File(生成HEX文件)”選擇框,使編譯器輸出單片機(jī)需要的HEX文件;其余采用默

14、認(rèn)配置。用Proteus仿真運(yùn)行調(diào)試加載“控制一個LED.hex ”目標(biāo)代碼文件仿真運(yùn)行調(diào)試單片機(jī)最小系統(tǒng)單片機(jī)最小系統(tǒng)只是單片機(jī)能滿足工作的最低要求,它不能對外完成控制任務(wù),不能實現(xiàn)人機(jī)對話。要進(jìn)行人工對話還要一些輸入、輸出部件,作控制時還要有執(zhí)行部件。常見的輸入部件有開關(guān)、按鈕、鍵盤等,輸出部件有指示燈LED、數(shù)碼管等,執(zhí)行部件有繼電器、電磁閥等。一般來說,單片機(jī)最小系統(tǒng)主要包括單片機(jī)、晶振電路、復(fù)位電路和電源4個部分。時鐘電路時鐘電路為單片機(jī)產(chǎn)生時鐘脈沖序列。系統(tǒng)允許的晶振頻率一般為6 MHz和12 MHz,電容C1和C2取30 pF左右。晶體振蕩頻率高,則系統(tǒng)的時鐘頻率也高,單片機(jī)運(yùn)行

15、速度也就快。時序的概念 單片機(jī)內(nèi)的各種操作都是在一系列脈沖控制下進(jìn)行的,而各脈沖在時間上是有先后順序的,這種順序就稱為時序。 單片機(jī)的時序定時單位從小到大依次為:振蕩周期、時鐘周期(狀態(tài)周期)、機(jī)器周期和指令周期。振蕩周期是指晶體振蕩器直接產(chǎn)生的振蕩信號的周期,是振蕩頻率fosc的倒數(shù),用P表示。 狀態(tài)周期(或狀態(tài)S)是振蕩周期的兩倍,它分為P1節(jié)拍和P2節(jié)拍。1個機(jī)器周期是由6個狀態(tài)構(gòu)成。執(zhí)行一條指令所需的時間稱為指令周期。各種周期的相互關(guān)系 復(fù)位電路單片機(jī)復(fù)位引腳RST出現(xiàn)2個機(jī)器周期以上的高電平時,單片機(jī)就執(zhí)行復(fù)位操作。 常見復(fù)位操作有上電自動復(fù)位和按鍵手動復(fù)位兩種方式 。上電自動復(fù)位是

16、通過外部復(fù)位電路的電容充電來實現(xiàn)的。按鍵手動復(fù)位是通過復(fù)位端經(jīng)電阻與電源VCC接通而實現(xiàn)的,它兼?zhèn)渖想姀?fù)位功能。復(fù)位功能復(fù)位是單片機(jī)的初始化操作。是把PC初始化為0000H,使CPU從0000H單元開始執(zhí)行程序;同時還對其他一些寄存器有影響,但內(nèi)部RAM的數(shù)據(jù)是不變的。 除了進(jìn)入系統(tǒng)的正常初始化之外,當(dāng)由于程序運(yùn)行出錯或操作錯誤使系統(tǒng)處于死鎖狀態(tài)時,為擺脫困境,也需要按復(fù)位鍵重新啟動。C語言程序的構(gòu)成 一個語言程序,是由一個main()函數(shù)(又稱主函數(shù))和若干個其它函數(shù)結(jié)合而成的,或僅由一個main()函數(shù)構(gòu)成。函數(shù)是語言程序的基本單位。最簡單的程序只有一個main函數(shù) 。C語言程序總是從ma

17、in()函數(shù)開始執(zhí)行。函數(shù)的構(gòu)成 任何函數(shù)都是由函數(shù)說明和函數(shù)體兩部分組成函數(shù)一般結(jié)構(gòu)如下:函數(shù)類型 函數(shù)名(函數(shù)參數(shù)表) /* 函數(shù)說明部分 */聲明語句部分 執(zhí)行語句部分 /* 函數(shù)體部分 */ 函數(shù)體,即函數(shù)首部下面的大括號“”內(nèi)的部份。函數(shù)體一般包括: 聲明部份:定義所用到的變量,如void Delay()中的unsigned char i, j;。執(zhí)行部份:由若干個語句組成。 標(biāo)識符 C語言規(guī)定標(biāo)識符只能由字母、數(shù)字和下劃線三種字符組成,且第一個字符必須為字母或下劃線。變量名、常數(shù)名、數(shù)組名、函數(shù)名、文件名與類型名等統(tǒng)稱為標(biāo)識符。標(biāo)識符分為預(yù)定義標(biāo)識符和用戶標(biāo)識符。 說明:C語言中大

18、寫字母與小寫字母被認(rèn)為是兩個不同的字符。標(biāo)識符在命名時應(yīng)當(dāng)簡單,含義清晰,這樣有助于閱讀理解程序。 關(guān)鍵字 關(guān)鍵字則是編程語言保留的特殊標(biāo)識符它們具有固定名稱和含義,在程序編寫中不允許標(biāo)識符與關(guān)鍵字相同。在Keil C中的關(guān)鍵字除了有ANSI C標(biāo)準(zhǔn)的32個關(guān)鍵字外,還根據(jù)51單片機(jī)的特點(diǎn)擴(kuò)展了相關(guān)的關(guān)鍵字。在Keil C的文本編輯器中編寫C程序,系統(tǒng)把保留字以不同顏色顯示,缺省顏色為天藍(lán)色。 C語言基本語句 C語言的程序是由一個或多個函數(shù)組成的,而函數(shù)又是由若干個語句組成的。語句是由一些基本字符和定義符按照C語言的語法規(guī)定組成的,每個語句以分號“;”結(jié)束,分號是C語句的必要組成部份。C語言的

19、語句可分為以下5種類型:表達(dá)式語句函數(shù)調(diào)用語句控制語句復(fù)合語句空語句 表達(dá)式語句表達(dá)式語句是由一個表達(dá)式加一個分號構(gòu)成一個語句,其作用是計算表達(dá)式的值或改變變量的值。它的一般形式是: 表達(dá)式;即在表達(dá)式末尾加上分號,就變成了表達(dá)式語句。最典型的表達(dá)式語句是:在賦值表達(dá)式后加一個分號構(gòu)成賦值語句。例如:a=3 是一個賦值表達(dá)式a=3; 是一個賦值語句函數(shù)調(diào)用語句由一個函數(shù)調(diào)用加一個分號構(gòu)成函數(shù)調(diào)用語句,其作用是完成特定的功能。它的一般形式是:函數(shù)名(參數(shù)列表);例如: mDelay(100); /調(diào)用延時函數(shù),參數(shù)是100 控制語句控制語句用于完成一定的控制功能,以實現(xiàn)程序的各種結(jié)構(gòu)方式。C語言

20、有9種控制語句,可分為以下三類。條件判斷語句if語句、switch語句。循環(huán)語句for語句、while語句、do-while語句。轉(zhuǎn)向語句break語句、continue語句、goto語句、return語句。 復(fù)合語句復(fù)合語句是用一對大括號將若干條語句括起來的,也稱為分程序,在語法上相當(dāng)于一條語句。例如main() t=x; x=y; y=t; /復(fù)合語句 空語句只有一個分號的語句稱為空語句它的一般形式是: ; 空語句是什么操作也不執(zhí)行,常用于作為循環(huán)語句中的循環(huán)體,表示循環(huán)體什么也不做。 注釋 注釋內(nèi)容可以單獨(dú)寫在一行上,也可以寫在一個語句之后可以用/*.*/的形式為 C 程序的任何一部份作

21、注釋;Keil C也支持 C+風(fēng)格的注釋,就是用“/”引號后面的是注釋例如P1_0=!P1_0; /取反 P1.0這種風(fēng)格的注釋,只對本行有效,書寫比較方便,所以在只需要一行注釋的時候,我們往往采用這種格式。 技能訓(xùn)練1-1 開關(guān)控制LED點(diǎn)亮 單片機(jī)最小系統(tǒng)只是單片機(jī)能滿足工作的最低要求,它不能對外完成控制任務(wù),實現(xiàn)人機(jī)對話。 開關(guān)控制LED點(diǎn)亮電路設(shè)計 程序設(shè)計 開關(guān)控制LED點(diǎn)亮程序#include /包含AT89X52.H頭文件sbit SW=P30; /定義SW是P3.0位對應(yīng)的引用符號sbit LED=P10; /定義LED是P1.0位對應(yīng)的引用符號void main (void)

22、 while(1) if(SW=0) LED=0; /開關(guān)閉合SW=0:P1.0=0,LED點(diǎn)亮 else LED=1; /開關(guān)斷開SW=1:P1.0=1,LED熄滅 任務(wù)3 LED閃爍控制任務(wù)描述P1.0引腳接LED的陰極,通過程序控制,使P1.0引腳交替輸出高電平和低電平,使LED閃爍。任務(wù)3 LED閃爍控制任務(wù)分析軟件實現(xiàn)思路:點(diǎn)亮發(fā)光二極管延時(延時子程序)關(guān)閉發(fā)光二極管延時重復(fù)上述動作(循環(huán))電路設(shè)計和前面一樣任務(wù)實施建立第一個Keil C51工程項目新建工程并保存在“任務(wù)2 控制一個LED”的文件夾中。建立“LED閃爍控”源文件“LED閃爍控.c”與工程文件放在同一文件夾中。添加源

23、文件到工程項目文件中將“LED閃爍控.c”添加到工程項目中“LED閃爍控制”工程配置與編譯LED閃爍控制Proteus仿真運(yùn)行調(diào)試LED閃爍控制程序設(shè)計#include /包含AT89X52.H頭文件sbit LED = P10; /定義LED是P1.0位的引用符號void Delay() /延時函數(shù) unsigned char i, j; for (i=0;i255;i+) for (j=0;j255;j+);void main () while(1) LED = 0; / P1.0=0,LED點(diǎn)亮 Delay(); /延時 LED = 1; / P1.0=1,LED熄滅 Delay();

24、/延時 【技能訓(xùn)練1-2】LED閃爍控制電路焊接制作LED閃爍控制電路元件清單,如下表所示。元件名稱參數(shù)數(shù)量單片機(jī)STC89C521晶振11.0592M1瓷片電容30pF2電解電容10F1IC插座DIP401按鍵 1電阻10K1電阻2201LED 1程序的3種基本結(jié)構(gòu) 程序由計算機(jī)語言組成的語句序列。程序的三種基本結(jié)構(gòu)順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)。結(jié)構(gòu)化程序設(shè)計思想任何程序都可以用順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)這3類結(jié)構(gòu)來表示。由這3類基本結(jié)構(gòu)組成的程序稱為結(jié)構(gòu)化程序。下面我們用圖示的方式來表達(dá)3種結(jié)構(gòu)形態(tài)。程序的3種基本結(jié)構(gòu) 3種基本結(jié)構(gòu)的傳統(tǒng)流程圖AaB(a)順序結(jié)構(gòu)bPAB(b)選擇結(jié)構(gòu)a

25、b成立不成立PA成立A成立P不成立(c)當(dāng)型循環(huán)(c)直到循環(huán)Proteus能在計算機(jī)上完成從原理圖與電路設(shè)計、電路分析與仿真、單片機(jī)代碼級調(diào)試與仿真、系統(tǒng)測試與功能驗證。Keil C51是單片機(jī)軟件開發(fā)系統(tǒng)。可以完成工程建立和管理、編譯、連接、目標(biāo)代碼的生成、軟件仿真和硬件仿真等完整的開發(fā)流程。STC89C52單片機(jī)最小系統(tǒng)就是一個基本的、可以工作的單片機(jī)系統(tǒng),主要包括單片機(jī)、電源、晶振電路和復(fù)位電路。單片機(jī)內(nèi)的各種操作都是在一系列脈沖控制下進(jìn)行的。各脈沖在時間上是有先后順序的,這種順序就稱為時序。定時單位有:振蕩周期fosc、狀態(tài)周期、機(jī)器周期、指令周期。1個機(jī)器周期=6個狀態(tài)周期=12個

26、振蕩周期fosc關(guān)鍵知識點(diǎn)小結(jié)Keil C51和PROTEUS軟件的主要功能?單片機(jī)的組成、主要特點(diǎn)、主要應(yīng)用領(lǐng)域?如果只使用片外ROM, 引腳應(yīng)該如何接?為什么?單片機(jī)最小系統(tǒng)由哪幾部分組成?完成單片機(jī)最小系統(tǒng)電路。在工作模塊2 中,如果把LED閃爍程序的延時函數(shù)Delay()寫在main()后面,程序應(yīng)該如何修改?試一試,把LED的陽極接在P1.0引腳上,完成LED點(diǎn)亮電路和C語言程序設(shè)計。試一試,完成用開關(guān)控制LED閃爍快和慢兩種效果的電路和C語言程序設(shè)計。問題與討論結(jié)Thank You !項目3 單片機(jī)顯示控制項目3 單片機(jī)顯示控制促成目標(biāo)知道數(shù)碼管結(jié)構(gòu)、顯示原理和方式;知道C語言的語

27、句結(jié)構(gòu)、數(shù)組及函數(shù)的相關(guān)知識;會數(shù)碼管動態(tài)顯示和靜態(tài)顯示的電路和程序設(shè)計。終極目標(biāo)能完成單片機(jī)的數(shù)碼管動態(tài)顯示和靜態(tài)顯示電路設(shè)計與制作;能完成數(shù)碼管動態(tài)顯示和靜態(tài)顯示的C語言程序設(shè)計、運(yùn)行與調(diào)試。教學(xué)目標(biāo)任務(wù)7 LED數(shù)碼管靜態(tài)顯示設(shè)計任務(wù)描述利用AT89S52單片機(jī)設(shè)計一個099計數(shù)器。要求使用一個手動計數(shù)按鈕,實現(xiàn)099的計數(shù),并且通過2個共陰數(shù)碼管顯示計數(shù)結(jié)果,數(shù)碼管顯示采用靜態(tài)顯示方式。任務(wù)分析 LED數(shù)碼管靜態(tài)顯示電路分析LED數(shù)碼管顯示采用靜態(tài)顯示方式,各位數(shù)碼管是相互獨(dú)立的。2個LED數(shù)碼管是采用共陰LED數(shù)碼管,這2個共陰LED數(shù)碼管的公共端必須接地,這樣他們才能顯示出來;顯示

28、計數(shù)值十位數(shù)的LED數(shù)碼管接在P0口,顯示計數(shù)值個位數(shù)的LED數(shù)碼管接在P2口;在任務(wù)6中,是使用開關(guān)控制跑馬燈的,本任務(wù)的按鍵是計數(shù)按鍵,按鍵接在P1口的P1.0引腳,按鍵電路同開關(guān)電路一樣。任務(wù)分析 LED數(shù)碼管靜態(tài)顯示程序分析可以通過字型編碼表查找到共陰LED數(shù)碼管的“0”“9”十個字符的字型編碼,然后通過P0口和P2口輸出十位和個位數(shù)的字型編碼。按著數(shù)字09 的順序,把每個數(shù)字的字型碼按順序排好,建立的表格。unsigned char code table=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;任務(wù)分析

29、LED數(shù)碼管顯示實現(xiàn)分析對按鍵操作進(jìn)行識別、處理;對按鍵進(jìn)行計數(shù);當(dāng)計數(shù)計滿時,在從零開始計數(shù);計數(shù)結(jié)果含有十位和個位,要進(jìn)行拆分處理;計數(shù)結(jié)果是十進(jìn)數(shù),把計數(shù)結(jié)果對10求余,可得個位數(shù);對10整除,可得到十位數(shù)。通過查表方式,分別顯示出個位和十位數(shù)字。任務(wù)實施LED數(shù)碼管靜態(tài)顯示電路設(shè)計按照任務(wù)描述,LED數(shù)碼管靜態(tài)顯示電路是由單片機(jī)最小系統(tǒng)、按鍵電路和采用2個共陰LED數(shù)碼管組成的靜態(tài)顯示電路構(gòu)成。在AT89S52單片機(jī)P1口的P1.0引腳接一個按鍵,作為手動計數(shù)的按鍵,用單片機(jī)P2口的P2.0P2.6引腳接一個LED共陰數(shù)碼管,作為099計數(shù)的個位數(shù)顯示,用單片機(jī)P0口的 P0.0P0.

30、6引腳接一個LED共陰數(shù)碼管,作為099計數(shù)的十位數(shù)顯示。任務(wù)實施LED數(shù)碼管靜態(tài)顯示電路設(shè)計新建設(shè)計文件、保存設(shè)計文件選取元器件AT89S52、CRYSTAL、CAP、CAP-ELEC、RES、RESPACK-7、BUTTON和7SEG-COM-CATHODE。放置元器件、編輯元器件、放置終端、連線;屬性設(shè)置電氣規(guī)則檢測 單擊“工具”“電氣規(guī)則檢查”,彈出檢查結(jié)果窗口,完成電氣檢測;若檢測出錯,根據(jù)提示修改電路圖并保存,直至檢測成功。任務(wù)實施LED數(shù)碼管靜態(tài)顯示程序設(shè)計建立“LED數(shù)碼管靜態(tài)顯示”工程項目建立并加載“LED數(shù)碼管靜態(tài)顯示.c”源文件“LED數(shù)碼管靜態(tài)顯示”工程配置與編譯 跑馬

31、燈Proteus仿真運(yùn)行調(diào)試任務(wù)實施LED數(shù)碼管靜態(tài)顯示程序關(guān)鍵代碼sbit SW=P15;If(SW=1)/LED一個一個點(diǎn)亮,直至全部點(diǎn)亮else/LED一個一個熄滅,直至全部熄滅LED數(shù)碼管靜態(tài)顯示程序 定義段碼表#include /*定義09十個數(shù)字的字型碼表*/unsigned char code table=0 x3f,0 x06,0 x5b,0 x4f,0 x66, 0 x6d,0 x7d,0 x07,0 x7f,0 x6f; unsigned char Count; /定義變量放置計數(shù)結(jié)果void delay10ms(void) /定義10ms延時函數(shù) unsigned cha

32、r i,j; for(i=20;i0;i-) for(j=248;j0;j-); LED數(shù)碼管靜態(tài)顯示程序 按鍵識別、處理if(P1_0=0) /判斷按鍵是否按下 delay10ms(); /延時去抖動 if(P1_0=0) /再一次確定按鍵是否按下 . /計數(shù)處理、顯示 while(P1_0=0); /等鍵釋放 LED數(shù)碼管靜態(tài)顯示程序 計數(shù)實現(xiàn)if(P1_0=0) /判斷按鍵是否按下 . Count+; /計數(shù)器加1 if(Count=100) /判斷計數(shù)是否到了100 Count=0; /計數(shù)器清0 . LED數(shù)碼管靜態(tài)顯示程序 計數(shù)顯示Count=0; /計數(shù)變量初始為0P0=tabl

33、eCount/10; /十位數(shù)碼管顯示0P2=tableCount%10; /個位數(shù)碼管顯示0 while(1) . /按鍵識別和計數(shù)程序段 P0=tableCount/10; /顯示計數(shù)的十位數(shù) P2=tableCount%10; /顯示計數(shù)的個位數(shù) . 【技能訓(xùn)練3-1】 LED數(shù)碼管循環(huán)顯示09焊接制作技能訓(xùn)練要求AT89S52單片機(jī)的P1口的P2.0P2.6七個引腳,使其依次連接到一個共陰極LED數(shù)碼管的ah七個位段控制引腳上,數(shù)碼管的公共端接地;完成LED數(shù)碼管循環(huán)顯示09電路設(shè)計、程序設(shè)計以及焊接制作,實現(xiàn)在LED數(shù)碼管上循環(huán)顯示 09十個數(shù)字?!炯寄苡?xùn)練3-1】 LED數(shù)碼管循環(huán)

34、顯示09焊接制作LED數(shù)碼管循環(huán)顯示09電路設(shè)計LED數(shù)碼管顯示09電路是由單片機(jī)最小系統(tǒng)、一片1位的共陰極LED數(shù)碼管和一片74LS245驅(qū)動芯片組成?!炯寄苡?xùn)練3-1】 LED數(shù)碼管循環(huán)顯示09焊接制作LED數(shù)碼管循環(huán)顯示09程序設(shè)計參考任務(wù)7程序設(shè)計,在數(shù)碼管顯示程序中,dispcount既用作循環(huán)變量使用,又用作數(shù)組的下標(biāo),其值從0變到9,就能夠把數(shù)組table中的字符編碼一一獲得。每獲得一個字型碼就送于P1口輸出,采用的語句為:P1=tabledispcount;LED數(shù)碼管顯示09控制C語言程序見教材。【技能訓(xùn)練3-1】 LED數(shù)碼管循環(huán)顯示09焊接制作LED數(shù)碼管循環(huán)顯示09電路

35、焊接制作參考數(shù)碼管循環(huán)顯示09電路,完成電路板焊接制作,焊接好的電路板如圖3-4所示。焊接數(shù)碼管時,不要用手去折其引角,須緊貼萬能板焊接,焊接時溫度控制在260度左右,時間不宜過長。硬件檢測與調(diào)試。軟件下載與調(diào)試。認(rèn)識數(shù)碼管單片機(jī)常用LED和LCD兩種方式LED數(shù)碼顯示器價格低廉、體積小、功耗低、而且可靠性好,得到廣泛使用。單個LED數(shù)碼管的管腳結(jié)構(gòu)如圖所示數(shù)碼管內(nèi)部由8個LED(位段)組成;有7個條形LED和一個小圓點(diǎn)LED;當(dāng)LED導(dǎo)通時,相應(yīng)的線段或點(diǎn)發(fā)光;將這些LED排成一定圖形,來顯示數(shù)字09、字符AF、H、L、P、R、U、Y、符號“”及小數(shù)點(diǎn)“.”等。ABCDEFGDP認(rèn)識數(shù)碼管L

36、ED數(shù)碼管可以分為共陰極和共陽極兩種結(jié)構(gòu)共陰極結(jié)構(gòu)把所有LED陰極作為公共端(com)連接低電平(接地),通過控制每個LED的陽極電平使其發(fā)光或熄滅陽極為高電平LED發(fā)光,為低電平熄滅。如顯示0時,把a(bǔ)、b、c、d、e、f端接高電平,其他各端接地。共陽極結(jié)構(gòu)是把所有LED的陽極作為公共端(com)連起來,接高電平(如+5V),通過控制每一只LED的陰極電平來使其發(fā)光或熄滅,陰極為低電平LED發(fā)光,為高電平熄滅數(shù)碼管引腳及內(nèi)部結(jié)構(gòu)管腳排列共陽數(shù)碼管共陰數(shù)碼管使用數(shù)碼管注意事項必須注意的是,數(shù)碼管內(nèi)部沒有電阻,在使用時需外接限流電阻如果不限流將造成發(fā)光二極管的燒毀;限流電阻的取值一般使流經(jīng)發(fā)光二極

37、管的電流在1020mA,由于高亮度數(shù)碼管的使用,電流還可以取得小一些。數(shù)碼管的字型編碼數(shù)碼管要顯示某個字符,必須使它的8個位段上加上相應(yīng)的電平組合,即一個8位數(shù)據(jù),這個數(shù)據(jù)就叫該字符的字型編碼。編碼規(guī)則如下圖所示。共陰極和共陽極數(shù)碼管的字型編碼是不同的,共陰極和共陽極的字型編碼是反相的,例如字符“0”:共陰極編碼是3FH,二進(jìn)制形式是00111111;共陽極編碼是C0H,二進(jìn)制形式是11000000,恰好是00111111的反碼。D7 D6 D5 D4 D3 D2 D1 D0dpgfedcba數(shù)碼管的顯示方法LED數(shù)碼管有動態(tài)顯示和靜態(tài)顯示兩種方法靜態(tài)顯示是指數(shù)碼管顯示某一字符時,相應(yīng)的發(fā)光二

38、極管恒定導(dǎo)通或恒定截止。這種顯示方式的各位數(shù)碼管相互獨(dú)立,公共端恒定接地(共陰極)或+5V(共陽極)。每個數(shù)碼管的八個位段分別與一個八位I/O端口引腳相連。I/O端口只要有字型碼輸出,數(shù)碼管就顯示給定的字符,并保持不變,直到I/O口輸出新的段碼。數(shù)碼管的顯示方法LED數(shù)碼管有動態(tài)顯示和靜態(tài)顯示兩種方法動態(tài)顯示是一種一位一位地輪流點(diǎn)亮各位數(shù)碼管的顯示方式。在某一時段,只選中一位數(shù)碼管的“位選端”,并送出相應(yīng)的字型編碼,在下一時段按順序選通另外一位數(shù)碼管,并送出相應(yīng)的字型編碼。依此規(guī)律循環(huán)下去,即可使各位數(shù)碼管分別間斷地顯示出相應(yīng)的字符。這一過程稱為動態(tài)掃描顯示。一維數(shù)組 在C語言中,數(shù)組必須要先

39、定義后使用。一維數(shù)組的定義方式為: 類型說明符 數(shù)組名整型表達(dá)式;類型說明符是數(shù)組中各個元素的數(shù)據(jù)類型。數(shù)組名是用戶定義的數(shù)組標(biāo)識符。方括號中的常量表達(dá)式表示數(shù)據(jù)元素的個數(shù),既數(shù)組的長度。例如:int a9; /定義整型數(shù)組a,有9個元素,下標(biāo)從0到8。float b5; /定義實型數(shù)組b,有5個元素,下標(biāo)從0到4。char ch10; /定義字符數(shù)組ch,有10個元素,下標(biāo)從0到9。 注意事項數(shù)組的類型是指構(gòu)成數(shù)組的元素的類型;對于同一個數(shù)組,其所有元素的數(shù)據(jù)類型都是相同的數(shù)組名的書寫規(guī)則應(yīng)符合標(biāo)識符的命名規(guī)則;不能與其它變量同名常量表達(dá)式可以是符號常量或常量表達(dá)式。常量表達(dá)式不能包含變量即

40、不能對數(shù)組的大小作動態(tài)定義 【技能訓(xùn)練3-2】使用74LS47實現(xiàn)0-99計數(shù)顯示認(rèn)識74LS47是由與非門、輸入緩沖器和7個與或非門組成的BCD-7段數(shù)碼管譯碼器/驅(qū)動器;能把4位二進(jìn)制編碼十進(jìn)制數(shù)(BCD碼)轉(zhuǎn)化成七段字形碼;輸出低電平有效的七段字形碼,并能驅(qū)動一個七段數(shù)碼管。也就是說:74LS47能直接把數(shù)字轉(zhuǎn)換為數(shù)碼管的顯示數(shù)字;能簡化程序,節(jié)約單片機(jī)的IO開銷。 74LS47輸入/輸出引腳4位二進(jìn)制編碼十進(jìn)制數(shù)(BCD碼),從A、B、C和D引腳輸入;譯碼成七段字形碼,從QA、QB、QC、QD、QE、QF和QG引腳輸出。輸入DCBA=0010 ,輸出abcdefg=0010010,顯示

41、“2”;輸入DCBA=0110 ,輸出abcdefg=1100000,顯示“6”。0-99計數(shù)顯示電路設(shè)計 采用七段字形譯碼器74LS47,輸出字型碼控制顯示內(nèi)容;74LS47的LT、RBI與BI/RBO為無效,接高電平;數(shù)碼管是共陽極數(shù)碼管。 0-99計數(shù)顯示程序 void main(void) Count=0; /計數(shù)變量初始為0 P2=0 x0; /十位、個位數(shù)碼管顯示0 while(1) /按鍵掃描,計數(shù)顯示處理 /*十位數(shù)BCD碼(Count/104)和個位數(shù)BCD碼(Count%10)相或*/ P2=(Count/104)|(Count%10); while(P1_0=0); 任務(wù)

42、8 LED數(shù)碼管動態(tài)掃描顯示設(shè)計任務(wù)描述顯示是由6個共陰LED數(shù)碼管構(gòu)成,使用AT89S52單片機(jī),P0口輸出顯示段碼,經(jīng)由一片74LS245驅(qū)動輸出給LED數(shù)碼管,P1口輸出位碼(片選)給LED數(shù)碼管。通過動態(tài)掃描程序使6個數(shù)碼管顯示“123456”任務(wù)分析 LED數(shù)碼管動態(tài)掃描顯示電路分析LED數(shù)碼管動態(tài)掃描顯示電路的設(shè)計方法如下:將數(shù)碼管所有位的相同“段選端”都并接起來,由一個8位I/O端口控制(在本任務(wù)中采用的是P0口),如:數(shù)碼管的所有“a” 段都并接;各位數(shù)碼管的公共端(com端),用作“位選端”,分別接另一個I/O端口的I/O引腳(在本任務(wù)中采用的是P1口)。數(shù)碼管動態(tài)掃描顯示電

43、路的“段選端”是并接的(公用的),并由“位選端”分別控制各數(shù)碼管進(jìn)行顯示。任務(wù)分析 LED數(shù)碼管動態(tài)掃描顯示程序分析動態(tài)掃描是采用分時的方法,是輪流點(diǎn)亮各位數(shù)碼管的顯示方式,它在某一時間段,只讓其中一位數(shù)碼管的“位選端”(com端)有效,并送出相應(yīng)的段碼。LED數(shù)碼管動態(tài)掃描過程如下:首先從段選線上送出段碼,再控制位選端,字符就顯示在指定LED數(shù)碼管上。其它LED數(shù)碼管的位選端都無效,LED數(shù)碼管都處于熄滅狀態(tài)。持續(xù)1.5ms時間,然后關(guān)閉所有顯示;接下來又送出新的段碼,按照上述過程又顯示在另外一位LED數(shù)碼管上,直到每一位LED數(shù)碼管都掃描完為止。任務(wù)分析 LED數(shù)碼管動態(tài)掃描顯示程序分析L

44、ED數(shù)碼管動態(tài)掃描顯示其實就是輪流依次點(diǎn)亮的,但由于人的視覺駐留效應(yīng),因此當(dāng)每個LED數(shù)碼管點(diǎn)亮的時間小到一定程度時,人就感覺不出字符的移動或閃爍,覺得每位LED數(shù)碼管都一直在顯示,達(dá)到一種穩(wěn)定的視覺效果。任務(wù)實施LED數(shù)碼管動態(tài)掃描顯示電路設(shè)計按照任務(wù)描述,LED數(shù)碼管靜態(tài)顯示電路是由單片機(jī)最小系統(tǒng)、按鍵電路和采用2個共陰LED數(shù)碼管組成的靜態(tài)顯示電路構(gòu)成。在AT89S52單片機(jī)P0口輸出顯示段碼,P0口的P0.0P0.6通過一片74LS245依次接段碼口ag;P1口輸出位碼;用單片機(jī)P1口的P1口的P1.0P1.5依次接位碼口16。任務(wù)實施LED數(shù)碼管動態(tài)掃描顯示電路設(shè)計新建設(shè)計文件、保存

45、設(shè)計文件選取元器件AT89S52、CRYSTAL、CAP、CAP-ELEC、RES、74LS245和7SEG-MPX6-CC。放置元器件、編輯元器件、放置終端、連線;屬性設(shè)置電氣規(guī)則檢測 單擊“工具”“電氣規(guī)則檢查”,彈出檢查結(jié)果窗口,完成電氣檢測;若檢測出錯,根據(jù)提示修改電路圖并保存,直至檢測成功。任務(wù)實施LED數(shù)碼管動態(tài)掃描顯示程序設(shè)計建立“LED數(shù)碼管動態(tài)掃描顯示”工程項目;建立并加載“LED數(shù)碼管動態(tài)掃描顯示.c”源文件;“LED數(shù)碼管動態(tài)掃描顯示”工程配置與編譯; 跑馬燈Proteus仿真運(yùn)行調(diào)試。數(shù)碼管動態(tài)顯示程序設(shè)計定義段碼表#include unsigned char code

46、 Tab=0 x3F,0 x06,0 x5B,0 x4F,0 x66,0 x6D,0 x7D,0 x07,0 x7F,0 x6F,0 x77,0 x7C;unsigned char code Col=0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf;void Delay() unsigned char i; for(i=0;i250;i+);數(shù)碼管動態(tài)顯示程序設(shè)計主函數(shù)void main() /同時顯示123456 unsigned char j; while(1) for(j=1;j0;Delay-) 函數(shù)中Delay就是一個形式參數(shù),而在主函數(shù)中調(diào)用時寫的: mDel

47、ay(1000); 函數(shù)的返回值 在C中,一般使用return語句由被調(diào)函數(shù)向主調(diào)函數(shù)返回值,該語句有下列用途:它能立即從所在的函數(shù)中退出,返回到調(diào)用它的程序中去;返回一個值給調(diào)用它的函數(shù)。 返回語句一般有如下的形式: return; return 表達(dá)式; return(表達(dá)式); 任務(wù)9 LCD液晶顯示信息牌設(shè)計任務(wù)描述為了進(jìn)一步掌握LCD1602液晶顯示模塊的使用和編程方法,設(shè)計一個基于LCD1602的信息顯示牌。要求信息顯示牌顯示的格式為:第1行顯示:G10 arrival time(G10到站時間)第2行顯示:14:08(居中顯示時間,由左向右分別為:時、分)任務(wù)分析 LCD液晶顯示

48、信息牌電路分析LCD液晶顯示信息牌電路是由單片機(jī)最小系統(tǒng)、驅(qū)動電路和LCD液晶顯示模塊組成。任務(wù)分析 LCD1602關(guān)鍵函數(shù)LCD1602關(guān)鍵函數(shù)主要有寫指令函數(shù)WrOp()、寫數(shù)據(jù)函數(shù)WrDat()和LCD1602初始化函數(shù)LCD_Init()。LCD液晶顯示模塊如何顯示信息確定每行第一個字符的顯示地址第1行第一個字符的顯示地址是:00H+80H=80H;第2行第一個字符的顯示地址是:40H+80H=C0H。如何確定每行顯示起始字符的顯示位置。每行第一個字符的顯示地址+右移n個字符任務(wù)實施LCD液晶顯示信息牌電路設(shè)計如圖3-13所示,8位雙向數(shù)據(jù)線D0D7接P0口;寄存器選擇RS、讀寫信號線

49、R/W、控制液晶模塊執(zhí)行命令的使能端E(或EN)分別接P1口的P1.0、P1.1和P1.2引腳??紤]到P0口驅(qū)動能力,所以在P0口與LCD1602液晶顯示模塊之間增加1個八雙向總線收發(fā)器74LS245。任務(wù)實施LCD液晶顯示信息牌電路設(shè)計新建設(shè)計文件、保存設(shè)計文件選取元器件AT89C52、CRYSTAL、CAP、CAP-ELEC、RES、74LS245、和LM016L(LCD1602液晶顯示模塊)。放置元器件、編輯元器件、放置終端、連線;屬性設(shè)置電氣規(guī)則檢測 單擊“工具”“電氣規(guī)則檢查”,彈出檢查結(jié)果窗口,完成電氣檢測;若檢測出錯,根據(jù)提示修改電路圖并保存,直至檢測成功。任務(wù)實施LCD液晶顯示

50、信息牌程序設(shè)計建立“LCD液晶顯示信息牌”工程項目;建立并加載“LCD液晶顯示信息牌.c”源文件;“LCD液晶顯示信息牌”工程配置與編譯; LCD液晶顯示信息牌Proteus仿真運(yùn)行調(diào)試。LCD液晶顯示信息牌詳細(xì)代碼,見教材【技能訓(xùn)練3-4】按鍵控制LCD1602信息牌換屏顯示 技能訓(xùn)練要求在任務(wù)9的基礎(chǔ)上,增加2個按鍵,完成LCD1602信息牌能換屏顯示不同高鐵車次和到站時間。按鍵控制LCD1602信息牌換屏顯示電路設(shè)計根據(jù)技能訓(xùn)練要求,使用2個按鍵控制LCD1602信息牌能換屏顯示,其電路主要由單片機(jī)最小系統(tǒng)、按鍵控制電路、驅(qū)動電路和LCD液晶顯示模塊組成。在LCD液晶顯示信息牌電路圖基礎(chǔ)

51、上增加2個按鍵,SW1按鍵接P1.4,SW2按鍵接P1.7?!炯寄苡?xùn)練3-4】按鍵控制LCD1602信息牌換屏顯示 【技能訓(xùn)練3-4】按鍵控制LCD1602信息牌換屏顯示 按鍵控制LCD1602信息牌換屏顯示實現(xiàn)分析按鍵控制LCD1602信息牌能換屏顯示不同高鐵車次和到站時間,實現(xiàn)過程如下:當(dāng)SW1按鍵按下時,LCD1602信息牌顯示G10到站時間;當(dāng)SW2按鍵按下時,LCD1602信息牌顯示G10到站時間。按鍵控制LCD1602信息牌換屏顯示詳細(xì)代碼,見教材數(shù)碼管可以分為共陰極和共陽極兩種結(jié)構(gòu),使數(shù)碼管上顯示某個字符,必須使它的8位段選線上加上相應(yīng)的電平組合,既段碼。單個數(shù)碼管可以采用靜態(tài)顯

52、示;多位數(shù)碼管顯示有動態(tài)掃描顯示和靜態(tài)掃描顯示兩種方法。當(dāng)顯示位數(shù)較多時,采用動態(tài)掃描方式;若顯示位數(shù)較少,采用靜態(tài)掃描顯示方式。選擇結(jié)構(gòu)程序控制語句:If語句、switch語句。循環(huán)結(jié)構(gòu)程序控制語句:while語句、do-while語句、for語句。數(shù)組必須由具有相同數(shù)據(jù)類型的元素構(gòu)成。數(shù)組必須要先定義,后使用關(guān)鍵知識點(diǎn)小結(jié)LED數(shù)碼管有哪兩種結(jié)構(gòu)?是如何實現(xiàn)的?請簡要說明LED數(shù)碼管靜態(tài)顯示和動態(tài)顯示的特點(diǎn),實際設(shè)計時應(yīng)如何選擇?動態(tài)顯示的過程是什么?在用共陽極數(shù)碼管顯示的電路中,如果直接將共陽極數(shù)碼管換成共陰極數(shù)碼管,能否正常顯示?為什么?應(yīng)采取什么措施?工作模塊八中,如果輕觸開關(guān)改接P

53、1.7,并且要求實現(xiàn)059循環(huán)計數(shù),程序應(yīng)如何修改?工作模塊七,數(shù)碼管動態(tài)顯示程序設(shè)計時如果把延時時間改為1s,會出現(xiàn)什么情況。試一試,完成0999的計數(shù)器設(shè)計。問題與討論結(jié)Thank You !項目4 單片機(jī)鍵盤設(shè)計項目4 單片機(jī)鍵盤設(shè)計促成目標(biāo)知道鍵盤的接口方法和編程方法;會按鍵和鍵盤電路設(shè)計的方法;會編寫鍵盤掃描和按鍵識別控制的C語言程序。終極目標(biāo)能完成單片機(jī)的鍵盤電路的設(shè)計與制作;能完成鍵盤掃描和按鍵識別控制的C語言程序設(shè)計、運(yùn)行及調(diào)試。教學(xué)目標(biāo)任務(wù)10 獨(dú)立式鍵盤設(shè)計任務(wù)描述使用AT89S52單片機(jī),設(shè)計一個具有8個按鍵的獨(dú)立式鍵盤,每個按鍵對應(yīng)一個LED。功能要求:無鍵按下時,所以

54、按鍵所接單片機(jī)引腳輸出全為“1”,LED全部熄滅;有鍵按下時,按鍵所接單片機(jī)引腳輸出為“0”,其所對應(yīng)LED點(diǎn)亮。任務(wù)分析 獨(dú)立式鍵盤電路分析獨(dú)立式鍵盤的特點(diǎn)是每個按鍵單獨(dú)占用一根I/O口線,每個按鍵的工作不會影響其它I/O線的狀態(tài)。每個按鍵的一端接地;按鍵的另一端與P0口的一個引腳相連,同時經(jīng)上拉電阻接電源(+5V)。其中上拉電阻保證了按鍵在斷開時,I/O線有高電平。當(dāng)無鍵按下時,P0的8個I/O口均通過電阻接高電平,信息為“1”;當(dāng)有鍵按下時,將使其對應(yīng)的I/O口通過該鍵接地,信息為“0”。任務(wù)分析 獨(dú)立式鍵盤程序分析判斷是否有鍵按下無鍵按下時,P0的8個I/O口均通過電阻接高電平,信息為

55、“1”;有鍵按下時,將使其對應(yīng)的I/O口通過該鍵接地,信息為“0”。識別按下的按鍵通過程序來檢測單片機(jī)P0口的8個I/O口線哪個是“0”,這樣就可以知道是否有鍵按下,并能識別出是哪一個鍵按下。程序識別了被按下的按鍵后就可以通過P1口輸出,點(diǎn)亮對應(yīng)的LED。由于LED陽極接高電平,在其陰極所接的端口輸出“0”時,LED被點(diǎn)亮,反之熄滅。任務(wù)實施獨(dú)立式鍵盤電路設(shè)計單片機(jī)I/O口引腳分配8個按鍵接P0口;按鍵一端接地;另一端接P0口引腳,并通過上拉電阻接+5V。8個LED接P1口,LED采用共陽極接法。任務(wù)實施獨(dú)立式鍵盤電路設(shè)計新建設(shè)計文件、保存設(shè)計文件選取元器件AT89S52、CRYSTAL、CA

56、P、CAP-ELEC、RES、LED-RED和BUTTON。放置元器件、編輯元器件、放置終端、連線;屬性設(shè)置電氣規(guī)則檢測 單擊“工具”“電氣規(guī)則檢查”,彈出檢查結(jié)果窗口,完成電氣檢測;若檢測出錯,根據(jù)提示修改電路圖并保存,直至檢測成功。任務(wù)實施獨(dú)立式鍵盤程序設(shè)計建立“獨(dú)立式鍵盤”工程項目;建立并加載“獨(dú)立式鍵盤.c”源文件;“獨(dú)立式鍵盤”工程配置與編譯; 獨(dú)立式鍵盤Proteus仿真運(yùn)行調(diào)試。獨(dú)立式鍵盤詳細(xì)代碼,見教材任務(wù)實施判斷是否有按鍵按下while(x=0 xff) /循環(huán)判斷是否有鍵按下 x=P0; /讀鍵盤狀態(tài)delay10ms(); /延時10ms去抖動x=P0; /再次讀鍵盤狀態(tài)

57、if(x=0 xff) continue;/如果無鍵按下則認(rèn)為是按 /鍵抖動,重新掃描鍵盤任務(wù)實施根據(jù)鍵值點(diǎn)亮對應(yīng)的發(fā)光二極管switch(x) case 0 x01:P1=0 xfe; break; /點(diǎn)亮第一個發(fā)光二極管 case 0 x02:P1=0 xfd; break; /點(diǎn)亮第二個發(fā)光二極管 case 0 x04:P1=0 xfb;break; /點(diǎn)亮第三個發(fā)光二極管 case 0 x08:P1=0 xf7; break; /點(diǎn)亮第四個發(fā)光二極管 case 0 x10:P1=0 xef; break; /點(diǎn)亮第五個發(fā)光二極管 case 0 x20:P1=0 xdf; break;

58、/點(diǎn)亮第六個發(fā)光二極管 case 0 x40:P1=0 xbf; break; /點(diǎn)亮第七個發(fā)光二極管 case 0 x80:P1=0 x7f; break; /點(diǎn)亮第八個發(fā)光二極管 default:break;認(rèn)識鍵盤鍵盤是單片機(jī)應(yīng)用系統(tǒng)中人機(jī)交流不可缺少的輸入設(shè)備。鍵盤由一組規(guī)則排列的按鍵組成,一個按鍵實際上是一個開關(guān)元件。鍵盤通常使用機(jī)械觸點(diǎn)式按鍵開關(guān),其主要功能是把機(jī)械上的通斷轉(zhuǎn)換為電氣上的邏輯關(guān)系(1和0)。常見的鍵盤種類有:查詢(獨(dú)立)式鍵盤 矩陣式鍵盤 鍵盤分類 按鍵按照結(jié)構(gòu)原理可分為兩類觸點(diǎn)式開關(guān)按鍵,如機(jī)械式開關(guān)、導(dǎo)電橡膠式開關(guān)等;無觸點(diǎn)開關(guān)按鍵,如電氣式按鍵,磁感應(yīng)按鍵等。

59、前者造價低,后者壽命長。按鍵按照接口原理可分為兩類 編碼鍵盤,主要是用硬件來實現(xiàn)對按鍵的識別,硬件結(jié)構(gòu)復(fù)雜;非編碼鍵盤,主要是由軟件來實現(xiàn)按鍵的定義與識別,硬件結(jié)構(gòu)簡單,軟件編程量大。在這里,我們主要介紹單片機(jī)中常用的觸點(diǎn)式開關(guān)按鍵、非編碼鍵盤。鍵盤防抖動措施機(jī)械式按鍵在按下或釋放時,由于機(jī)械彈性作用的影響,通常伴隨一定時間的觸點(diǎn)機(jī)械抖動,然后才能穩(wěn)定下來。觸點(diǎn)抖動過程如右圖所示,抖動時間的長短與開關(guān)的機(jī)械特性有關(guān),一般為510ms。若有抖動,按鍵按下會被錯誤地認(rèn)為是多次操作。 防抖動措施為了克服按鍵觸點(diǎn)機(jī)械抖動所致的檢測誤判,必須采取去抖動措施,可從硬件、軟件兩方面予以考慮。鍵數(shù)較少時,采用

60、硬件去抖;鍵數(shù)較多時,采用軟件去抖。 軟件去抖的步驟在檢測到有按鍵按下時,執(zhí)行一個10ms左右(具體時間應(yīng)視所使用的按鍵進(jìn)行調(diào)整)的延時程序;再確認(rèn)該鍵電平是否仍保持閉合狀態(tài)電平,若仍保持閉合狀態(tài)電平,則確認(rèn)該鍵處于閉合狀態(tài),從而消除抖動的影響。軟件去抖流程圖 在檢測到有按鍵按下時執(zhí)行一個10ms左右延時程序;再檢測該鍵電平是否仍保持閉合狀態(tài)。若按鍵仍保持閉合狀態(tài)電平,則確認(rèn)該鍵是處于閉合狀態(tài)。 矩陣式鍵盤的結(jié)構(gòu)原理矩陣式鍵盤的結(jié)構(gòu)在單片機(jī)應(yīng)用系統(tǒng)中,若使用的按鍵較多時,通常采用矩陣式鍵盤。矩陣式鍵盤是由行線和列線組成的,按鍵位于行、列的交叉點(diǎn)上,其結(jié)構(gòu)如圖4-7所示。矩陣式鍵盤的結(jié)構(gòu)與原理矩

溫馨提示

  • 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

提交評論