




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
單片機應用系統(tǒng)的接口設計第1頁,課件共188頁,創(chuàng)作于2023年2月學習目標掌握單片機最小系統(tǒng)設計掌握單片機外擴存儲器方法掌握單片機接口技術掌握單片機中斷及定時器應用了解模數(shù)、串口通信第2頁,課件共188頁,創(chuàng)作于2023年2月3.1最小系統(tǒng)3.2總線及接口擴展3.3內(nèi)存擴展設計技術3.4LED、數(shù)碼顯示設計3.5鍵盤接口技術3.6中斷、定時接口技術3.7數(shù)模(D/A)轉(zhuǎn)換接口設計3.8模數(shù)(A/D)轉(zhuǎn)換接口設計3.9串行通信接口設計3.10常見問題主要內(nèi)容第3頁,課件共188頁,創(chuàng)作于2023年2月3.1最小系統(tǒng)
什么是單片機最小系統(tǒng)?最小系統(tǒng)是指單片機運行的最基本的硬件,是單片機正常工作的基本保障。為什么要做最小系統(tǒng)?最小系統(tǒng)主要用來判斷系統(tǒng)是否可完成正常的啟動與運行。第4頁,課件共188頁,創(chuàng)作于2023年2月MCS51單片機最小系統(tǒng)電路除電源外,主要由三大塊組成:復位電路、時鐘電路和單片機,如圖3.1所示。圖3.1MCS-51最小系統(tǒng)第5頁,課件共188頁,創(chuàng)作于2023年2月3.1.1復位電路單片機系統(tǒng)是由硬件和軟件構成的,軟件是由程序組成的。程序則由系列指令構成,正常情況下,希望系統(tǒng)運行時是從程序的固定位置(入口處)開始執(zhí)行,復位的目的就是保證程序從入口處運行,若不能保證復位要求,程序則很可能不從規(guī)定處執(zhí)行,會造成意想不到的問題,如“死機”、“跑飛”。系統(tǒng)為什么要用復位電路?第6頁,課件共188頁,創(chuàng)作于2023年2月單片機在啟動時都需要復位,以使CPU及系統(tǒng)各部件處于確定的初始狀態(tài),并從初態(tài)開始工作。當系統(tǒng)處于正常工作狀態(tài)時,且振蕩器穩(wěn)定后,從單片機的復位引腳RST輸入一個高電平并維持2個機器周期(24個振蕩周期)以上,則CPU就可以響應并將系統(tǒng)復位。單片機系統(tǒng)基本的復位方式有:上電復位和手動按鈕復位
第7頁,課件共188頁,創(chuàng)作于2023年2月(a)上電復位
(b)手動按鈕復位
圖3.2復位電路說明:復位電路中的器件取值可以根據(jù)所使用的時鐘電路頻率,滿足高電平大于兩個機器周期(24個振蕩周期)。圖上給出的值是在6MHz晶振狀態(tài)下,單片機復位電路的典型值。第8頁,課件共188頁,創(chuàng)作于2023年2月3.1.2時鐘、振蕩電路單片機時鐘電路是用來配合外部晶振產(chǎn)生單片機工作所需的時鐘信號。該電路為單片機提供運行時鐘,是控制單片機運行速度的節(jié)拍。如果運行時鐘為0脈沖,則單片機不工作;若超出單片機的正常工作頻率則會使單片機超負荷運行,直至導致芯片發(fā)燙、燒毀。單片機時鐘電路有內(nèi)部時鐘和外部時鐘電路兩種。單片機時鐘電路的作用是什么?第9頁,課件共188頁,創(chuàng)作于2023年2月3.2總線及接口擴展
計算機總線是什么?總線(Bus)是計算機各種功能部件之間傳送信息的公共通信干線,它是由導線組成的傳輸線束。計算機總線傳輸?shù)男盘柺请妷哼€是電流信號?一般情況下傳輸?shù)男盘柺且噪妷盒问匠霈F(xiàn)的。第10頁,課件共188頁,創(chuàng)作于2023年2月3.2.1三總線概念
按照計算機所傳輸?shù)男畔⒎N類,計算機的總線可以劃分為數(shù)據(jù)總線DB、地址總線AB和控制總線CB,分別用來傳輸數(shù)據(jù)、數(shù)據(jù)地址和控制信號。第11頁,課件共188頁,創(chuàng)作于2023年2月圖3.3MCS51單片機總線引腳結構第12頁,課件共188頁,創(chuàng)作于2023年2月3.2.2總線接口常用芯片
74LS373鎖存器 8D鎖存器 8輸入:1D~8D 8輸出:1O~8O 輸入允許端:OE(1) 輸出預選端:G(11)74LS373電平觸發(fā),鎖存緩沖74LS374上升沿觸發(fā)74LS273無三態(tài)門,用于不需三態(tài)場合74LS1383-8譯碼器74LS2448路單向數(shù)據(jù)緩沖器74LS2458路雙向數(shù)據(jù)緩沖器 緩沖器:無鎖存功能,在外設和CPU之間起緩沖 驅(qū)動和隔離作用??偩€緩沖器具有三態(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為高時輸出隨輸入;LE為低時,輸出不變; 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位鎖存器的控制端,當LE=1,則輸出跟隨輸入(即鎖存器透明),當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位鎖存器的控制端,當LE=1,則輸出跟隨輸入(即鎖存器透明);當LE=0,則輸出保持不變74LS373是常用的地址鎖存器芯片,共有20個引腳。它實質(zhì)是一個是帶三態(tài)緩沖輸出的8D觸發(fā)器,在單片機系統(tǒng)中為了擴展外部存儲器,通常需要一塊74ls373芯片。
第19頁,課件共188頁,創(chuàng)作于2023年2月74LS245是常用雙向三態(tài)總線緩沖、驅(qū)動器,可雙向傳輸數(shù)據(jù),共有20個引腳。圖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ā)光,電流越大,亮度越強,但若電流過大會燒毀二極管,一般控制在3~20mA。工作電壓:紅色發(fā)光二極管1.7-2.5V
綠色發(fā)光二極管2.0-2.4V
黃色發(fā)光二極管1.9-2.4V
藍/白色發(fā)光二極管3.0-3.8V限流電阻二極管串聯(lián)電阻的目的是為了防止發(fā)光二極管和P1.7引腳流過的電流過大,燒毀二極管或單片機,所以該電阻也稱為“限流電阻”。限流電阻的選擇:假設電源電壓為VCC,發(fā)光二極管的導通壓降為VDD,導通時流過二極管的電流為I,則限流電阻R為:VCC-VDD=IR第21頁,課件共188頁,創(chuàng)作于2023年2月寫地址PO鎖存低地址的時序Dn為輸入端;On為輸出;LE為8位鎖存器的控制端,當LE=1,則輸出跟隨輸入(即鎖存器透明);當LE=0,則輸出保持不變ALE、WR由CPU自動產(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的動態(tài)變化;在P0輸出數(shù)據(jù)之后有跳變,有下降的過程;結合54頁的時序圖可以通過wr控制74138再控制7404輸出信號到74373最終控制數(shù)據(jù)的鎖存;4、p0口輸出低地址的過程沒有被鎖存;第23頁,課件共188頁,創(chuàng)作于2023年2月
3.2.3典型電路圖3.7通過74LS245擴展單片機的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作相應改動1為P0口出來的,2為p2口出來的;按照abcd的流向走此例中373鎖存的是數(shù)據(jù)第25頁,課件共188頁,創(chuàng)作于2023年2月2-D2-A至2-B至2-C(需要輔助單片機的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作相應改動所謂外部地址指P2,P0口輸出相應值之后,能影響某些器件使之工作在鎖存、譯碼、流向變、公共端電壓變化等時間上變化的狀態(tài);1-b1的le為高時,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; //定義兩個指針,并給指針賦值 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)存擴展設計技術
單片機的I/O口的數(shù)量是有限的,當其數(shù)量不夠的情況下,我們需要擴展I/O口的數(shù)量。為什么要擴展?擴展什么?
第30頁,課件共188頁,創(chuàng)作于2023年2月3.3.1MCS-51單片機擴展技術51頁1、擴展依據(jù)地址總線(AddressBus,AB)由P0口和P2口提供,其寬度為兩個字節(jié)(16位),故可尋址范圍為2Byte=64KByte。其中地址總線的低8位A7~A0由P0口經(jīng)地址鎖存器提供,P2口直接提供地址總線的高8位A15~A8。P0口是數(shù)據(jù)、地址分時復用的,所以P0口輸出的低8位地址必須用鎖存器進行鎖存。由于P2口一直提供高8位地址,故不需要外加地址鎖存器。P0、P2口在系統(tǒng)擴展中用作地址線后,便不能再作為一般I/O口使用。16第31頁,課件共188頁,創(chuàng)作于2023年2月數(shù)據(jù)總線(DataBus,DB)由P0口提供,其寬度為一個字節(jié)(8位)??刂瓶偩€(ControlBus,CB)是單片機發(fā)出的以控制片外ROM、RAM和I/O口讀/寫操作的一組控制線??刂瓶偩€包括片外系統(tǒng)擴展用控制線和片外信號對單片機的控制線。系統(tǒng)擴展所用控制線包括WR,RD,PSEN,EA和ALE。第32頁,課件共188頁,創(chuàng)作于2023年2月圖3.8單片機三總線示意圖第33頁,課件共188頁,創(chuàng)作于2023年2月2、擴展能力MCS51單片機地址線為16位,因此在片外可擴展的存儲器最大容量為64KByte,地址為0x0~0xFFFF。由于對片外數(shù)據(jù)存儲器和程序存儲器的訪問使用不同的指令及控制信號,所以允許兩者地址重合,即對于8051系列單片機來說,片外可擴展的程序存儲器與數(shù)據(jù)存儲器的最大容量均為64KB。片外數(shù)據(jù)存儲器地址為0x0~0xFFFF。第34頁,課件共188頁,創(chuàng)作于2023年2月當片內(nèi)程序存儲器與片外程序存儲器的訪問使用相同的操作指令,對兩者的選擇則靠系統(tǒng)控制線來實現(xiàn)。當EA=0時,選擇片外程序存儲器,即無論片內(nèi)有無程序存儲器,片外程序存儲器的地址可從0x0開始進行編址。當EA=1時,選片內(nèi)程序存儲器,若片內(nèi)程序存儲器容量為4KByte,則其地址為0x0~0x0FFF,片外程序存儲器地址只能從0x1000開始編址。第35頁,課件共188頁,創(chuàng)作于2023年2月(3)擴展的實現(xiàn)數(shù)據(jù)總線以P0口作8位數(shù)據(jù)的總線。數(shù)據(jù)總線的數(shù)據(jù)流是雙向的,單片機有入和出。地址總線以P0口的低8位地址加上P2的高8位地址就可以形成16位的地址總線,達到64KByte的尋址能力。地址總線的數(shù)據(jù)流是單片機發(fā)出的,是單向的。第36頁,課件共188頁,創(chuàng)作于2023年2月控制信號總線ALE:地址鎖存信號,用以實現(xiàn)對低8位地址的鎖存。
:片外程序存儲器選通信號。
:程序存儲器選擇信號。為低電平時,訪問外部程序存儲器;為高電平時,訪問內(nèi)部程序存儲器。
:片外數(shù)據(jù)存儲器寫控制信號。
:片外數(shù)據(jù)存儲器讀控制信號。第37頁,課件共188頁,創(chuàng)作于2023年2月總線驅(qū)動在單片機應用系統(tǒng)中,擴展的三總線上掛接很多負載,如存儲器、并行接口、A/D接口、顯示接口等,但總線接口的負載能力有限,因此常常需要通過連接總線驅(qū)動器進行總線驅(qū)動。總線驅(qū)動器對于單片機的I/O口只相當于增加了一個TTL負載,因此驅(qū)動器除了對后級電路驅(qū)動外,還能對負載的波動變化起隔離作用。在對TTL負載驅(qū)動時,只需考慮驅(qū)動電流的大小。在對MOS負載驅(qū)動時,MOS負載的輸入電流很小,更多地要考慮對分布電容的電流驅(qū)動。第38頁,課件共188頁,創(chuàng)作于2023年2月數(shù)據(jù)總線是雙向的,其驅(qū)動器也要選用雙向的,如74LS245。74LS245也是三態(tài)的,有一個方向控制端DIR。DIR=1時輸出(An→Bn),DIR=0時輸入(An←Bn)。系統(tǒng)總線中地址總線是單向的,因此驅(qū)動器可以選用單向的,如74LS244,還帶有三態(tài)控制,能實現(xiàn)總線緩沖和隔離。第39頁,課件共188頁,創(chuàng)作于2023年2月4、典型案例圖3.9簡單I/O接口擴展第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) //判斷輸入改變時,
{*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典型應用
圖3.11存儲器擴展第44頁,課件共188頁,創(chuàng)作于2023年2月3.4LED、數(shù)碼顯示設計將系統(tǒng)正在運行的狀態(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ù){ 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ù)碼管的結構與原理
LED數(shù)碼管的結構如圖3.14所示,圖中a-g七個筆段及小數(shù)點dp均為發(fā)光二極管。如果將所有發(fā)光二極管的陽極連在一起作為公共端,稱為共陽數(shù)碼管;如果將所有發(fā)光二極管的陰極連在一起作為公共端,稱為共陰數(shù)碼管。第51頁,課件共188頁,創(chuàng)作于2023年2月(a)共陰極;(b)共陽極;(c)管腳配置圖3.14LED顯示器共陽數(shù)碼管的所有發(fā)光二極管的陽極均接高電平,所以只要a-g及dp引腳輸入低電平,則相應筆段的發(fā)光二極管發(fā)光;共陰極數(shù)碼管的所有發(fā)光二極管的陰極均接地,所以只要a-g及dp引腳輸入高電平,則相應筆段的發(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;每一位顯示器的字段控制線是獨立的。當顯示某一字符時,該位的各字字段線和字位線的電平不變,也就是各字段的亮滅狀態(tài)不變。靜態(tài)顯示方式編程簡單,但占用I/O口線多,適合于顯示器位數(shù)較少的場合。第54頁,課件共188頁,創(chuàng)作于2023年2月圖3.15四位靜態(tài)LED顯示器電路靜態(tài)數(shù)碼顯示每一個數(shù)碼管的顯示筆畫都要占用單獨的具有鎖存功能的I/O接口。即需N×8個I/O控制線第55頁,課件共188頁,創(chuàng)作于2023年2月靜態(tài)顯示數(shù)碼管相應筆段一直處于點亮狀態(tài),因此功耗大,而且占用硬件資源多,幾乎只能用在顯示位數(shù)極少的場合。優(yōu)點:LED亮度高,可用在室外顯示場合。程序工作量小。第56頁,課件共188頁,創(chuàng)作于2023年2月圖3.16靜態(tài)顯示典型電路所謂外部地址指P2,P0口輸出相應值之后,能影響某些器件使之工作在鎖存、譯碼、流向變、公共端電壓變化等時間上變化的狀態(tài);第57頁,課件共188頁,創(chuàng)作于2023年2月3.4.3數(shù)碼管動態(tài)顯示
動態(tài)顯示的硬件特點是將所有數(shù)碼管的同名段選線并聯(lián)在一起,通過控制位選信號來控制數(shù)碼管的點亮,如圖3.15所示。數(shù)碼管采用動態(tài)掃描顯示,所謂動態(tài)掃描顯示就是逐位輪流點亮每位顯示器,即每個數(shù)碼管的位選被輪流選中,多個數(shù)碼管共用一組段選,字形碼僅對位選被選中的數(shù)碼管有效。第58頁,課件共188頁,創(chuàng)作于2023年2月圖3.17八位LED動態(tài)顯示器電路動態(tài)數(shù)碼顯示所有數(shù)碼管的8個筆畫段同名端連在一起,公共端各自獨立。即需N+8個I/O控制線第59頁,課件共188頁,創(chuàng)作于2023年2月動態(tài)顯示是多只數(shù)碼管共享段碼線,通過位選線(公共端)逐位逐位分時進行掃描顯示(任時刻只有一只點亮)。其優(yōu)點是占用硬件資源少,功耗小。軟件工作量大.
必須注意:掃描周期必須控制在視覺停頓時間內(nèi),一般在20ms以內(nèi),否則會出現(xiàn)閃爍或跳動現(xiàn)象。最為廣泛的一種顯示方式。動態(tài)顯示技術第60頁,課件共188頁,創(chuàng)作于2023年2月表3.58位動態(tài)共陰LED顯示狀態(tài)(例:‘20100120’)位碼字段碼顯示狀態(tài)0Xfe0Xfd0Xfb0Xf70Xef0Xdf0Xbf0X7f0X3f0X5b0X060X3f0X3f0X060X3f0X5b02100102第61頁,課件共188頁,創(chuàng)作于2023年2月圖3.18動態(tài)顯示典型電路所謂外部地址指P2,P0口輸出相應值之后,能影響某些器件使之工作在鎖存、譯碼、流向變、公共端電壓變化等時間上變化的狀態(tài);第62頁,課件共188頁,創(chuàng)作于2023年2月3.4.4典型應用
任務:用8位數(shù)碼動態(tài)顯示毛澤東誕辰年日期“18931226”。單片機的P0、P3口分別通過74LS245緩沖輸出,進而分別控制8位共陰數(shù)碼管的段選和位選。第63頁,課件共188頁,創(chuàng)作于2023年2月圖3.198位數(shù)碼動態(tài)顯示案例第64頁,課件共188頁,創(chuàng)作于2023年2月參考程序:#include<reg51.h>//包含51單片機的特殊定義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()//延時{unsignedcharmun=200; while(mun--);}第65頁,課件共188頁,創(chuàng)作于2023年2月voidmain()//主程序{ while(1) { P3=dis_w[0];P0=dis_d[1];Delay();P0=0x00;//第一個數(shù)碼管顯示1 P3=dis_w[1];P0=dis_d[8];Delay();P0=0x00;//第二個數(shù)碼管顯示8 P3=dis_w[2];P0=dis_d[9];Delay();P0=0x00;//第三個數(shù)碼管顯示9 P3=dis_w[3];P0=dis_d[3];Delay();P0=0x00;//第四個數(shù)碼管顯示3 P3=dis_w[4];P0=dis_d[1];Delay();P0=0x00;//第五個數(shù)碼管顯示1 P3=dis_w[5];P0=dis_d[2];Delay();P0=0x00;//第六個數(shù)碼管顯示2 P3=dis_w[6];P0=dis_d[2];Delay();P0=0x00;//第七個數(shù)碼管顯示2 P3=dis_w[7];P0=dis_d[6];Delay();P0=0x00;//第八個數(shù)碼管顯示6 }}第66頁,課件共188頁,創(chuàng)作于2023年2月拓展提高
動態(tài)數(shù)碼管顯示拖尾、重影如何解決?數(shù)碼管動態(tài)顯示可能會出現(xiàn)拖尾、重影的現(xiàn)象,解決的方法是:①如果是先送位選信號,再送段選信號,則在換位時,將段選信號清除;②如果是先送段選信號后送位選信號,則在換段時,將位選信號清除。第67頁,課件共188頁,創(chuàng)作于2023年2月3.5鍵盤接口技術按鍵有什么作用?如何識別按鍵是否按下?當人類將設置等數(shù)據(jù)信息傳入計算機系統(tǒng)時,通常會采用鍵盤完成。單片機對于鍵盤的識別是通過讀取鍵盤對應的高低電平信號來完成的。第68頁,課件共188頁,創(chuàng)作于2023年2月3.5.1概述
鍵盤接口的主要功能是對鍵盤上所按的鍵進行識別。使用專用的硬件進行識別的鍵盤稱為編碼鍵盤,使用軟件進行識別的鍵盤稱為非編碼鍵盤,它具有結構簡單、使用靈活等特點,因此被廣泛應用于單片機系統(tǒng)。第69頁,課件共188頁,創(chuàng)作于2023年2月
圖3.20按鍵觸點的機械抖動過程圖3.19按鍵輸入電路第70頁,課件共188頁,創(chuàng)作于2023年2月軟件去抖動
前沿抖動穩(wěn)定后沿抖動按鍵抖動信號波形鍵盤消抖即檢測出鍵閉合后執(zhí)行一個延時程序,產(chǎn)生5ms~10ms的延時,讓前沿抖動消失后再一次檢測鍵的狀態(tài),如果仍保持閉合狀態(tài)電平,則確認為真正有鍵按下。第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獨立鍵盤
獨立鍵盤的每一個按鍵的電路是獨立的,其中每個按鍵都獨立地占用一條I/O數(shù)據(jù)線,按鍵輸入均采用低電平有效。上拉電阻保證了按鍵斷開時,I/O口線有確定的高電平。當I/O口線內(nèi)部有上拉電阻時,外電路可不接上拉電阻。對于獨立式鍵盤,一般采取逐條I/O口查詢的方式來確定閉合鍵的位置,即先逐位查詢每根I/O口線的輸入狀態(tài),如某一根I/O口線輸入為低電平,則可確認該I/O口線所對應的按鍵已按下,然后,再轉(zhuǎn)向該鍵的功能處理程序。典型電路如圖3.22所示。第74頁,課件共188頁,創(chuàng)作于2023年2月圖3.24獨立按鍵典型電路第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(); //延時消抖
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行列(矩陣)鍵盤行列式鍵盤又叫矩陣式鍵盤,行列式結構的鍵盤顯然比獨立式鍵盤要復雜一些,識別也要復雜一些。它將I/O線的一部分作為行線,另一部分作為列線,按鍵設置在行線和列線的交叉點上,每一個按鍵占用兩條I/O數(shù)據(jù)線。如圖3.23所示,行列式鍵盤中,行、列線分別連接到按鍵開關的兩端,行線通過上拉電阻接到+5V上。當無鍵按下時,行線處于高電平狀態(tài);當有鍵按下時,行、列線將導通,此時,行線電平將由與此行線相連的列線電平?jīng)Q定。這是識別按鍵是否按下的關鍵。第78頁,課件共188頁,創(chuàng)作于2023年2月行列式鍵盤結構每一個按鍵的電路是由行列組成,每一個按鍵占用兩條I/O數(shù)據(jù)線。當鍵盤按下時,相應的行列線呈現(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();//延時,用定時器完成
bitKeytest();//總判有無按鍵
voiddisplay(ucharx);//數(shù)碼顯示程序
ucharGetKeyNum();//獲得具體鍵值
程序見書P70第81頁,課件共188頁,創(chuàng)作于2023年2月3.5.4典型應用設計一個0~9計數(shù)器,計數(shù)按鍵每按下一次,計數(shù)顯示加1,0~9循環(huán)計數(shù),清除按鍵按下則顯示清零。P73頁程序第82頁,課件共188頁,創(chuàng)作于2023年2月計數(shù)鍵清除鍵第83頁,課件共188頁,創(chuàng)作于2023年2月3.6中斷、定時接口技術
日常中斷的例子返回
你正在專心看書,突然電話鈴響,于是你記下正在看的書的頁數(shù),去接電話,接完電話后再回來接著看書。時間第84頁,課件共188頁,創(chuàng)作于2023年2月計算機中的中斷概念返回定義:中斷是指由于某種隨機事件的發(fā)生,計算機暫停現(xiàn)行程序的運行,轉(zhuǎn)去執(zhí)行另一程序(處理發(fā)生的事件),處理完畢后又自動返回原來程序暫停的位置繼續(xù)運行。將能引起中斷的事件稱為中斷源。CPU現(xiàn)行運行的程序稱為主程序。處理隨機事件的程序稱為中斷服務子程序。第85頁,課件共188頁,創(chuàng)作于2023年2月處理突發(fā)事件,單片機有強大處理功能,它會自動暫停正在處理的事件,轉(zhuǎn)去處理突發(fā)事件,突發(fā)事件處理完之后,繼續(xù)處理暫停的事件。第86頁,課件共188頁,創(chuàng)作于2023年2月
中斷技術的優(yōu)點提高工作效率
——CPU可以同多個外設“同時”工作實時處理
——CPU及時處理隨機事件(智能技術)故障處理
——電源掉電、存儲出錯、運算溢出
第87頁,課件共188頁,創(chuàng)作于2023年2月3.6.1MCS-51單片機中斷系統(tǒng)的內(nèi)部結構圖3.27單片機的中斷系統(tǒng)結構第88頁,課件共188頁,創(chuàng)作于2023年2月表3.6中斷源及中斷向量入口地址中斷源入口地址說明硬件優(yōu)先0003H從P3.2引腳上的外部中斷申請高
低定時器0000BH從定時器0的溢出使TF0置位,發(fā)出中斷申請0013H從P3.3引腳上的外部中斷申請定時器1001BH從定時器1的溢出使TF1置位,發(fā)出中斷申請串行端口0023H一個串行幀的發(fā)送或接收完成后使中斷申請標志TI(發(fā)送時)或RI(接收時)置位第89頁,課件共188頁,創(chuàng)作于2023年2月3.6.2中斷服務函數(shù)的編寫方法void函數(shù)名interruptn[usingm]m、n為正整數(shù),不允許使用表達式。n取值范圍0~4,對應該中斷源的編號。通常對普通8051系列單片機來說,外部中斷0、定時器0、外部中斷1、定時器1、串口的中斷源編號依次為0、1、2、3、4。m取值范圍0~4。例如:voidserial_serviceinterrupt4using2{……;}KeilC51編譯器用特定的編譯器指令分配寄存器組。當前工作寄存器由using指定,“using”后的變量為一個0~3的整數(shù)?!皍sing”只允許用于中斷函數(shù),它在中斷函數(shù)入口處將當前寄存器組保留,并在中斷程序中使用指定的寄存器組,在函數(shù)退出前恢復原寄存器組。
第90頁,課件共188頁,創(chuàng)作于2023年2月編寫中斷函數(shù)時應遵循下列規(guī)則:①不能進行參數(shù)傳遞,如果中斷過程包括任何參數(shù)聲明,編譯器將產(chǎn)生一個錯誤信息。②無返回值,如果想定義一個返回值將產(chǎn)生錯誤,但是,如果返回整型值編譯器將不產(chǎn)生錯誤信息,因為整型值是默認值,編譯器不能清楚識別。③在任何情況下不能直接調(diào)用中斷函數(shù),否則編譯器會產(chǎn)生錯誤。第91頁,課件共188頁,創(chuàng)作于2023年2月④在中斷函數(shù)中調(diào)用的函數(shù)所使用的寄存器組必須與中斷函數(shù)相同,當沒有使用using指令時,編譯器會選擇一個寄存器組作絕對寄存器訪問。編程時必須保證按要求使用相應寄存器組,而C編譯器不會對此檢查。⑤如果在中斷函數(shù)中執(zhí)行浮點運算,必須保存浮點寄存器狀態(tài),當沒有其他程序執(zhí)行浮點運算時,可以不保存。第92頁,課件共188頁,創(chuàng)作于2023年2月3.6.3外部中斷應用
設計一個實現(xiàn)按鍵計數(shù)功能的設計,并利用數(shù)碼管同步顯示按鍵的按下次數(shù)。圖3.28按鍵計數(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服務子程序,用來記//錄按鍵按下的次數(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);}計數(shù)器溢出一次,產(chǎn)生一次中斷,刷新當前顯示內(nèi)容,溢出率決定顯示屏刷新頻率第95頁,課件共188頁,創(chuàng)作于2023年2月3.6.4定時/計數(shù)器中斷應用
51系列單片機至少有兩個16位內(nèi)部定時器/計數(shù)器(T/C)。兩個基本定時器/計數(shù)器分別是定時器/計數(shù)器T/C0和T/C1,具有計數(shù)功能和定時功能。計數(shù)功能是指使用計數(shù)器的計數(shù)脈沖輸入端T0(P3.4)和T1(P3.5)對外部脈沖信號的計數(shù);定時功能是指對內(nèi)部晶振驅(qū)動時鐘進行計數(shù)。第96頁,課件共188頁,創(chuàng)作于2023年2月定時器T0由TH0和TL0組成,定時器T1由TH1和TL1組成,其中TH0(TH1)表示高8位,TL0(TL1)表示低8位。TMOD(見表1.13)寄存器用來確定工作方式;TCON是控制寄存器,用來控制T0和T1啟動、計數(shù)、停止以及設置溢出標志等。定時器/計數(shù)器的結構圖見圖3.29。GATA=0表示啟動不受外部中斷int0或int1的控制;否則受;C/T表示0為定時方式,1為計時方式!教材16頁!1.定時器/計數(shù)器的結構圖3.29定時器/計數(shù)器的結構第97頁,課件共188頁,創(chuàng)作于2023年2月在計數(shù)方式下,計數(shù)初值X=-待計數(shù)的值(n=13/16/8)。假使T/C0工作在計數(shù)器方式2,要求計數(shù)100個脈沖的計數(shù)初值X,那么X==156。第98頁,課件共188頁,創(chuàng)作于2023年2月在定時方式下,定時器/計數(shù)器對機器周期脈沖計數(shù)。如:若=12MHz,一個機器周期為us,要求定時器/計數(shù)器T0定時1ms,求計數(shù)初值。假使T0工作在工作方式1,設計數(shù)初值為X,則有:,即,將64536化為十六進制,即0xFC18,把0xFC送入TH0,0x18送入TL0中即可完成1ms的定時。即:TH0=0xfc;TL0=0x18;第99頁,課件共188頁,創(chuàng)作于2023年2月或直接寫為以下語句,在程序編譯時會自動計算表達式,換算成對應的數(shù)值給TH和TL賦值:(注意:溢出問題)TH0=(65536-1000)/256;TL0=(65536-1000)%256;第100頁,課件共188頁,創(chuàng)作于2023年2月
若T0工作在工作方式0,設計數(shù)初值為X,則有:將7192化為二進制,即1110000011000B,把高八位0xe0送入TH0,低五位0x18送入TL0中即可完成1ms的定時。即:TH0=0xe0;TL0=0x18;使用了tl0的低5位;;;或直接寫為以下語句:TH0=(8192-1000)/32;TL0=(8192-1000)%32;可以看出,在12MHz時鐘頻率下,工作方式2所能達到的最大定時時間為256us,在此例不適于直接定時。第101頁,課件共188頁,創(chuàng)作于2023年2月3.6.5 典型應用——99-00鍵控倒計時秒表任務描述將單片機與數(shù)碼管、鍵盤接成如圖3.30所示兩位動態(tài)顯示方式。開始時,顯示“--”,按“定時”鍵后顯示0,此時按數(shù)值鍵(0-9)有效;按數(shù)值鍵(0-9)顯示定時時間,最大定時時間99s;第一次按“開始/結束”鍵開始倒計時,時間間隔為1S,計時結束顯示“--”;第二次按“開始/結束”鍵停止倒計時,第三次按“開始/結束”鍵結束倒計時,顯示“--”第102頁,課件共188頁,創(chuàng)作于2023年2月圖3.3099-00鍵控倒計時秒表電路第103頁,課件共188頁,創(chuàng)作于2023年2月圖3.3100~99秒計數(shù)循環(huán)動態(tài)顯示程序框圖第104頁,課件共188頁,創(chuàng)作于2023年2月/*兩位動態(tài)顯示,00-99循環(huán)顯示,時間間隔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;//方式控制字初值:方式一、定時
TR1=1;//定時器一啟動
while(1) { display(); caculate(); } }第105頁,課件共188頁,創(chuàng)作于2023年2月voidcaculate() //計數(shù)子函數(shù){ tcount++;//1次10ms到,改變定時次數(shù)
if(tcount==100)//100次10ms到,即1s到
{ tcount=0;//初始化定時次數(shù)
second++;//指向下一個顯示數(shù)據(jù)
if(second==100) second=0; }}voiddisplay() //動態(tài)顯示子函數(shù){ uchari; disbuf[0]=dispcode[second/10]; //秒計數(shù)值的十位數(shù)字型碼
disbuf[1]=dispcode[second%10]; //秒計數(shù)值的個位數(shù)字型碼
for(i=0;i<2;i++) { P0=disbuf[i]; //向P0口送入段碼
P2=disbit[i]; //向P2口送入位碼
delay5ms(); //5ms定時
P2=0; //關位選,消隱
}}voiddelay5ms() { TH1=(65536-5000)/256; //設定定時初值高八位
TL1=(65536-5000)%256; //設定定時初值低八位
while(!TF1);//查詢,5ms到
TF1=0; //TF1清零} 第106頁,課件共188頁,創(chuàng)作于2023年2月3.7數(shù)模(D/A)轉(zhuǎn)換接口設計
為什么要用模數(shù)轉(zhuǎn)換?在實際生活中有何用?第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月性能指標:1、分辨率(Resolution)是指D/A轉(zhuǎn)換器能分辨的最小輸出模擬增量,取決于輸入數(shù)字量的二進制位數(shù)。
2、建立時間(EstablishingTime)是描述D/A轉(zhuǎn)換速度的快慢。3、轉(zhuǎn)換精度(ConversionAccuracy)指滿量程時DAC的實際模擬輸出值和理論值的接近程度。
4、偏移量誤差(OffsetError)偏移量誤差是指輸入數(shù)字量為零時,輸出模擬量對零的偏移值。
5、線性度(Linearity)線性度是指DAC的實際轉(zhuǎn)換特性曲線和理想直線之間的最大偏移差。第109頁,課件共188頁,創(chuàng)作于2023年2月1.DAC0832內(nèi)部結構:8位雙緩沖器結構的D/A轉(zhuǎn)換器。3.7.2D/A轉(zhuǎn)換芯片DAC0832DAC0832內(nèi)部結構框圖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:直通。王朝,馬漢;四大護法第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的引腳結構第112頁,課件共188頁,創(chuàng)作于2023年2月圖3.34DAC0832的工作原理爸爸,蹲下來,xx……3.DAC0832的工作原理第113頁,課件共188頁,創(chuàng)作于2023年2月單緩沖方式:
輸入寄存器和DAC寄存器共用一個地址,同時選通輸出,輸入數(shù)據(jù)在控制信號作用下,直接進入DAC寄存器中;
WR1和WR2同時進行,并且與CPU的WR相連,CPU對0832執(zhí)行一次寫操作,將數(shù)據(jù)直接寫入DAC寄存器中。
適用:只有一路模擬信號輸出或幾路模擬信號非同步輸出。4.DAC0832的工作模式第114頁,課件共188頁,創(chuàng)作于2023年2月雙緩沖器方式:
輸入寄存器和DAC寄存器分配有各自的地址,可分別選通用同時輸出多路模擬信號。
適用:同時輸出幾路模擬信號的場合,可構成多個0832同步輸出電路。第115頁,課件共188頁,創(chuàng)作于2023年2月直通方式:
輸入寄存器和DAC寄存器始終輸出,輸入數(shù)據(jù)在控制信號WR作用下(或與單片機并口直接聯(lián)結,無需WR),直接進入DAC寄存器中;
適用:只有一路模擬信號輸出或幾路模擬信號非同步輸出。第116頁,課件共188頁,創(chuàng)作于2023年2月3.7.3典型應用
圖3.38波形發(fā)生器P0口作為數(shù)據(jù)口,DAC0832采用直通接法,通過改變P0口輸出的數(shù)字量達到改變DAC0832輸出電壓的目的。根據(jù)不同波形的特點連續(xù)輸出一連串的數(shù)字量以達到產(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)換器的性能指標
(1)分辨率:分辨率是指輸出數(shù)字量變化一個相鄰數(shù)碼所需輸入模擬電壓的變化量。A/D轉(zhuǎn)換器的分辨率定義為滿刻度電壓與2n之比值,其中n為ADC的位數(shù)。
3.8模數(shù)(A/D)轉(zhuǎn)換接口設計第121頁,課件共188頁,創(chuàng)作于2023年2月(2)轉(zhuǎn)換速率與轉(zhuǎn)換時間:轉(zhuǎn)換速率是指A/D轉(zhuǎn)換器每秒鐘轉(zhuǎn)換的次數(shù)。轉(zhuǎn)換時間是指完成一次A/D轉(zhuǎn)換所需的時間(包括穩(wěn)定時間)。轉(zhuǎn)換時間是轉(zhuǎn)換速率的倒數(shù)。(3)量化誤差:有限分辨率A/D的階梯狀轉(zhuǎn)移特性曲線與理想無限分辨率A/D的轉(zhuǎn)移特性曲線(直線)之間的最大偏差稱為量化誤差。通常是1個或半個最小數(shù)字量的模擬變化量,表示為1LSB,1/2LSB。(4)線性度:實際A/D轉(zhuǎn)換器的轉(zhuǎn)移函數(shù)與理想直線的最大偏差。不包括量化誤差、偏移誤差(輸入信號為零時,輸出信號不為零的值)和滿刻度誤差(滿度輸出時,對應的輸入信號與理想輸入信號值之差)三種誤差。(5)量程:量程是指A/D能夠轉(zhuǎn)換的電壓范圍,如0~5V,-10~+10V等。(6)其他指標:內(nèi)部/外部電壓基準、失調(diào)(零點)溫度系數(shù)、增益溫度系數(shù),以及電源電壓變化抑制比等性能指標。
第122頁,課件共188頁,創(chuàng)作于2023年2月A/D轉(zhuǎn)換器應具備如下一些特性:①模擬輸入,可以是單信道或多信道模擬輸入;②參考輸入電壓,該電壓可由外部提供,也可以在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)部結構第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)寄存器,啟動轉(zhuǎn)換OE:允許讀A/D結果,高有效CLK:時鐘輸入端,范圍為10kHz~1200kHz,典型值640kHzEOC:轉(zhuǎn)換結束時為高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時序圖3.ADC0808/0809應用說明
此圖不靠譜,參考教材92頁圖第127頁,課件共188頁,創(chuàng)作于2023年2月ADC0808/0809與單片機連接:轉(zhuǎn)換數(shù)據(jù)的傳送:①定時傳送方式;(不需接EOC腳)②查詢方式;(測試EOC腳的狀態(tài))③中斷方式。(EOC腳接INT腳)注:(1)不能用無條件方式;(2)2個ALE不能相接。涉及2個問題:(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典型應用
ADC0808將輸入的電壓信號(模擬信號)轉(zhuǎn)換成數(shù)字量后觸發(fā)單片機的外部中斷。單片機通過對外部中斷的處理來達到電壓數(shù)字量的讀取。數(shù)碼管用來顯示電壓信號所對應的數(shù)字量。第129頁,課件共188頁,創(chuàng)作于2023年2月圖3.42模數(shù)轉(zhuǎn)換典型電路eoc沒有轉(zhuǎn)換結束時為低,轉(zhuǎn)換結束為高oe為允許讀轉(zhuǎn)換數(shù)據(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ù)值進行顯示前的預處理
shu[1]=l%100/10; shu[2]=l%10; }}第133頁,課件共188頁,創(chuàng)作于2023年2月3.9串行通信接口設計3.9.1串行通信基本概念
1.兩種常見的通信技術簡介—串口通信和并口通信在計算機中通信中,有兩種常見的通信技術,串行通信和并行通信。并行通信:數(shù)據(jù)的各位(二進制)同時發(fā)送或接收。特點是傳送速度快、效率高,但成本高。適用于短距離傳送數(shù)據(jù)。計算機內(nèi)部的數(shù)據(jù)傳送一般均采用并行方式。第134頁,課件共188頁,創(chuàng)作于2023年2月串行通信:數(shù)據(jù)一位一位(二進制)順序發(fā)送或接收。特點是傳送速度慢,但成本低。適用于較長距離傳送數(shù)據(jù)。計算機與外界的數(shù)據(jù)傳送一般均采用串行方式。串行通信長距離傳輸中常用RS232C、RS485協(xié)議。第135頁,課件共188頁,創(chuàng)作于2023年2月2.RS232C和RS485協(xié)議RS-232C是異步串行通信中應用最廣泛的標準總線,是美國EIA(ElectronicIndustriesAssociation,電子工業(yè)聯(lián)合會)開發(fā)公布的通信協(xié)議。適合于數(shù)據(jù)傳輸速率在0~20kb/s范圍內(nèi)的通信,包括了按位串行傳輸?shù)碾姎夂蜋C械方面的規(guī)定。在微機通信接口中被廣泛采用。其特點為:采取不平衡傳輸方式,是為點對點(即只用一對收、發(fā)設備)通信而設計的。第136頁,課件共188頁,創(chuàng)作于2023年2月RS485協(xié)議同RS232協(xié)議,也是異步串行通信中應用最廣泛的標準總線。特點:平衡發(fā)送、平衡接收,抗干擾能力強;多達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負邏輯:邏輯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)機械特性①RS-232C標準接口有25條線,其中常用的有如下9條:DCD(1):接收線信號檢出;RXD(2):接收數(shù)據(jù);TXD(3):發(fā)送數(shù)據(jù);DTR(4):數(shù)據(jù)終端準備好;GND(5)
:地線。DSR(6):數(shù)據(jù)裝置準備好;RTS(7):請求發(fā)送;CTS(8):允許發(fā)送;RI(9):振鈴指示;②RS-485:二根連線,屏蔽雙絞線第142頁,課件共188頁,創(chuàng)作于2023年2月(3)TTL與RS232C電氣轉(zhuǎn)換
由于TTL電平與RS232C電平的電氣特性不一樣,所以在單片機系統(tǒng)與PC機進行串口通信時,需要進行電氣轉(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.波特率波特率是衡量串行通信速率的重要指標,波特率是指每秒鐘傳送信號的數(shù)量,單位為波特(Baud)。比特率每秒鐘傳送二進制數(shù)的信號數(shù)(即二進制數(shù)的位數(shù)),單位是bps(bitpersecond)或?qū)懗蒪/s(位/秒)。在單片機串行通信中,傳送的信號是二進制信號,波特率與比特率數(shù)值上相等。單位采用bps。波特率和距離成反比,其關系如表3.8所示。第145頁,課件共188頁,創(chuàng)作于2023年2月表3.8波特率和距離的關系波特率(bps)1號電纜傳輸距離(英尺)其中:1英尺=0.305米2號電纜傳輸距離(英尺)其中:1英尺=0.305米11050003000300500030001200300030002400100050048001000250第146頁,課件共188頁,創(chuàng)作于2023年2月3.9.2MCS51串行通信接口設計1.單純發(fā)送從
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 武術體育課件
- 武術與健康課件
- 意識障礙的治療
- HDU病房管理規(guī)范與優(yōu)化策略
- 2025年門市出租協(xié)議
- 工業(yè)發(fā)展條件分析與評價類(答題模板)解析版-2025年中考地理答題技巧與模板構建
- 《多功能有毒有害氣體檢測儀》編制說明
- 設施西瓜標準綜合體 編制說明
- 老年人腹瀉護理要點解析
- 職工工會職能培訓體系
- 成本加酬金合同結算方法
- 河南省許昌市2023-2024學年高二下學期7月期末教學質(zhì)量檢測數(shù)學試題
- 第一章 第一節(jié) 管理的含義和特征講解
- 以圖書館資源促進學生閱讀的研究
- 上海市物業(yè)服務合同示范文本-2023版包干制
- 小學數(shù)學五年級下冊第三單元《分數(shù)乘法》作業(yè)設計
- 《我們奇妙的世界》公開課一等獎創(chuàng)新教學設計-5
- 2024年上海市高考英語完形填空試題真題匯編(含答案詳解)
- 馬拉之死藝術鑒賞
- 豐富多彩的民族節(jié)日的教案
- 一型糖尿病患者健康宣教
評論
0/150
提交評論