單片機(jī)應(yīng)用系統(tǒng)的接口設(shè)計(jì)_第1頁
單片機(jī)應(yīng)用系統(tǒng)的接口設(shè)計(jì)_第2頁
單片機(jī)應(yīng)用系統(tǒng)的接口設(shè)計(jì)_第3頁
單片機(jī)應(yīng)用系統(tǒng)的接口設(shè)計(jì)_第4頁
單片機(jī)應(yīng)用系統(tǒng)的接口設(shè)計(jì)_第5頁
已閱讀5頁,還剩183頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

單片機(jī)應(yīng)用系統(tǒng)的接口設(shè)計(jì)第1頁,課件共188頁,創(chuàng)作于2023年2月學(xué)習(xí)目標(biāo)掌握單片機(jī)最小系統(tǒng)設(shè)計(jì)掌握單片機(jī)外擴(kuò)存儲(chǔ)器方法掌握單片機(jī)接口技術(shù)掌握單片機(jī)中斷及定時(shí)器應(yīng)用了解模數(shù)、串口通信第2頁,課件共188頁,創(chuàng)作于2023年2月3.1最小系統(tǒng)3.2總線及接口擴(kuò)展3.3內(nèi)存擴(kuò)展設(shè)計(jì)技術(shù)3.4LED、數(shù)碼顯示設(shè)計(jì)3.5鍵盤接口技術(shù)3.6中斷、定時(shí)接口技術(shù)3.7數(shù)模(D/A)轉(zhuǎn)換接口設(shè)計(jì)3.8模數(shù)(A/D)轉(zhuǎn)換接口設(shè)計(jì)3.9串行通信接口設(shè)計(jì)3.10常見問題主要內(nèi)容第3頁,課件共188頁,創(chuàng)作于2023年2月3.1最小系統(tǒng)

什么是單片機(jī)最小系統(tǒng)?最小系統(tǒng)是指單片機(jī)運(yùn)行的最基本的硬件,是單片機(jī)正常工作的基本保障。為什么要做最小系統(tǒng)?最小系統(tǒng)主要用來判斷系統(tǒng)是否可完成正常的啟動(dòng)與運(yùn)行。第4頁,課件共188頁,創(chuàng)作于2023年2月MCS51單片機(jī)最小系統(tǒng)電路除電源外,主要由三大塊組成:復(fù)位電路、時(shí)鐘電路和單片機(jī),如圖3.1所示。圖3.1MCS-51最小系統(tǒng)第5頁,課件共188頁,創(chuàng)作于2023年2月3.1.1復(fù)位電路單片機(jī)系統(tǒng)是由硬件和軟件構(gòu)成的,軟件是由程序組成的。程序則由系列指令構(gòu)成,正常情況下,希望系統(tǒng)運(yùn)行時(shí)是從程序的固定位置(入口處)開始執(zhí)行,復(fù)位的目的就是保證程序從入口處運(yùn)行,若不能保證復(fù)位要求,程序則很可能不從規(guī)定處執(zhí)行,會(huì)造成意想不到的問題,如“死機(jī)”、“跑飛”。系統(tǒng)為什么要用復(fù)位電路?第6頁,課件共188頁,創(chuàng)作于2023年2月單片機(jī)在啟動(dòng)時(shí)都需要復(fù)位,以使CPU及系統(tǒng)各部件處于確定的初始狀態(tài),并從初態(tài)開始工作。當(dāng)系統(tǒng)處于正常工作狀態(tài)時(shí),且振蕩器穩(wěn)定后,從單片機(jī)的復(fù)位引腳RST輸入一個(gè)高電平并維持2個(gè)機(jī)器周期(24個(gè)振蕩周期)以上,則CPU就可以響應(yīng)并將系統(tǒng)復(fù)位。單片機(jī)系統(tǒng)基本的復(fù)位方式有:上電復(fù)位和手動(dòng)按鈕復(fù)位

第7頁,課件共188頁,創(chuàng)作于2023年2月(a)上電復(fù)位

(b)手動(dòng)按鈕復(fù)位

圖3.2復(fù)位電路說明:復(fù)位電路中的器件取值可以根據(jù)所使用的時(shí)鐘電路頻率,滿足高電平大于兩個(gè)機(jī)器周期(24個(gè)振蕩周期)。圖上給出的值是在6MHz晶振狀態(tài)下,單片機(jī)復(fù)位電路的典型值。第8頁,課件共188頁,創(chuàng)作于2023年2月3.1.2時(shí)鐘、振蕩電路單片機(jī)時(shí)鐘電路是用來配合外部晶振產(chǎn)生單片機(jī)工作所需的時(shí)鐘信號。該電路為單片機(jī)提供運(yùn)行時(shí)鐘,是控制單片機(jī)運(yùn)行速度的節(jié)拍。如果運(yùn)行時(shí)鐘為0脈沖,則單片機(jī)不工作;若超出單片機(jī)的正常工作頻率則會(huì)使單片機(jī)超負(fù)荷運(yùn)行,直至導(dǎo)致芯片發(fā)燙、燒毀。單片機(jī)時(shí)鐘電路有內(nèi)部時(shí)鐘和外部時(shí)鐘電路兩種。單片機(jī)時(shí)鐘電路的作用是什么?第9頁,課件共188頁,創(chuàng)作于2023年2月3.2總線及接口擴(kuò)展

計(jì)算機(jī)總線是什么?總線(Bus)是計(jì)算機(jī)各種功能部件之間傳送信息的公共通信干線,它是由導(dǎo)線組成的傳輸線束。計(jì)算機(jī)總線傳輸?shù)男盘柺请妷哼€是電流信號?一般情況下傳輸?shù)男盘柺且噪妷盒问匠霈F(xiàn)的。第10頁,課件共188頁,創(chuàng)作于2023年2月3.2.1三總線概念

按照計(jì)算機(jī)所傳輸?shù)男畔⒎N類,計(jì)算機(jī)的總線可以劃分為數(shù)據(jù)總線DB、地址總線AB和控制總線CB,分別用來傳輸數(shù)據(jù)、數(shù)據(jù)地址和控制信號。第11頁,課件共188頁,創(chuàng)作于2023年2月圖3.3MCS51單片機(jī)總線引腳結(jié)構(gòu)第12頁,課件共188頁,創(chuàng)作于2023年2月3.2.2總線接口常用芯片

74LS373鎖存器 8D鎖存器 8輸入:1D~8D 8輸出:1O~8O 輸入允許端:OE(1) 輸出預(yù)選端:G(11)74LS373電平觸發(fā),鎖存緩沖74LS374上升沿觸發(fā)74LS273無三態(tài)門,用于不需三態(tài)場合74LS1383-8譯碼器74LS2448路單向數(shù)據(jù)緩沖器74LS2458路雙向數(shù)據(jù)緩沖器 緩沖器:無鎖存功能,在外設(shè)和CPU之間起緩沖 驅(qū)動(dòng)和隔離作用。總線緩沖器具有三態(tài)功能。 鎖存器:除具有緩沖功能外還有數(shù)據(jù)鎖存記憶功能。第13頁,課件共188頁,創(chuàng)作于2023年2月圖3.474LS138管腳圖第14頁,課件共188頁,創(chuàng)作于2023年2月74LS138真值表LLLLLLLLCAB第15頁,課件共188頁,創(chuàng)作于2023年2月74138功能簡表E1/E2/E3輸出XHXLXXXXH全高,不譯碼HLL譯碼,輸出低有效第16頁,課件共188頁,創(chuàng)作于2023年2月74LS373的真值表

H為高電平,L為低電平,Q0為原狀態(tài),Z為高阻抗,×為任意值。輸出允許有效低電平:LE為高時(shí)輸出隨輸入;LE為低時(shí),輸出不變; 74LS373鎖存器主要用于鎖存信息。 常用的鎖存器還有74LS374,573,574,Intel8282和8283等使能LE(11)輸出允許OE(1)輸入輸出HLLLHLHHLL×Q0×H×Z第17頁,課件共188頁,創(chuàng)作于2023年2月圖3.574LS373D7~D0為三態(tài)門輸入端;O7~O0為三態(tài)門輸出端;GND為接地端;Vcc為電源端;OE為三態(tài)門使能端,OE=0,三態(tài)門正常輸出,OE=1,三態(tài)門輸出高阻態(tài);LE為8位鎖存器的控制端,當(dāng)LE=1,則輸出跟隨輸入(即鎖存器透明),當(dāng)LE=0,則輸出保持不變,即將D7~D0的狀態(tài)存入O7~O0。第18頁,課件共188頁,創(chuàng)作于2023年2月表3.274LS373的真值表 表中:H為高電平,L為低電平,Q0為原狀態(tài),Z為高阻抗,×為任意值。Dn為輸入端;On為輸出端;LE為8位鎖存器的控制端,當(dāng)LE=1,則輸出跟隨輸入(即鎖存器透明);當(dāng)LE=0,則輸出保持不變74LS373是常用的地址鎖存器芯片,共有20個(gè)引腳。它實(shí)質(zhì)是一個(gè)是帶三態(tài)緩沖輸出的8D觸發(fā)器,在單片機(jī)系統(tǒng)中為了擴(kuò)展外部存儲(chǔ)器,通常需要一塊74ls373芯片。

