版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第8章
單片機(jī)原理的運(yùn)用實(shí)踐1單片機(jī)技術(shù)的應(yīng)用范圍廣、通用性強(qiáng)、工程應(yīng)用的創(chuàng)新成果較多,并且在各類電子設(shè)計(jì)大賽中扮演著重要的角色.學(xué)習(xí)單片機(jī)技術(shù)必須與實(shí)驗(yàn)和工程實(shí)踐緊密相結(jié)合,從入門到精通,首先需要學(xué)習(xí)其原理知識(shí),再進(jìn)行實(shí)際的動(dòng)手實(shí)驗(yàn);工程經(jīng)驗(yàn)積累到一定程度,就能運(yùn)用自如.*初學(xué)者要掌握單片機(jī)技術(shù),可以結(jié)合有代表性的應(yīng)用實(shí)例學(xué)習(xí)和實(shí)踐,進(jìn)行模仿、理解和體驗(yàn),有助于盡快嘗試到學(xué)習(xí)和成功的樂趣.*單片機(jī)技術(shù)的應(yīng)用,都不同程度用到定時(shí)器/計(jì)數(shù)器、中斷系統(tǒng)和串行口通信三大核心功能,靈活運(yùn)用就能營造出有特色的結(jié)果.*本章展示的代表性原創(chuàng)實(shí)例,均圍繞這三大核心功能而作,采取精簡巧妙卻富針對性的電路構(gòu)思,旨在闡明所涉及的技術(shù)原理和相關(guān)思路.*所展示的可執(zhí)行的硬件軟件范例,融合了諸多工程實(shí)施經(jīng)驗(yàn)和資料,使讀者在實(shí)踐中領(lǐng)悟技術(shù)要領(lǐng)并受到啟迪,培養(yǎng)分析電路原理能力,養(yǎng)成查閱元器件數(shù)據(jù)手冊習(xí)慣和積累工程經(jīng)驗(yàn).2*文中實(shí)例的電路裝置,按具體情況附有不同形式的源程序供參考,旨在提供一些對比以體驗(yàn)匯編語言對底層功能控制的簡潔,以及C語言所顯出的對運(yùn)算能力的優(yōu)勢,據(jù)情況互補(bǔ)運(yùn)用能有助于單片機(jī)編程技術(shù)的學(xué)習(xí)和提高.8.1
定時(shí)器/計(jì)數(shù)器實(shí)現(xiàn)的答辯倒計(jì)時(shí)51子系列單片機(jī)有兩個(gè)定時(shí)器/計(jì)數(shù)器,可作片外輸入信號(hào)的計(jì)數(shù)器,也可作片內(nèi)定時(shí)器,還可與其他技術(shù)結(jié)合發(fā)揮功能.利用單片機(jī)的定時(shí)器技術(shù)實(shí)現(xiàn)的答辯倒計(jì)時(shí)裝置,能直觀地控制3諸如答辯﹑演講等活動(dòng)的時(shí)間,克服超時(shí)現(xiàn)象,消除主持者人工干預(yù)的尷尬,提高效率和體現(xiàn)文明品位.8.1.1
基本思路主要體現(xiàn)對定時(shí)器的定時(shí)中斷基本功能的運(yùn)用,其中包括倒計(jì)時(shí)值預(yù)置、實(shí)時(shí)顯示、定時(shí)時(shí)基產(chǎn)生等組成部分.構(gòu)思如下:預(yù)置值設(shè)置:10min位(10分鍵)和min位(1分鍵)共兩檔,由獨(dú)立按鍵分別鍵入,單片機(jī)檢測對應(yīng)鍵的口線電平,籍以記錄從0至9之間的循環(huán)鍵45入次數(shù),并由兩位LED數(shù)碼管作10min位和min位的預(yù)置值靜態(tài)顯示.運(yùn)行鍵設(shè)置:一經(jīng)啟動(dòng),便以秒為閃動(dòng)速率作倒計(jì)時(shí)實(shí)時(shí)顯示.定時(shí)時(shí)基:采取定時(shí)中斷方式產(chǎn)生,每10ms產(chǎn)生一次定時(shí)器中斷,每當(dāng)內(nèi)部累計(jì)到1
min
時(shí),則從min位開始依次遞減一次顯示緩沖區(qū)數(shù)據(jù),直至10min
位和min
位均顯示“零值”為止,并發(fā)出提示音.復(fù)位鍵設(shè)置:該鍵按動(dòng),可重復(fù)上述倒計(jì)時(shí)過程.硬件方案硬件組成定時(shí)器/計(jì)數(shù)器實(shí)現(xiàn)的答辯倒計(jì)時(shí)電路見圖8-1.*以單片機(jī)芯片U1
為控制核心.*由兩位“7段LED共陰極數(shù)碼管”DG1
和DG2作10min位和min位的靜態(tài)顯示,由“7段鎖存/譯碼/鎖存/驅(qū)動(dòng)芯片”U2
和U3
作段控制.*預(yù)置值由兩個(gè)獨(dú)立按鍵Q1和Q2輸入,獨(dú)立按鍵Q3
和Q4
分別擔(dān)任倒計(jì)時(shí)啟動(dòng)和系統(tǒng)復(fù)位.67定時(shí)器/計(jì)數(shù)器實(shí)現(xiàn)的答辯倒計(jì)時(shí)電路(圖8-1)2.電路原理系統(tǒng)上電后,各獨(dú)立按鍵的低電平被U1順序檢測并計(jì)算次數(shù),產(chǎn)生數(shù)字0~9(可循環(huán)鍵入)的10min位和min位預(yù)置值,經(jīng)由P1口低4位送至U2和U3進(jìn)行7段譯碼,由P1.4口和P1.5口的高電平分別鎖存10
min位和min位作靜態(tài)顯示.運(yùn)行鍵啟動(dòng)后,由U1內(nèi)部定時(shí)器中斷進(jìn)行計(jì)時(shí),每累計(jì)1min預(yù)置值減1,數(shù)據(jù)從P1口低4位送出使顯示更新一次,其中min位以秒速率閃動(dòng)顯示,直到顯示位DG1和DG2全為零,此時(shí)P3.7送出低電平,晶體管導(dǎo)通驅(qū)動(dòng)蜂鳴器發(fā)聲,倒計(jì)時(shí)結(jié)束.83.主要器件U1為AT89C51(40腳DIP封裝),
U2和U3為CD4511(16腳DIP封裝),DG1和DG2為超高亮數(shù)碼管GF5101AS,V為PNP型晶體管9015,蜂鳴器為自振型TMB12A05,Q1~Q4為常開觸點(diǎn)按鍵開關(guān).定時(shí)器/計(jì)數(shù)器實(shí)現(xiàn)的答辯倒計(jì)時(shí)電路裝置見圖8-2.9定時(shí)器/計(jì)數(shù)器實(shí)現(xiàn)的答辯倒計(jì)時(shí)電路裝置(圖8-2)10118.1.3
軟件方案1.軟件框架定時(shí)器/計(jì)數(shù)器實(shí)現(xiàn)的答辯倒計(jì)時(shí)軟件框架,分為主程序和定時(shí)中斷程序兩大部分,見圖8-3.主程序?qū)崿F(xiàn)倒計(jì)時(shí)值預(yù)置、定時(shí)啟動(dòng)、顯示緩沖區(qū)遞減到零值的檢測.定時(shí)中斷程序?qū)Χ〞r(shí)時(shí)基進(jìn)行累計(jì)、進(jìn)位,每
當(dāng)進(jìn)滿1min時(shí),把顯示緩沖區(qū)中倒計(jì)時(shí)值遞減1.顯示部分采取硬件譯碼的LED靜態(tài)顯示方式(可參考5.2.2節(jié)).定時(shí)器/計(jì)數(shù)器實(shí)現(xiàn)的答辯倒計(jì)時(shí)軟件框架(圖8-3)122.程序流程以軟件框架為基礎(chǔ)具體實(shí)現(xiàn)的主程序流程圖見圖8-4,中斷服務(wù)程序流程圖見圖8-5.內(nèi)部設(shè)置有10ms、100ms、1s、10s共4個(gè)中斷次數(shù)累計(jì)緩沖區(qū),逢十進(jìn)一,用以更新min位和10min位的兩個(gè)顯示緩沖區(qū)的倒計(jì)時(shí)值.min位的顯示以s為單位閃動(dòng),具體措施就是使顯示以500ms間隔作交替亮/熄.13主程序流程圖(圖8-4)14中斷服務(wù)程序流程圖(圖8-5)15匯編語言源程序按照程序流程圖的邏輯關(guān)系來編寫源程序,可輕松地看成是一種運(yùn)用指令語句的反復(fù)操作.可運(yùn)行的完整源程序見書(P.138~143).C語言源程序用C語言實(shí)現(xiàn)相同功能的程序供對比,對于某些底層控制功能的實(shí)現(xiàn),匯編語言顯得更為簡潔.可運(yùn)行的完整源程序見書(P.143~150).16178.1.4
演示說明答辯倒計(jì)時(shí)電路裝置(圖8-2)上電后:*顯示狀態(tài)DG1(x10位)顯示零,DG2(x1位)熄滅.*預(yù)置值x10鍵和x1鍵可由短按方式輸入或長按
(連續(xù))方式輸入所需的分鐘數(shù)(未輸入分鐘數(shù)之前,按動(dòng)運(yùn)行鍵無效).*按動(dòng)運(yùn)行鍵,蜂鳴器發(fā)出倒計(jì)時(shí)單聲提示音且
DG2(x1位)按秒速率作閃動(dòng)顯示.*當(dāng)DG1(x10位)和DG2(x1位)的倒計(jì)時(shí)顯示值到達(dá)零值時(shí),蜂鳴器連續(xù)發(fā)聲提示計(jì)時(shí)結(jié)束.*按動(dòng)復(fù)位鍵,可重復(fù)上述過程.注:匯編程序中用10s而非60s的進(jìn)位方式替代
實(shí)際值,旨在便于快速演示倒計(jì)時(shí)的全過程.8.2
外部中斷實(shí)現(xiàn)的雙向移動(dòng)識(shí)別51系列單片機(jī)中斷系統(tǒng)的結(jié)構(gòu)和功能詳見3.2節(jié),具有兩個(gè)外部中斷源INT0和INT1,可以單獨(dú)用作外部事件的中斷控制,也可以聯(lián)合起來運(yùn)用以發(fā)揮更多功能.8.1.1
基本思路181.物體雙向移動(dòng)識(shí)別的應(yīng)用物體雙向移動(dòng)方向識(shí)別有具體的工程應(yīng)用價(jià)值.例如基于安全目的公共場館清場所涉及的進(jìn)/出人數(shù)問題,人數(shù)統(tǒng)計(jì)的裝置必須具備進(jìn)/出方向識(shí)別的能力才能達(dá)成.例如辦公室、實(shí)驗(yàn)室和家居等場合的燈光通/斷節(jié)能控制裝置.具體來說就是對人員做進(jìn)/出的雙向識(shí)別判斷:檢測到有人進(jìn)去,統(tǒng)計(jì)值加1;檢測到有人出來,統(tǒng)計(jì)值減1.統(tǒng)計(jì)值大于零為燈光開啟并保持的依據(jù),等于零為關(guān)燈的依據(jù).19也就是說,只要房間里還有人都不能關(guān)燈,直到房間里完全沒有人才可以關(guān)燈.其他環(huán)境和場合,如公交車客流量的統(tǒng)計(jì)等也有潛在的應(yīng)用價(jià)值.以單片機(jī)兩個(gè)外部中斷源的聯(lián)合控制為基礎(chǔ),結(jié)合標(biāo)志位的運(yùn)用,就能發(fā)揮雙向移動(dòng)識(shí)別的效用.2.外部中斷觸發(fā)信號(hào)的來源要進(jìn)行雙向移動(dòng)識(shí)別,必須向單片機(jī)提供兩路外部中斷信號(hào),可利用紅外透射式對管(由紅外發(fā)射管和紅外接收管配對組成)來實(shí)現(xiàn).正常情2021況下只要紅外發(fā)射管信號(hào)被遮擋,紅外光就不能被紅外接收管接收,對管的輸出端便產(chǎn)生負(fù)脈沖信號(hào),該信號(hào)能夠用來觸發(fā)單片機(jī)的外部中斷.3.物體雙向移動(dòng)識(shí)別方法的構(gòu)思示意圖見圖8-6.兩組紅外透射對管并列水平放置,物體沿圖中虛線方向水平移動(dòng)時(shí),必有一路紅外透射光首先被遮擋,接著另一路被遮擋.從外部進(jìn)入的物體首先觸發(fā)外部中斷0,接著觸發(fā)外部中斷1.對中斷觸發(fā)的先后次序作標(biāo)記,用以識(shí)別物體的移動(dòng)方向.22從內(nèi)部出來的物體,中斷觸發(fā)的次序與上述情況相反.把判斷的移動(dòng)方向轉(zhuǎn)換為加減運(yùn)算,根據(jù)運(yùn)算結(jié)果執(zhí)行相應(yīng)的控制,如開燈、關(guān)燈或超限報(bào)警等.物體雙向移動(dòng)識(shí)別方法的示意圖(圖8-6)238.2.2
硬件方案1.硬件組成外部中斷實(shí)現(xiàn)的雙向移動(dòng)識(shí)別電路見圖8-7.*單片機(jī)芯片U1為控制核心.*兩組紅外透射對管U3和U4檢測物體的移動(dòng)方向,其反映方向變化的信號(hào)通過脈沖整形芯片U2整形,輸出的負(fù)跳變信號(hào)作為單片機(jī)兩個(gè)外部中斷口的中斷觸發(fā)信號(hào).*U1
對移動(dòng)方向作識(shí)別和運(yùn)算處理,其結(jié)果送至執(zhí)行機(jī)構(gòu),用固體繼電器SSR作電子開關(guān),連接交流市電以控制交流LED燈HL
的點(diǎn)亮或熄滅.外部中斷實(shí)現(xiàn)的雙向移動(dòng)識(shí)別電路(圖8-7)242.電路原理25在圖8-7電路中,VD1為U3的紅外發(fā)射二極管(R3為限流電阻),V1為光敏接收管(R4為集電極負(fù)載電阻),VD2為U4的紅外發(fā)射二極管(R1為限流電阻),V2為光敏接收管(R2為集電極負(fù)載電阻),兩路均以透射方式并列裝在移動(dòng)物體通道的兩側(cè).系統(tǒng)上電后,VD1和VD2發(fā)射紅外光,沒有物體遮擋的情況下,V1和V2均接收到紅外光而導(dǎo)通,集電極呈低電平,經(jīng)施密特觸發(fā)反相器芯片U2整形后變?yōu)楦唠娖?對U1的兩個(gè)外部中斷口無作用.任一組紅外透射對管受到物體的遮擋時(shí),光敏接收管接收不到紅外光而截止,集電極電平從低變高,經(jīng)整形反相后產(chǎn)生從高到低的脈沖下降沿,從而觸發(fā)單片機(jī)的外部中斷.移動(dòng)物體從外部進(jìn)入的情況,圖中U3首先被遮擋,
U4后續(xù)被遮擋;對于移動(dòng)物體從內(nèi)部出來的情況,
U4變?yōu)槭紫缺徽趽?U3為后續(xù)被遮擋.程序的統(tǒng)計(jì)關(guān)系的依據(jù)為:物體每進(jìn)入一次,U1的計(jì)數(shù)值增1;物體每出來一次,計(jì)數(shù)值減1.只要計(jì)數(shù)值大于0,P3.5口便一直保持低電平使指示26燈VL點(diǎn)亮;反之當(dāng)計(jì)數(shù)值為0時(shí)則變?yōu)楦唠娖绞?/p>
VL熄滅,可直觀反映出計(jì)數(shù)值的狀態(tài).開使HL熄滅.U1由C3和R7實(shí)現(xiàn)自動(dòng)上電復(fù)位.27固體繼電器SSR同步控制交流LED燈HL的亮/熄,并把單片機(jī)系統(tǒng)與交流電隔離.具體控制狀態(tài):當(dāng)計(jì)數(shù)值大于0
時(shí),SSR的控制線
P3.4變?yōu)榈碗娖?使VD3導(dǎo)通(R5為限流電阻),繼而SSR的雙向光控晶閘管VT導(dǎo)通,接通交流市電回路使HL點(diǎn)亮;反之當(dāng)計(jì)數(shù)值等于0時(shí),P3.4變?yōu)楦唠娖绞筕D3截止,導(dǎo)致VT截止,交流市電回路斷3.主要器件
U1為AT89C51(40腳DIP封裝),作為原理驗(yàn)證,U3和U4采用普通槽型紅外透射式對管(如型號(hào)GK122,H2010WYC等),也可用兩組聚焦型紅外發(fā)光二極管和光敏接收管組裝.U2為74HC14(芯片內(nèi)含6個(gè)施密特觸發(fā)反相器).
SSR為交流固體繼電器GTJ24-1A
(直流輸入端
3~14V,交流輸出端240V/1A).HL為交流LED燈(2W).外部中斷的雙向移動(dòng)識(shí)別電路裝置見圖8-8.28外部中斷實(shí)現(xiàn)的雙向移動(dòng)識(shí)別電路裝置(圖8-8)軟件方案軟件框架外部中斷的雙向移動(dòng)識(shí)別軟件框架見圖8-9.2930外部中斷實(shí)現(xiàn)的雙向移動(dòng)識(shí)別軟件框架(圖8-9)31物體移動(dòng)的方向判斷是利用兩個(gè)外部中斷觸發(fā)的先后關(guān)系,并設(shè)置標(biāo)志位作為計(jì)數(shù)的依據(jù).以的操作應(yīng)在 的中服程序中完成.位地址30H(即26.0H)和31H(即26.1H)作為INT0和INT1
的觸發(fā)標(biāo)志.物體進(jìn)入時(shí),首先觸發(fā)INT0,在其中服程序中把標(biāo)志置為1后中斷返回;隨后物體觸發(fā)INT1,在其中服程序中若查到INT0
的標(biāo)志為1,可確認(rèn)物體是從“進(jìn)入方向”進(jìn)入,計(jì)數(shù)緩沖區(qū)的數(shù)值增1,清INT0除的標(biāo)I志NT后1
中斷返回.可見緩沖區(qū)數(shù)值增132體從“出來方向”上離開的特殊情況(如器件受到物體離開時(shí),首先觸發(fā)INT1
,在其中服程序中把標(biāo)志置為1后中斷返回;隨后物體觸發(fā)INT0
,在其中服程序中若查到INT1
的標(biāo)志為1,可確認(rèn)物體是從“出來方向”離開,計(jì)數(shù)緩沖區(qū)的數(shù)值減1,清INT1除 的標(biāo)志IN后T0中斷返回.可見緩沖器數(shù)值減1的操作,應(yīng)在 的中斷服務(wù)程序中完成.主程序的工作,主要是對計(jì)數(shù)緩沖區(qū)的結(jié)果進(jìn)行判斷并作出相應(yīng)的控制操作.實(shí)驗(yàn)裝置的實(shí)施,緩沖區(qū)數(shù)值已為0,仍需考慮物干擾,或有人從窗戶非正常進(jìn)入?yún)s從大門離開).為避免特殊現(xiàn)象的出錯(cuò),當(dāng)計(jì)數(shù)緩沖區(qū)已經(jīng)為0時(shí),若檢測到有物體從“出來方向”離開,程序不作“減1”處理而應(yīng)繼續(xù)保持計(jì)數(shù)緩沖區(qū)為0.2.程序流程主程序流程圖見圖8-10.初始化設(shè)定兩個(gè)外部中斷標(biāo)志,計(jì)數(shù)緩沖區(qū)清零.程序段的主要任務(wù)是循環(huán)判斷計(jì)數(shù)緩沖區(qū)的數(shù)值.若數(shù)值大于0則通過P3.4和P3.5口分別驅(qū)動(dòng)VL和執(zhí)行機(jī)構(gòu),使VL和HL燈點(diǎn)亮;若數(shù)值等于0則使VL和HL燈熄滅.33外部中斷實(shí)現(xiàn)的雙向移動(dòng)識(shí)別主程序流程圖(圖8-10)34INT0中斷服務(wù)程序流程見圖8-11.判斷之一:若INT0自身被觸發(fā),則INT1的標(biāo)志未被置位,可以把INT0的標(biāo)志位30H置為1,表示物體從“進(jìn)入方向”進(jìn)入,然后中斷返回.判斷之二:若INT1的標(biāo)志已置位,表明INT0是隨后被觸發(fā)的,可確認(rèn)物體從“出來方向”離開.緩沖區(qū)處理:把“個(gè)位”單元減1(最高為“千位”),不夠減向高位單元借位,且把當(dāng)前被減單元變
09H;若“千位”單元25H為0,清0所有單35元,INT136雙向移動(dòng)識(shí)別的INT0中斷服務(wù)程序流程圖(圖8-11)37INT1中斷服務(wù)程序流程見圖8-12.與ITA類似.判斷之一:若INT1自身被觸發(fā),則INT0的標(biāo)志未被置位,可以把INT1的標(biāo)志位31H置為1,表示物體從“出來方向”離開,然后中斷返回.判斷之二:若INT0的標(biāo)志已置位,表明INT1是隨后被觸發(fā)的,可確認(rèn)物體從“進(jìn)入方向”進(jìn)入.緩沖區(qū)處理:把“個(gè)位”單元增1,滿10向高位單元進(jìn)位,若“千位”單元25H滿10,上限溢出,清0所有單元,并對25H寫入1,以維持執(zhí)行的現(xiàn)狀,把INT0雙向移動(dòng)識(shí)別的INT1中斷服務(wù)程序流程圖(圖8-12)38匯編語言源程序可運(yùn)行的完整源程序見書(P.156~159).C語言源程序可運(yùn)行的完整源程序見書(P.159~161).8.2.4
演示說明外部中斷實(shí)現(xiàn)的雙向移動(dòng)識(shí)別電路裝置見圖8-8.*首先在HL插座中接入2W交流LED燈.*槽型紅外透射對管由U3代表物體進(jìn)入端、U4代表物體出離端,反之亦然.39*用條狀紙板作遮擋物,從U3向U4(由外往內(nèi))沿凹槽移動(dòng),使兩路紅外光先后被遮擋,經(jīng)U1判斷后記進(jìn)入次數(shù)為1,此時(shí)指示燈VL和燈HL均點(diǎn)亮;從U3向U4的方向把紙板移動(dòng)多次(如:3次,進(jìn)入次數(shù)被記為3),紅色指示燈VL和燈HL維持點(diǎn)亮.*再把條狀紙板改從U4向U3(由內(nèi)往外)沿凹槽移動(dòng),U1判斷屬相反方向,記錄次數(shù)被減1,此時(shí)指示燈VL和燈HL仍然發(fā)亮,直到從U4向U3重復(fù)移動(dòng)
3次其結(jié)果減為零時(shí),指示燈VL和燈HL便熄滅.上述過程可反復(fù)進(jìn)行.40注:這種雙向移動(dòng)識(shí)別技術(shù)運(yùn)用到實(shí)際場合,則需要進(jìn)一步結(jié)合考慮透射距離和紅外光調(diào)制的抗干擾措施等工程因素.8.3
串行口實(shí)現(xiàn)的雙向多機(jī)通信51單片機(jī)串行通信口的結(jié)構(gòu)和功能祥見3.3節(jié).內(nèi)部的全雙工串行通信口有兩個(gè)獨(dú)立的發(fā)送/接收緩沖器,共用一個(gè)緩沖器地址,可以采取查詢或中斷方式或兩者混合方式同時(shí)收/發(fā).此間由一臺(tái)主機(jī)與兩臺(tái)從機(jī)通過混合方式作串行收/發(fā)實(shí)驗(yàn),用以體驗(yàn)串行口的多機(jī)通信過程.418.3.1
基本思路主機(jī)通過按鍵方式來選擇與兩個(gè)從機(jī)中的任一個(gè)進(jìn)行通信,1號(hào)從機(jī)采用中斷方式接收,2號(hào)從機(jī)采用查詢方式接收,實(shí)施混合方式通信.主機(jī)先發(fā)送從機(jī)地址幀,然后轉(zhuǎn)為等待接收狀態(tài),被選中的從機(jī)向主機(jī)發(fā)送回應(yīng)標(biāo)志,主機(jī)收到回應(yīng)標(biāo)志后指示燈點(diǎn)亮,并向從機(jī)發(fā)送數(shù)據(jù)幀,從機(jī)收到數(shù)據(jù)幀后執(zhí)行自身指示燈循環(huán)點(diǎn)亮的操作,然后轉(zhuǎn)為初始待機(jī)狀態(tài).主機(jī)經(jīng)過相當(dāng)于從機(jī)操作所需的時(shí)間延時(shí)之后,42使指示燈熄滅,以示一輪主從通信過程完成,然后返回查詢按鍵的初始狀態(tài).硬件方案硬件組成串行口實(shí)現(xiàn)的雙向多機(jī)通信電路見圖8-13.*單片機(jī)芯片MU1作主機(jī),SU1和SU2分別作從機(jī),并采用相同頻率的晶體振蕩器Y1、Y2、Y3.*按鍵S1作主機(jī)與從機(jī)1的通信啟動(dòng),按鍵S2作主機(jī)與從機(jī)2的通信啟動(dòng).43*指示燈VL1作從機(jī)1的回應(yīng)指示,指示燈VL2作從機(jī)2的回應(yīng)指示.*指示燈VL3、VL4作從機(jī)1的動(dòng)作演示,指示燈
VL5、VL6作從機(jī)2的動(dòng)作演示.*主機(jī)串行發(fā)送口TXD與各從機(jī)的串行接收口
RXD連接.*各從機(jī)的串行發(fā)送口TXD則連接到主機(jī)的串行接收口RXD.*主機(jī)和從機(jī)共用復(fù)位電路.44串行口實(shí)現(xiàn)的雙向多機(jī)通信電路(圖8-13)45462.電路原理系統(tǒng)復(fù)位后主機(jī)處于按鍵查詢狀態(tài),兩從機(jī)處于接收的待機(jī)狀態(tài).若按下鍵S1并接續(xù)判斷已松手,主機(jī)向從機(jī)送出標(biāo)志為“1”的地址幀,被選中的SU1在中斷服務(wù)程序中向MU1回送標(biāo)志為“1”的數(shù)據(jù)幀.MU1收到后點(diǎn)亮VL1,并向SU1發(fā)送內(nèi)容為“1”的數(shù)據(jù)幀.SU1收到后執(zhí)行VL3和VL4循環(huán)點(diǎn)亮演示,然后恢復(fù)初始待機(jī)狀態(tài).為使主從通信往返的過程簡明,MU1不采取等待
SU1演示結(jié)束的回應(yīng)方式,而是等待相當(dāng)于SU1演示所需的延時(shí)時(shí)間后,直接使指示燈VL1熄滅,然后返回查詢按鍵的初始狀態(tài).若按下鍵S2并接續(xù)判斷已松手,SU2采取查詢程序?qū)崿F(xiàn),其對應(yīng)的地址幀標(biāo)志、數(shù)據(jù)幀標(biāo)志、通信往返過程等與SU1類雷同,只是數(shù)據(jù)內(nèi)容變?yōu)椤?”,點(diǎn)亮VL2,執(zhí)行VL5和VL6循環(huán)點(diǎn)亮演示.鍵S1和S2可循環(huán)按動(dòng),使通信過程相互執(zhí)行,按動(dòng)PB鍵可使通信重新開始.473.主要器件MU1為AT89C51(40腳DIP封裝),
SU1和SU2為AT89C2051(20腳DIP封裝),Y1、Y2、Y3為12MHz晶體振蕩器,
S1、S2、Q為常開觸點(diǎn)按鍵開關(guān),
VL1、VL2為綠色LED燈,VL3~VL6為紅色LED燈.串行口實(shí)現(xiàn)的雙向多機(jī)通信電路裝置見圖8-14.48串行口實(shí)現(xiàn)的雙向多機(jī)通信電路裝置(圖8-14)49軟件方案軟件框架串行口實(shí)現(xiàn)的雙向多機(jī)通信軟件框架見圖8-15.主機(jī)主程序根據(jù)被按動(dòng)的按鍵序號(hào)進(jìn)入與對應(yīng)從機(jī)的通信,先發(fā)送地址幀,收到從機(jī)回應(yīng)后以指示燈點(diǎn)亮表示連接成功,然后發(fā)送數(shù)據(jù)幀讓從機(jī)啟動(dòng)所需的演示,主機(jī)延時(shí)等待到從機(jī)的演示時(shí)長后便直接使指示燈熄滅,表示一輪通信完成,返回按鍵查詢的初始狀態(tài).50從機(jī)1中斷服務(wù)程序中接收到自身符合的地址幀后,向主機(jī)發(fā)送回應(yīng)幀表示連接成功;接收到后續(xù)主機(jī)發(fā)來的數(shù)據(jù)幀后,作指示燈循環(huán)點(diǎn)亮演示,然后中斷返回待機(jī)狀態(tài).從機(jī)2查詢程序中與主機(jī)上述的通信過程雷同.2.程序流程多機(jī)通信主程序流程圖見圖8-16,從機(jī)1中斷方式流程圖見圖8-17.從機(jī)2查詢方式流程圖見圖8-18.51主程序向從機(jī)發(fā)送數(shù)據(jù)幀,并經(jīng)從機(jī)演示所需的延時(shí)后,直接返回按鍵查詢的初始狀態(tài).串行口實(shí)現(xiàn)的雙向多機(jī)通信軟件框架(圖8-15)52多機(jī)通信主程序流程圖(圖8-16)53從機(jī)1中斷方式流程圖(圖8-17)從機(jī)2查詢方式流程圖(圖8-18)543.匯編語言源程序可運(yùn)行的完整源程序見書(P.164~169).8.3.4
演示說明電路裝置見圖8-14,能體驗(yàn)中斷方式和查詢方式相混合的串行雙向多機(jī)通信收發(fā)過程.*上電復(fù)位后,主機(jī)MU1進(jìn)入按鍵查詢狀態(tài).*按下啟動(dòng)鍵S1,主機(jī)發(fā)出從機(jī)SU1地址幀,收到從機(jī)SU1回發(fā)信號(hào)后,主機(jī)的綠燈VL1亮.*主機(jī)接續(xù)發(fā)出從機(jī)SU1數(shù)據(jù)幀,從機(jī)SU1收到信5556號(hào)后,輪流點(diǎn)亮紅燈VL3和VL4,完成后紅燈全熄并恢復(fù)初始待機(jī)狀態(tài).*主機(jī)的綠燈VL1隨之熄滅并回復(fù)按鍵查詢狀態(tài).*按下啟動(dòng)鍵S2,主機(jī)發(fā)出從機(jī)SU2地址幀,收到從機(jī)SU2回發(fā)信號(hào)后,主機(jī)的綠燈VL2亮.*主機(jī)接續(xù)發(fā)出從機(jī)SU2數(shù)據(jù)幀,從機(jī)SU2收到信號(hào)后,輪流點(diǎn)亮紅燈VL5和VL6,完成后紅燈全熄并恢復(fù)初始待機(jī)狀態(tài).*主機(jī)的綠燈VL2隨之熄滅并回復(fù)按鍵查詢狀態(tài).*上述操作過程可連續(xù)進(jìn)行.8.4
待機(jī)節(jié)能與鍵盤喚醒的實(shí)現(xiàn)矩陣鍵盤是人機(jī)交互最常用界面(見5.1節(jié)),單
片機(jī)通過調(diào)用鍵盤子程序來輸入信息.而待機(jī)方式(見1.5.2節(jié))能使單片機(jī)在空閑時(shí)進(jìn)入休眠狀態(tài)以降低能耗,并可通過中斷觸發(fā)方式使之喚醒.把鍵盤輸入與中斷觸發(fā)相結(jié)合,組成帶有中斷觸發(fā)功能的鍵盤輸入方式,就能在鍵盤鍵入的同時(shí)使單片機(jī)從待機(jī)狀態(tài)中喚醒,鍵盤輸入完畢后單片機(jī)又自動(dòng)返回待機(jī)節(jié)能狀態(tài).下述實(shí)驗(yàn)電路可以體驗(yàn)兩者結(jié)合的運(yùn)用.578.4.1
基本思路鍵盤輸入三步驟是:斷有否鍵按下、屬何鍵按下和確定鍵值,按下和釋放均適當(dāng)延時(shí)去抖,還可配以聲光提示,諸如鍵按下時(shí)發(fā)聲或燈亮,鍵釋放時(shí)消聲或燈熄,以便于判斷操作狀態(tài).鍵盤可按具體需要選擇鍵盤掃描法、鍵盤反極法和鍵盤位操作法(見5.1.1~5.1.3
節(jié)),這里采用鍵盤掃描法.把矩陣鍵盤的列線與邏輯門電路結(jié)合,按動(dòng)任何鍵,門電路均提供單片機(jī)外中斷觸發(fā)低電平,使58之從待機(jī)中喚醒,執(zhí)行中服程序,完成鍵盤子程調(diào)用后,退出中服,返回主程序再執(zhí)行待機(jī)指令.硬件方案硬件組成實(shí)驗(yàn)電路見圖8-19.CHMOS工藝的單片機(jī)具有待機(jī)功能,U1作控制核心,4行3列矩陣鍵盤的行列線接單片機(jī)P1口,3條列線還分別接與門芯片U2輸入端,U2輸出端接單片機(jī)外中斷口.晶體管V作蜂鳴器發(fā)聲驅(qū)動(dòng),指示燈VL1和VL2指示工作狀態(tài).直流電流表作單片機(jī)VCC
端的電流指示.59待機(jī)節(jié)能與鍵盤喚醒實(shí)驗(yàn)電路(圖8-19)602.電路原理單片機(jī)初始化:上電復(fù)位后,矩陣鍵盤的行線全置低電平,而列線全置高電平,此時(shí)邏輯與門的輸出為高電平,外中斷不被觸發(fā).運(yùn)用待機(jī)指令使系統(tǒng)進(jìn)入待機(jī)狀態(tài),VCC端串接的電流表顯示的是節(jié)能待機(jī)電流.鍵盤任一鍵被按下,都能把行線的低電平引至與門輸入端,使與門輸出低電平觸發(fā)外部中斷,單片機(jī)從待機(jī)狀態(tài)中被喚醒,并執(zhí)行中斷服務(wù)程序,VCC端串接的電流表顯示正常工作電流.6162在中斷服務(wù)程序中調(diào)用鍵盤掃描子程序,進(jìn)入正常接收鍵盤輸入信息.鍵盤設(shè)置成鍵按下發(fā)聲、鍵釋放消聲,并一直伴有指示燈發(fā)亮,使操作清晰明了.矩陣鍵盤的鍵字定為0~9,0A和0B(0A對應(yīng)于鍵符“*”,0B對應(yīng)于鍵符“#”).在中斷服務(wù)程序中判斷只要按動(dòng)的是鍵“#”,程序就能中斷返回,并使單片機(jī)再次進(jìn)入待機(jī)狀態(tài),伴以指示燈熄滅作提示.3.主要器件
U1為AT89C51(40腳DIP封裝).U2為“四輸入端與門”芯片CD4082.鍵盤采用4行3列矩陣結(jié)構(gòu),或用12個(gè)雙觸點(diǎn)式按鍵開關(guān)構(gòu)建.V為PNP型晶體管9015.蜂鳴器為自振型蜂鳴器TMB12A05.VL1為紅色LED,VL2為綠色LED.電流表采用滿量程為30mA的直流表頭.待機(jī)節(jié)能與鍵盤喚醒實(shí)驗(yàn)電路裝置見圖8-20.63待機(jī)節(jié)能與鍵盤喚醒實(shí)驗(yàn)電路裝置(圖8-20)6465軟件方案程序流程圖主程序流程圖見圖8-21,只需執(zhí)行一條置待機(jī)方式位為1的指令就能進(jìn)入待機(jī)狀態(tài)(詳見1.5.2節(jié)),可由外部中斷給予喚醒,中斷返回后執(zhí)行一條跳轉(zhuǎn)指令,就能再次進(jìn)入待機(jī)狀態(tài).中斷服務(wù)程序流程圖見圖8-22,內(nèi)含鍵盤掃描法鍵盤子程序,由“#”鍵按下使中斷返回主程序.66主程序流程圖(圖8-21)中斷服務(wù)程序流程圖(圖8-22)67掃描法鍵盤子程序流程圖見圖8-23,主要環(huán)節(jié)包括:判斷有鍵按下并再確認(rèn)(其中加入延時(shí)去抖動(dòng)和發(fā)聲提示),逐行置零掃描判斷何鍵被按下,判斷鍵被釋放并再確認(rèn)(其中加入延時(shí)去抖動(dòng)和消聲環(huán)節(jié)),采用遠(yuǎn)程查表方法確定鍵值(其中累加器因被借用,需入棧保護(hù)).掃描法鍵盤子程序流程圖(圖8-23)68692.匯編語言源程序可運(yùn)行的完整源程序見書(P.172~175).8.4.4
演示說明實(shí)驗(yàn)電路裝置(圖8-20)上電復(fù)位后:*紅色指示燈VL1一直發(fā)亮表示系統(tǒng)狀態(tài)正常.蜂鳴器短暫發(fā)聲且綠色指示燈VL2短暫發(fā)亮然后熄滅,單片機(jī)進(jìn)入待機(jī)節(jié)能狀態(tài),電流表指示約2mA(圖8-20a).*從矩陣鍵盤鍵入任意鍵(按下發(fā)聲、釋放消聲)7071就能觸發(fā)中斷,待機(jī)狀態(tài)喚醒為工作狀態(tài),電流表指示約11mA(圖8-20b),綠色指示燈VL2發(fā)亮.*按動(dòng)“#”鍵則綠燈VL2熄滅,中斷返回然后再次進(jìn)入待機(jī)態(tài),電流表指示約2mA.*在待機(jī)狀態(tài)下只要按動(dòng)復(fù)位按鈕,也能從待機(jī)中喚醒,電路的反應(yīng)與上電復(fù)位的反應(yīng)相同.電流表的量值表明,待機(jī)態(tài)節(jié)能明顯,待機(jī)方式很適合在只需短暫操作而長時(shí)間閑置的電路系統(tǒng)中運(yùn)用,對電路工作的穩(wěn)定性、抗干擾和低熱耗方面均有益處.8.5
機(jī)器人用舵機(jī)的轉(zhuǎn)角控制舵機(jī),又稱伺服電動(dòng)機(jī),類別有傳統(tǒng)舵機(jī)、數(shù)值舵機(jī)和純數(shù)字舵機(jī).本節(jié)針對傳統(tǒng)舵機(jī),它可以根據(jù)外加指令在0°~180°之間旋轉(zhuǎn),并可精確地停留在任何角度,適用于要求角度變化和角度保持的控制系統(tǒng).舵機(jī)的應(yīng)用范圍十分廣泛,諸如作為動(dòng)作部件應(yīng)用于多自由度小型機(jī)器人的設(shè)計(jì),作電子應(yīng)用設(shè)計(jì)中的轉(zhuǎn)動(dòng)力臂,以及多路伺服航??刂频?舵機(jī)外觀可看到有外殼、傳動(dòng)軸、軸上套有十72字形或圓形舵盤(可作為擴(kuò)伸連接轉(zhuǎn)動(dòng)臂之用)和引出線,舵機(jī)內(nèi)部含有變速齒輪組、可調(diào)電位器、直流電動(dòng)機(jī)和控制電路板等,但應(yīng)用上只需了解外部控制方法就行.市售舵機(jī)從力矩看有普通型、超小型和強(qiáng)力型.一般舵機(jī)是三線控制的,包括正負(fù)電源線和一條
I/O口控制線,舵機(jī)外形及引出線如圖8-24所示.單片機(jī)系統(tǒng)能夠方便地和它組成接口電路并對其實(shí)行控制.73舵機(jī)外形及引出線(圖8-24)74基本思路舵機(jī)的工作原理舵機(jī)由脈沖信號(hào)控制.信號(hào)通過I/O口進(jìn)入舵機(jī)內(nèi)部控制電路板上的信號(hào)調(diào)制芯片,使其獲得直流偏置電壓.內(nèi)置的信號(hào)基準(zhǔn)電路產(chǎn)生周期為20ms、寬度為
1.5ms的脈沖,將獲得的直流偏置電壓與內(nèi)部電位器電壓相比較,輸出電壓差.該電壓差的正負(fù)輸出到電動(dòng)機(jī)驅(qū)動(dòng)芯片以決定電動(dòng)機(jī)的正反轉(zhuǎn).75當(dāng)電動(dòng)機(jī)轉(zhuǎn)動(dòng)時(shí),通過齒輪組帶動(dòng)電位器一并旋轉(zhuǎn),使得電壓差最后為0,舵機(jī)便停止轉(zhuǎn)動(dòng).2.舵機(jī)的控制方式舵機(jī)的輸入控制脈沖是PWM(脈寬調(diào)制)信號(hào),改變脈沖占空比可以控制舵機(jī)的轉(zhuǎn)動(dòng)角度位置.舵機(jī)通電后,持續(xù)輸入周期為20ms(頻率50Hz)、寬度0.5~2.5ms之間的高電平脈沖,舵機(jī)就能轉(zhuǎn)動(dòng)到指定的角度位置并且在該位置停留.以無負(fù)載情況下轉(zhuǎn)過60°所需的時(shí)間來衡量,其速度一般在0.11s/60°~0.21s/60°之間.舵機(jī)轉(zhuǎn)76動(dòng)角度位置與輸入脈沖寬度的關(guān)系如圖8-25.*
圖中從左到右依次表示:當(dāng)占空比為0.5ms時(shí),舵機(jī)的擺臂旋轉(zhuǎn)至0°(舵機(jī)左滿舵);當(dāng)占空比為1ms時(shí),舵機(jī)旋轉(zhuǎn)至45°;當(dāng)占空比為1.5ms時(shí),舵機(jī)旋轉(zhuǎn)至90°;當(dāng)占空比為2ms時(shí),舵機(jī)旋轉(zhuǎn)至135°;當(dāng)占空比為2.5ms時(shí),舵機(jī)旋轉(zhuǎn)至180°(舵機(jī)右滿舵).77舵機(jī)轉(zhuǎn)動(dòng)角度位置與輸入脈沖寬度的關(guān)系
(圖8-25)硬件方案硬件組成一般小型舵機(jī)的工作電壓為4.8V或6V.51系列單78片機(jī)與舵機(jī)的接口很簡單,一個(gè)通用I/O口可實(shí)現(xiàn)控制.單片機(jī)對舵機(jī)控制實(shí)驗(yàn)電路見圖8-26.單片機(jī)對舵機(jī)控制的實(shí)驗(yàn)電路(圖8-26)792.主要器件
U1為AT89C51(40腳DIP封裝),配用12MHz晶體振蕩器.舵機(jī)為普通型Futaba
S3003,外部尺寸為40.4mm×19.8
mm×36.0mm,重量為37.2g.工作速度為0.19s/60°(4.8V工作電壓時(shí))和
0.23s/60°(6V工作電壓時(shí)).輸出力矩為0.31N.m
(4.8V工作電壓時(shí))和
0.40N.m
(6V工作電壓時(shí)).單片機(jī)對舵機(jī)控制的實(shí)驗(yàn)電路裝置見圖8-27.80單片機(jī)對舵機(jī)控制的實(shí)驗(yàn)電路裝置(圖8-27)818.5.3
軟件方案舵機(jī)的控制是通過改變周期脈沖的占空比實(shí)現(xiàn)的,利用單片機(jī)的定時(shí)器/計(jì)數(shù)器的定時(shí)溢出功能產(chǎn)生脈沖波,即可精確控制舵機(jī).下面通過兩個(gè)實(shí)例介紹舵機(jī)的軟件設(shè)計(jì)思路.1.控制舵機(jī)轉(zhuǎn)動(dòng)到任意指定角度此方式屬舵機(jī)控制的最基本操作.只要根據(jù)指定角度所對應(yīng)的脈沖占空比,計(jì)算出定時(shí)器/計(jì)數(shù)器的定時(shí)常數(shù),就能產(chǎn)生相應(yīng)的脈沖波.設(shè)角度為α(取值范圍是0°~180°),可以得到周82期脈沖高電平延時(shí)時(shí)長th和脈沖低電平延時(shí)時(shí)長tl
,見表達(dá)式(8-1)和式(8-2):th
=0.5ms+α/180°×2mstl
=20ms-th(8-1)(8-2)再根據(jù)3.1.2節(jié)的方法計(jì)算定時(shí)器/計(jì)數(shù)器在工作模式1的預(yù)置初值Xh和Xl(晶振頻fOSC=12MHz),機(jī)器周期T=1μs,預(yù)置值Xh由表達(dá)式(8-3)計(jì)算:(216-Xh)
×1μs=th(8-3)代入th的表達(dá)式(8-1),并統(tǒng)一用微秒表示,得:Xh=216-500+α/180°×2000≈FE0CH-α×11(8-48)3Xl
=216-20000-Xh
=1B1E0H-Xh84(8-5)舵機(jī)轉(zhuǎn)動(dòng)到指定角度的控制函數(shù)流程圖見圖8-28,源程序用C語言實(shí)現(xiàn).*
軟件設(shè)計(jì)思路為:構(gòu)造函數(shù)Servo_Rotate_to_Angle(角度值),輸入角度值為0°~180°之間任一指定角度,代入上述關(guān)系式計(jì)算高電平、低電平的定時(shí)預(yù)置值,調(diào)用舵機(jī)動(dòng)作函數(shù)Servo_Action(),執(zhí)行相應(yīng)操作,具體軟件流程如圖8-28a所示.*
在舵機(jī)動(dòng)作函數(shù)Servo_Action()中,裝載定時(shí)器/計(jì)數(shù)器的高電平定時(shí)時(shí)間預(yù)置值,啟動(dòng)定時(shí)器/計(jì)數(shù)器并在舵機(jī)I/O端口置1,等待定時(shí)器溢出標(biāo)志置位并將其清零;舵機(jī)I/O口產(chǎn)生低電平的定時(shí)時(shí)間預(yù)置值方法與之類似,具體軟件流程圖如圖8-28b
所示.85舵機(jī)轉(zhuǎn)動(dòng)到指定角度的控制函數(shù)流程圖(圖8-28)86872.在0°~180°轉(zhuǎn)動(dòng)范圍內(nèi)控制舵機(jī)轉(zhuǎn)動(dòng)速度上例方法是控制舵機(jī)轉(zhuǎn)動(dòng)至某個(gè)指定的角度位置,這種方法受控的舵機(jī)在其最高轉(zhuǎn)動(dòng)速度(舵機(jī)標(biāo)稱的轉(zhuǎn)動(dòng)速度)下運(yùn)行,但現(xiàn)實(shí)情況中往往需要調(diào)節(jié)舵機(jī)的轉(zhuǎn)速來適應(yīng)具體任務(wù)的需求.基于舵機(jī)轉(zhuǎn)動(dòng)角度與周期脈沖的高電平寬度有著一對一的關(guān)系,假設(shè)舵機(jī)的擺臂要從角度β轉(zhuǎn)動(dòng)到角度γ,則兩者角度差θ為:θ=|β-γ|(8-6)引入變量△θ作為每周期的角度增量,k代表周期脈沖個(gè)數(shù)的整數(shù),則有:θ=k△θ88(8-7)因此,當(dāng)△θ↑,舵機(jī)在下一周期到達(dá)的角度↑,轉(zhuǎn)速↑,需要輸入的脈沖個(gè)數(shù)↓;反之,當(dāng)△θ↓,舵機(jī)在下一周期到達(dá)的角度↓,轉(zhuǎn)速↓,需要輸入的脈沖個(gè)數(shù)↑.本例中受控舵機(jī)從0°旋轉(zhuǎn)至180°,由輸入速度參數(shù)調(diào)整舵機(jī)的轉(zhuǎn)動(dòng)速度.程序設(shè)計(jì)的關(guān)鍵在于把角度增量△θ轉(zhuǎn)化為定時(shí)器/計(jì)數(shù)器預(yù)置值增量.設(shè)s為速度參數(shù),相應(yīng)修改高電平、低電平預(yù)置值,得到與第n
個(gè)周期的關(guān)系為:(8-8)(8-9)其中n與s的乘積不大于2000(對應(yīng)角度180°).構(gòu)造函數(shù)Servo_Horizontal_Rotation(速度增量),設(shè)置變量time(取值范圍0≤time≤2000),每次循環(huán)中都根據(jù)上述關(guān)系計(jì)算高電平、低電平的定時(shí)器/計(jì)數(shù)器預(yù)置值,并傳遞至舵機(jī)動(dòng)作函數(shù)執(zhí)行相關(guān)操作,在0°~180°按不同速度轉(zhuǎn)動(dòng)的控制函數(shù)流程圖見圖8-29.89在0°~180°按不同速度轉(zhuǎn)動(dòng)的控制函數(shù)流程圖(圖8-29)903.主程序流程主程序結(jié)合上述兩種運(yùn)轉(zhuǎn)方式,軟件流程構(gòu)思:*首先舵機(jī)按例1的方式以標(biāo)準(zhǔn)速度(快速)從初始角度轉(zhuǎn)至56°,延時(shí)1s,再轉(zhuǎn)至112°;*接著以標(biāo)準(zhǔn)速度(快速)回轉(zhuǎn)到0°;*按例2的方式,以速度3(慢速)從0°轉(zhuǎn)至180°,延時(shí)1s,接著以標(biāo)準(zhǔn)速度(快速)回轉(zhuǎn)到0°;*最后以速度9(中速)從0°轉(zhuǎn)至180°,完成.舵機(jī)多方式運(yùn)轉(zhuǎn)的主程序流程圖見圖8-30.91舵機(jī)多方式運(yùn)轉(zhuǎn)的主程序流程圖(圖8-30)924.C語言源程序可運(yùn)行的完整源程序見書(P.179~183).8.4.5
演示說明單片機(jī)對舵機(jī)控制的實(shí)驗(yàn)電路裝置(圖8-27),能演示多種運(yùn)轉(zhuǎn)方式,用以體驗(yàn)單片機(jī)對控制脈沖的綜合運(yùn)用.*電路上電復(fù)位,LED燈點(diǎn)亮1s后熄滅.*舵機(jī)隨即以標(biāo)準(zhǔn)速度(快速)轉(zhuǎn)動(dòng)至56°位置,停留1s.*其后以同樣的速度轉(zhuǎn)動(dòng)至112°位置,停留1s,93接著以同樣的速度回轉(zhuǎn)到0°位置.*然后以速度3(慢速)從0°轉(zhuǎn)動(dòng)到180°位置,停留1s,再以標(biāo)準(zhǔn)速度(快速)回轉(zhuǎn)到0°位置.*接著以速度9(中速)從0°轉(zhuǎn)動(dòng)到180°位置,程序結(jié)束.*按動(dòng)復(fù)位按鈕,可重復(fù)上述運(yùn)轉(zhuǎn)過程.8.6
非接觸式的電動(dòng)機(jī)轉(zhuǎn)速測定在電路實(shí)驗(yàn)或電子設(shè)計(jì)競賽中常常用到小型直流電動(dòng)機(jī),不管是采用新品還是采用拆卸代用品,94先要知道的指標(biāo)就是電動(dòng)機(jī)轉(zhuǎn)速,通常范圍在每分鐘幾十轉(zhuǎn)到幾千轉(zhuǎn)不等,而這一參數(shù)往往在電動(dòng)機(jī)外殼上不一定能直接得到.本節(jié)把單片機(jī)的定時(shí)和中斷技術(shù)融合運(yùn)用,并結(jié)合BCD碼乘/除算法,構(gòu)建一種非接觸式測速裝置,在1s內(nèi)可測定電動(dòng)機(jī)的1min轉(zhuǎn)速,為電機(jī)的選用提供判別依據(jù).基本思路轉(zhuǎn)速信號(hào)的產(chǎn)生和采集由反射式紅外對管和黑白光柵轉(zhuǎn)盤組成信號(hào)傳感95系統(tǒng),黑白光柵轉(zhuǎn)盤附著在電動(dòng)機(jī)的軸心上,反
射式紅外對管的接收面對著轉(zhuǎn)盤的平面,紅外對管的發(fā)射管把紅外光投射到轉(zhuǎn)盤,隨著電動(dòng)機(jī)的轉(zhuǎn)動(dòng),白光柵反射紅外光而黑光柵不反射紅外光,紅外對管的接收管便輸出高低相間的脈沖電平,供作后續(xù)統(tǒng)計(jì).2.脈沖計(jì)數(shù)的定時(shí)門限設(shè)定以1ms作定時(shí)器中斷的時(shí)基,對3個(gè)內(nèi)部存儲(chǔ)器進(jìn)行逢十進(jìn)一計(jì)數(shù),用以實(shí)現(xiàn)1s溢出的定時(shí)門限.采用一個(gè)外中斷口作為轉(zhuǎn)速脈沖的輸入口,并把96脈沖下降沿作為啟動(dòng)定時(shí)門限的同步信號(hào),此后就能采取查詢脈沖高低電平的方式對進(jìn)入門限內(nèi)的脈沖進(jìn)行統(tǒng)計(jì).3.完整脈沖計(jì)數(shù)的門限校正和換算如果定時(shí)門限到達(dá)1s發(fā)生溢出之時(shí)立刻停止定時(shí)器,不一定正好能對應(yīng)于末位的完整脈沖周期邊緣,可能是對應(yīng)于脈沖的其中高電平或低電平某一部位,為了消除這段被截?cái)嗟拿}沖部分所引起的測量誤差,讓門限接續(xù)開啟直到末位脈沖完整過渡并止于下降沿時(shí)才正式關(guān)閉定時(shí)器,所得97的此段門限校正值加上1s溢出值,即為實(shí)際的定時(shí)門限值,這方式所統(tǒng)計(jì)到的脈沖數(shù)必為整數(shù)值.實(shí)際門限的構(gòu)成見圖8-31.實(shí)際門限的構(gòu)成(圖8-31)*為擴(kuò)展成1min的轉(zhuǎn)速,換算順序宜先進(jìn)行脈沖數(shù)的60倍BCD碼乘法運(yùn)算,得到整數(shù)結(jié)果;再對實(shí)98際定時(shí)門限值BCD碼作除法運(yùn)算,得到的非整數(shù)商值誤差最小,四舍五入處理得1min整數(shù)轉(zhuǎn)速.*轉(zhuǎn)盤只有1對黑白光柵線,每轉(zhuǎn)1圈只產(chǎn)生1個(gè)脈沖,倍乘為60.增加光柵線組數(shù),使每轉(zhuǎn)能產(chǎn)生多個(gè)脈沖,可提高精度,其倍乘值需作相應(yīng)減少,本實(shí)驗(yàn)裝置采用12組黑白相間光柵線.硬件方案硬件組成非接觸式的電動(dòng)機(jī)轉(zhuǎn)速測定實(shí)驗(yàn)電路見圖8-32.99*單片機(jī)芯片U1作為控制核心.*反射式紅外對管U4采集電動(dòng)機(jī)轉(zhuǎn)動(dòng)信號(hào).*信號(hào)經(jīng)U5作脈沖整形后送入U(xiǎn)1作運(yùn)算處理.*輸出的分鐘轉(zhuǎn)數(shù)(從個(gè)位到千位)送至4位一體共陰極數(shù)碼管U6作顯示.*7段硬件譯碼芯片U2作段驅(qū)動(dòng).*電流驅(qū)動(dòng)器芯片U3作動(dòng)態(tài)位驅(qū)動(dòng).*獨(dú)立開關(guān)Q用來啟動(dòng)測量過程.100非接觸式的電動(dòng)機(jī)轉(zhuǎn)速測定電路(圖8-32)1011022.電路原理電動(dòng)機(jī)轉(zhuǎn)動(dòng)時(shí)白光柵反射紅外信號(hào)經(jīng)U4的光電管接收,輸出低脈沖,經(jīng)兩級施密特反相器U5整形后,脈沖信號(hào)送入單片機(jī)U1的外中斷口P3.2.按下啟動(dòng)鍵Q,脈沖下降沿便啟動(dòng)U1的外中斷服務(wù)程序,執(zhí)行1s的定時(shí)計(jì)數(shù)和1min的換算處理.分鐘轉(zhuǎn)數(shù)測量結(jié)果以動(dòng)態(tài)方式顯示,4位BCD碼從
U1的段譯碼口送出,經(jīng)7段鎖存/譯碼/驅(qū)動(dòng)芯片
U2作硬件譯碼,送至4位一體共陰極數(shù)碼管U6作為段信號(hào),U1的位掃描口逐位送出低電平信號(hào),經(jīng)電流驅(qū)動(dòng)器U3作顯示位驅(qū)動(dòng).3.主要器件電動(dòng)機(jī)光柵轉(zhuǎn)盤采用直徑約7cm的薄鋁片作為白光柵基底,其上均勻貼上約6mm寬的12條黑膠布作為黑光柵.U4為反射式紅外對管RPR220或ITR20001.U1為單片機(jī)芯片AT89C52.U5為施密特反相器74HC14(內(nèi)含6個(gè)獨(dú)立單元).
U2為“7段鎖存/譯碼/驅(qū)動(dòng)器”CD4511.U3為電流驅(qū)動(dòng)器7407.
U6為共陰極數(shù)碼管TOF-3461AE.103非接觸式的電動(dòng)機(jī)轉(zhuǎn)速測定電路裝置(圖8-33)104非接觸式的電動(dòng)機(jī)轉(zhuǎn)速采樣圖(圖8-34)1051068.6.3
軟件方案1.軟件框架非接觸式電動(dòng)機(jī)轉(zhuǎn)速測定的軟件框架見圖8-35.主程序經(jīng)啟動(dòng)鍵進(jìn)入外中斷服務(wù)程序(內(nèi)含1ms時(shí)基的優(yōu)先級定時(shí)中服程序,形成1s定時(shí)門限.門限內(nèi)用查詢方式作脈沖數(shù)統(tǒng)計(jì),但門限到達(dá)時(shí)最末統(tǒng)計(jì)的不一定對應(yīng)于一個(gè)完整脈沖.實(shí)際門限值需計(jì)及該完整脈沖邊緣的校正值.由BCD碼乘/除法換算為1min的轉(zhuǎn)數(shù),然后外部中斷返回,接續(xù)顯示結(jié)果.107非接觸式的電動(dòng)機(jī)轉(zhuǎn)速測定的軟件框架(圖8-35)2.程序流程主程序流程圖見圖8-36,定時(shí)中斷服務(wù)程序流程圖見圖8-37,外部中斷服務(wù)程序流程圖見圖8-38.主程序流程圖(圖8-36)定時(shí)中服程序流程(圖8-37)108外中斷服務(wù)程序流程圖(圖8-38)1091103.匯編語言源程序可運(yùn)行的完整源程序見書(P.187~195).4.C語言源程序用C語言實(shí)現(xiàn)相同功能的程序供對比,對于運(yùn)算類功能,C語言實(shí)現(xiàn)起來顯得簡捷.可運(yùn)行的完整源程序見書(P.195~200).8.6.4
演示說明如圖8-33和圖8-34所示,把光柵轉(zhuǎn)盤固定在待測電動(dòng)機(jī)的軸上,紅外對管的端面正對轉(zhuǎn)盤的距離約1~3cm范圍.*電動(dòng)機(jī)未接通電源之前若按動(dòng)“啟動(dòng)”鍵,顯示屏顯示全零.*按動(dòng)“復(fù)位”鍵,顯示屏全熄.*接通電動(dòng)機(jī)電源,待電動(dòng)機(jī)轉(zhuǎn)動(dòng)到穩(wěn)定狀態(tài)時(shí)按動(dòng)“啟動(dòng)”鍵,約1s數(shù)碼管即顯示出電動(dòng)機(jī)在1min的轉(zhuǎn)數(shù)值.*按下“復(fù)位”鍵可重復(fù)上述測速過程.用轉(zhuǎn)速600r/min的12V直流電動(dòng)機(jī)作統(tǒng)計(jì)試驗(yàn),111測量誤差約0.97%~1.1%.8.7
I2C總線器件的密碼門禁應(yīng)用I2C總線是二線制串行總線,一條是串行數(shù)據(jù)線
SDA,另一條是串行時(shí)鐘線SCL,I2C器件可以作為外圍從設(shè)備與作為主設(shè)備的單片機(jī)進(jìn)行同步雙向串行數(shù)據(jù)傳輸.應(yīng)用最廣的一種典型I2C器件是串行E2PROM,其可在線擦寫和掉電數(shù)據(jù)保留的性能被廣泛用到需要保留數(shù)據(jù)尤其是涉及密碼保留的場合,單片機(jī)控制的密碼門禁系統(tǒng)是對該器件的一種結(jié)合運(yùn)用.1128.7.1
基本思路I2C總線屬串行同步傳輸總線,其數(shù)據(jù)與時(shí)鐘完全同步.基本傳輸協(xié)議包括:啟動(dòng)總線、傳輸數(shù)據(jù)、應(yīng)答和停止總線.串行E2PROM器件的數(shù)據(jù)傳輸方法包括:器件尋址、讀/寫方式等(詳見4.3.1節(jié)).利用51系列單片機(jī)的兩條I/O口線通過軟件模擬I2C總線,與串行E2PROM器件組成串行接口電路,用來保存密碼.單片機(jī)通過并行接口與矩陣鍵盤組成人機(jī)交互113輸入電路,進(jìn)行密碼存取的操作.通過單片機(jī)進(jìn)行識(shí)別處理后,輸出控制信號(hào)實(shí)現(xiàn)對密碼門禁執(zhí)行機(jī)構(gòu)的啟/閉控制.硬件方案硬件組成
I2C總線器件的密碼門禁電路見圖8-39.*以單片機(jī)芯片U1為控制核心.*串行E2PROM器件U2作密碼不失性保留.*4行3列矩陣鍵盤作密碼設(shè)置和識(shí)別的鍵入操作.114*晶體管V2和V3驅(qū)動(dòng)繼電器對門禁機(jī)構(gòu)實(shí)行啟/閉控制.*晶體管V1作蜂鳴器的發(fā)聲驅(qū)動(dòng).*指示燈VL1、VL2和VL3作相應(yīng)工作狀態(tài)的指示.*按鍵(開關(guān))S2作讀/寫操作模式的轉(zhuǎn)換.*按鍵(開關(guān))S1作系統(tǒng)復(fù)位.115I2C總線器件的密碼門禁電路(圖8-39)1162.電路原理I2C總線器件的密碼門禁電路(圖8-39)設(shè)有兩種工作模式,即設(shè)置密碼模式和開啟操作模式.系統(tǒng)上電或復(fù)位后,讀/寫鍵S2處于不按動(dòng)的斷開狀態(tài)時(shí),電路執(zhí)行的是開門操作.與之相反,只要上電或復(fù)位后讀/寫鍵S2被檢測到處于閉合狀態(tài),程序便轉(zhuǎn)入密碼設(shè)置(編碼)模式,由燈VL1常亮作提示.4x3矩陣鍵盤與單片機(jī)P1口連接,采用鍵盤反極法(見5.1.2節(jié))確定按鍵的鍵值(伴以鍵按下發(fā)117聲、鍵釋放消聲作操作提示).初次使用時(shí)電路需先選擇密碼設(shè)置模式,矩陣鍵盤上的任何鍵可作密碼鍵入(設(shè)定為6位).單片機(jī)U1通過讀/寫線(P3.7和P3.6)模擬的I2C總線,把6個(gè)密碼字節(jié)(鍵值)寫入串行E2PROM器件U2,作不失性密碼保留,編碼過程完成后由VL1熄滅作提示,然后轉(zhuǎn)為開啟操作模式.開啟模式是從鍵盤鍵入6位密碼,U1通過模擬的
I2C總線讀取U2中存放的6位密碼,并與鍵入的密碼逐個(gè)字節(jié)進(jìn)行比較.118如果完全相符:VL3發(fā)亮,P3.4口送出低電平,晶體管V2和V3導(dǎo)通,驅(qū)動(dòng)繼電器使觸點(diǎn)S吸合,開門機(jī)構(gòu)啟動(dòng)(用“模擬負(fù)載”綠色大直徑LED點(diǎn)亮來替代,圖中未畫出).如果密碼不符:繼電器不動(dòng)作,P0.0口使VL2閃亮和P3.0口使蜂鳴器斷續(xù)發(fā)聲,需重新鍵入密碼.*需著重說明的細(xì)節(jié):繼電器用作V3集電極負(fù)載的這種接法,電源電壓扣除集-射間飽和壓降后,能最大幅度地提供給繼電器,使工作穩(wěn)健.但因單片機(jī)上電或復(fù)位后P3.4口為高電平,如果直接119120用來控制V3的基極,繼電器會(huì)因V3導(dǎo)通而發(fā)生誤動(dòng)作,需加入PNP型極性的晶體管V2來與V3進(jìn)行復(fù)合,改變成PNP型極性,使繼電器在系統(tǒng)復(fù)位時(shí)不動(dòng)作,在執(zhí)行程序時(shí)才發(fā)生動(dòng)作響應(yīng).*二極管VD1用來消除繼電器截流時(shí)出現(xiàn)的反向感生電壓,保護(hù)V3免受擊穿.3.主要器件U1為AT89C51(40腳DIP封裝).U2為24C04(8腳).鍵盤采用4行3列矩陣結(jié)構(gòu)成品,或用12個(gè)雙觸點(diǎn)式按鍵開關(guān)組構(gòu).繼電器為5V直流繼電器,型號(hào)(OJE-SH-105DM)為常開單觸點(diǎn),容量為5AAC250V/DC30V,可根據(jù)具體負(fù)載選定所需觸點(diǎn)容量的型號(hào).V1和V2為PNP型晶體管9015.V3為NPN型晶體管9013.蜂鳴器為自振型TMB12A05.VL1為黃色LED.VL2為紅色LED.VL3為綠色LED,“模擬負(fù)載”為綠色大直徑LED.S1和S2為常開觸點(diǎn)按鍵(開關(guān)).
I2C總線器件的密碼門禁電路裝置見圖8-40.121I2C總線器件的密碼門禁電路裝置(圖8-40)122軟件方案軟件框架I2C總線器件的密碼門禁電路軟件框架見圖8-41.主程序中主要含反極法鍵盤程序和串行E2PROM的讀/寫程序(具體由9個(gè)程序模塊組成).51系列單片機(jī)內(nèi)部沒集成有I2C總線,可用兩條口線由軟件進(jìn)行模擬.123I2C總線器件的密碼門禁電路軟件框架(圖8-41)1242.程序流程I2C總線器件的密碼門禁
電路主程序
流程(圖8-42)其中用作信息鍵入的反極法鍵盤子程序流程圖
(圖8-43)125反極法鍵盤子程序流程圖(圖8-43)126串行E2PROM讀/寫程序模塊(共9塊)流程圖詳見4.3.1節(jié),可以直接移植使用(其中從設(shè)備隨機(jī)寫N字節(jié)模塊和從設(shè)備隨機(jī)讀N字節(jié)模塊基本上是對其余模塊的綜合調(diào)用).3.匯編語言源程序可運(yùn)行的完整源程序見書(P.203~209).8.7.4
演示說明
I2C總線器件密碼門禁電路裝置(圖8-40)上電后:*同時(shí)按下復(fù)位鍵S1和讀/寫鍵S2,先松開復(fù)位鍵127后松開讀/寫鍵,黃燈VL1亮表示系統(tǒng)進(jìn)入設(shè)置密碼(編碼)模式.*從鍵盤輸入6個(gè)數(shù)字密碼(鍵按下發(fā)聲,鍵釋放消聲),黃燈VL1熄表示編碼完成,然后自動(dòng)轉(zhuǎn)為開啟模式.*開門時(shí)只需從鍵盤輸入6個(gè)密碼(鍵按下發(fā)聲,鍵釋放消聲),綠燈VL3亮表示密碼正確,且繼電器觸點(diǎn)閉合執(zhí)行開門動(dòng)作(由模擬負(fù)載的大直徑綠色LED發(fā)亮替代).2s后綠燈VL3和大直徑綠色LED均熄滅且觸點(diǎn)斷開.128*如果紅燈VL2閃亮且蜂鳴器斷續(xù)發(fā)聲數(shù)秒,表示密碼錯(cuò)誤,需重新輸入密碼.*如果上電或只按動(dòng)復(fù)位鍵而不按動(dòng)讀/寫鍵,系統(tǒng)進(jìn)入的是鍵入密碼的開門操作.8.8
單總線器件電子標(biāo)識(shí)的讀取單總線只需要一條信號(hào)線和一條地線,就能以普通雙絞線的方式實(shí)行半雙工串行通信.單條信號(hào)線既能傳輸時(shí)鐘,又能雙向傳輸數(shù)據(jù),同時(shí)還充當(dāng)總線所掛從設(shè)備的電源線.每個(gè)單總線器件內(nèi)129部固化了全球唯一的64位器件ID碼(標(biāo)識(shí)碼).通過單片機(jī)一條I/O口線直接讀取單總線器件的ID碼,是單片機(jī)串行擴(kuò)展和學(xué)習(xí)單總線基本信號(hào)時(shí)序的一種具體體驗(yàn).8.8.1
基本思路Dallas-MAX
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024裝修售后服務(wù)合同范本
- 2024年高速公路服務(wù)區(qū)食堂承包經(jīng)營服務(wù)合同范本匯編3篇
- 鄉(xiāng)鎮(zhèn)長防汛知識(shí)培訓(xùn)課件
- 2025年度個(gè)人信息保護(hù)與保密服務(wù)合同3篇
- 2024食品公司智慧化物流系統(tǒng)建設(shè)合同
- 2024心臟內(nèi)科病歷管理系統(tǒng)升級與優(yōu)化服務(wù)合同3篇
- 初級消費(fèi)者知識(shí)培訓(xùn)課件
- 2025年度出租房屋消防安全責(zé)任與維修協(xié)議3篇
- 2024贊助合同書范本:年度公益活動(dòng)支持協(xié)議3篇
- 2024男方離婚協(xié)議書:包含離婚后雙方財(cái)產(chǎn)分割及第三方監(jiān)管協(xié)議3篇
- 迪士尼樂園總體規(guī)劃
- 惠州學(xué)院《大學(xué)物理》2021-2022學(xué)年第一學(xué)期期末試卷
- 2024年世界職業(yè)院校技能大賽高職組“市政管線(道)數(shù)字化施工組”賽項(xiàng)考試題庫
- 2024消防安全警示教育(含近期事故案例)
- Starter Section 1 Meeting English 說課稿 -2024-2025學(xué)年北師大版(2024)初中英語七年級上冊
- 2025年蛇年年度營銷日歷營銷建議【2025營銷日歷】
- 2024年法律職業(yè)資格考試(試卷一)客觀題試卷及解答參考
- 食堂項(xiàng)目經(jīng)理培訓(xùn)
- 安全經(jīng)理述職報(bào)告
- 福建省泉州市2023-2024學(xué)年高一上學(xué)期期末質(zhì)檢英語試題 附答案
- 建筑項(xiàng)目經(jīng)理招聘面試題與參考回答(某大型集團(tuán)公司)2024年
評論
0/150
提交評論