版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第6章單片機(jī)接口技術(shù)6.1單片機(jī)應(yīng)用系統(tǒng)的鍵盤和顯示接口設(shè)計(jì)6.2液晶顯示器(LCD)原理與應(yīng)用6.3鍵盤接口設(shè)計(jì)6.4單片機(jī)應(yīng)用系統(tǒng)中的A/D、D/A接口6.5單片機(jī)IO實(shí)現(xiàn)I2C總線6.6單片機(jī)與實(shí)時(shí)時(shí)鐘芯片接口本章習(xí)題解答
6.1.1LED顯示和接口
常用的LED顯示器有LED狀態(tài)顯示器(俗稱發(fā)光二極管)、LED七段顯示器(俗稱數(shù)碼管)和LED十六段顯示器。發(fā)光二極管可顯示兩種狀態(tài),用于系統(tǒng)狀態(tài)顯示;數(shù)碼管用于數(shù)字顯示;LED十六段顯示器用于字符顯示。本節(jié)重點(diǎn)介紹LED七段顯示器。例6.1
用定時(shí)/計(jì)數(shù)器模擬生產(chǎn)線產(chǎn)品計(jì)件,以按鍵模擬產(chǎn)品檢測(cè),按一次鍵相當(dāng)于產(chǎn)品計(jì)數(shù)一次。檢測(cè)到的產(chǎn)品數(shù)送P1口顯示,采用單只數(shù)碼管顯示,計(jì)滿16次后從頭開始,依次循環(huán)。系統(tǒng)采用12MHz晶振。6.1單片機(jī)應(yīng)用系統(tǒng)的鍵盤和顯示接口設(shè)計(jì)
圖6.1模擬生產(chǎn)線產(chǎn)品計(jì)件數(shù)碼管顯示電路解:根據(jù)題意可設(shè)計(jì)出硬件電路如圖6.1所示。
其源程序可設(shè)計(jì)如下: ORG 1000H MOV TMOD,#60H;定時(shí)器1工作在方式2 MOV TH1,#0F0H;定時(shí)器1置初值 MOV TL1,#0F0H SETB TR1 ;啟動(dòng)定時(shí)器1MAIN: MOV A,#00H ;計(jì)數(shù)顯示初始化 MOV P1,#0C0H ;數(shù)碼管顯示0DISP: JB P3.3,DISP ;監(jiān)測(cè)按鍵信號(hào)ACALLDELAY ;消抖延時(shí)JB P3.3,DISP ;確認(rèn)低電平信號(hào)DISP1: JNB P3.3,DISP1 ;監(jiān)測(cè)按鍵信號(hào)ACALLDELAY ;消抖延時(shí) NBP3.3,DISP1 ;確認(rèn)高電平信號(hào) CLR P3.5 ;T0引腳產(chǎn)生負(fù)跳變 NOPNOPSETB P3.5 ;T0引腳恢復(fù)高電平 INC A ;累加器加1 MOV R1,A ;保存累加器計(jì)數(shù)值A(chǔ)DD A,#08H ;變址調(diào)整MOVCA,@A+PC ;查表獲取數(shù)碼管顯示值MOV P1,A ;數(shù)碼管顯示查表值MOV A,R1 ;恢復(fù)累加器計(jì)數(shù)值JBCTF1,MAIN ;查詢定時(shí)器1計(jì)數(shù)溢出SJMP DISP ;16次不到繼續(xù)計(jì)數(shù)TAB:DB0C0H,0F9H,0A4H ;0,1,2 DB0B0H,99H,92H ;3,4,5 DB82H,0F8H,80H ;6,7,8 DB90H,88H,83H, ;9,A,B DB0C6H,0A1H,86H ;C,D,E DB 8EH ;FDEALY:MOVR2,#14H ;10ms延時(shí)DELAY1:MOVR3,#0FAHDJNZ R3,$ DJNZ R2,DEALY1RETEND由例6.1可具體剖析數(shù)碼管的結(jié)構(gòu),分析其工作原理。6.1.2數(shù)碼管簡(jiǎn)介1)數(shù)碼管結(jié)構(gòu)數(shù)碼管由8個(gè)發(fā)光二極管(以下簡(jiǎn)稱字段)構(gòu)成,通過不同的組合可用來顯示數(shù)字09、字符AF、H、L、P、R、U、Y、符號(hào)“”及小數(shù)點(diǎn)“”。數(shù)碼管的外形結(jié)構(gòu)如圖6.2(a)所示。數(shù)碼管又分為共陰極和共陽極兩種結(jié)構(gòu),分別如6.2(b)和圖6.2(c)所示。
圖6.2數(shù)碼管結(jié)構(gòu)圖
(a)外型結(jié)構(gòu);(b)共陰極;(c)共陽極2)數(shù)碼管工作原理共陽極數(shù)碼管的8個(gè)發(fā)光二極管的陽極(二極管正端)連接在一起。通常,公共陽極接高電平(一般接電源),其它管腳接段驅(qū)動(dòng)電路輸出端。當(dāng)某段驅(qū)動(dòng)電路的輸出端為低電平時(shí),則該端所連接的字段導(dǎo)通并點(diǎn)亮。根據(jù)發(fā)光字段的不同組合可顯示出各種數(shù)字或字符。此時(shí),要求段驅(qū)動(dòng)電路能吸收額定的段導(dǎo)通電流,還需根據(jù)外接電源及額定段導(dǎo)通電流來確定相應(yīng)的限流電阻。
共陰極數(shù)碼管的8個(gè)發(fā)光二極管的陰極(二極管負(fù)端)連接在一起。通常,公共陰極接低電平(一般接地),其它管腳接段驅(qū)動(dòng)電路輸出端。當(dāng)某段驅(qū)動(dòng)電路的輸出端為高電平時(shí),則該端所連接的字段導(dǎo)通并點(diǎn)亮,根據(jù)發(fā)光字段的不同組合可顯示出各種數(shù)字或字符。此時(shí),要求段驅(qū)動(dòng)電路能提供額定的段導(dǎo)通電流,還需根據(jù)外接電源及額定段導(dǎo)通電流來確定相應(yīng)的限流電阻。例6.1采用共陽極數(shù)碼管與單片機(jī)P1口直接連接,其電路連接如圖6.1所示。數(shù)碼管公共陽極接+5V電源,其它管腳分別接P1口的8個(gè)端口,限流電阻為510,數(shù)碼管字段導(dǎo)通電流約為6mA(額定字段導(dǎo)通電流一般為520mA)。3)數(shù)碼管字形編碼要使數(shù)碼管顯示出相應(yīng)的數(shù)字或字符,必須使段數(shù)據(jù)口輸出相應(yīng)的字形編碼。對(duì)照?qǐng)D6.2(a),字型碼各位定義為:數(shù)據(jù)線D0與a字段對(duì)應(yīng),D1與b字段對(duì)應(yīng)……,依此類推。如使用共陽極數(shù)碼管,數(shù)據(jù)為0表示對(duì)應(yīng)字段亮,數(shù)據(jù)為1表示對(duì)應(yīng)字段暗;如使用共陰極數(shù)碼管,數(shù)據(jù)為0表示對(duì)應(yīng)字段暗,數(shù)據(jù)為1表示對(duì)應(yīng)字段亮。如要顯示“0”,共陽極數(shù)碼管的字型編碼應(yīng)為:11000000B(即C0H);共陰極數(shù)碼管的字型編碼應(yīng)為:00111111B(即3FH)。依此類推,可求得數(shù)碼管字形編碼如表1.1所示。表6.1數(shù)碼管字型編碼表顯示字符字型共陽極共陰極dpgfedcba字型碼dpGfedcba字型碼0011000000C0H001111113FH1111111001F9H0000011006H2210100100A4H010110115BH3310110000B0H010011114FH441001100199H0110011066H551001001092H011011016DH661000001082H011111017DH7711111000F8H0000011107H881000000080H011111117FH991001000090H011011116FHAA1000100088H0111011177HBB1000001183H011111007CHCC11000110C6H0011100139H
續(xù)表顯示字符字型共陽極共陰極
dpgfedcba字型碼dpGfedcba字型碼DD10100001A1H010111105EHEE1000011086H0111100179HFF100011108EH0111000171HHH1000100189H0111011076HLL11000111C7H0011100038HPP100011008CH0111001173HRR11001110CEH0011000131HUU11000001C1H001111103EHYY1001000191H011011106EH10111111BFH0100000040H..011111117FH1000000080H熄滅滅11111111FFH0000000000H例6.1采用共陽極數(shù)碼管,因此,應(yīng)采用表6.1中的共陽極字型碼。具體實(shí)施是通過編程將需要顯示的字型碼存放在程序存儲(chǔ)器的固定區(qū)域中,構(gòu)成顯示字型碼表。當(dāng)要顯示某字符時(shí),通過查表指令獲取該字符所對(duì)應(yīng)的字型碼。LED七段數(shù)碼管有靜態(tài)顯示和動(dòng)態(tài)顯示兩種方式,下面分別加以敘述。6.1.3靜態(tài)顯示接口1)靜態(tài)顯示概念靜態(tài)顯示是指數(shù)碼管顯示某一字符時(shí),相應(yīng)的發(fā)光二極管恒定導(dǎo)通或恒定截止。這種顯示方式的各位數(shù)碼管相互獨(dú)立,公共端恒定接地(共陰極)或接正電源(共陽極)。每個(gè)數(shù)碼管的8個(gè)字段分別與一個(gè)8位I/O口地址相連,I/O口只要有段碼輸出,相應(yīng)字符即顯示出來,并保持不變,直到I/O口輸出新的段碼。采用靜態(tài)顯示方式,較小的電流即可獲得較高的亮度,且占用CPU時(shí)間少,編程簡(jiǎn)單,顯示便于監(jiān)測(cè)和控制,但其占用的口線多,硬件電路復(fù)雜,成本高,只適合于顯示位數(shù)較少的場(chǎng)合。2)多位靜態(tài)顯示接口應(yīng)用例6.1是數(shù)碼管靜態(tài)顯示方式的一種典型應(yīng)用,其硬件及軟件都非常簡(jiǎn)單,但其只能顯示一位,如要用P1口顯示多位,則每位數(shù)碼管都應(yīng)有各自的鎖存、譯碼與驅(qū)動(dòng)器,還需有相應(yīng)的位選通電路。位選通電路輸出位碼。例6.2
將例6.1中的單位數(shù)碼管顯示改為6位顯示,具體要求如下:(1)右邊第一位進(jìn)行正常計(jì)數(shù),顯示當(dāng)前計(jì)數(shù)狀態(tài),其功能與例6.1完全一樣。(2)左邊5位分別顯示前5次計(jì)數(shù)狀態(tài),當(dāng)連續(xù)計(jì)數(shù)時(shí),會(huì)產(chǎn)生計(jì)數(shù)數(shù)據(jù)從左至右移動(dòng)的感覺。解:整體設(shè)計(jì)思路如下:P1口控制段碼輸出,P3口控制位碼輸出,每個(gè)數(shù)碼管接一個(gè)鎖存器。鎖存器除用來鎖存待顯示段碼外,還兼作顯示驅(qū)動(dòng)器直接驅(qū)動(dòng)共陽極數(shù)碼管。在單片機(jī)內(nèi)部RAM設(shè)置待顯示數(shù)據(jù)緩沖區(qū),由查表程序完成顯示譯碼(俗稱軟件譯碼),將緩沖區(qū)內(nèi)待顯示數(shù)據(jù)轉(zhuǎn)換成相應(yīng)的段碼,再將段碼送P1口顯示。硬件電路設(shè)計(jì)如下:P1口的段碼輸出直接接至鎖存器的輸入端,鎖存器采用74LS373(或74LS273、74LS374)。鎖存器的輸出接至數(shù)碼管的各段,同時(shí)還經(jīng)300上拉(或限流)電阻接至電源。位選通電路由P3口的P3.0(RXD)、P3.1(TXD)和P3.2(INT0)與3-8譯碼器74LS138連接組成。74LS138輸出的位碼經(jīng)倒相器74LS04后接至74LS373的使能端LE(或74LS273、74LS374的時(shí)鐘端),以此來控制相應(yīng)顯示位段碼數(shù)據(jù)的刷新。模擬生產(chǎn)線計(jì)數(shù)的按鍵信號(hào)接至P3.3(INT1)口,具體電路如圖6.3所示。
圖6.3六位數(shù)碼管靜態(tài)顯示電路
軟件設(shè)計(jì)如下:以單片機(jī)內(nèi)部RAM的30H35H單元作為顯示數(shù)據(jù)緩沖區(qū)。六位數(shù)碼管段碼的獲取及顯示控制由顯示子程序完成。單片機(jī)每接收一次按鍵信號(hào)(即模擬生產(chǎn)線計(jì)數(shù)信號(hào)),顯示緩沖區(qū)的待顯示數(shù)據(jù)就被刷新一次,然后再調(diào)用一次顯示子程序。如連續(xù)按鍵,即可產(chǎn)生計(jì)數(shù)數(shù)據(jù)從左至右循環(huán)移動(dòng)的效果。軟件流程圖如圖6.4所示。源程序設(shè)計(jì)(略)。圖6.4六位數(shù)碼管靜態(tài)顯示軟件流程圖
6.1.4.動(dòng)態(tài)顯示接口1)動(dòng)態(tài)顯示概念動(dòng)態(tài)顯示是一位一位地輪流點(diǎn)亮各位數(shù)碼管,這種逐位點(diǎn)亮顯示器的方式稱為位掃描。通常,各位數(shù)碼管的段選線相應(yīng)并聯(lián)在一起,由一個(gè)8位的I/O口控制;各位的位選線(公共陰極或陽極)由另外的I/O口線控制。動(dòng)態(tài)方式顯示時(shí),各數(shù)碼管分時(shí)輪流選通,要使其穩(wěn)定顯示,必須采用掃描方式,即在某一時(shí)刻只選通一位數(shù)碼管,并送出相應(yīng)的段碼,在另一時(shí)刻選通另一位數(shù)碼管,并送出相應(yīng)的段碼。依此規(guī)律循環(huán),即可使各位數(shù)碼管顯示將要顯示的字符。雖然這些字符是在不同的時(shí)刻分別顯示,但由于人眼存在視覺暫留效應(yīng),只要每位顯示間隔足夠短就可以給人以同時(shí)顯示的感覺。采用動(dòng)態(tài)顯示方式比較節(jié)省I/O口,硬件電路也較靜態(tài)顯示方式簡(jiǎn)單,但其亮度不如靜態(tài)顯示方式,而且在顯示位數(shù)較多時(shí),CPU要依次掃描,占用CPU較多的時(shí)間。用8051系列單片機(jī)構(gòu)建數(shù)碼管動(dòng)態(tài)顯示系統(tǒng)時(shí),采用8255A可編程I/O擴(kuò)展接口,其典型應(yīng)用如圖6.5所示。圖中,數(shù)碼管采用共陰極LED,8255的A口線經(jīng)過8路驅(qū)動(dòng)電路后接至數(shù)碼管的各段。當(dāng)A口線輸出“1”時(shí),驅(qū)動(dòng)數(shù)碼管發(fā)光。8255的C口線經(jīng)過6路驅(qū)動(dòng)電路后接至數(shù)碼管的公共端。當(dāng)C口線輸出“0”時(shí),選通相應(yīng)位的數(shù)碼管發(fā)光。圖6.58255A構(gòu)成的六位數(shù)碼管動(dòng)態(tài)顯示電路0123456789101112131415161718192021222324252627282930318路驅(qū)動(dòng)器8路驅(qū)動(dòng)器+5V+5Vabcdefgdp8255CEIO/MALERDWRD0D7+5V8031P2.7P2.0ALEP0RDWR8RESETPB7PB6PB5PB4PB3PB2PB1PB0PC0PC1PC2PC3PA7PA6PA5PA4PA3PA2PA1PA0…5.1kW100W×8由圖可知,LED顯示器采用共陰極數(shù)碼管。8255的B口用作數(shù)碼管段碼輸出口;A口用作數(shù)碼管位碼輸出口,同時(shí),它還用作鍵盤列選口;C口用作鍵盤行掃描信號(hào)輸入口。當(dāng)其選用4根口線時(shí),可構(gòu)成4×8鍵盤,選用6根口線時(shí),可構(gòu)成6×8鍵盤。LED采用動(dòng)態(tài)顯示軟件譯碼,鍵盤采用逐列掃描查詢工作方式,LED的驅(qū)動(dòng)采用74LS244總線驅(qū)動(dòng)器。由于鍵盤與顯示共用一個(gè)接口電路,因此,在軟件設(shè)計(jì)中應(yīng)綜合考慮鍵盤查詢與動(dòng)態(tài)顯示,通常可將鍵盤掃描程序中的去抖動(dòng)延時(shí)子程序用顯示子程序代替。6.2液晶顯示器(LCD)原理與應(yīng)用
液晶顯示器具有工作電壓低、功耗少、壽命長(zhǎng)、可以顯示各種復(fù)雜的文字和圖形曲線,在各種單片機(jī)應(yīng)用系統(tǒng)中有廣泛的使用。液晶顯示器的上、下玻璃電極之間封入向列型液晶材料,液晶分子平行排列,上、下扭曲90°,外部入射光線通過上偏振片后形成偏振光,該偏振光通過平行排列的液晶材料后被旋轉(zhuǎn)90°,再通過與上偏振片垂直的下偏振片,被反射板反射回來,呈透明狀態(tài);當(dāng)上、下電極加上一定的電壓后,電極部分的液晶分子垂直排列,失去旋光性,從上偏振片入射的偏振光不被旋轉(zhuǎn),光無法通過下偏振片返回,因而呈黑色。根據(jù)需要,將電極做成各種文字、數(shù)字、圖形。就可以獲得各種狀態(tài)顯示。
液晶顯示器的驅(qū)動(dòng)方式由電極引線的選擇方式確定。因此,在選擇好液晶顯示器后,用戶無法改變驅(qū)動(dòng)方式。液晶顯示器的驅(qū)動(dòng)方式一般有靜態(tài)驅(qū)動(dòng)和時(shí)分割驅(qū)動(dòng)兩種。在靜態(tài)顯示方式中,某個(gè)液晶顯示字段上兩個(gè)電極的電壓相位相同時(shí),兩電極的相對(duì)電壓為零,該字段不顯示;當(dāng)此字段上兩個(gè)電極的電壓相位相反時(shí),兩電極的相對(duì)電壓為兩倍幅值方波電壓,該字段呈黑色顯示。液晶顯示器有字段型、字符型、點(diǎn)陣圖形型,在使用時(shí),有的液晶顯示器內(nèi)部有控制器,使用比較方便。字段型液晶顯示器有六段、七段、八段等多種,七段是常用的一種。字符型液晶顯示器有5×8、5×11點(diǎn)陣,單片機(jī)與字符型LCD顯示器件的連接有直接訪問和間接訪問。點(diǎn)陣圖形型液晶顯示器內(nèi)部都有控制器,各種類型的點(diǎn)陣圖形液晶顯示器的控制器使用要求不同,指令各異,但基本控制方式相同,一般點(diǎn)陣圖形型液晶顯示器都有一個(gè)對(duì)外的接口,了解了接口引腳的定義和使用條件,可以應(yīng)用單片機(jī)的數(shù)據(jù)總線或P1口對(duì)點(diǎn)陣圖形型液晶顯示器件進(jìn)行控制。
需要進(jìn)行圖形顯示的場(chǎng)合,可以使用圖形液晶驅(qū)動(dòng)控制器組成的液晶顯示驅(qū)動(dòng)和控制系統(tǒng),成本低,功耗低,集成度高。本書主要介紹常用的T6963C液晶控制器原理與應(yīng)用,其主要特點(diǎn)有:1.可與80系列8位微處理器直接接口。2.內(nèi)部具有128個(gè)字符的ROM字符發(fā)生器。3.T6963C的字體可由硬件設(shè)置,其字體有四種:5×8、6×8、7×8、8×8。4.可對(duì)8KByte的顯示RAM內(nèi)存操作。5.字符與圖形可同時(shí)顯示,可以選擇“OR”,“AND”,“EXOR”方式。6.6963C的占空比可從1/16到1/128。6.2.1T6963C與單片機(jī)連接原理圖6.6T6963C與單片機(jī)連接原理框圖T6963C引腳圖圖6.7T6963C引腳圖T6963C指令列表6.2.2單片機(jī)間接控制T6963C原理圖6.8單片機(jī)間接控制LCD原理圖 間接控制方式是將內(nèi)置T6963C控制器的液晶顯示模塊與計(jì)算機(jī)系統(tǒng)中的某個(gè)并行I/O接口連接,計(jì)算機(jī)通過對(duì)該I/O接口的操作間接地實(shí)現(xiàn)對(duì)模塊的控制。間接控制方式在硬件電路上需要一個(gè)8位并行接口(如8031的P1口)與模塊的數(shù)據(jù)線連接,作為數(shù)據(jù)總線,還需要一個(gè)3位并行接口作為時(shí)序控制信號(hào)線如8031的P3.5作為C/D,P3.4作為WR,以及P3.3作為RD。 由于使用了專用的并行接口連接模塊,而且該并行接口自身在計(jì)算機(jī)系統(tǒng)中有相應(yīng)的片選地址,所以模塊的片選信號(hào)可以直接接地作選通態(tài),間接控制方式的接口電路與時(shí)序無關(guān),時(shí)序完全靠軟件編程實(shí)現(xiàn)。計(jì)算機(jī)間接控制方式下,與內(nèi)置T6963C控制器的液晶顯示模塊的實(shí)用接口電路如圖6.8所示。模塊的V0端所接的電位器是作為液晶驅(qū)動(dòng)電源的調(diào)節(jié)器,調(diào)節(jié)顯示的對(duì)比度。T6963C操作時(shí)序間接方式讀讀狀態(tài)字子程序
CDEQUP3.2;通道選擇信號(hào)WREQUP3.3;寫操作信號(hào)RDEQUP3.4;讀操作信號(hào)①讀狀態(tài)字子程序R_ST:MOVP1,#0FFH;P1口置"1"SETBCD;CD=1CLRRD;/RD=0MOVA,P1;讀操作SETBRD;/RD=1RET寫指令和寫數(shù)據(jù)子程序PR1:LCALLST01;雙字節(jié)參數(shù)指令寫入入口MOVA,DAT1;取第一參數(shù)單元數(shù)據(jù)LCALLPR13;寫入?yún)?shù)PR11:LCALLST01;單字節(jié)參數(shù)指令寫入入口MOVA,DAT2;取第二參數(shù)單元數(shù)據(jù)LCALLPR13;寫入?yún)?shù)PR12:LCALLST01;無參數(shù)指令寫入入口MOVA,COM;取指令代碼單元數(shù)據(jù)LJMPPR14;寫入指令代碼PR13:CLRCD;C/D=0/數(shù)據(jù)寫入入口PR14:MOVP1,A;設(shè)置數(shù)據(jù)CLRWR;/WR=0SETBWR;/WR=1RET初始化程序該程序以240×128點(diǎn)陣的液晶顯示模塊為例INT:MOVDAT1,#00H;設(shè)置文本顯示區(qū)域 ;首地址MOVDAT2,#00HMOVCOM,#40HLCALLPR1MOVDAT1,#20H;設(shè)置文本顯示區(qū)域?qū)挾萂OVDAT2,#00H;即一行顯示所占字節(jié)數(shù)MOVCOM,#41HLCALLPR1MOVDAT1,#00H;設(shè)置圖形顯示區(qū)域首地址MOVDAT2,#08H;或?yàn)槲谋緦傩詤^(qū)域首地址MOVCOM,#42HLCALLPR1MOVDAT1,#20H;設(shè)置圖形顯示區(qū)域?qū)挾萂OVDAT2,#00H;或?yàn)槲谋緦傩詤^(qū)域?qū)挾萂OVCOM,#43H;即一行顯示所占字節(jié)數(shù)LCALLPR1MOVCOM,#0A7H;光標(biāo)形狀設(shè)置LCALLPR12MOVCOM,#80H;顯示方式設(shè)置,邏輯“或”合成LCALLPR12MOVCOM,#9CH;顯示開關(guān)設(shè)置LCALLPR12RET6.2.3間接方式測(cè)試程序該程序?yàn)橥ㄓ脺y(cè)試程序,在240×128規(guī)模以內(nèi)的液晶顯示模塊都適合。程序使用8031匯編語言。MAIN:MOVR6,#50HMOVR7,#00HDELY1:NOPDJNZR7,DELY1DJNZR6,DELY1;上電延時(shí)……MOVSP,#60H;ORLP3,#1CH;間接控制方式用TEST:LCALLINTMOVDAT1,#00H;設(shè)置顯示RAM首地址MOVDAT2,#00HMOVCOM,#24HLCALLPR1MOVR3,#00H;設(shè)置循環(huán)量MOVR4,#20HMOVCOM,#0B0H;設(shè)置自動(dòng)寫方式LCALLPR12TEST1:LCALLST3;判狀態(tài)位S2MOVA,#0FH;置數(shù)據(jù)"0F"LCALLPR13;寫入數(shù)據(jù)
DJNZR3,TEST1;循環(huán)DJNZR4,TEST1MOVCOM,#0B2H;設(shè)置自動(dòng)寫結(jié)束指令LCALLPR12SJMP$該程序執(zhí)行完畢后,屏上應(yīng)該滿屏顯示豎道,同時(shí)豎道的左下角有一點(diǎn)。6.3單片機(jī)與鍵盤接口6.3.1鍵盤原理與鍵的分類按鍵按照結(jié)構(gòu)原理可分為兩類,一類是觸點(diǎn)式開關(guān)按鍵,如機(jī)械式開關(guān)、導(dǎo)電橡膠式開關(guān)等;另一類是無觸點(diǎn)式開關(guān)按鍵,如電氣式按鍵,磁感應(yīng)按鍵等。前者造價(jià)低,后者壽命長(zhǎng)。目前,微機(jī)系統(tǒng)中最常見的是觸點(diǎn)式開關(guān)按鍵。
按鍵按照接口原理可分為編碼鍵盤與非編碼鍵盤兩類,這兩類鍵盤的主要區(qū)別是識(shí)別鍵符及給出相應(yīng)鍵碼的方法。編碼鍵盤主要是用硬件來實(shí)現(xiàn)對(duì)鍵的識(shí)別,非編碼鍵盤主要是由軟件來實(shí)現(xiàn)鍵盤的定義與識(shí)別。全編碼鍵盤能夠由硬件邏輯自動(dòng)提供與鍵對(duì)應(yīng)的編碼,此外,一般還具有去抖動(dòng)和多鍵、竄鍵保護(hù)電路。這種鍵盤使用方便,但需要較多的硬件,價(jià)格較貴,一般的單片機(jī)應(yīng)用系統(tǒng)較少采用。非編碼鍵盤只簡(jiǎn)單地提供行和列的矩陣,其它工作均由軟件完成。由于其經(jīng)濟(jì)實(shí)用,較多地應(yīng)用于單片機(jī)系統(tǒng)中。下面將重點(diǎn)介紹非編碼鍵盤接口。
1.鍵輸入原理在單片機(jī)應(yīng)用系統(tǒng)中,除了復(fù)位按鍵有專門的復(fù)位電路及專一的復(fù)位功能外,其它按鍵都是以開關(guān)狀態(tài)來設(shè)置控制功能或輸入數(shù)據(jù)的。當(dāng)所設(shè)置的功能鍵或數(shù)字鍵按下時(shí),計(jì)算機(jī)應(yīng)用系統(tǒng)應(yīng)完成該按鍵所設(shè)定的功能,鍵信息輸入是與軟件結(jié)構(gòu)密切相關(guān)的過程。對(duì)于一組鍵或一個(gè)鍵盤,總有一個(gè)接口電路與CPU相連。CPU可以采用查詢或中斷方式判斷有無按鍵輸入,并檢查是哪一個(gè)鍵按下,將該鍵號(hào)送入累加器ACC,然后通過跳轉(zhuǎn)指令轉(zhuǎn)入執(zhí)行該鍵的功能程序,執(zhí)行完后再返回主程序。2.按鍵結(jié)構(gòu)與特點(diǎn)微機(jī)鍵盤通常使用機(jī)械觸點(diǎn)式按鍵開關(guān),其主要功能是把機(jī)械上的通斷轉(zhuǎn)換成為電氣上的邏輯關(guān)系。也就是說,它能提供標(biāo)準(zhǔn)的TTL邏輯電平,以便與通用數(shù)字系統(tǒng)的邏輯電平相容。機(jī)械式按鍵在按下或釋放時(shí),由于機(jī)械彈性作用的影響,通常伴隨有一定時(shí)間的觸點(diǎn)機(jī)械抖動(dòng),然后其觸點(diǎn)才穩(wěn)定下來。其抖動(dòng)過程如圖6.10所示,抖動(dòng)時(shí)間的長(zhǎng)短與開關(guān)的機(jī)械特性有關(guān),一般為510ms。
圖6.10按鍵觸點(diǎn)的機(jī)械抖動(dòng)
在觸點(diǎn)抖動(dòng)期間檢測(cè)按鍵的通與斷狀態(tài),可能導(dǎo)致判斷出錯(cuò),即按鍵一次按下或釋放被錯(cuò)誤地認(rèn)為是多次操作,這種情況是不允許出現(xiàn)的。為了克服按鍵觸點(diǎn)機(jī)械抖動(dòng)所致的檢測(cè)誤判,必須采取去抖動(dòng)措施。這一點(diǎn)可從硬件、軟件兩方面予以考慮。在鍵數(shù)較少時(shí),可采用硬件去抖,而當(dāng)鍵數(shù)較多時(shí),采用軟件去抖。在硬件上可采用在鍵輸出端加R-S觸發(fā)器(雙穩(wěn)態(tài)觸發(fā)器)或單穩(wěn)態(tài)觸發(fā)器構(gòu)成去抖動(dòng)電路。圖6.11是一種由R-S觸發(fā)器構(gòu)成的去抖動(dòng)電路,當(dāng)觸發(fā)器一旦翻轉(zhuǎn),觸點(diǎn)抖動(dòng)不會(huì)對(duì)其產(chǎn)生任何影響。圖6.11雙穩(wěn)態(tài)去抖電路電路工作過程如下:按鍵未按下時(shí),a=0,b=1,輸出Q=1。按鍵按下時(shí),因按鍵的機(jī)械彈性作用的影響,使按鍵產(chǎn)生抖動(dòng)。當(dāng)開關(guān)沒有穩(wěn)定到達(dá)b端時(shí),因與非門2輸出為0反饋到與非門1的輸入端,封鎖了與非門1,雙穩(wěn)態(tài)電路的狀態(tài)不會(huì)改變,輸出保持為1,輸出Q不會(huì)產(chǎn)生抖動(dòng)的波形。當(dāng)開關(guān)穩(wěn)定到達(dá)b端時(shí),因a=1,b=0,使Q=0,雙穩(wěn)態(tài)電路狀態(tài)發(fā)生翻轉(zhuǎn)。當(dāng)釋放按鍵時(shí),在開關(guān)未穩(wěn)定到達(dá)a端時(shí),因Q=0,封鎖了與非門2,雙穩(wěn)態(tài)電路的狀態(tài)不變,輸出Q保持不變,消除了后沿的抖動(dòng)波形。當(dāng)開關(guān)穩(wěn)定到達(dá)a端時(shí),因a=0,b=0,使Q=1,雙穩(wěn)態(tài)電路狀態(tài)發(fā)生翻轉(zhuǎn),輸出Q重新返回原狀態(tài)。由此可見,鍵盤輸出經(jīng)雙穩(wěn)態(tài)電路之后,輸出已變?yōu)橐?guī)范的矩形方波。軟件上采取的措施是:在檢測(cè)到有按鍵按下時(shí),執(zhí)行一個(gè)10ms左右(具體時(shí)間應(yīng)視所使用的按鍵進(jìn)行調(diào)整)的延時(shí)程序后,再確認(rèn)該鍵電平是否仍保持閉合狀態(tài)電平,若仍保持閉合狀態(tài)電平,則確認(rèn)該鍵處于閉合狀態(tài)。同理,在檢測(cè)到該鍵釋放后,也應(yīng)采用相同的步驟進(jìn)行確認(rèn),從而可消除抖動(dòng)的影響。3.按鍵編碼一組按鍵或鍵盤都要通過I/O口線查詢按鍵的開關(guān)狀態(tài)。根據(jù)鍵盤結(jié)構(gòu)的不同,采用不同的編碼。無論有無編碼,以及采用什么編碼,最后都要轉(zhuǎn)換成為與累加器中數(shù)值相對(duì)應(yīng)的鍵值,以實(shí)現(xiàn)按鍵功能程序的跳轉(zhuǎn)。6.3.2編制鍵盤程序一個(gè)完善的鍵盤控制程序應(yīng)具備以下功能:(1)檢測(cè)有無按鍵按下,并采取硬件或軟件措施,消除鍵盤按鍵機(jī)械觸點(diǎn)抖動(dòng)的影響。(2)有可靠的邏輯處理辦法。每次只處理一個(gè)按鍵,其間對(duì)任何按鍵的操作對(duì)系統(tǒng)不產(chǎn)生影響,且無論一次按鍵時(shí)間有多長(zhǎng),系統(tǒng)僅執(zhí)行一次按鍵功能程序。(3)準(zhǔn)確輸出按鍵值(或鍵號(hào)),以滿足跳轉(zhuǎn)指令要求。1.獨(dú)立式按鍵結(jié)構(gòu)獨(dú)立式按鍵是直接用I/O口線構(gòu)成的單個(gè)按鍵電路,其特點(diǎn)是每個(gè)按鍵單獨(dú)占用一根I/O口線,每個(gè)按鍵的工作不會(huì)影響其它I/O口線的狀態(tài)。獨(dú)立式按鍵的典型應(yīng)用如圖6.12所示。獨(dú)立式按鍵電路配置靈活,軟件結(jié)構(gòu)簡(jiǎn)單,但每個(gè)按鍵必須占用一根I/O口線,因此,在按鍵較多時(shí),I/O口線浪費(fèi)較大,不宜采用。圖6.12獨(dú)立式按鍵電路
2.獨(dú)立式按鍵的軟件結(jié)構(gòu)獨(dú)立式按鍵的軟件常采用查詢式結(jié)構(gòu)。先逐位查詢每根I/O口線的輸入狀態(tài),如某一根I/O口線輸入為低電平,則可確認(rèn)該I/O口線所對(duì)應(yīng)的按鍵已按下,然后,再轉(zhuǎn)向該鍵的功能處理程序。圖6.12中的I/O口采用P1口,請(qǐng)讀者自行編制相應(yīng)的軟件。
單片機(jī)系統(tǒng)中,若使用按鍵較多時(shí),通常采用矩陣式(也稱行列式)鍵盤。1.矩陣式鍵盤的結(jié)構(gòu)及原理矩陣式鍵盤由行線和列線組成,按鍵位于行、列線的交叉點(diǎn)上,其結(jié)構(gòu)如圖6.13所示。由圖可知,一個(gè)4×4的行、列結(jié)構(gòu)可以構(gòu)成一個(gè)含有16個(gè)按鍵的鍵盤,顯然,在按鍵數(shù)量較多時(shí),矩陣式鍵盤較之獨(dú)立式按鍵鍵盤要節(jié)省很多I/O口。圖6.13矩陣式鍵盤結(jié)構(gòu)
矩陣式鍵盤中,行、列線分別連接到按鍵開關(guān)的兩端,行線通過上拉電阻接到+5V上。當(dāng)無鍵按下時(shí),行線處于高電平狀態(tài);當(dāng)有鍵按下時(shí),行、列線將導(dǎo)通,此時(shí),行線電平將由與此行線相連的列線電平?jīng)Q定。這是識(shí)別按鍵是否按下的關(guān)鍵。然而,矩陣鍵盤中的行線、列線和多個(gè)鍵相連,各按鍵按下與否均影響該鍵所在行線和列線的電平,各按鍵間將相互影響,因此,必須將行線、列線信號(hào)配合起來作適當(dāng)處理,才能確定閉合鍵的位置。2.矩陣式鍵盤按鍵的識(shí)別識(shí)別按鍵的方法很多,其中,最常見的方法是掃描法。下面以圖6.13中8號(hào)鍵的識(shí)別為例來說明掃描法識(shí)別按鍵的過程。按鍵按下時(shí),與此鍵相連的行線與列線導(dǎo)通,行線在無鍵按下時(shí)處在高電平。顯然,如果讓所有的列線也處在高電平,那么,按鍵按下與否不會(huì)引起行線電平的變化,因此,必須使所有列線處在低電平。只有這樣,當(dāng)有鍵按下時(shí),該鍵所在的行電平才會(huì)由高電平變?yōu)榈碗娖?。CPU根據(jù)行電平的變化,便能判定相應(yīng)的行有鍵按下。8號(hào)鍵按下時(shí),第2行一定為低電平。然而,第2行為低電平時(shí),能否肯定是8號(hào)鍵按下呢?回答是否定的,因?yàn)?、10、11號(hào)鍵按下,同樣會(huì)使第2行為低電平。為進(jìn)一步確定具體鍵,不能使所有列線在同一時(shí)刻都處在低電平,可在某一時(shí)刻只讓一條列線處于低電平,其余列線均處于高電平,另一時(shí)刻,讓下一列處在低電平,依此循環(huán),這種依次輪流每次選通一列的工作方式稱為鍵盤掃描。采用鍵盤掃描后,再來觀察8號(hào)鍵按下時(shí)的工作過程,當(dāng)?shù)?列處于低電平時(shí),第2行處于低電平,而第1、2、3列處于低電平時(shí),第2行卻處在高電平,由此可判定按下的鍵應(yīng)是第2行與第0列的交叉點(diǎn),即8號(hào)鍵。3.鍵盤的編碼對(duì)于獨(dú)立式按鍵鍵盤,因按鍵數(shù)量少,可根據(jù)實(shí)際需要靈活編碼。對(duì)于矩陣式鍵盤,按鍵的位置由行號(hào)和列號(hào)惟一確定,因此可分別對(duì)行號(hào)和列號(hào)進(jìn)行二進(jìn)制編碼,然后將兩值合成一個(gè)字節(jié),高4位是行號(hào),低4位是列號(hào)。如圖6.13中的8號(hào)鍵,它位于第2行,第0列,因此,其鍵盤編碼應(yīng)為20H。采用上述編碼對(duì)于不同行的鍵離散性較大,不利于散轉(zhuǎn)指令對(duì)按鍵進(jìn)行處理。因此,可采用依次排列鍵號(hào)的方式對(duì)按鍵進(jìn)行編碼。以圖7.5中的4×4鍵盤為例,可將鍵號(hào)編碼為:01H、02H、03H、…、0EH、0FH、10H等16個(gè)鍵號(hào)。編碼相互轉(zhuǎn)換可通過計(jì)算或查表的方法實(shí)現(xiàn)。6.3.3鍵盤的工作方式對(duì)鍵盤的響應(yīng)取決于鍵盤的工作方式,鍵盤的工作方式應(yīng)根據(jù)實(shí)際應(yīng)用系統(tǒng)中CPU的工作狀況而定,其選取的原則是既要保證CPU能及時(shí)響應(yīng)按鍵操作,又不要過多占用CPU的工作時(shí)間。通常,鍵盤的工作方式有三種,即編程掃描、定時(shí)掃描和中斷掃描。1)編程掃描方式編程掃描方式是利用CPU完成其它工作的空余時(shí)間,調(diào)用鍵盤掃描子程序來響應(yīng)鍵盤輸入的要求。在執(zhí)行鍵功能程序時(shí),CPU不再響應(yīng)鍵輸入要求,直到CPU重新掃描鍵盤為止。鍵盤掃描程序一般應(yīng)包括以下內(nèi)容:(1)判別有無鍵按下。(2)鍵盤掃描取得閉合鍵的行、列值。(3)用計(jì)算法或查表法得到鍵值。(4)判斷閉合鍵是否釋放,如沒釋放則繼續(xù)等待。(5)將閉合鍵鍵號(hào)保存,同時(shí)轉(zhuǎn)去執(zhí)行該閉合鍵的功能。圖6.14是一個(gè)4×8矩陣鍵盤電路,由圖可知,其與單片機(jī)的接口采用8155擴(kuò)展I/O芯片,鍵盤采用編程掃描方式工作。8155C口的低4位輸入行掃描信號(hào),A口輸出8位列掃描信號(hào),二者均為低電平有效。8155的IO/與P2.0相連,與P2.1相連,、分別與單片機(jī)的、相連。由此可確定8155的口地址為命令/狀態(tài)口:0100H(P2未用口線規(guī)定為0)A口:0101H B口:0102H C口:0103H
圖6.148255擴(kuò)展I/O口組成的矩陣鍵盤
01234567891617182425262728293031P2.7P2.0RDWRALECSIO/MRDWRALEPA0PA1PA2PA3PA4PA5PA6PA7PC0PC1PC2PC3+5V8255D0D7P0.0P0.7MCS-51單片機(jī)~~1920212223151413121110圖6.14中,A口為基本輸出口,C口為基本輸入口,因此,方式命令控制字應(yīng)設(shè)置為89H。在編程掃描方式下,鍵盤掃描子程序應(yīng)完成如下幾個(gè)功能:(1)判斷有無鍵按下。其方法為:A口輸出全為0,讀C口狀態(tài),若PC0PC3全為1,則說明無鍵按下;若不全為1,則說明有鍵按下。(2)消除按鍵抖動(dòng)的影響。其方法為:在判斷有鍵按下后,用軟件延時(shí)的方法延時(shí)10ms后,再判斷鍵盤狀態(tài),如果仍為有鍵按下狀態(tài),則認(rèn)為有一個(gè)按鍵按下,否則當(dāng)作按鍵抖動(dòng)來處理(3)求按鍵位置。根據(jù)前述鍵盤掃描法,進(jìn)行逐列置0掃描。圖6.14中,32個(gè)鍵的鍵值分布如下(鍵值由4位十六進(jìn)制數(shù)碼組成,前兩位是列的值,即A口數(shù)據(jù),后兩位是行的值,即C口數(shù)據(jù),X為任意值):FEXEFDXEFBXEF7XEEFXEDFXEBFXE 7FXEFEXDFDXDFBXDF7XDEFXDDFXDBFXD 7FXDFEXBFDXBFBXBF7XBEFXBDFXBBFXB 7FXBFEX7FDX7FBX7F7X7EFX7DFX7BFX7 7FX7按鍵鍵值確定后,即可確定按鍵位置。相應(yīng)的鍵號(hào)可根據(jù)下述公式進(jìn)行計(jì)算:鍵號(hào)=行首鍵號(hào)+列號(hào)。圖6.14中,每行的行首可給以固定的編號(hào)0(00H),8(08H),16(10H),24(18H),列號(hào)依列線順序?yàn)?7。(4)判別閉合的鍵是否釋放。按鍵閉合一次只能進(jìn)行一次功能操作,因此,等按鍵釋放后才能根據(jù)按鍵的鍵號(hào)執(zhí)行相應(yīng)的鍵功能操作。
2)定時(shí)掃描方式定時(shí)掃描方式就是每隔一段時(shí)間對(duì)鍵盤掃描一次,它利用單片機(jī)內(nèi)部的定時(shí)器產(chǎn)生一定時(shí)間(例如10ms)的定時(shí),當(dāng)定時(shí)時(shí)間到就產(chǎn)生定時(shí)器溢出中斷。CPU響應(yīng)中斷后對(duì)鍵盤進(jìn)行掃描,并在有鍵按下時(shí)識(shí)別出該鍵,再執(zhí)行該鍵的功能程序。定時(shí)掃描方式的硬件電路與編程掃描方式相同,程序流程圖如圖6.15所示。圖6.15定時(shí)掃描方式程序流程圖
圖6.15中,標(biāo)志1和標(biāo)志2是在單片機(jī)內(nèi)部RAM的位尋址區(qū)設(shè)置的兩個(gè)標(biāo)志位,標(biāo)志1為去抖動(dòng)標(biāo)志位,標(biāo)志2為識(shí)別完按鍵的標(biāo)志位。初始化時(shí)將這兩個(gè)標(biāo)志位設(shè)置為0,執(zhí)行中斷服務(wù)程序時(shí),首先判別有無鍵閉合,若無鍵閉合,將標(biāo)志1和標(biāo)志2置0后返回;若有鍵閉合,先檢查標(biāo)志1,當(dāng)標(biāo)志1為0時(shí),說明還未進(jìn)行去抖動(dòng)處理,此時(shí)置位標(biāo)志1,并中斷返回。由于中斷返回后要經(jīng)過10ms后才會(huì)再次中斷,相當(dāng)于延時(shí)了10ms,因此,程序無須再延時(shí)。下次中斷時(shí),因標(biāo)志1為1,CPU再檢查標(biāo)志2,如標(biāo)志2為0說明還未進(jìn)行按鍵的識(shí)別處理,這時(shí),CPU先置位標(biāo)志2,然后進(jìn)行按鍵識(shí)別處理,再執(zhí)行相應(yīng)的按鍵功能子程序,最后,中斷返回。如標(biāo)志2已經(jīng)為1,則說明此次按鍵已做過識(shí)別處理,只是還未釋放按鍵。當(dāng)按鍵釋放后,在下一次中斷服務(wù)程序中,標(biāo)志1和標(biāo)志2又重新置0,等待下一次按鍵。
3)中斷掃描方式采用上述兩種鍵盤掃描方式時(shí),無論是否按鍵,CPU都要定時(shí)掃描鍵盤,而單片機(jī)應(yīng)用系統(tǒng)工作時(shí),并非經(jīng)常需要鍵盤輸入,因此,CPU經(jīng)常處于空掃描狀態(tài)。為提高CPU工作效率,可采用中斷掃描工作方式。其工作過程如下:當(dāng)無鍵按下時(shí),CPU處理自己的工作,當(dāng)有鍵按下時(shí),產(chǎn)生中斷請(qǐng)求,CPU轉(zhuǎn)去執(zhí)行鍵盤掃描子程序,并識(shí)別鍵號(hào)。圖6.16是一種簡(jiǎn)易鍵盤接口電路,該鍵盤是由8051P1口的高、低字節(jié)構(gòu)成的4×4鍵盤。鍵盤的列線與P1口的高4位相連,鍵盤的行線與P1口的低4位相連,因此,P1.4P1.7是鍵輸出線,P1.0P1.3是掃描輸入線。圖中的4輸入與門用于產(chǎn)生按鍵中斷,其輸入端與各列線相連,再通過上拉電阻接至+5V電源,輸出端接至8051的外部中斷輸入端。具體工作如下:當(dāng)鍵盤無鍵按下時(shí),與門各輸入端均為高電平,保持輸出端為高電平;當(dāng)有鍵按下時(shí),輸出端為低電平,向CPU申請(qǐng)中斷,若CPU開放外部中斷,則會(huì)響應(yīng)中斷請(qǐng)求,轉(zhuǎn)去執(zhí)行鍵盤掃描子程序。圖6.16中斷掃描鍵盤電路6.4單片機(jī)應(yīng)用系統(tǒng)中的A/D、D/A接口6.4.1A/D轉(zhuǎn)換器概述A/D轉(zhuǎn)換器用于實(shí)現(xiàn)模擬量→數(shù)字量的轉(zhuǎn)換,按轉(zhuǎn)換原理可分為4種,即:計(jì)數(shù)式A/D轉(zhuǎn)換器、雙積分式A/D轉(zhuǎn)換器、逐次逼近式A/D轉(zhuǎn)換器和并行式A/D轉(zhuǎn)換器。目前最常用的是雙積分式A/D轉(zhuǎn)換器和逐次逼近式A/D轉(zhuǎn)換器。雙積分式A/D轉(zhuǎn)換器的主要優(yōu)點(diǎn)是轉(zhuǎn)換精度高,抗干擾性能好,價(jià)格便宜。其缺點(diǎn)是轉(zhuǎn)換速度較慢,因此,這種轉(zhuǎn)換器主要用于速度要求不高的場(chǎng)合。另一種常用的A/D轉(zhuǎn)換器是逐次逼近式的,逐次逼近式A/D轉(zhuǎn)換器是一種速度較快,精度較高的轉(zhuǎn)換器,其轉(zhuǎn)換時(shí)間大約在幾μs到幾百μs之間。通常使用的逐次逼近式典型A/D轉(zhuǎn)換器芯片有:(1)ADC0801~ADC0805型8位MOS型A/D轉(zhuǎn)換器(美國國家半導(dǎo)體公司產(chǎn)品)。(2)ADC0808/0809型8位MOS型A/D轉(zhuǎn)換器。(3)ADC0816/0817。這類產(chǎn)品除輸入通道數(shù)增加至16個(gè)以外,其它性能與ADC0808/0809型基本相同。
6.4.2典型A/D轉(zhuǎn)換器芯片ADC0809ADC0809是典型的8位8通道逐次逼近式A/D轉(zhuǎn)換器,采用CMOS工藝。1.?ADC0809的內(nèi)部邏輯結(jié)構(gòu)ADC0809內(nèi)部邏輯結(jié)構(gòu)如圖6.17所示。圖6.17中,多路開關(guān)可選通8個(gè)模擬通道,允許8路模擬量分時(shí)輸入,共用一個(gè)A/D轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換。地址鎖存與譯碼電路完成對(duì)A、B、C三個(gè)地址位進(jìn)行鎖存和譯碼,其譯碼輸出用于通道選擇,如表6.3所示。
圖6.17ADC0809內(nèi)部邏輯結(jié)構(gòu)表6.3通道選擇表CBA選擇的通道000001010011100101110111IN0IN1IN2IN3IN4IN5IN6IN78位A/D轉(zhuǎn)換器是逐次逼近式,由控制與時(shí)序電路、逐次逼近寄存器、樹狀開關(guān)以及256R電阻階梯網(wǎng)絡(luò)等組成。輸出鎖存器用于存放和輸出轉(zhuǎn)換得到的數(shù)字量。圖6.18ADC0809引腳圖2.信號(hào)引腳ADC0809芯片為28引腳雙列直插式封裝,其引腳排列見圖6.18。
對(duì)ADC0809主要信號(hào)引腳的功能說明如下:(1)IN7~I(xiàn)N0:模擬量輸入通道。ADC0809對(duì)輸入模擬量的要求主要有:信號(hào)單極性,電壓范圍0~5V,若信號(hào)過小還需進(jìn)行放大。另外,在A/D轉(zhuǎn)換過程中,模擬量輸入的值不應(yīng)變化太快,因此,對(duì)變化速度快的模擬量,在輸入前應(yīng)增加采樣保持電路。(2)A、B、C:地址線。A為低位地址,C為高位地址,用于對(duì)模擬通道進(jìn)行選擇。圖6.18中為ADDA、ADDB和ADDC,其地址狀態(tài)與通道相對(duì)應(yīng)的關(guān)系見表6.3。(3)ALE:地址鎖存允許信號(hào)。在對(duì)應(yīng)ALE上跳沿,A、B、C地址狀態(tài)送入地址鎖存器中。(4)START:轉(zhuǎn)換啟動(dòng)信號(hào)。START上跳沿時(shí),所有內(nèi)部寄存器清0;START下跳沿時(shí),開始進(jìn)行A/D轉(zhuǎn)換;在A/D轉(zhuǎn)換期間,START應(yīng)保持低電平。(5)D7~D0:數(shù)據(jù)輸出線。其為三態(tài)緩沖輸出形式,可以和單片機(jī)的數(shù)據(jù)線直接相連。(6)OE:輸出允許信號(hào)。其用于控制三態(tài)輸出鎖存器向單片機(jī)輸出轉(zhuǎn)換得到的數(shù)據(jù)。OE=0,輸出數(shù)據(jù)線呈高電阻;OE=1,輸出轉(zhuǎn)換得到的數(shù)據(jù)。(7)CLK:時(shí)鐘信號(hào)。ADC0809的內(nèi)部沒有時(shí)鐘電路,所需時(shí)鐘信號(hào)由外界提供,因此有時(shí)鐘信號(hào)引腳。通常使用頻率為500kHz的時(shí)鐘信號(hào)。(8)EOC:轉(zhuǎn)換結(jié)束狀態(tài)信號(hào)。EOC=0,正在進(jìn)行轉(zhuǎn)換;EOC=1,轉(zhuǎn)換結(jié)束。該狀態(tài)信號(hào)既可作為查詢的狀態(tài)標(biāo)志,又可以作為中斷請(qǐng)求信號(hào)使用。(9)VCC:+5V電源。(10)Vref:參考電源。參考電壓用來與輸入的模擬信號(hào)進(jìn)行比較,作為逐次逼近的基準(zhǔn)。其典型值為+5V(Vref(+)=+5V,Vref(-)=0V)
ADC0809與8031單片機(jī)的一種連接如圖6.19所示。電路連接主要涉及兩個(gè)問題,一是8路模擬信號(hào)通道選擇,二是A/D轉(zhuǎn)換完成后轉(zhuǎn)換數(shù)據(jù)的傳送。圖6.19ADC0809與8031單片機(jī)的連接1.8路模擬通道選擇A、B、C分別接地址鎖存器提供的低三位地址,只要把三位地址寫入0809中的地址鎖存器,就實(shí)現(xiàn)了模擬通道選擇。對(duì)系統(tǒng)來說,地址鎖存器是一個(gè)輸出口,為了把三位地址寫入,還要提供口地址。圖6.19中使用的是線選法,口地址由P2.0確定,同時(shí)和相或取反后作為開始轉(zhuǎn)換的選通信號(hào)。若無關(guān)位都取0,則8路通道IN0~I(xiàn)N7的地址分別為0000H~0007H。從圖中可以看到,把ADC0809的ALE信號(hào)與START信號(hào)連接在一起了,這樣使得在ALE信號(hào)的前沿寫入地址信號(hào),緊接著在其后沿就啟動(dòng)轉(zhuǎn)換。因此,啟動(dòng)圖6.40中的ADC0809進(jìn)行轉(zhuǎn)換只需要下面的指令(以通道0為例):MOVDPTR,#0000H ;選中通道0MOVX@DPTR,A ;信號(hào)有效,啟動(dòng)轉(zhuǎn)換
2.轉(zhuǎn)換數(shù)據(jù)的傳送A/D轉(zhuǎn)換后得到的是數(shù)字量的數(shù)據(jù),這些數(shù)據(jù)應(yīng)傳送給單片機(jī)進(jìn)行處理。數(shù)據(jù)傳送的關(guān)鍵問題是如何確認(rèn)A/D轉(zhuǎn)換完成,因?yàn)橹挥写_認(rèn)數(shù)據(jù)轉(zhuǎn)換完成后,才能進(jìn)行傳送。為此,可采用下述三種方式。1)定時(shí)傳送方式對(duì)于一種A/D轉(zhuǎn)換器來說,轉(zhuǎn)換時(shí)間作為一項(xiàng)技術(shù)指標(biāo)是已知的和固定的。例如,ADC0809轉(zhuǎn)換時(shí)間為128μs,相當(dāng)于6MHz的MCS-51單片機(jī)的64個(gè)機(jī)器周期??蓳?jù)此設(shè)計(jì)一個(gè)延時(shí)子程序,A/D轉(zhuǎn)換啟動(dòng)后即調(diào)用這個(gè)延時(shí)子程序,延遲時(shí)間一到,轉(zhuǎn)換肯定已經(jīng)完成了,接著就可進(jìn)行數(shù)據(jù)傳送。2)查詢方式A/D轉(zhuǎn)換芯片有表明轉(zhuǎn)換完成的狀態(tài)信號(hào),例如ADC0809的EOC端。因此,可以用查詢方式,軟件測(cè)試EOC的狀態(tài),即可確知轉(zhuǎn)換是否完成,然后進(jìn)行數(shù)據(jù)傳送。3)中斷方式把表明轉(zhuǎn)換完成的狀態(tài)信號(hào)(EOC)作為中斷請(qǐng)求信號(hào),以中斷方式進(jìn)行數(shù)據(jù)傳送。在圖6.19中,EOC信號(hào)經(jīng)過反相器后送到單片機(jī)的INT0,因此可以采用查詢?cè)撘_或中斷的方式進(jìn)行轉(zhuǎn)換后數(shù)據(jù)的傳送。不管使用上述哪種方式,一旦確認(rèn)轉(zhuǎn)換完成,即可通過指令進(jìn)行數(shù)據(jù)傳送。首先送出口地址0000H,并以口地址的低三位作選通信號(hào),當(dāng)信號(hào)有效時(shí),OE信號(hào)即有效,把轉(zhuǎn)換數(shù)據(jù)送上數(shù)據(jù)總線,供單片機(jī)接收,即:MOV DPTR,#0000H ;選中通道0MOVX A,@DPTR ;信號(hào)有效,輸出轉(zhuǎn)換后的數(shù)據(jù)到A累加器
根據(jù)圖6.19,設(shè)計(jì)一個(gè)1路模擬量輸入的巡回檢測(cè)系統(tǒng),采樣數(shù)據(jù)在LED數(shù)碼管上顯示出來,以下僅列出主程序。初始化程序:ORG 0000H ;主程序入口地址AJMP MAIN;跳轉(zhuǎn)主程序
MAIN: MOV SP,#50HMOV DPTR,#9000H ;0809端口地址CLR AMOVX@DPTR,A ;STARTA/D (ACALLDISLED) ;沿時(shí)方式WAIT: JBCP3.0,READ ;查詢方式 SJMP WAITREAD: MOV DPTR,#9000HMOV A,@DPTR ;讀數(shù)MOV 30H,A ACALLDISLED SJMP MAIN6.4.3D/A轉(zhuǎn)換器概述D/A轉(zhuǎn)換器輸入的是數(shù)字量,經(jīng)轉(zhuǎn)換后輸出的是模擬量。有關(guān)D/A轉(zhuǎn)換器的技術(shù)性能指標(biāo)很多,例如絕對(duì)精度、相對(duì)精度、線性度、輸出電壓范圍、溫度系數(shù)、輸入數(shù)字代碼種類(二進(jìn)制或BCD碼)等。1)分辯率分辨率是D/A轉(zhuǎn)換器對(duì)輸入量變化敏感程度的描述,與輸入數(shù)字量的位數(shù)有關(guān)。如果數(shù)字量的位數(shù)為n,則D/A轉(zhuǎn)換器的分辨率為2-n。這就意味著數(shù)/模轉(zhuǎn)換器能對(duì)滿刻度的2-n輸入量作出反應(yīng)。例如,8位數(shù)的分辨率為1/256,10位數(shù)的分辨率為1/1024等。因此,數(shù)字量位數(shù)越多,分辨率也就越高,亦即轉(zhuǎn)換器對(duì)輸入量變化的敏感程度也就越高。使用時(shí),應(yīng)根據(jù)分辨率的需要來選定轉(zhuǎn)換器的位數(shù)。DAC??煞譃?位、10位、12位三種。2)建立時(shí)間建立時(shí)間是描述D/A轉(zhuǎn)換速度快慢的一個(gè)參數(shù),指從輸入數(shù)字量變化到輸出達(dá)到終值誤差±(1/2)LSB(最低有效位)時(shí)所需的時(shí)間。通常以建立時(shí)間來表示轉(zhuǎn)換速度.轉(zhuǎn)換器的輸出形式為電流時(shí),建立時(shí)間較短;輸出形式為電壓時(shí),由于建立時(shí)間還要加上運(yùn)算放大器的延遲時(shí)間,因此建立時(shí)間要長(zhǎng)一點(diǎn)。但總的來說,D/A轉(zhuǎn)換速度遠(yuǎn)高于A/D轉(zhuǎn)換速度,快速的D/A轉(zhuǎn)換器的建立時(shí)間可達(dá)1μs。3)接口形式D/A轉(zhuǎn)換器與單片機(jī)接口方便與否,主要決定于轉(zhuǎn)換器本身是否帶數(shù)據(jù)鎖存器。有兩類D/A轉(zhuǎn)換器,一類是不帶鎖存器的,另一類是帶鎖存器的。對(duì)于不帶鎖存器的D/A轉(zhuǎn)換器,為了保存來自單片機(jī)的轉(zhuǎn)換數(shù)據(jù),接口時(shí)要另加鎖存器,因此這類轉(zhuǎn)換器必須在口線上;而帶鎖存器的D/A轉(zhuǎn)換器,可以把它看作是一個(gè)輸出口,因此可直接在數(shù)據(jù)總線上,而不需另加鎖存器。
(1)典型D/A轉(zhuǎn)換器芯片DAC0832DAC0832是一個(gè)8位D/A轉(zhuǎn)換器。單電源供電,從+5V~+15V均可正常工作?;鶞?zhǔn)電壓的范圍為±10V;電流建立時(shí)間為1μs;CMOS工藝,低功耗20mW。DAC0832轉(zhuǎn)換器芯片為20引腳,雙列直插式封裝,其引腳排列圖如圖6.20所示。DAC0832內(nèi)部結(jié)構(gòu)框圖如圖6.21所示。該轉(zhuǎn)換器由輸入寄存器和DAC寄存器構(gòu)成兩級(jí)數(shù)據(jù)輸入鎖存。使用時(shí),數(shù)據(jù)輸入可以采用兩級(jí)鎖存(雙鎖存)形式,或單級(jí)鎖存(一級(jí)鎖存,一級(jí)直通)形式,或直接輸入(兩級(jí)直通)形式。
圖6.20DAC0832引腳圖
圖6.21DAC0832內(nèi)部結(jié)構(gòu)框圖
此外,由三個(gè)與門電路組成寄存器輸出控制邏輯電路,該邏輯電路的功能是進(jìn)行數(shù)據(jù)鎖存控制,當(dāng)=0時(shí),輸入數(shù)據(jù)被鎖存;當(dāng)=1時(shí),鎖存器的輸出跟隨輸入的數(shù)據(jù)。D/A轉(zhuǎn)換電路是一個(gè)R-2RT型電阻網(wǎng)絡(luò),實(shí)現(xiàn)8位數(shù)據(jù)的轉(zhuǎn)換。對(duì)各引腳信號(hào)說明如下:(1)DI7~DI0:轉(zhuǎn)換數(shù)據(jù)輸入。(2):片選信號(hào)(輸入),低電平有效。(3)ILE:數(shù)據(jù)鎖存允許信號(hào)(輸入),高電平有效。(4):第1寫信號(hào)(輸入),低電平有效。上述兩個(gè)信號(hào)控制輸入寄存器,是數(shù)據(jù)直通方式,還是數(shù)據(jù)鎖存方式,當(dāng)ILE=1和=0時(shí),為輸入寄存器直通方式;當(dāng)ILE=1和=1時(shí),為輸入寄存器鎖存方式。(5):第2寫信號(hào)(輸入),低電平有效。(6):數(shù)據(jù)傳送控制信號(hào)(輸入),低電平有效。上述兩個(gè)信號(hào)控制DAC寄存器是數(shù)據(jù)直通方式還是數(shù)據(jù)鎖存方式,當(dāng)=0和=0時(shí),為DAC寄存器直通方式;當(dāng)=1和=0時(shí),為DAC寄存器鎖存方式。(7)?Iout1:電流輸出1。(8)?Iout2:電流輸出2。DAC轉(zhuǎn)換器的特性之一是:Iout1+Iout2=常數(shù)。(9)?Rfb:反饋電阻端。DAC0832是電流輸出,為了取得電壓輸出,需在電壓輸出端接運(yùn)算放大器,Rfb即為運(yùn)算放大器的反饋電阻端。運(yùn)算放大器的接法如圖6.19所示。(10)Vref:基準(zhǔn)電壓,其電壓可正可負(fù),范圍是-10V~+10V。(11)?DGND:數(shù)字地。(12)?AGND:模擬地。圖6.22運(yùn)算放大器接法(2)單緩沖方式的接口與應(yīng)用1.單緩沖方式連接所謂單緩沖方式就是使DAC0832的兩個(gè)輸入寄存器中有一個(gè)處于直通方式,而另一個(gè)處于受控的鎖存方式,或者說兩個(gè)輸入寄存器同時(shí)受控的方式。在實(shí)際應(yīng)用中,如果只有一路模擬量輸出,或雖有幾路模擬量但并不要求同步輸出時(shí),就可采用單緩沖方式。單緩沖方式的兩種連接如圖6.23和圖6.24所示。圖6.23DAC0832單緩沖方式接口圖6.24用DAC產(chǎn)生鋸齒波
圖6.24中,=0和=0,因此DAC寄存器處于直通方式。而輸入寄存器處于受控鎖存方式,接8051的,ILE接高電平,此外還應(yīng)把接高位地址或譯碼輸出,以便為輸入寄存器確定地址。
其它如數(shù)據(jù)線連接及地址鎖存等問題不再贅述。2.單緩沖方式應(yīng)用舉例——產(chǎn)生鋸齒波在許多控制應(yīng)用中,要求有一個(gè)線性增長(zhǎng)的電壓(鋸齒來控制檢測(cè)過程,移動(dòng)記錄筆或移動(dòng)電子束等。對(duì)此可通過在DAC0832的輸出端接運(yùn)算放大器,由運(yùn)算放大器產(chǎn)生鋸齒波來實(shí)現(xiàn),電路連接如圖6.24所示。圖中的DAC8032工作于單緩沖方式,其中輸入寄存器受控,而DAC寄存器直通。 ORG0000H
MAIN: MOV DPTR,#0A000H
MOV A,#0FFH
MOVX@DPTR,A ;正轉(zhuǎn)
ACALLDELAY
MOV DPTR,#0A000H
MOV A,#80H ;停止
MOVX@DPTR,A
ACALLDELAY
MOV DPTR,#0A000H
MOV A,#40H ;反轉(zhuǎn)
MOVX@DPTR,A
ACALLDELAY
MOV DPTR,#0A000H
MOV A,#00H ;反轉(zhuǎn)加速
MOVX@DPTR,A
ACALLDELAY
SJMP$
END
假定輸入寄存器地址為7FFFH,產(chǎn)生鋸齒波的源程序清單如下: ORG 0200HDASAW:MOV DPTR,#7FFFH ;輸入寄存器地址,假定P2.7接 MOV A,#00H ;轉(zhuǎn)換初值WW:MOVX@DPTR,A ;D/A轉(zhuǎn)換INC A NOP ;延時(shí) NOP NOP AJMPWW執(zhí)行上述程序,在運(yùn)算放大器的輸出端就能得到如圖6.22所示的鋸齒波。對(duì)鋸齒波的產(chǎn)生作如下幾點(diǎn)說明:(1)程序每循環(huán)一次,A加1,因此實(shí)際上鋸齒波的上升邊是由256個(gè)小階梯構(gòu)成的,但由于階梯很小,所以宏觀上看就是如圖6.25中所表示的線性增長(zhǎng)鋸齒波。(2)可通過循環(huán)程序段的機(jī)器周期數(shù)計(jì)算出鋸齒波的周期,并可根據(jù)需要,通過延時(shí)的辦法來改變波形周期。當(dāng)延遲時(shí)間較短時(shí),可用NOP指令來實(shí)現(xiàn)(本程序就是如此);當(dāng)需要延遲時(shí)間較長(zhǎng)時(shí),可以使用一個(gè)延時(shí)子程序。延遲時(shí)間不同,波形周期不同,鋸齒波的斜率就不同。圖6.25D/A轉(zhuǎn)換產(chǎn)生的鋸齒波
(3)通過A加1,可得到正向的鋸齒波;如要得到負(fù)向的鋸齒波,改為減1指令即可實(shí)現(xiàn)。(4)程序中A的變化范圍是0~255,因此得到的鋸齒波是滿幅度的。如要求得到非滿幅鋸齒波,可通過計(jì)算求得數(shù)字量的初值和終值,然后在程序中通過置初值判終值的辦法即可實(shí)現(xiàn)。用同樣的方法也可以產(chǎn)生三角波、矩形波、梯形波,請(qǐng)讀者自行編寫程序。
6.5單片機(jī)IO實(shí)現(xiàn)I2C總線I2C(Inter-IntegratedCircuit)總線是一種由PHILIPS公司開發(fā)的兩線式串行總線,用于連接微控制器及其外圍設(shè)備。I2C總線產(chǎn)生于80年代,最初為音頻和視頻設(shè)備開發(fā),如今主要在服務(wù)器管理中使用,其中包括單個(gè)組件狀態(tài)的通信。例如管理員可對(duì)各個(gè)組件進(jìn)行查詢,以管理系統(tǒng)的配置或掌握組件的功能狀態(tài),如電源和系統(tǒng)風(fēng)扇??呻S時(shí)監(jiān)控內(nèi)存、硬盤、網(wǎng)絡(luò)、系統(tǒng)溫度等多個(gè)參數(shù),增加了系統(tǒng)的安全性,方便了管理。6.5.1I2C總線的結(jié)構(gòu)與原理
I2C總線使用兩根信號(hào)線來進(jìn)行數(shù)據(jù)傳輸,一根是串行數(shù)據(jù)線(SDA),另一根是串行時(shí)鐘線(SCL)。它允許若干兼容器件(如存儲(chǔ)器、A/D和D/A轉(zhuǎn)換器,以及LED、LCD驅(qū)動(dòng)器等)共享總線。I2C總線上理論上可以允許的最大設(shè)備數(shù),是以總線上所有器件的電容總和不超過400pF為限(其中包括連線本身的電容和與它連接端的引出電容),總線上所有器件要依靠SDA發(fā)送的地址信號(hào)尋址,不需要片選線。任何時(shí)刻總線只能由一個(gè)主器件控制,各從器件在總線空閑時(shí)啟動(dòng)數(shù)據(jù)傳送,由I2C總線仲裁來決定哪個(gè)主器件控制總線。SDA與SCL為雙向I/O線,都是開漏極端(輸出1時(shí),為高阻抗?fàn)顟B(tài))。因此I2C總線上的所有設(shè)備的SDA、SCL引腳都要外接上拉電阻。目前有的單片機(jī)內(nèi)部直接集成了I2C處理模塊,對(duì)于沒有集成I2C處理模塊的單片機(jī)可以用單片機(jī)的通用IO口線來模擬SDA和SCL,如圖6.26所示。在I2C總線中,具有主控能力的器件的數(shù)據(jù)傳輸和尋址也是在仲裁中進(jìn)行的。當(dāng)有多個(gè)主控器企圖同時(shí)占用總線傳輸數(shù)據(jù)時(shí),根據(jù)I2C總線的規(guī)約它們之間會(huì)有一個(gè)仲裁過程,以決定誰將占用總線。仲裁是在時(shí)鐘線SCL為高電平時(shí),根據(jù)數(shù)據(jù)線SDA的狀態(tài)進(jìn)行的。因此,仲裁過程和時(shí)鐘電平、數(shù)據(jù)線狀態(tài)是相輔相成的。也正是這種相輔相成的機(jī)制,使在總線仲裁過程中,當(dāng)有其他主控器在數(shù)據(jù)線上傳送低電平時(shí),發(fā)送高電平的主控器將會(huì)發(fā)現(xiàn)此時(shí)數(shù)據(jù)線上的電平與其輸出電平不一致,從而被裁決失去總線的主控權(quán),并立即關(guān)閉其數(shù)據(jù)輸出。仲裁過程原理圖如圖6.27所示。圖6.27I2C總線仲裁原理6.5.2I2C總線的時(shí)序分析
I2C總線系統(tǒng)是由SCL(串行時(shí)鐘)和SDA(串行數(shù)據(jù))兩根總線構(gòu)成的。該總線有嚴(yán)格的時(shí)序要求,總線工作時(shí),由串行時(shí)鐘線SCL傳送時(shí)鐘脈沖,由串行數(shù)據(jù)線SDA傳送數(shù)據(jù)??偩€協(xié)議規(guī)定,各主節(jié)點(diǎn)進(jìn)行通信時(shí)都要有起始、結(jié)束、發(fā)送數(shù)據(jù)和應(yīng)答信號(hào)。這些信號(hào)都是通信過程中的基本單元??偩€傳送的每1幀數(shù)據(jù)均是1個(gè)字節(jié),每當(dāng)發(fā)送完1個(gè)字節(jié)后,接收節(jié)點(diǎn)就相應(yīng)給一應(yīng)答信號(hào)。協(xié)議規(guī)定,在啟動(dòng)總線后的第1個(gè)字節(jié)的高7位是對(duì)從節(jié)點(diǎn)的尋址地址,第8位為方向位(“0”表示主節(jié)點(diǎn)對(duì)從節(jié)點(diǎn)的寫操作;“1”表示主節(jié)點(diǎn)對(duì)從節(jié)點(diǎn)的讀操作),其余的字節(jié)為操作數(shù)據(jù)。圖6.28列出I2C總線上幾個(gè)基本信號(hào)的時(shí)序。假定使用單片機(jī)P1.0模擬I2C總線的SDA,P1.1模擬I2C總線的SCL。圖6.28I2C總線基本時(shí)序(1)總線空閑 I2C總線在空閑狀態(tài)時(shí),也就是不在進(jìn)行任何操作控制時(shí),數(shù)據(jù)線SDA和時(shí)鐘線SCL總是處于高電平輸出狀態(tài)。當(dāng)操作控制系統(tǒng)時(shí),I2C總線的主機(jī)將發(fā)出啟動(dòng)信號(hào),使數(shù)據(jù)線SDA由高電平變?yōu)榈碗娖?,同時(shí)時(shí)鐘線SCL也發(fā)出時(shí)鐘信號(hào),程序?qū)崿F(xiàn)如下:SCL_I2C BITP1.1;預(yù)定義I2C總線的SCLSDA_I2C BITp1.0;預(yù)定義I2C總線的SDA…SETB SCL_I2CSETB SDA_I2C(2)開始信號(hào)SCL保持高電平的狀態(tài)下,SDA出現(xiàn)下降沿。出現(xiàn)開始信號(hào)以后,總線被認(rèn)為"忙",時(shí)序圖如圖6-28(a)所示,程序?qū)崿F(xiàn)如下:Start:SETBSDA_I2C;發(fā)送起始條件的數(shù)據(jù)信號(hào)SETBSCL_I2CNOPNOPNOPCLRSDA_I2C;發(fā)送起始信號(hào)NOPNOPNOPCLRSCL_I2C;鉗住I2C總線準(zhǔn)備發(fā)送或接受數(shù)據(jù)RET(3)停止信號(hào)SCL保持高電平的狀態(tài)下,SDA出現(xiàn)上升沿。停止信號(hào)過后,總線被認(rèn)為"空閑",如圖6-28(b)所示,程序?qū)崿F(xiàn)如下:Stop: CLRSDA_PCF8563;發(fā)送停止條件的數(shù)據(jù)信號(hào)NOP NOP
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版不銹鋼保溫水箱銷售合同
- 二零二五年度安全教育培訓(xùn)責(zé)任協(xié)議范例2篇
- 2024小學(xué)蔬菜配送與食品安全保障服務(wù)合同2篇
- 2025年低溫豆粕項(xiàng)目可行性研究報(bào)告
- 2025版公路路網(wǎng)優(yōu)化與投資合作協(xié)議3篇
- 2024版人力資源服務(wù)企業(yè)保密條款協(xié)議一
- 2025版裝配式建筑土建居間合作合同范本3篇
- 2024年設(shè)備租賃居間協(xié)議3篇
- 2024年版自動(dòng)駕駛車輛技術(shù)測(cè)試合同
- 針紡織品、床上用品項(xiàng)目可行性研究報(bào)告申請(qǐng)立項(xiàng)
- 術(shù)后惡心嘔吐防治專家共識(shí)(全文)
- 公共政策學(xué)政策分析的理論方法和技術(shù)課件
- 教案:孔門十弟子
- 中醫(yī)藥在肝癌介入治療中的作用課件
- 超短波操作流程圖
- 小學(xué)2022 年國家義務(wù)教育質(zhì)量監(jiān)測(cè)工作方案
- 化學(xué)品安全技術(shù)說明(膠水)
- 總工會(huì)新規(guī)慰問標(biāo)準(zhǔn)
- 西師大版四年級(jí)音樂上冊(cè)第5單元《唱臉譜》教學(xué)設(shè)計(jì)
- 小學(xué)綜合實(shí)踐五年級(jí)上冊(cè)第2單元《社會(huì)服務(wù)》教材分析及全部教案
- 高質(zhì)量SCI論文入門必備從選題到發(fā)表全套課件
評(píng)論
0/150
提交評(píng)論