第19頁,課件共188頁,創(chuàng)作于2023年2月74LS245是常用雙向三態(tài)總線緩沖、驅(qū)動(dòng)器,可雙向傳輸數(shù)據(jù),共有20個(gè)引腳。圖3.6表3.374LS245真值表/OEDIR操作00B數(shù)據(jù)到A01A數(shù)據(jù)到B1ⅹ高阻允許端/OE與方向端DIR共同控制8路A1~A8和8路B1~B8滿足表1.3邏輯。第20頁,課件共188頁,創(chuàng)作于2023年2月發(fā)光二極管發(fā)光二極管:單向?qū)щ娦裕ㄟ^5mA左右電流即可發(fā)光,電流越大,亮度越強(qiáng),但若電流過大會(huì)燒毀二極管,一般控制在3~20mA。工作電壓:紅色發(fā)光二極管1.7-2.5V

綠色發(fā)光二極管2.0-2.4V

黃色發(fā)光二極管1.9-2.4V

藍(lán)/白色發(fā)光二極管3.0-3.8V限流電阻二極管串聯(lián)電阻的目的是為了防止發(fā)光二極管和P1.7引腳流過的電流過大,燒毀二極管或單片機(jī),所以該電阻也稱為“限流電阻”。限流電阻的選擇:假設(shè)電源電壓為VCC,發(fā)光二極管的導(dǎo)通壓降為VDD,導(dǎo)通時(shí)流過二極管的電流為I,則限流電阻R為:VCC-VDD=IR第21頁,課件共188頁,創(chuàng)作于2023年2月寫地址PO鎖存低地址的時(shí)序Dn為輸入端;On為輸出;LE為8位鎖存器的控制端,當(dāng)LE=1,則輸出跟隨輸入(即鎖存器透明);當(dāng)LE=0,則輸出保持不變ALE、WR由CPU自動(dòng)產(chǎn)生;可用wr接138經(jīng)過控制的le控制轉(zhuǎn)移數(shù)據(jù);第22頁,課件共188頁,創(chuàng)作于2023年2月1、wr控制le的過程;2、ale控制le的過程;3、wr的動(dòng)態(tài)變化;在P0輸出數(shù)據(jù)之后有跳變,有下降的過程;結(jié)合54頁的時(shí)序圖可以通過wr控制74138再控制7404輸出信號到74373最終控制數(shù)據(jù)的鎖存;4、p0口輸出低地址的過程沒有被鎖存;第23頁,課件共188頁,創(chuàng)作于2023年2月

3.2.3典型電路圖3.7通過74LS245擴(kuò)展單片機(jī)的P0口第24頁,課件共188頁,創(chuàng)作于2023年2月

3.2.3典型電路2-D出來的LEDC000和ledc800分別控制1-B1,1-B2的LE端子1-A1-B11-B22-A2-B2-C2-D1-C11-C2地址為:OXC000地址為:OXC8001-B1,1-B2的LE口名稱改成LEDC000,和LEDC800;2-D作相應(yīng)改動(dòng)1為P0口出來的,2為p2口出來的;按照abcd的流向走此例中373鎖存的是數(shù)據(jù)第25頁,課件共188頁,創(chuàng)作于2023年2月2-D2-A至2-B至2-C(需要輔助單片機(jī)的WR【低有效】信號控制138);至2-D輸出控制信號;1-A,1-B1,1-C1在2-D的控制下1-B1的LE為高輸出信號再為低鎖存信號;1-A,1-B2,1-C2類似;地址為:OXC000地址為:OXC8001-B1,1-B2的LE口名稱改成LEDC000,和LEDC800;2-D作相應(yīng)改動(dòng)所謂外部地址指P2,P0口輸出相應(yīng)值之后,能影響某些器件使之工作在鎖存、譯碼、流向變、公共端電壓變化等時(shí)間上變化的狀態(tài);1-b1的le為高時(shí),wr為低1-b1上恰為數(shù)據(jù);第26頁,課件共188頁,創(chuàng)作于2023年2月C語言程序清單:#include<reg51.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintvoidDelay(uintt){ uinti=1141; for(;t>0;t--) for(;i>0;i--);//for(i=1141;i>0;i--)}第27頁,課件共188頁,創(chuàng)作于2023年2月voidmain(){ ucharxdata*led0=0xc000; ucharxdata*led1=0xc800; //定義兩個(gè)指針,并給指針賦值 uchari=0x01,j=0; *led0=0xff;//置為高電平; *led1=0xff;//置為高電平; while(1) //循環(huán) { for(j=0;j<8;j++) { _nop_(); *led0=~i;//~為按位取反; Delay(5000); i=(i<<1)|(i>>7);//<<為左移;|為按位或//1111,1100和0000,0001相或得1111,1101; }第28頁,課件共188頁,創(chuàng)作于2023年2月*led0=0xff; for(j=0;j<8;j++) { _nop_(); *led1=~i; Delay(5000); i=(i<<1)|(i>>7);//<<為左移;|為按位或 } *led1=0xff; }}第29頁,課件共188頁,創(chuàng)作于2023年2月3.3內(nèi)存擴(kuò)展設(shè)計(jì)技術(shù)

單片機(jī)的I/O口的數(shù)量是有限的,當(dāng)其數(shù)量不夠的情況下,我們需要擴(kuò)展I/O口的數(shù)量。為什么要擴(kuò)展?擴(kuò)展什么?

第30頁,課件共188頁,創(chuàng)作于2023年2月3.3.1MCS-51單片機(jī)擴(kuò)展技術(shù)51頁1、擴(kuò)展依據(jù)地址總線(AddressBus,AB)由P0口和P2口提供,其寬度為兩個(gè)字節(jié)(16位),故可尋址范圍為2Byte=64KByte。其中地址總線的低8位A7~A0由P0口經(jīng)地址鎖存器提供,P2口直接提供地址總線的高8位A15~A8。P0口是數(shù)據(jù)、地址分時(shí)復(fù)用的,所以P0口輸出的低8位地址必須用鎖存器進(jìn)行鎖存。由于P2口一直提供高8位地址,故不需要外加地址鎖存器。P0、P2口在系統(tǒng)擴(kuò)展中用作地址線后,便不能再作為一般I/O口使用。16第31頁,課件共188頁,創(chuàng)作于2023年2月數(shù)據(jù)總線(DataBus,DB)由P0口提供,其寬度為一個(gè)字節(jié)(8位)??刂瓶偩€(ControlBus,CB)是單片機(jī)發(fā)出的以控制片外ROM、RAM和I/O口讀/寫操作的一組控制線??刂瓶偩€包括片外系統(tǒng)擴(kuò)展用控制線和片外信號對單片機(jī)的控制線。系統(tǒng)擴(kuò)展所用控制線包括WR,RD,PSEN,EA和ALE。第32頁,課件共188頁,創(chuàng)作于2023年2月圖3.8單片機(jī)三總線示意圖第33頁,課件共188頁,創(chuàng)作于2023年2月2、擴(kuò)展能力MCS51單片機(jī)地址線為16位,因此在片外可擴(kuò)展的存儲(chǔ)器最大容量為64KByte,地址為0x0~0xFFFF。由于對片外數(shù)據(jù)存儲(chǔ)器和程序存儲(chǔ)器的訪問使用不同的指令及控制信號,所以允許兩者地址重合,即對于8051系列單片機(jī)來說,片外可擴(kuò)展的程序存儲(chǔ)器與數(shù)據(jù)存儲(chǔ)器的最大容量均為64KB。片外數(shù)據(jù)存儲(chǔ)器地址為0x0~0xFFFF。第34頁,課件共188頁,創(chuàng)作于2023年2月當(dāng)片內(nèi)程序存儲(chǔ)器與片外程序存儲(chǔ)器的訪問使用相同的操作指令,對兩者的選擇則靠系統(tǒng)控制線來實(shí)現(xiàn)。當(dāng)EA=0時(shí),選擇片外程序存儲(chǔ)器,即無論片內(nèi)有無程序存儲(chǔ)器,片外程序存儲(chǔ)器的地址可從0x0開始進(jìn)行編址。當(dāng)EA=1時(shí),選片內(nèi)程序存儲(chǔ)器,若片內(nèi)程序存儲(chǔ)器容量為4KByte,則其地址為0x0~0x0FFF,片外程序存儲(chǔ)器地址只能從0x1000開始編址。第35頁,課件共188頁,創(chuàng)作于2023年2月(3)擴(kuò)展的實(shí)現(xiàn)數(shù)據(jù)總線以P0口作8位數(shù)據(jù)的總線。數(shù)據(jù)總線的數(shù)據(jù)流是雙向的,單片機(jī)有入和出。地址總線以P0口的低8位地址加上P2的高8位地址就可以形成16位的地址總線,達(dá)到64KByte的尋址能力。地址總線的數(shù)據(jù)流是單片機(jī)發(fā)出的,是單向的。第36頁,課件共188頁,創(chuàng)作于2023年2月控制信號總線ALE:地址鎖存信號,用以實(shí)現(xiàn)對低8位地址的鎖存。

:片外程序存儲(chǔ)器選通信號。

:程序存儲(chǔ)器選擇信號。為低電平時(shí),訪問外部程序存儲(chǔ)器;為高電平時(shí),訪問內(nèi)部程序存儲(chǔ)器。

:片外數(shù)據(jù)存儲(chǔ)器寫控制信號。

:片外數(shù)據(jù)存儲(chǔ)器讀控制信號。第37頁,課件共188頁,創(chuàng)作于2023年2月總線驅(qū)動(dòng)在單片機(jī)應(yīng)用系統(tǒng)中,擴(kuò)展的三總線上掛接很多負(fù)載,如存儲(chǔ)器、并行接口、A/D接口、顯示接口等,但總線接口的負(fù)載能力有限,因此常常需要通過連接總線驅(qū)動(dòng)器進(jìn)行總線驅(qū)動(dòng)??偩€驅(qū)動(dòng)器對于單片機(jī)的I/O口只相當(dāng)于增加了一個(gè)TTL負(fù)載,因此驅(qū)動(dòng)器除了對后級電路驅(qū)動(dòng)外,還能對負(fù)載的波動(dòng)變化起隔離作用。在對TTL負(fù)載驅(qū)動(dòng)時(shí),只需考慮驅(qū)動(dòng)電流的大小。在對MOS負(fù)載驅(qū)動(dòng)時(shí),MOS負(fù)載的輸入電流很小,更多地要考慮對分布電容的電流驅(qū)動(dòng)。第38頁,課件共188頁,創(chuàng)作于2023年2月數(shù)據(jù)總線是雙向的,其驅(qū)動(dòng)器也要選用雙向的,如74LS245。74LS245也是三態(tài)的,有一個(gè)方向控制端DIR。DIR=1時(shí)輸出(An→Bn),DIR=0時(shí)輸入(An←Bn)。系統(tǒng)總線中地址總線是單向的,因此驅(qū)動(dòng)器可以選用單向的,如74LS244,還帶有三態(tài)控制,能實(shí)現(xiàn)總線緩沖和隔離。第39頁,課件共188頁,創(chuàng)作于2023年2月4、典型案例圖3.9簡單I/O接口擴(kuò)展第40頁,課件共188頁,創(chuàng)作于2023年2月C語言程序清單:#include<reg52.h>void main(){unsignedchardatatmp1,tmp2=0Xff;unsignedcharxdata*pt1;pt1=0xfeff; //給指針賦地址值0xfeffwhile(1) //循環(huán) { tmp1=*pt1; //從74HC245讀入鍵盤數(shù)據(jù)

if(tmp1!=tmp2) //判斷輸入改變時(shí),

{*pt1=tmp1;//從74HC373輸出LED顯示數(shù)據(jù)

tmp2=tmp1;//下一次的比較是對按鍵變化的比//較,所以需要將更新后的按鍵值最為下一次的比較依據(jù); }}}第41頁,課件共188頁,創(chuàng)作于2023年2月第42頁,課件共188頁,創(chuàng)作于2023年2月第43頁,課件共188頁,創(chuàng)作于2023年2月3.3.2典型應(yīng)用

圖3.11存儲(chǔ)器擴(kuò)展第44頁,課件共188頁,創(chuàng)作于2023年2月3.4LED、數(shù)碼顯示設(shè)計(jì)將系統(tǒng)正在運(yùn)行的狀態(tài)告訴操作者,需要顯示;操作者需要將控制的信息輸入到系統(tǒng),輸入的信息成功情況需要顯示。常用的顯示方式有:LED彩燈顯示、數(shù)碼管顯示、液晶顯示。為什么需要顯示?有哪些顯示方式?第45頁,課件共188頁,創(chuàng)作于2023年2月3.4.1LED顯示

圖3.121只彩燈閃爍顯示電路第46頁,課件共188頁,創(chuàng)作于2023年2月#include<reg51.h>#defineucharunsignedcharsbitP1_0=P1^0;voiddelay05(){uchari,j,k;for(i=5;i>0;i--)for(j=200;j>0;j--) for(k=250;k>0;k--);}voidmain(){while(1) { P1_0=0; delay05(); P1_0=1; delay05(); }}第47頁,課件共188頁,創(chuàng)作于2023年2月圖3.138只彩燈循環(huán)顯示電路第48頁,課件共188頁,創(chuàng)作于2023年2月參考程序:#include<reg51.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintvoidDelay(uintt) //延時(shí)函數(shù){ uinti=1141; for(;t>0;t--) for(;i>0;i--);}第49頁,課件共188頁,創(chuàng)作于2023年2月voidmain(){ uchari=0,j=0x01; while(1) { for(i=0;i<8;i++) //循環(huán)8次 { P1=~j; //將j按位取反從P1輸出 Delay(5000); j=(j<<1)|(j>>7); } }}第50頁,課件共188頁,創(chuàng)作于2023年2月3.4.2LED數(shù)碼管的結(jié)構(gòu)與原理

LED數(shù)碼管的結(jié)構(gòu)如圖3.14所示,圖中a-g七個(gè)筆段及小數(shù)點(diǎn)dp均為發(fā)光二極管。如果將所有發(fā)光二極管的陽極連在一起作為公共端,稱為共陽數(shù)碼管;如果將所有發(fā)光二極管的陰極連在一起作為公共端,稱為共陰數(shù)碼管。第51頁,課件共188頁,創(chuàng)作于2023年2月(a)共陰極;(b)共陽極;(c)管腳配置圖3.14LED顯示器共陽數(shù)碼管的所有發(fā)光二極管的陽極均接高電平,所以只要a-g及dp引腳輸入低電平,則相應(yīng)筆段的發(fā)光二極管發(fā)光;共陰極數(shù)碼管的所有發(fā)光二極管的陰極均接地,所以只要a-g及dp引腳輸入高電平,則相應(yīng)筆段的發(fā)光二極管發(fā)光。第52頁,課件共188頁,創(chuàng)作于2023年2月表3.4LED顯示器的字段碼顯示字符共陰極字碼段共陽極字碼段顯示字符共陰極字碼段共陽極字碼段00X3f0Xc090X6f0X9010X060Xf9A0X770X8820X5b0Xa4B0X7c0X8330X4f0Xb0C0X390Xc640X660X99D0X5e0Xa150X6d0X92E0X790X8660X7d0X82F0X710X8e70X070Xf8P0X730X8c80X7f0X80熄滅0X000Xff第53頁,課件共188頁,創(chuàng)作于2023年2月3.4.2數(shù)碼管靜態(tài)顯示

在靜態(tài)方式下,共陰極或共陽極公共端連接在一起接地或+5V;每一位顯示器的字段控制線是獨(dú)立的。當(dāng)顯示某一字符時(shí),該位的各字字段線和字位線的電平不變,也就是各字段的亮滅狀態(tài)不變。靜態(tài)顯示方式編程簡單,但占用I/O口線多,適合于顯示器位數(shù)較少的場合。第54頁,課件共188頁,創(chuàng)作于2023年2月圖3.15四位靜態(tài)LED顯示器電路靜態(tài)數(shù)碼顯示每一個(gè)數(shù)碼管的顯示筆畫都要占用單獨(dú)的具有鎖存功能的I/O接口。即需N×8個(gè)I/O控制線第55頁,課件共188頁,創(chuàng)作于2023年2月靜態(tài)顯示數(shù)碼管相應(yīng)筆段一直處于點(diǎn)亮狀態(tài),因此功耗大,而且占用硬件資源多,幾乎只能用在顯示位數(shù)極少的場合。優(yōu)點(diǎn):LED亮度高,可用在室外顯示場合。程序工作量小。第56頁,課件共188頁,創(chuàng)作于2023年2月圖3.16靜態(tài)顯示典型電路所謂外部地址指P2,P0口輸出相應(yīng)值之后,能影響某些器件使之工作在鎖存、譯碼、流向變、公共端電壓變化等時(shí)間上變化的狀態(tài);第57頁,課件共188頁,創(chuàng)作于2023年2月3.4.3數(shù)碼管動(dòng)態(tài)顯示

動(dòng)態(tài)顯示的硬件特點(diǎn)是將所有數(shù)碼管的同名段選線并聯(lián)在一起,通過控制位選信號來控制數(shù)碼管的點(diǎn)亮,如圖3.15所示。數(shù)碼管采用動(dòng)態(tài)掃描顯示,所謂動(dòng)態(tài)掃描顯示就是逐位輪流點(diǎn)亮每位顯示器,即每個(gè)數(shù)碼管的位選被輪流選中,多個(gè)數(shù)碼管共用一組段選,字形碼僅對位選被選中的數(shù)碼管有效。第58頁,課件共188頁,創(chuàng)作于2023年2月圖3.17八位LED動(dòng)態(tài)顯示器電路動(dòng)態(tài)數(shù)碼顯示所有數(shù)碼管的8個(gè)筆畫段同名端連在一起,公共端各自獨(dú)立。即需N+8個(gè)I/O控制線第59頁,課件共188頁,創(chuàng)作于2023年2月動(dòng)態(tài)顯示是多只數(shù)碼管共享段碼線,通過位選線(公共端)逐位逐位分時(shí)進(jìn)行掃描顯示(任時(shí)刻只有一只點(diǎn)亮)。其優(yōu)點(diǎn)是占用硬件資源少,功耗小。軟件工作量大.

必須注意:掃描周期必須控制在視覺停頓時(shí)間內(nèi),一般在20ms以內(nèi),否則會(huì)出現(xiàn)閃爍或跳動(dòng)現(xiàn)象。最為廣泛的一種顯示方式。動(dòng)態(tài)顯示技術(shù)第60頁,課件共188頁,創(chuàng)作于2023年2月表3.58位動(dòng)態(tài)共陰LED顯示狀態(tài)(例:‘20100120’)位碼字段碼顯示狀態(tài)0Xfe0Xfd0Xfb0Xf70Xef0Xdf0Xbf0X7f0X3f0X5b0X060X3f0X3f0X060X3f0X5b02100102第61頁,課件共188頁,創(chuàng)作于2023年2月圖3.18動(dòng)態(tài)顯示典型電路所謂外部地址指P2,P0口輸出相應(yīng)值之后,能影響某些器件使之工作在鎖存、譯碼、流向變、公共端電壓變化等時(shí)間上變化的狀態(tài);第62頁,課件共188頁,創(chuàng)作于2023年2月3.4.4典型應(yīng)用

任務(wù):用8位數(shù)碼動(dòng)態(tài)顯示毛澤東誕辰年日期“18931226”。單片機(jī)的P0、P3口分別通過74LS245緩沖輸出,進(jìn)而分別控制8位共陰數(shù)碼管的段選和位選。第63頁,課件共188頁,創(chuàng)作于2023年2月圖3.198位數(shù)碼動(dòng)態(tài)顯示案例第64頁,課件共188頁,創(chuàng)作于2023年2月參考程序:#include<reg51.h>//包含51單片機(jī)的特殊定義codeunsignedchardis_d[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共陰極數(shù)碼管字段碼codeunsignedchardis_w[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//共陰極數(shù)碼管位碼voidDelay()//延時(shí){unsignedcharmun=200; while(mun--);}第65頁,課件共188頁,創(chuàng)作于2023年2月voidmain()//主程序{ while(1) { P3=dis_w[0];P0=dis_d[1];Delay();P0=0x00;//第一個(gè)數(shù)碼管顯示1 P3=dis_w[1];P0=dis_d[8];Delay();P0=0x00;//第二個(gè)數(shù)碼管顯示8 P3=dis_w[2];P0=dis_d[9];Delay();P0=0x00;//第三個(gè)數(shù)碼管顯示9 P3=dis_w[3];P0=dis_d[3];Delay();P0=0x00;//第四個(gè)數(shù)碼管顯示3 P3=dis_w[4];P0=dis_d[1];Delay();P0=0x00;//第五個(gè)數(shù)碼管顯示1 P3=dis_w[5];P0=dis_d[2];Delay();P0=0x00;//第六個(gè)數(shù)碼管顯示2 P3=dis_w[6];P0=dis_d[2];Delay();P0=0x00;//第七個(gè)數(shù)碼管顯示2 P3=dis_w[7];P0=dis_d[6];Delay();P0=0x00;//第八個(gè)數(shù)碼管顯示6 }}第66頁,課件共188頁,創(chuàng)作于2023年2月拓展提高

動(dòng)態(tài)數(shù)碼管顯示拖尾、重影如何解決?數(shù)碼管動(dòng)態(tài)顯示可能會(huì)出現(xiàn)拖尾、重影的現(xiàn)象,解決的方法是:①如果是先送位選信號,再送段選信號,則在換位時(shí),將段選信號清除;②如果是先送段選信號后送位選信號,則在換段時(shí),將位選信號清除。第67頁,課件共188頁,創(chuàng)作于2023年2月3.5鍵盤接口技術(shù)按鍵有什么作用?如何識別按鍵是否按下?當(dāng)人類將設(shè)置等數(shù)據(jù)信息傳入計(jì)算機(jī)系統(tǒng)時(shí),通常會(huì)采用鍵盤完成。單片機(jī)對于鍵盤的識別是通過讀取鍵盤對應(yīng)的高低電平信號來完成的。第68頁,課件共188頁,創(chuàng)作于2023年2月3.5.1概述

鍵盤接口的主要功能是對鍵盤上所按的鍵進(jìn)行識別。使用專用的硬件進(jìn)行識別的鍵盤稱為編碼鍵盤,使用軟件進(jìn)行識別的鍵盤稱為非編碼鍵盤,它具有結(jié)構(gòu)簡單、使用靈活等特點(diǎn),因此被廣泛應(yīng)用于單片機(jī)系統(tǒng)。第69頁,課件共188頁,創(chuàng)作于2023年2月

圖3.20按鍵觸點(diǎn)的機(jī)械抖動(dòng)過程圖3.19按鍵輸入電路第70頁,課件共188頁,創(chuàng)作于2023年2月軟件去抖動(dòng)

前沿抖動(dòng)穩(wěn)定后沿抖動(dòng)按鍵抖動(dòng)信號波形鍵盤消抖即檢測出鍵閉合后執(zhí)行一個(gè)延時(shí)程序,產(chǎn)生5ms~10ms的延時(shí),讓前沿抖動(dòng)消失后再一次檢測鍵的狀態(tài),如果仍保持閉合狀態(tài)電平,則確認(rèn)為真正有鍵按下。第71頁,課件共188頁,創(chuàng)作于2023年2月鍵盤消抖硬件消抖:如RC濾波電路第72頁,課件共188頁,創(chuàng)作于2023年2月鍵盤消抖硬件消抖:如雙穩(wěn)態(tài)電路:RS觸發(fā)器為常用的硬件消抖電路。CD第73頁,課件共188頁,創(chuàng)作于2023年2月3.5.2獨(dú)立鍵盤

獨(dú)立鍵盤的每一個(gè)按鍵的電路是獨(dú)立的,其中每個(gè)按鍵都獨(dú)立地占用一條I/O數(shù)據(jù)線,按鍵輸入均采用低電平有效。上拉電阻保證了按鍵斷開時(shí),I/O口線有確定的高電平。當(dāng)I/O口線內(nèi)部有上拉電阻時(shí),外電路可不接上拉電阻。對于獨(dú)立式鍵盤,一般采取逐條I/O口查詢的方式來確定閉合鍵的位置,即先逐位查詢每根I/O口線的輸入狀態(tài),如某一根I/O口線輸入為低電平,則可確認(rèn)該I/O口線所對應(yīng)的按鍵已按下,然后,再轉(zhuǎn)向該鍵的功能處理程序。典型電路如圖3.22所示。第74頁,課件共188頁,創(chuàng)作于2023年2月圖3.24獨(dú)立按鍵典型電路第75頁,課件共188頁,創(chuàng)作于2023年2月程序:#include<reg51.h>unsignedcharduan[8]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};unsignedcharwei[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};voiddelay(void){ unsignedi,j; for(i=0;i<20;i++) for(j=0;j<200;j++);}voidmain(){unsignedchari,j;第76頁,課件共188頁,創(chuàng)作于2023年2月while(1) { if((j=P1)!=0xff) //檢測是否有按鍵被按下

{ delay(); //延時(shí)消抖

if((j=P1)!=0xff) //再次檢測按鍵是否被按下

for(i=0;i<8;i++) //顯示

{ if(j==wei[i])P0=duan[i];} } else P0=0; }}第77頁,課件共188頁,創(chuàng)作于2023年2月3.5.3行列(矩陣)鍵盤行列式鍵盤又叫矩陣式鍵盤,行列式結(jié)構(gòu)的鍵盤顯然比獨(dú)立式鍵盤要復(fù)雜一些,識別也要復(fù)雜一些。它將I/O線的一部分作為行線,另一部分作為列線,按鍵設(shè)置在行線和列線的交叉點(diǎn)上,每一個(gè)按鍵占用兩條I/O數(shù)據(jù)線。如圖3.23所示,行列式鍵盤中,行、列線分別連接到按鍵開關(guān)的兩端,行線通過上拉電阻接到+5V上。當(dāng)無鍵按下時(shí),行線處于高電平狀態(tài);當(dāng)有鍵按下時(shí),行、列線將導(dǎo)通,此時(shí),行線電平將由與此行線相連的列線電平?jīng)Q定。這是識別按鍵是否按下的關(guān)鍵。第78頁,課件共188頁,創(chuàng)作于2023年2月行列式鍵盤結(jié)構(gòu)每一個(gè)按鍵的電路是由行列組成,每一個(gè)按鍵占用兩條I/O數(shù)據(jù)線。當(dāng)鍵盤按下時(shí),相應(yīng)的行列線呈現(xiàn)短路。1、行線輸出高電平、列線輸出低電平;檢測行線有電平變化表示有按鍵按下,否則沒有!2、依次使列線中某一列為低電平,其余為高,檢測行線電平變化的那一行電壓是否為低,為低就是此行列交界處的按鍵被按下!第79頁,課件共188頁,創(chuàng)作于2023年2月圖3.25矩陣鍵盤典型電路第80頁,課件共188頁,創(chuàng)作于2023年2月程序#include<reg51.h> #defineucharunsignedchar ucharcodedispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40};//0-9字符碼表

ucharcodekeytab[]={0x81,0x41,0x21,0x11,0x82,0x42,0x22,0x12,0x84, 0x44,0x24,0x14,0x88,0x48,0x28,0x18};//閉合鍵碼表

ucharcodedisbit[]={0x40,0x80};//兩位數(shù)碼位碼表

uchardisbuf[]={0,0};//兩位數(shù)碼段碼緩沖單元

voiddelay5ms();//延時(shí),用定時(shí)器完成

bitKeytest();//總判有無按鍵

voiddisplay(ucharx);//數(shù)碼顯示程序

ucharGetKeyNum();//獲得具體鍵值

程序見書P70第81頁,課件共188頁,創(chuàng)作于2023年2月3.5.4典型應(yīng)用設(shè)計(jì)一個(gè)0~9計(jì)數(shù)器,計(jì)數(shù)按鍵每按下一次,計(jì)數(shù)顯示加1,0~9循環(huán)計(jì)數(shù),清除按鍵按下則顯示清零。P73頁程序第82頁,課件共188頁,創(chuàng)作于2023年2月計(jì)數(shù)鍵清除鍵第83頁,課件共188頁,創(chuàng)作于2023年2月3.6中斷、定時(shí)接口技術(shù)

日常中斷的例子返回

你正在專心看書,突然電話鈴響,于是你記下正在看的書的頁數(shù),去接電話,接完電話后再回來接著看書。時(shí)間第84頁,課件共188頁,創(chuàng)作于2023年2月計(jì)算機(jī)中的中斷概念返回定義:中斷是指由于某種隨機(jī)事件的發(fā)生,計(jì)算機(jī)暫?,F(xiàn)行程序的運(yùn)行,轉(zhuǎn)去執(zhí)行另一程序(處理發(fā)生的事件),處理完畢后又自動(dòng)返回原來程序暫停的位置繼續(xù)運(yùn)行。將能引起中斷的事件稱為中斷源。CPU現(xiàn)行運(yùn)行的程序稱為主程序。處理隨機(jī)事件的程序稱為中斷服務(wù)子程序。第85頁,課件共188頁,創(chuàng)作于2023年2月處理突發(fā)事件,單片機(jī)有強(qiáng)大處理功能,它會(huì)自動(dòng)暫停正在處理的事件,轉(zhuǎn)去處理突發(fā)事件,突發(fā)事件處理完之后,繼續(xù)處理暫停的事件。第86頁,課件共188頁,創(chuàng)作于2023年2月

中斷技術(shù)的優(yōu)點(diǎn)提高工作效率

——CPU可以同多個(gè)外設(shè)“同時(shí)”工作實(shí)時(shí)處理

——CPU及時(shí)處理隨機(jī)事件(智能技術(shù))故障處理

——電源掉電、存儲(chǔ)出錯(cuò)、運(yùn)算溢出

第87頁,課件共188頁,創(chuàng)作于2023年2月3.6.1MCS-51單片機(jī)中斷系統(tǒng)的內(nèi)部結(jié)構(gòu)圖3.27單片機(jī)的中斷系統(tǒng)結(jié)構(gòu)第88頁,課件共188頁,創(chuàng)作于2023年2月表3.6中斷源及中斷向量入口地址中斷源入口地址說明硬件優(yōu)先0003H從P3.2引腳上的外部中斷申請高

低定時(shí)器0000BH從定時(shí)器0的溢出使TF0置位,發(fā)出中斷申請0013H從P3.3引腳上的外部中斷申請定時(shí)器1001BH從定時(shí)器1的溢出使TF1置位,發(fā)出中斷申請串行端口0023H一個(gè)串行幀的發(fā)送或接收完成后使中斷申請標(biāo)志TI(發(fā)送時(shí))或RI(接收時(shí))置位第89頁,課件共188頁,創(chuàng)作于2023年2月3.6.2中斷服務(wù)函數(shù)的編寫方法void函數(shù)名interruptn[usingm]m、n為正整數(shù),不允許使用表達(dá)式。n取值范圍0~4,對應(yīng)該中斷源的編號。通常對普通8051系列單片機(jī)來說,外部中斷0、定時(shí)器0、外部中斷1、定時(shí)器1、串口的中斷源編號依次為0、1、2、3、4。m取值范圍0~4。例如:voidserial_serviceinterrupt4using2{……;}KeilC51編譯器用特定的編譯器指令分配寄存器組。當(dāng)前工作寄存器由using指定,“using”后的變量為一個(gè)0~3的整數(shù)?!皍sing”只允許用于中斷函數(shù),它在中斷函數(shù)入口處將當(dāng)前寄存器組保留,并在中斷程序中使用指定的寄存器組,在函數(shù)退出前恢復(fù)原寄存器組。

第90頁,課件共188頁,創(chuàng)作于2023年2月編寫中斷函數(shù)時(shí)應(yīng)遵循下列規(guī)則:①不能進(jìn)行參數(shù)傳遞,如果中斷過程包括任何參數(shù)聲明,編譯器將產(chǎn)生一個(gè)錯(cuò)誤信息。②無返回值,如果想定義一個(gè)返回值將產(chǎn)生錯(cuò)誤,但是,如果返回整型值編譯器將不產(chǎn)生錯(cuò)誤信息,因?yàn)檎椭凳悄J(rèn)值,編譯器不能清楚識別。③在任何情況下不能直接調(diào)用中斷函數(shù),否則編譯器會(huì)產(chǎn)生錯(cuò)誤。第91頁,課件共188頁,創(chuàng)作于2023年2月④在中斷函數(shù)中調(diào)用的函數(shù)所使用的寄存器組必須與中斷函數(shù)相同,當(dāng)沒有使用using指令時(shí),編譯器會(huì)選擇一個(gè)寄存器組作絕對寄存器訪問。編程時(shí)必須保證按要求使用相應(yīng)寄存器組,而C編譯器不會(huì)對此檢查。⑤如果在中斷函數(shù)中執(zhí)行浮點(diǎn)運(yùn)算,必須保存浮點(diǎn)寄存器狀態(tài),當(dāng)沒有其他程序執(zhí)行浮點(diǎn)運(yùn)算時(shí),可以不保存。第92頁,課件共188頁,創(chuàng)作于2023年2月3.6.3外部中斷應(yīng)用

設(shè)計(jì)一個(gè)實(shí)現(xiàn)按鍵計(jì)數(shù)功能的設(shè)計(jì),并利用數(shù)碼管同步顯示按鍵的按下次數(shù)。圖3.28按鍵計(jì)數(shù)功能電路第93頁,課件共188頁,創(chuàng)作于2023年2月程序:#include<reg51.h>unsignedcharduan[2]={0};unsignedcharduanma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsignedchari=0,m=0;voidwz0()interrupt0 //外部中斷0服務(wù)子程序,用來記//錄按鍵按下的次數(shù){ if(++i>99) i=0; duan[0]=i/10; duan[1]=i%10;}第94頁,課件共188頁,創(chuàng)作于2023年2月voiddisplay()interrupt1 //利用中斷來控制數(shù)碼管的顯示{ staticunsignedcharl=0x01; TH0=0xff;TL0=0xc8; if(l==0x04) { l=0x01; m=0; }P0=0;P2=l;P0=duanma[duan[m]]; l<<=1; m++;}voidmain(){ TH0=0xff;TL0=0xc8; IE=0x8f;TMOD=0x51;TCON=0x55;IP=0x02; while(1);}計(jì)數(shù)器溢出一次,產(chǎn)生一次中斷,刷新當(dāng)前顯示內(nèi)容,溢出率決定顯示屏刷新頻率第95頁,課件共188頁,創(chuàng)作于2023年2月3.6.4定時(shí)/計(jì)數(shù)器中斷應(yīng)用

51系列單片機(jī)至少有兩個(gè)16位內(nèi)部定時(shí)器/計(jì)數(shù)器(T/C)。兩個(gè)基本定時(shí)器/計(jì)數(shù)器分別是定時(shí)器/計(jì)數(shù)器T/C0和T/C1,具有計(jì)數(shù)功能和定時(shí)功能。計(jì)數(shù)功能是指使用計(jì)數(shù)器的計(jì)數(shù)脈沖輸入端T0(P3.4)和T1(P3.5)對外部脈沖信號的計(jì)數(shù);定時(shí)功能是指對內(nèi)部晶振驅(qū)動(dòng)時(shí)鐘進(jìn)行計(jì)數(shù)。第96頁,課件共188頁,創(chuàng)作于2023年2月定時(shí)器T0由TH0和TL0組成,定時(shí)器T1由TH1和TL1組成,其中TH0(TH1)表示高8位,TL0(TL1)表示低8位。TMOD(見表1.13)寄存器用來確定工作方式;TCON是控制寄存器,用來控制T0和T1啟動(dòng)、計(jì)數(shù)、停止以及設(shè)置溢出標(biāo)志等。定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)圖見圖3.29。GATA=0表示啟動(dòng)不受外部中斷int0或int1的控制;否則受;C/T表示0為定時(shí)方式,1為計(jì)時(shí)方式!教材16頁!1.定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)圖3.29定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)第97頁,課件共188頁,創(chuàng)作于2023年2月在計(jì)數(shù)方式下,計(jì)數(shù)初值X=-待計(jì)數(shù)的值(n=13/16/8)。假使T/C0工作在計(jì)數(shù)器方式2,要求計(jì)數(shù)100個(gè)脈沖的計(jì)數(shù)初值X,那么X==156。第98頁,課件共188頁,創(chuàng)作于2023年2月在定時(shí)方式下,定時(shí)器/計(jì)數(shù)器對機(jī)器周期脈沖計(jì)數(shù)。如:若=12MHz,一個(gè)機(jī)器周期為us,要求定時(shí)器/計(jì)數(shù)器T0定時(shí)1ms,求計(jì)數(shù)初值。假使T0工作在工作方式1,設(shè)計(jì)數(shù)初值為X,則有:,即,將64536化為十六進(jìn)制,即0xFC18,把0xFC送入TH0,0x18送入TL0中即可完成1ms的定時(shí)。即:TH0=0xfc;TL0=0x18;第99頁,課件共188頁,創(chuàng)作于2023年2月或直接寫為以下語句,在程序編譯時(shí)會(huì)自動(dòng)計(jì)算表達(dá)式,換算成對應(yīng)的數(shù)值給TH和TL賦值:(注意:溢出問題)TH0=(65536-1000)/256;TL0=(65536-1000)%256;第100頁,課件共188頁,創(chuàng)作于2023年2月

若T0工作在工作方式0,設(shè)計(jì)數(shù)初值為X,則有:將7192化為二進(jìn)制,即1110000011000B,把高八位0xe0送入TH0,低五位0x18送入TL0中即可完成1ms的定時(shí)。即:TH0=0xe0;TL0=0x18;使用了tl0的低5位;;;或直接寫為以下語句:TH0=(8192-1000)/32;TL0=(8192-1000)%32;可以看出,在12MHz時(shí)鐘頻率下,工作方式2所能達(dá)到的最大定時(shí)時(shí)間為256us,在此例不適于直接定時(shí)。第101頁,課件共188頁,創(chuàng)作于2023年2月3.6.5 典型應(yīng)用——99-00鍵控倒計(jì)時(shí)秒表任務(wù)描述將單片機(jī)與數(shù)碼管、鍵盤接成如圖3.30所示兩位動(dòng)態(tài)顯示方式。開始時(shí),顯示“--”,按“定時(shí)”鍵后顯示0,此時(shí)按數(shù)值鍵(0-9)有效;按數(shù)值鍵(0-9)顯示定時(shí)時(shí)間,最大定時(shí)時(shí)間99s;第一次按“開始/結(jié)束”鍵開始倒計(jì)時(shí),時(shí)間間隔為1S,計(jì)時(shí)結(jié)束顯示“--”;第二次按“開始/結(jié)束”鍵停止倒計(jì)時(shí),第三次按“開始/結(jié)束”鍵結(jié)束倒計(jì)時(shí),顯示“--”第102頁,課件共188頁,創(chuàng)作于2023年2月圖3.3099-00鍵控倒計(jì)時(shí)秒表電路第103頁,課件共188頁,創(chuàng)作于2023年2月圖3.3100~99秒計(jì)數(shù)循環(huán)動(dòng)態(tài)顯示程序框圖第104頁,課件共188頁,創(chuàng)作于2023年2月/*兩位動(dòng)態(tài)顯示,00-99循環(huán)顯示,時(shí)間間隔1s*/#include<reg51.h>#defineucharunsignedcharucharcodedispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0-9字型碼表ucharcodedisbit[]={0x40,0x80};//位碼表uchardisbuf[]={0,0};ucharsecond=0,tcount=0;voidcaculate();voiddisplay();voiddelay5ms() ;voidmain(){ TMOD=0X10;//方式控制字初值:方式一、定時(shí)

TR1=1;//定時(shí)器一啟動(dòng)

while(1) { display(); caculate(); } }第105頁,課件共188頁,創(chuàng)作于2023年2月voidcaculate() //計(jì)數(shù)子函數(shù){ tcount++;//1次10ms到,改變定時(shí)次數(shù)

if(tcount==100)//100次10ms到,即1s到

{ tcount=0;//初始化定時(shí)次數(shù)

second++;//指向下一個(gè)顯示數(shù)據(jù)

if(second==100) second=0; }}voiddisplay() //動(dòng)態(tài)顯示子函數(shù){ uchari; disbuf[0]=dispcode[second/10]; //秒計(jì)數(shù)值的十位數(shù)字型碼

disbuf[1]=dispcode[second%10]; //秒計(jì)數(shù)值的個(gè)位數(shù)字型碼

for(i=0;i<2;i++) { P0=disbuf[i]; //向P0口送入段碼

P2=disbit[i]; //向P2口送入位碼

delay5ms(); //5ms定時(shí)

P2=0; //關(guān)位選,消隱

}}voiddelay5ms() { TH1=(65536-5000)/256; //設(shè)定定時(shí)初值高八位

TL1=(65536-5000)%256; //設(shè)定定時(shí)初值低八位

while(!TF1);//查詢,5ms到

TF1=0; //TF1清零} 第106頁,課件共188頁,創(chuàng)作于2023年2月3.7數(shù)模(D/A)轉(zhuǎn)換接口設(shè)計(jì)

為什么要用模數(shù)轉(zhuǎn)換?在實(shí)際生活中有何用?第107頁,課件共188頁,創(chuàng)作于2023年2月3.7.1概念

D/A轉(zhuǎn)換器(Digital-to-AnalogConverter)又叫數(shù)/模轉(zhuǎn)換器,即是將數(shù)字信號轉(zhuǎn)換成模擬信號(電壓或是電流的形式)。第108頁,課件共188頁,創(chuàng)作于2023年2月性能指標(biāo):1、分辨率(Resolution)是指D/A轉(zhuǎn)換器能分辨的最小輸出模擬增量,取決于輸入數(shù)字量的二進(jìn)制位數(shù)。

2、建立時(shí)間(EstablishingTime)是描述D/A轉(zhuǎn)換速度的快慢。3、轉(zhuǎn)換精度(ConversionAccuracy)指滿量程時(shí)DAC的實(shí)際模擬輸出值和理論值的接近程度。

4、偏移量誤差(OffsetError)偏移量誤差是指輸入數(shù)字量為零時(shí),輸出模擬量對零的偏移值。

5、線性度(Linearity)線性度是指DAC的實(shí)際轉(zhuǎn)換特性曲線和理想直線之間的最大偏移差。第109頁,課件共188頁,創(chuàng)作于2023年2月1.DAC0832內(nèi)部結(jié)構(gòu):8位雙緩沖器結(jié)構(gòu)的D/A轉(zhuǎn)換器。3.7.2D/A轉(zhuǎn)換芯片DAC0832DAC0832內(nèi)部結(jié)構(gòu)框圖DI0~7:轉(zhuǎn)換數(shù)據(jù)輸入(8位);CS:片選信號(輸入);ILE:數(shù)據(jù)鎖存允許信號(輸入);XFER:數(shù)據(jù)傳送控制信號(輸入);WR1:第一寫信號(輸入),與ILE共同控制輸入寄存器是數(shù)據(jù)直通方式還是數(shù)據(jù)鎖存方式;WR2:第2寫信號(輸入),與XFER共同控制DAC寄存器是數(shù)據(jù)直通方式還是數(shù)據(jù)鎖存方式;8位DACDAC寄存器輸入寄存器-+IOUT2IOUT1RfbVODI0~7AGNDILECS與與與WR1WR2XFERLE1LE2LE1(LE2)=0:鎖存;1:直通。王朝,馬漢;四大護(hù)法第110頁,課件共188頁,創(chuàng)作于2023年2月第111頁,課件共188頁,創(chuàng)作于2023年2月

DAC0830系列均為DIP20封裝,且管腳完全兼容,DAC0832的引腳如下圖所示。引腳功能如下:D0—D7:8位數(shù)字量輸入端

CS:

片選端,低有效ILE:數(shù)據(jù)鎖存允許

WR1

:寫控制信號1WR2:寫控制信號2

XFER

:數(shù)據(jù)傳送控制信號Iout1:電流輸出端1Iout2:電流輸出端2RFB:內(nèi)置反饋電阻端VREF:參考電壓源(-10V~+10V)

DGND:數(shù)字量地AGND:模擬量地Vcc:+5~+15V單電源供電端2.DAC0832的引腳結(jié)構(gòu)第112頁,課件共188頁,創(chuàng)作于2023年2月圖3.34DAC0832的工作原理爸爸,蹲下來,xx……3.DAC0832的工作原理第113頁,課件共188頁,創(chuàng)作于2023年2月單緩沖方式:

輸入寄存器和DAC寄存器共用一個(gè)地址,同時(shí)選通輸出,輸入數(shù)據(jù)在控制信號作用下,直接進(jìn)入DAC寄存器中;

WR1和WR2同時(shí)進(jìn)行,并且與CPU的WR相連,CPU對0832執(zhí)行一次寫操作,將數(shù)據(jù)直接寫入DAC寄存器中。

適用:只有一路模擬信號輸出或幾路模擬信號非同步輸出。4.DAC0832的工作模式第114頁,課件共188頁,創(chuàng)作于2023年2月雙緩沖器方式:

輸入寄存器和DAC寄存器分配有各自的地址,可分別選通用同時(shí)輸出多路模擬信號。

適用:同時(shí)輸出幾路模擬信號的場合,可構(gòu)成多個(gè)0832同步輸出電路。第115頁,課件共188頁,創(chuàng)作于2023年2月直通方式:

輸入寄存器和DAC寄存器始終輸出,輸入數(shù)據(jù)在控制信號WR作用下(或與單片機(jī)并口直接聯(lián)結(jié),無需WR),直接進(jìn)入DAC寄存器中;

適用:只有一路模擬信號輸出或幾路模擬信號非同步輸出。第116頁,課件共188頁,創(chuàng)作于2023年2月3.7.3典型應(yīng)用

圖3.38波形發(fā)生器P0口作為數(shù)據(jù)口,DAC0832采用直通接法,通過改變P0口輸出的數(shù)字量達(dá)到改變DAC0832輸出電壓的目的。根據(jù)不同波形的特點(diǎn)連續(xù)輸出一連串的數(shù)字量以達(dá)到產(chǎn)生不同波形的特目的。第117頁,課件共188頁,創(chuàng)作于2023年2月程序:#include<reg51.h>#include<math.h>unsignedcharbiao=0;voiddelay(unsignedcharm){ while(--m!=0);}voidbo()interrupt0 //按鍵切換函數(shù){ if(++biao==4) biao=0;}第118頁,課件共188頁,創(chuàng)作于2023年2月voidmain(){ unsignedchari=0;floatj=0.0; TCON=0X01;IE=0X81; while(1) { switch(biao) //根據(jù)biao的數(shù)值確定輸出的波形

{ case0:for(i=0;i<255;i++) //三角波

P0=i; for(i=255;i>0;i--) P0=i;break; case1:P0=0; //方波

delay(100); P0=0xff; delay(100); break;

第119頁,課件共188頁,創(chuàng)作于2023年2月case2:for(i=255;i>0;i--) //鋸齒波

P0=i; break;case3: for(j=0;j<6.28;j+=0.02) //正弦波

{ P0=(1+sin(j))*(2*2*2*2*2*2*2); for(i=0;i<200;i++) delay(20);} break; default:P0=0; } }}試用while或if語句替換switch第120頁,課件共188頁,創(chuàng)作于2023年2月3.8.1概念

A/D轉(zhuǎn)換器(AnalogToDigitConverter):將模擬量轉(zhuǎn)換為與之成比例的數(shù)字量的器件稱為A/D轉(zhuǎn)換器,常用ADC表示。A/D轉(zhuǎn)換器的性能指標(biāo)

(1)分辨率:分辨率是指輸出數(shù)字量變化一個(gè)相鄰數(shù)碼所需輸入模擬電壓的變化量。A/D轉(zhuǎn)換器的分辨率定義為滿刻度電壓與2n之比值,其中n為ADC的位數(shù)。

3.8模數(shù)(A/D)轉(zhuǎn)換接口設(shè)計(jì)第121頁,課件共188頁,創(chuàng)作于2023年2月(2)轉(zhuǎn)換速率與轉(zhuǎn)換時(shí)間:轉(zhuǎn)換速率是指A/D轉(zhuǎn)換器每秒鐘轉(zhuǎn)換的次數(shù)。轉(zhuǎn)換時(shí)間是指完成一次A/D轉(zhuǎn)換所需的時(shí)間(包括穩(wěn)定時(shí)間)。轉(zhuǎn)換時(shí)間是轉(zhuǎn)換速率的倒數(shù)。(3)量化誤差:有限分辨率A/D的階梯狀轉(zhuǎn)移特性曲線與理想無限分辨率A/D的轉(zhuǎn)移特性曲線(直線)之間的最大偏差稱為量化誤差。通常是1個(gè)或半個(gè)最小數(shù)字量的模擬變化量,表示為1LSB,1/2LSB。(4)線性度:實(shí)際A/D轉(zhuǎn)換器的轉(zhuǎn)移函數(shù)與理想直線的最大偏差。不包括量化誤差、偏移誤差(輸入信號為零時(shí),輸出信號不為零的值)和滿刻度誤差(滿度輸出時(shí),對應(yīng)的輸入信號與理想輸入信號值之差)三種誤差。(5)量程:量程是指A/D能夠轉(zhuǎn)換的電壓范圍,如0~5V,-10~+10V等。(6)其他指標(biāo):內(nèi)部/外部電壓基準(zhǔn)、失調(diào)(零點(diǎn))溫度系數(shù)、增益溫度系數(shù),以及電源電壓變化抑制比等性能指標(biāo)。

第122頁,課件共188頁,創(chuàng)作于2023年2月A/D轉(zhuǎn)換器應(yīng)具備如下一些特性:①模擬輸入,可以是單信道或多信道模擬輸入;②參考輸入電壓,該電壓可由外部提供,也可以在ADC內(nèi)部產(chǎn)生;③頻率輸入,通常由外部提供,用于確定ADC的轉(zhuǎn)換速率④電源輸入,通常有模擬和數(shù)字電源接腳;⑤數(shù)字輸出,ADC可以提供平行或串行的數(shù)字輸出。第123頁,課件共188頁,創(chuàng)作于2023年2月3.8.2典型A/D集成芯片——ADC08091.AD0808/0809內(nèi)部結(jié)構(gòu)第124頁,課件共188頁,創(chuàng)作于2023年2月2.ADC0808/0809引腳功能

IN0—IN7:8通道模擬量輸入端

2-8—2-1:8位數(shù)字量輸出端C、B、A:接地址鎖存器的低三位地址ALE:地址鎖存允許控制信號START:清0內(nèi)寄存器,啟動(dòng)轉(zhuǎn)換OE:允許讀A/D結(jié)果,高有效CLK:時(shí)鐘輸入端,范圍為10kHz~1200kHz,典型值640kHzEOC:轉(zhuǎn)換結(jié)束時(shí)為高Vcc:+5VVref+:參考電壓,+5VVref-:0VAD0808系列:0808和0809(區(qū)別是最大不可調(diào)誤差1/2和1LSB)第125頁,課件共188頁,創(chuàng)作于2023年2月表3.7通道選擇表CBA選擇的通道000IN0001IN1010IN2011IN3100IN4101IN5110IN6111IN7第126頁,課件共188頁,創(chuàng)作于2023年2月圖3.41ADC0808、0809時(shí)序圖3.ADC0808/0809應(yīng)用說明

此圖不靠譜,參考教材92頁圖第127頁,課件共188頁,創(chuàng)作于2023年2月ADC0808/0809與單片機(jī)連接:轉(zhuǎn)換數(shù)據(jù)的傳送:①定時(shí)傳送方式;(不需接EOC腳)②查詢方式;(測試EOC腳的狀態(tài))③中斷方式。(EOC腳接INT腳)注:(1)不能用無條件方式;(2)2個(gè)ALE不能相接。涉及2個(gè)問題:(1)8路模擬信號通道選擇;(2)A/D轉(zhuǎn)換完成后轉(zhuǎn)換數(shù)據(jù)的傳送。ADC0808的口地址:FEFFH;8路模擬通道的地址:FEF8H~FEFFH。IN0~7AD0~7ALEINTWRP2.0RDD0~7ADDABC

CLKEOCSTARTALEOE≥11MCS-51ADC080883≥1第128頁,課件共188頁,創(chuàng)作于2023年2月3.8.3典型應(yīng)用

ADC0808將輸入的電壓信號(模擬信號)轉(zhuǎn)換成數(shù)字量后觸發(fā)單片機(jī)的外部中斷。單片機(jī)通過對外部中斷的處理來達(dá)到電壓數(shù)字量的讀取。數(shù)碼管用來顯示電壓信號所對應(yīng)的數(shù)字量。第129頁,課件共188頁,創(chuàng)作于2023年2月圖3.42模數(shù)轉(zhuǎn)換典型電路eoc沒有轉(zhuǎn)換結(jié)束時(shí)為低,轉(zhuǎn)換結(jié)束為高oe為允許讀轉(zhuǎn)換數(shù)據(jù),由單片機(jī)輸給ad第130頁,課件共188頁,創(chuàng)作于2023年2月程序:#include<reg51.h>unsignedcharduanma[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsignedcharshu[3]={0};unsignedcharj=0,l=0;sbitSTART=P3^0;sbitOE=P3^3;sbitADDA=P3^4;sbitBDDB=P3^5;sbitCDDC=P3^6;sbitALE=P3^7;第131頁,課件共188頁,創(chuàng)作于2023年2月voiddelay(unsignedm){ while(--m);}voidsm()interrupt1 //顯示函數(shù){ staticunsignedchari=0x01,j=0; TH0=0xfc;TL0=0x18; P0=0; P2=~i; P0=duanma[shu[j]]; j++; i<<=1; if(i==8){i=0x01;j=0;}}

第132頁,課件共188頁,創(chuàng)作于2023年2月

voiddu()interrupt0 //AD轉(zhuǎn)換完成后讀取電壓的數(shù)字量

{ OE=1; l=P1;}

voidmain(){ADDA=0;BDDB=0,CDDC=0;ALE=0;delay(100);ALE=1;delay(100);ALE=0;TCON=0X10;IE=0X83;TMOD=0X01;TH0=0xfc;TL0=0x18; while(1) { START=0;delay(10);START=1;delay(10);START=0; delay(100); shu[0]=l/100; //將AD轉(zhuǎn)換的數(shù)值進(jìn)行顯示前的預(yù)處理

shu[1]=l%100/10; shu[2]=l%10; }}第133頁,課件共188頁,創(chuàng)作于2023年2月3.9串行通信接口設(shè)計(jì)3.9.1串行通信基本概念

1.兩種常見的通信技術(shù)簡介—串口通信和并口通信在計(jì)算機(jī)中通信中,有兩種常見的通信技術(shù),串行通信和并行通信。并行通信:數(shù)據(jù)的各位(二進(jìn)制)同時(shí)發(fā)送或接收。特點(diǎn)是傳送速度快、效率高,但成本高。適用于短距離傳送數(shù)據(jù)。計(jì)算機(jī)內(nèi)部的數(shù)據(jù)傳送一般均采用并行方式。第134頁,課件共188頁,創(chuàng)作于2023年2月串行通信:數(shù)據(jù)一位一位(二進(jìn)制)順序發(fā)送或接收。特點(diǎn)是傳送速度慢,但成本低。適用于較長距離傳送數(shù)據(jù)。計(jì)算機(jī)與外界的數(shù)據(jù)傳送一般均采用串行方式。串行通信長距離傳輸中常用RS232C、RS485協(xié)議。第135頁,課件共188頁,創(chuàng)作于2023年2月2.RS232C和RS485協(xié)議RS-232C是異步串行通信中應(yīng)用最廣泛的標(biāo)準(zhǔn)總線,是美國EIA(ElectronicIndustriesAssociation,電子工業(yè)聯(lián)合會(huì))開發(fā)公布的通信協(xié)議。適合于數(shù)據(jù)傳輸速率在0~20kb/s范圍內(nèi)的通信,包括了按位串行傳輸?shù)碾姎夂蜋C(jī)械方面的規(guī)定。在微機(jī)通信接口中被廣泛采用。其特點(diǎn)為:采取不平衡傳輸方式,是為點(diǎn)對點(diǎn)(即只用一對收、發(fā)設(shè)備)通信而設(shè)計(jì)的。第136頁,課件共188頁,創(chuàng)作于2023年2月RS485協(xié)議同RS232協(xié)議,也是異步串行通信中應(yīng)用最廣泛的標(biāo)準(zhǔn)總線。特點(diǎn):平衡發(fā)送、平衡接收,抗干擾能力強(qiáng);多達(dá)32對收發(fā)器;發(fā)送/接收器小于32對;需要終端匹配電阻2×120Ω;信號不需要調(diào)制與解調(diào)。第137頁,課件共188頁,創(chuàng)作于2023年2月3.RS232串行通信線的常用連接方法①最簡單連接法,這也是最常用的連接方法,如圖3.43所示圖3.43串口數(shù)據(jù)線最簡單連接法第138頁,課件共188頁,創(chuàng)作于2023年2月②完全連接法,如圖3.44所示:圖3.44串口數(shù)據(jù)線的完全連接法

第139頁,課件共188頁,創(chuàng)作于2023年2月4.串口通信中的RS232與RS485特性(I)電氣特性①電平邏輯RS232負(fù)邏輯:邏輯1(MARK)=-3V~-15V,邏輯0(SPACE)=+3~+15V。RS485正邏輯:邏輯“1”以兩線間的電壓差為+(2—6)V表示;邏輯“0”以兩線間的電壓差為-(2—6)V表示。②傳輸最高速率RS232:20kbpsRS-485:10Mbps第140頁,課件共188頁,創(chuàng)作于2023年2月③最大傳輸距離RS232:15mRS-485:1500m④通信方式RS232:全雙工RS-485:半雙工⑤常用電平轉(zhuǎn)換芯片RS232:MAX232和MAX232ARS485:MAX487第141頁,課件共188頁,創(chuàng)作于2023年2月(2)機(jī)械特性①RS-232C標(biāo)準(zhǔn)接口有25條線,其中常用的有如下9條:DCD(1):接收線信號檢出;RXD(2):接收數(shù)據(jù);TXD(3):發(fā)送數(shù)據(jù);DTR(4):數(shù)據(jù)終端準(zhǔn)備好;GND(5)

:地線。DSR(6):數(shù)據(jù)裝置準(zhǔn)備好;RTS(7):請求發(fā)送;CTS(8):允許發(fā)送;RI(9):振鈴指示;②RS-485:二根連線,屏蔽雙絞線第142頁,課件共188頁,創(chuàng)作于2023年2月(3)TTL與RS232C電氣轉(zhuǎn)換

由于TTL電平與RS232C電平的電氣特性不一樣,所以在單片機(jī)系統(tǒng)與PC機(jī)進(jìn)行串口通信時(shí),需要進(jìn)行電氣轉(zhuǎn)換。電氣轉(zhuǎn)換電路可以使用集成電路,如MAX232芯片,電路圖如圖3.45所示。第143頁,課件共188頁,創(chuàng)作于2023年2月圖3.45TTL與RS232C電氣轉(zhuǎn)換電路第144頁,課件共188頁,創(chuàng)作于2023年2月5.波特率波特率是衡量串行通信速率的重要指標(biāo),波特率是指每秒鐘傳送信號的數(shù)量,單位為波特(Baud)。比特率每秒鐘傳送二進(jìn)制數(shù)的信號數(shù)(即二進(jìn)制數(shù)的位數(shù)),單位是bps(bitpersecond)或?qū)懗蒪/s(位/秒)。在單片機(jī)串行通信中,傳送的信號是二進(jìn)制信號,波特率與比特率數(shù)值上相等。單位采用bps。波特率和距離成反比,其關(guān)系如表3.8所示。第145頁,課件共188頁,創(chuàng)作于2023年2月表3.8波特率和距離的關(guān)系波特率(bps)1號電纜傳輸距離(英尺)其中:1英尺=0.305米2號電纜傳輸距離(英尺)其中:1英尺=0.305米11050003000300500030001200300030002400100050048001000250第146頁,課件共188頁,創(chuàng)作于2023年2月3.9.2MCS51串行通信接口設(shè)計(jì)1.單純發(fā)送從

溫馨提示

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

評論

0/150

提交評論