版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1.1多功能智能鐘的功能與設(shè)計(jì)要求目前大多數(shù)時(shí)間控制器往往只能單機(jī)工作,不能滿足集體控制的要求;而在很多應(yīng)用場(chǎng)合,要求時(shí)間控制器除了要具有比擬靈活的時(shí)間控制作用外,還能通過(guò)上位機(jī)連成一個(gè)網(wǎng)絡(luò)體系,以便對(duì)分布在各處的時(shí)間控制器進(jìn)行集中控制〔群控〕。本章設(shè)計(jì)的時(shí)間控制器的功能與特點(diǎn)如下:既能單機(jī)工作,又能通過(guò)上位機(jī)進(jìn)行多機(jī)集中控制;每個(gè)單機(jī)可以按設(shè)定的時(shí)間表進(jìn)行相應(yīng)的控制動(dòng)作;每個(gè)單機(jī)上的定時(shí)時(shí)間表,可通過(guò)一臺(tái)PC機(jī)分別設(shè)定,設(shè)定的信息存放在串行的EE-PROM中,可以保存10年以上;6位LED顯示屏,用作時(shí)鐘顯示;采用RS一485通信接口,可以滿足遠(yuǎn)距離控制的需要;雙休日可以自動(dòng)停止報(bào)警。該時(shí)間控制器十分適應(yīng)于需要控制的對(duì)象〔如電鈴〕較為分散而且個(gè)數(shù)較多的場(chǎng)合,有效克服了手工控制或單獨(dú)控制導(dǎo)致的對(duì)象間的時(shí)間誤差,防止了工作上的混亂。只需1臺(tái)普通PC機(jī),通過(guò)通信電纜與各控制器聯(lián)成RS-485拓?fù)渚W(wǎng)絡(luò)。由此PC機(jī)作為上位機(jī),借助通信軟件將設(shè)定時(shí)間一一傳送到各個(gè)控制器,就可以實(shí)現(xiàn)群控。當(dāng)然,上位PC機(jī)必須外接RS-232/RS-485轉(zhuǎn)接器。建議采用市售成品,將它直接插在串口上即可。1.2系統(tǒng)總體設(shè)計(jì)方案總體方案確實(shí)定按照功能要求,確定系統(tǒng)方案如圖7一1所示。從圖中可以看出,系統(tǒng)由微處理器模塊、串行通信模塊、時(shí)鐘模塊、數(shù)據(jù)存儲(chǔ)模塊及顯示等人機(jī)界面模塊組成。在方案設(shè)計(jì)中,遵循簡(jiǎn)潔至上的原那么;因此,所有的外圍模塊采用串行方式與微處理器模塊接口。這里,微處理器采用ATMEIJ公司的89C2051,所有串行接口時(shí)序均通過(guò)軟件模擬實(shí)現(xiàn)。.1硬件設(shè)計(jì)我的電子鐘設(shè)計(jì)包括以下幾局部:時(shí)鐘模塊,鍵盤輸入模塊,八位LED顯示模塊,電網(wǎng)頻率測(cè)量模塊、電網(wǎng)電壓、電流、功率因數(shù)測(cè)量模塊,環(huán)境溫度測(cè)量模塊,遙控關(guān)鬧鐘模塊等。為了方便使用,把數(shù)據(jù)采集單獨(dú)使用一個(gè)單片機(jī)系統(tǒng),而把時(shí)鐘鬧鐘系統(tǒng)由DS12C887與單片機(jī)設(shè)計(jì)完成。然后把溫度,電網(wǎng)頻率,電壓,電流,功率,功率因數(shù)等數(shù)據(jù)通過(guò)串行通信傳輸給主單片機(jī)進(jìn)行顯示。.2鍵盤顯示電路顯示電路采用八片74HC164驅(qū)動(dòng)8位LED的靜態(tài)顯示。一片并入串出芯片74HC165完成鍵盤掃描。由于74HC164與74HC165都是串行數(shù)據(jù)傳輸,大大節(jié)省了I/O,而且鍵顯的速度要求并不高,這種設(shè)計(jì)可以很好地實(shí)現(xiàn)功能。.2系統(tǒng)中關(guān)鍵器件的選用.1串行數(shù)碼管顯示接口芯片MAX7219功能和性能說(shuō)明MAx7219是美國(guó)MAxIM公司生產(chǎn)的串行輸入/輸出共陰極顯示驅(qū)動(dòng)器。該芯片可直接驅(qū)動(dòng)最多8位7段數(shù)字?jǐn)?shù)碼管顯示器,或64個(gè)LED和條形圖顯示器。‘自與微處理器的接口非常簡(jiǎn)單,僅用3個(gè)引腳與微處理器相應(yīng)端連接,即可實(shí)現(xiàn)最高10MHz的串行通信接日。MAX7219的位選方式很有特色,允許用戶選擇多種譯碼方式譯碼選位,而且每個(gè)顯示位都能個(gè)別尋址和刷新,而不需要重寫其他的顯示位,這使得軟件編程十分簡(jiǎn)單、靈活。另外,它具有數(shù)字和模擬亮度控制以及與MOTOROLASPI,QSPI及NATIONALMICROWIRE串行口相兼容等特點(diǎn)。對(duì)于MAX7219,串行數(shù)據(jù)以16位數(shù)據(jù)包的形式從Din腳串行輸人,在CLK的每一個(gè)上升沿一位一位地送人芯片內(nèi)部16位移位存放器,而不管LOAD腳的狀態(tài)如何。LOAD腳必須在第16個(gè)CLK上升沿出現(xiàn)的同時(shí)或之后,但在下一個(gè)CLK上升沿之前變?yōu)楦唠娖?,否那么移人的?shù)據(jù)將喪失。因此,只須編程發(fā)送16位數(shù)據(jù)包,就能簡(jiǎn)單地操作數(shù)碼管的位選以及段選,設(shè)置和改變MAX7219的工作模式。16位數(shù)據(jù)包的數(shù)據(jù)格式如下:其中:D7~D0為8位數(shù)據(jù)位,D7為最高位,D0為最低位;D11~D8為4位地址位;D15~D12為無(wú)關(guān)位,通常全取1。MAX7219通過(guò)D11~D8中4位地址位譯碼,可尋址14個(gè)內(nèi)部存放器,分別是8個(gè)數(shù)碼管顯示位存放器、5個(gè)控制存放器及1個(gè)空操作存放器。數(shù)碼管顯示存放器由內(nèi)部8×8靜態(tài)RAM構(gòu)成,操作者可直接對(duì)位存放器進(jìn)行個(gè)別尋址,以刷新和保持?jǐn)?shù)據(jù),只需V+超過(guò)2V〔一般為+5V〕。控制存放器包括譯碼模式、亮度調(diào)節(jié)、掃描限制〔選擇掃描位數(shù)〕、關(guān)斷模式及顯示測(cè)試存放器。存放器地址見表7-1。MAX7219的驅(qū)動(dòng)程序首先必須對(duì)5個(gè)控制存放器初始設(shè)置,即初始化。各控制存放器設(shè)置含義如下:譯碼模式選擇存放器〔地址=F9H〕。共有4種譯碼模式供選擇。當(dāng)數(shù)據(jù)位全0時(shí),選擇“非譯碼方式〞。在此方式下,8個(gè)數(shù)據(jù)位分別一一對(duì)應(yīng)7個(gè)段和小數(shù)點(diǎn)。通常選擇此方式。掃描限制存放器〔地址=FBH〕。用于設(shè)置顯示的數(shù)碼管個(gè)數(shù)〔1~8〕,當(dāng)D2D1D0=111(D7D6DSD4D3無(wú)關(guān))時(shí),可接8個(gè)數(shù)碼管。亮度調(diào)節(jié)存放器〔地址=FAH〕。共有16級(jí)選擇,用于數(shù)碼管顯示亮度的強(qiáng)弱設(shè)置。關(guān)斷模式存放器〔地址=FCH〕。有2種模式選擇:1種是關(guān)斷狀態(tài)模式〔D0=0〕;1種是正常操作狀態(tài)〔D0=1〕。通常選擇正常操作狀態(tài)。顯示測(cè)試存放器〔地址=FFH〕。有2種選擇用于設(shè)置數(shù)碼管是測(cè)試狀態(tài)還是正常操作狀態(tài):在測(cè)試狀態(tài)時(shí)〔D0=1〕,各位全亮;一般選擇正常操作狀態(tài)〔D0=0〕。2.引腳說(shuō)明MAX7219的引腳排列如圖7-2所示。MAX7219的引腳說(shuō)明如下:1:Din—串行數(shù)據(jù)輸人端。在CLK的上升沿,數(shù)據(jù)被鎖人芯片內(nèi)部16位移位存放器。2,3,5?~8,10,11:DIG0~DIG7—8數(shù)碼管位選線。從共陰數(shù)碼管的公共端吸人電流。12:LOAD—數(shù)據(jù)鎖人控制。在此引腳的上升沿將最后的16位數(shù)據(jù)鎖入16位移位存放器。13:CLK—串行時(shí)鐘輸人,最高時(shí)鐘頻率為10MHz。在CLK的上升沿,數(shù)據(jù)被鎖人內(nèi)部移位存放器;在下降沿,數(shù)據(jù)從Dout被輸出。14~17,20~23:SEGA~SEGDP-—7段驅(qū)動(dòng)和小數(shù)點(diǎn)驅(qū)動(dòng)。18:ISET—設(shè)置段電流峰值。通過(guò)一個(gè)電阻與V+相連,調(diào)節(jié)電阻值即可調(diào)節(jié)段電流峰值。19:V+—電源。一般為+5V。4,9:GND—地線。此2引腳必須同時(shí)接電源地。24:Dout—串行數(shù)據(jù)輸出。輸人到Din的數(shù)據(jù)在16.5個(gè)時(shí)鐘周期后從此腳輸出。該引腳用于級(jí)聯(lián)。7.2.2.2x25045串行EEPROM信息存儲(chǔ)芯片1.功能簡(jiǎn)介看門狗X25045的看門狗定時(shí)器對(duì)單片機(jī)提供獨(dú)立的保護(hù)系統(tǒng)。該定時(shí)器共有200ms\600ms、1.4s三種定時(shí)時(shí)間,可由用戶編程選擇。在設(shè)定的時(shí)間內(nèi),假設(shè)單片機(jī)沒(méi)有訪問(wèn)X25045〔即表示系統(tǒng)出現(xiàn)故障〕,看門狗將輸出RESET信號(hào),將其RESET輸出端置為高電平。延時(shí)約200ms后,RESET端由高電平變?yōu)榈碗娖?,將單片機(jī)復(fù)位。電壓監(jiān)控上電時(shí),電源電壓高于4.5V后,經(jīng)過(guò)約200ms的穩(wěn)定時(shí)間,RESET信號(hào)由高電平變?yōu)榈碗娖剑坏綦姇r(shí),電源電壓低于4.5V時(shí),RESET信號(hào)立即變?yōu)楦唠娖街敝岭娫措妷夯謴?fù)穩(wěn)定為止。這樣就保證了單片機(jī)可靠復(fù)位以及電源電壓不穩(wěn)定時(shí),單片機(jī)不會(huì)出現(xiàn)死機(jī)和誤動(dòng)作。串行E2PROMX25045片內(nèi)帶512個(gè)字節(jié)串行E2PROM,每個(gè)字節(jié)可擦寫10萬(wàn)次以上,數(shù)據(jù)可保存100年以上,具有可編程塊鎖定功能。用三總線串行I/O接口便可進(jìn)行讀寫操作。2.X25045特性具有可編程的看門狗定時(shí)器;低Vcc檢測(cè);直至VcC一IV復(fù)位信號(hào)有效;IMHz時(shí)鐘頻率;512×8位串行EEPROM;為低功耗CMOS,等待電流10μA,工作電流3mA;寬電源電壓范圍;具有塊鎖定功能:可以保護(hù)1/4,1/2或所有EEPROM陣列;具有片內(nèi)偶然性寫保護(hù):上電和掉電保護(hù)電路、寫鎖存、寫保護(hù)引腳;高可靠性:可寫人100000次每字節(jié),數(shù)據(jù)保存期為100年,ESD保護(hù)所有引腳均為2000V;.8引腳小型DIP封裝8引腳SOIC封裝,或14引腳TSSOP封裝;是高電平有效復(fù)位。2.引腳定義X25045的引腳排列如圖7一3所示。1:CS―芯片選擇輸人端。當(dāng)CS為高電平時(shí),X25045不被選擇,SO輸出引腳處于高阻狀態(tài),除非內(nèi)部寫操作正在進(jìn)行,否那么X25045將處于等待電源方式〔standbypowermode〕;CS為低電平,那么使X25045工作,把它置于工作電源方式〔activepower而ode〕。應(yīng)當(dāng)注意。上電之后,在任何操作開始之前,需要CS從高電平至低電平的跳變。2:SO—串行輸出端。SO是推挽串行數(shù)據(jù)輸出引腳。在讀周期內(nèi),數(shù)據(jù)在此引腳上移出,數(shù)據(jù)由串行時(shí)鐘的下降沿同步輸出。3:WP―寫保護(hù)輸人端。當(dāng)WP為低電平時(shí),向X25045的非易失性存儲(chǔ)器寫操作被禁止,但是器件的其他功能仍正常;當(dāng)WP保持高電平時(shí),所有的功能包括非易失性寫操作都正常。在CS仍為低電平時(shí),WP變?yōu)榈碗娖綄⒅袛鄬?duì)X25045的寫操作。如果內(nèi)部寫周期已經(jīng)開始,WP變?yōu)榈碗娖綄⒉挥绊憣懖僮鳌?:Vss―接地端。5:SI―串行輸人端。SI是串行數(shù)據(jù)輸入引腳。所有操作碼、字節(jié)地址以及寫人存儲(chǔ)器的數(shù)據(jù)在此引腳上輸人。數(shù)據(jù)由串行時(shí)鐘的上升沿鎖存。6:SCK―串行時(shí)鐘輸人端。串行時(shí)鐘控制用于數(shù)據(jù)輸人和輸出的串行總線定時(shí)。操作碼、地址或出現(xiàn)在SI引腳上的數(shù)據(jù)在時(shí)鐘輸人的上升沿鎖存;而SO引腳上的數(shù)據(jù)在時(shí)鐘輸入的下降沿之后發(fā)生改變。7:RESET―復(fù)位輸出端。X25045的RESET是高電平有效、漏極開路的輸出端。只要VcC下降至低于最小VcC檢測(cè)電平,RESET便變?yōu)楦唠娖?。它將保持高電平直至VcC上升到最小VcC檢測(cè)電平200ms為止。如果允許看門狗定時(shí)器工作,且CS保持高電平或低電平的時(shí)間長(zhǎng)于看門狗超時(shí)周期,那么RESET便變?yōu)楦唠娖?。CS的下降沿將引起復(fù)位。也即,X25045監(jiān)視總線,如果在看門狗定時(shí)器預(yù)置的時(shí)間周期內(nèi)沒(méi)有總線的活動(dòng),它將提供復(fù)位信號(hào)輸出。8:Vcc―電源電壓輸人端。3.指令集X25045指令集見表7一2。表中所有的指令、地址及數(shù)據(jù)都以MSB〔最高有效位〕在前的方式傳送。讀和寫指令的位3包含了高地址位A8。表7一2X25045的指令集4.存放器及其分析(1)寫使能鎖存器X25045包含1個(gè)寫使能鎖存器。在內(nèi)部進(jìn)行寫操作時(shí),寫使能鎖存器必須被設(shè)置(SET)。WREN指令可以設(shè)置鎖存器,而WRDI指令起復(fù)位鎖存器的作用。上電情況、字節(jié)、頁(yè)及狀態(tài)存放器寫周期完成以后,該鎖存器被自動(dòng)復(fù)位。如果WP變?yōu)榈碗娖?,鎖存器也被復(fù)位。(2)狀態(tài)存放器RDSR指令提供對(duì)狀態(tài)存放器的訪問(wèn)。在任何時(shí)候都可以讀狀態(tài)存放器,即使在寫周期也如此。狀態(tài)存放器格式如下:D7D6D5D4D3D2DlDO//WDIWDOBL1BL0WELWIP當(dāng)發(fā)出WREN,WRDI及RDSR命令時(shí),不必發(fā)送字節(jié)地址或數(shù)據(jù)?!罢趯懆昗IP(writeinprocess)位表示X25045是否忙于寫操作。當(dāng)為“1〞時(shí),寫操作正在進(jìn)行;當(dāng)為“O〞時(shí),沒(méi)有寫操作。在寫期間,所有其他位全置為“1〞。WIP位是只讀的?!皩懯鼓苕i存〞WEL(writeenablelatch)位表示“寫使能〞鎖存器的狀態(tài)。當(dāng)設(shè)置為“1〞時(shí),表示鎖存器置位;當(dāng)設(shè)置為“o〞時(shí),表示鎖存器復(fù)位。WEP位是只讀的,它由WREN指令置位,由WRDI指令或成功地完成了寫周期后復(fù)位?!皦K保護(hù)〞BL0或BL1(blockprotect)位表示所使用的保護(hù)范圍。這些非易失性的位由發(fā)出WRSR指令來(lái)設(shè)置,允許用戶選擇4種保護(hù)級(jí)別之一。X25045分為4個(gè)1024位的段,可以鎖定1個(gè)、2個(gè)或全部4個(gè)段,即在選定的段內(nèi)可以讀這些段,但是不能改變〔寫〕數(shù)據(jù)。用BIL1和BL0的狀態(tài)可以控制范圍的劃分,如表7一3所列。表7一3塊保護(hù)地址范圍“看門狗定時(shí)器〞WDo和WDI(watchdogtimer,〕位允許如表7一4所列那樣設(shè)置看門狗的超時(shí)功能。這些非易失性的位由發(fā)出WRSR指令來(lái)設(shè)置。表7一4看門狗超時(shí)周期5.讀/寫操作及其時(shí)序(l)讀時(shí)序從EEPROM中讀取數(shù)據(jù)的操作,分以下幾個(gè)步驟:①把CS拉低,以選擇芯片;②發(fā)送8位的讀〔READ〕指令到X25045,讀指令的位3包含地址,用于選擇器件;③送8位的字節(jié)地址;④在發(fā)出讀操作和字地址之后,將選定地址的存儲(chǔ)器中的數(shù)據(jù)移到SO線上。繼續(xù)提供時(shí)鐘脈沖,可連續(xù)讀出接下的地址空間中的數(shù)據(jù)。每移出1B數(shù)據(jù)之后,字節(jié)地址自動(dòng)增加到下一個(gè)較高地址。到達(dá)最高地址時(shí),地址計(jì)數(shù)器翻轉(zhuǎn)至00H,無(wú)限循環(huán)下去,直到把CS置為高電平,可以終止操作。圖7-4(a)所示為從EEPROM陣列中讀數(shù)據(jù)的操作時(shí)序。讀狀態(tài)存放器操作的時(shí)序見圖7-4(b)。(b)讀狀態(tài)存放器的時(shí)序圖7-4讀EEPPROM的時(shí)序和讀狀態(tài)存放器的時(shí)序(2)寫時(shí)序在寫時(shí)序之前,必須先發(fā)出存器的操作步驟為:CS先被拉到低電平;②由時(shí)鐘同步送入WREN指令;將CS變?yōu)楦唠娖健r(shí)序見圖7-5(a)。寫數(shù)據(jù)到EEPROM操作時(shí)序見圖7-5(b),操作過(guò)程為:拉低CS并保持在低電平;發(fā)送寫指令〔WRITE〕;寫數(shù)據(jù)??梢栽p純寫多達(dá)4B的數(shù)據(jù),但這4B必須駐留在同一頁(yè)上。〔b〕字節(jié)寫操作時(shí)序圖7-5置位寫使能存放器時(shí)序和字節(jié)寫操作時(shí)序.3串行時(shí)鐘芯片DS1302傳統(tǒng)的時(shí)鐘芯片主要有MC68HC68T,MC146818及LM8365等。這些器件引腳數(shù)多、體積大、占用口線較多。美國(guó)DALLAS公司推出的低功耗實(shí)時(shí)時(shí)鐘芯片DS1302采用串行通信方式,只需3條線即可與單片機(jī)通信,而體積僅僅是上述時(shí)鐘芯片的1/4且片內(nèi)均含RAM,可增加系統(tǒng)的RAM。DS1302的時(shí)鐘校準(zhǔn)也較為容易,假設(shè)采用專用晶振器,幾乎無(wú)須調(diào)整即可到達(dá)國(guó)家要求的時(shí)鐘誤差標(biāo)準(zhǔn)。DSI302是DSI202的升級(jí)產(chǎn)品,對(duì)于停電時(shí)只需對(duì)時(shí)鐘電路單獨(dú)供電的系統(tǒng),該芯片正好具備電池充電和切換管理功能。最適用于長(zhǎng)時(shí)間無(wú)人職守的監(jiān)測(cè)控制系統(tǒng)或需經(jīng)常記錄某些具有特殊意義的數(shù)據(jù)及對(duì)應(yīng)時(shí)間的場(chǎng)合。下面分別介紹DS1302的功能、工作原理及與MCS-51單片機(jī)的接口問(wèn)題。Ds1302的主要功能DS1302慢速充電時(shí)鐘芯片包括實(shí)時(shí)時(shí)鐘/日歷和3lB的靜態(tài)RAM,經(jīng)過(guò)一個(gè)簡(jiǎn)單的串行接口與單片機(jī)通信。實(shí)時(shí)時(shí)鐘/日歷提供秒、分、時(shí)舊、月及年等信息,對(duì)小于31天的月末的日期進(jìn)行調(diào)整,還包括閏年的校正功能。時(shí)鐘的運(yùn)行可采用24h或帶AM〔上午〕和PM〔下午〕的12h格式。DS1302與單片機(jī)的通信僅需3根線,即RST〔復(fù)位線〕、I/O〔數(shù)據(jù)線〕及SCLK〔串行時(shí)鐘線〕。數(shù)據(jù)可按每次1B或多達(dá)31B的形式傳送到時(shí)鐘/RAM或從中送出。DS1302還有另外的功能,即用于主電源和備用電源相連接的雙電源引腳V1和V2。DS1302由Vl或V2兩者中較大者供電。當(dāng)V2>Vl+0.2時(shí),V2給DS1302供電;當(dāng)V2<Vl時(shí),Vl給DS1302供電。這樣使系統(tǒng)在沒(méi)有主電源的情況下,也能保持時(shí)鐘的連續(xù)運(yùn)行。此外,它還提供可編程的慢速充電功能,從而對(duì)備用電池進(jìn)行充電。DS1302引腳排列如圖7一6所示。圖7一6DS13oZ引腳排列圖2.DS1302的內(nèi)部結(jié)構(gòu)DS1302串行時(shí)鐘芯片主要由移位存放器、控制邏輯、振蕩器、實(shí)時(shí)時(shí)鐘及3lB的RAM組成。為了開始任何數(shù)據(jù)的傳送,必須把RST置為高電平,且把提供地址和命令信自、8位裝人到移位存放器。在進(jìn)行單字節(jié)傳送或多字節(jié)傳送時(shí),開始的8位命令字節(jié)用于指定40B(31BRAM和9B時(shí)鐘存放器)中哪個(gè)將被訪問(wèn)。在開始8個(gè)時(shí)鐘周期把命令裝人移位存放器之后,另外的時(shí)鐘在讀操作時(shí)輸出數(shù)據(jù),在寫操作時(shí)輸人數(shù)據(jù)。3.控制命令字節(jié)對(duì)DS1302進(jìn)行任何數(shù)據(jù)傳送時(shí),第1個(gè)數(shù)據(jù)字節(jié)必須是命令字節(jié),格式見圖7-7。其最高有效位MSB〔位〕必須為邏輯1,如果它是0,禁止寫DS1302。位6為邏輯0時(shí),指定傳送時(shí)鐘/日歷數(shù)據(jù);邏輯1指定傳送RAM數(shù)據(jù)。位1-5指定進(jìn)行輸人或輸出的特定存放器的地址。最低有效位LSB〔位0〕為邏輯0時(shí),指定進(jìn)行寫操作〔輸人〕;邏輯l指定進(jìn)行讀操作〔輸出〕。命令字節(jié)總是從最低有效位LSB〔位0〕開始輸人。圖7一7地址/命令字節(jié)4.?dāng)?shù)據(jù)傳送方式和時(shí)序分析DSl302有單字節(jié)傳送方式和多字節(jié)傳送方式。通過(guò)把RST復(fù)位線驅(qū)動(dòng)至高電平,啟動(dòng)所有的數(shù)據(jù)傳送。RST輸人線有2種功能:接通控制邏輯,允許地址/命令序列送人移位存放器;提供中止單字節(jié)或多字節(jié)數(shù)據(jù)傳送的手段。數(shù)據(jù)輸人時(shí),時(shí)鐘的上升數(shù)據(jù)必須有效,數(shù)據(jù)的輸出在時(shí)鐘的下降沿。如果RST為低電平,那么所有的數(shù)據(jù)傳送將被中止,且I/O引腳變?yōu)楦咦锠顟B(tài)。上電時(shí),在Vl>2.5V之前,RST必須為邏輯0。當(dāng)把RST驅(qū)動(dòng)至邏輯1狀態(tài)時(shí),SCLK必須為邏0。數(shù)據(jù)傳送時(shí)序如圖7-8所示。單字節(jié)數(shù)據(jù)輸人跟隨在寫命令字節(jié)的8個(gè)SCLK周期之后,在隨后的8個(gè)SCLK周期的上升沿輸人數(shù)據(jù)字節(jié),數(shù)據(jù)從位0開始輸人。單字節(jié)數(shù)據(jù)輸出跟隨在輸入讀命令字節(jié)的8個(gè)SCI人周期之后,在隨后的8個(gè)SCI術(shù)周期的下降沿輸出數(shù)據(jù)字節(jié)。注意,被傳送的第1個(gè)數(shù)據(jù)位發(fā)生在寫命令字節(jié)的最后1位之后的第1個(gè)下降沿。只要RST保持為高電平,如果有額外SCLK周期,它們將重新發(fā)送數(shù)據(jù)字節(jié)。這一操作使DS1302具有連續(xù)的多字節(jié)方式的讀能力。在SCLK為高電平期間,I/O引腳為高阻狀態(tài)。數(shù)據(jù)從位。開始輸出。DS1302的其他功能,在此不再贅述。圖7-8數(shù)據(jù)傳翰時(shí)序1.2.2.4RS-485通信接口芯片SN75LBC1841.RS一485總線RS-232是目前串行通信中最常用的總線,其標(biāo)準(zhǔn)RS-232C是美國(guó)電子工業(yè)協(xié)會(huì)EIA制定的串行物理接口協(xié)議。RS-232接口的特征是負(fù)邏輯、單端驅(qū)動(dòng)、共地接收,只適用于點(diǎn)對(duì)點(diǎn)通信。當(dāng)信號(hào)線上的電平為-3~15V時(shí),表示邏輯“1";當(dāng)信號(hào)線上的電平為+3~+15V時(shí),表示邏輯“O〞。通信雙方使用一條公共信號(hào)地線作電平參考。RS-232C標(biāo)準(zhǔn)規(guī)定,驅(qū)動(dòng)器負(fù)載電容不超過(guò)2500pF,通信距離受此電容的限制。另外,RS-232屬于單端信號(hào)傳送,存在共地噪聲和不能抑制的共模干擾;因此其通信距離限15m以下,通信速率限于20kbps以下。當(dāng)要求通信距離為幾十米至上千米時(shí),目前廣泛采用RS-485總線。RS-485總線示意圖如圖7-9所示。RS-485收/發(fā)器采用平衡驅(qū)動(dòng)和差分接收,具有抑制共模干擾的能力。RS-485接收器靈敏度可達(dá)±200mV,因而大大延長(zhǎng)了通信距離。在高達(dá)100kbPs速率下,電纜長(zhǎng)度可達(dá)1200m;如果通信距離縮短,最大速率可達(dá)10MbPs。RS-485總線上允許帶多個(gè)驅(qū)動(dòng)器和接收器,可用于構(gòu)建多點(diǎn)通信網(wǎng)絡(luò)。圖7-9RS-485總線示意圖RS-485組網(wǎng)具有設(shè)備簡(jiǎn)單、價(jià)格低廉、能進(jìn)行長(zhǎng)距離通信的特點(diǎn),故在工程工程中得到了廣泛的應(yīng)用。RS-485為串行平衡電壓數(shù)字接口總線標(biāo)準(zhǔn),與RS-422A總線標(biāo)準(zhǔn)根本相同,同樣適用于DTE與DCE之間串行二進(jìn)制信號(hào)點(diǎn)對(duì)多點(diǎn)的互聯(lián)通信。不同之處在于:傳輸阻抗RL=54Ω,因此比RS-422A有更強(qiáng)的負(fù)載能力。多點(diǎn)互聯(lián)可多達(dá)32個(gè)。接口芯片為DS3695〔或SN75176,UA96176〕,DS3696〔或SN75175,UA96177〕。MAX481,MAX483,MAX485,MAX487~491及MAX1487都是用于RS~485通信的低功耗收/發(fā)器,可實(shí)TTL與RS-485的電平轉(zhuǎn)換。所有的器件都使用+5V的單一電源。RS-485為半雙工通信。2.SN75LBC184接口芯片SN75LBC184是美國(guó)Tl公司生產(chǎn)的一種RS-485接口芯片。它使用單一電源,電壓在3.0~5.5V范圍內(nèi)均能正常工作,可以完成TTL與RS-485之間的轉(zhuǎn)換。其引腳圖如圖7-10所示。該芯片與普通的RS-485收/發(fā)器相比,有一個(gè)顯著的特點(diǎn),那就是片內(nèi)A,B引腳接有高能量瞬變干擾保護(hù)裝置,可以承受峰值400w〔典型值〕的過(guò)壓瞬變。由于引起過(guò)壓瞬變的原因通常是雷電、靜電放電及電源系統(tǒng)開關(guān)干擾等,因而它能顯著提高器件的可靠性。在環(huán)境比擬惡劣的場(chǎng)合,可直接與傳輸線相接,而不需要任何外加保護(hù)元件。該芯片還有一個(gè)獨(dú)特的設(shè)計(jì),即當(dāng)輸人端開路時(shí),其輸出為高電平。這樣即使在接收器輸人端電纜有開路故障時(shí),也不影響系統(tǒng)的正常工作。另外,它的輸入阻抗為RS-485標(biāo)準(zhǔn)輸人阻抗〔≥〕24kΩ),故可在總線上連接64個(gè)收/發(fā)器。圖7一10SN75LBC184的引腳排列7.2.3系統(tǒng)硬件設(shè)計(jì)1.系統(tǒng)電原理圖設(shè)計(jì)及其說(shuō)明(1)系統(tǒng)電原理圖設(shè)計(jì)系統(tǒng)電原理圖如圖7-11所示。(2)系統(tǒng)原理分析圖7一11系統(tǒng)電原理圖顯示界面本系統(tǒng)采用共陰數(shù)碼管作為顯示界面。由于時(shí)間顯示的要求,一共用了6個(gè),這樣必須采用24h制。時(shí)間的分割符號(hào)“:〞由數(shù)碼管中的小數(shù)點(diǎn)“.〞代替??紤]到控制器室外使用的需要,設(shè)計(jì)中采用超高亮顯示數(shù)碼管。系統(tǒng)復(fù)位由于系統(tǒng)采用X25045實(shí)現(xiàn)復(fù)位,因此無(wú)手動(dòng)復(fù)位功能。系統(tǒng)在運(yùn)行中出現(xiàn)死機(jī)及需要復(fù)位的情況下,如何實(shí)現(xiàn)復(fù)位?為了闡述這個(gè)問(wèn)題,首先討論單片機(jī)系統(tǒng)的幾種復(fù)位形式。冷復(fù)位即上電復(fù)位,可通過(guò)開關(guān)電源來(lái)實(shí)現(xiàn)。這種復(fù)位方式不適用于無(wú)人職守的場(chǎng)合。軟復(fù)位在系統(tǒng)尚能正常運(yùn)行的情況下,可以通過(guò)上位機(jī)發(fā)送復(fù)位命令字節(jié),由系統(tǒng)跳轉(zhuǎn)到程序首實(shí)現(xiàn)軟復(fù)位。當(dāng)然,考慮到可靠性,復(fù)位命令宜采用2B以上??撮T狗滋出復(fù)位在系統(tǒng)運(yùn)行死機(jī)的情況下,系統(tǒng)的“喂狗〞功能喪失,不可能產(chǎn)生正常的“喂狗〞信號(hào),從而引起系統(tǒng)自動(dòng)溢出復(fù)位,以滿足無(wú)人職守的需要。③光電隔離由于RS-485節(jié)點(diǎn)的距離往往比擬遠(yuǎn),很難防止各種非共模干擾通過(guò)通信線路串人系統(tǒng),引起系統(tǒng)故障。為了系統(tǒng)的可靠與平安,對(duì)RS-485與微處理器的接口電路實(shí)行光電隔離進(jìn)行緩沖。另外,對(duì)象控制是通過(guò)P3.5和P3.7實(shí)現(xiàn)的。這2個(gè)口線也必須通過(guò)光電隔離后驅(qū)動(dòng)繼電器或固態(tài)繼電器,實(shí)現(xiàn)對(duì)對(duì)象的隔離控制。時(shí)鐘備用電源DS1302時(shí)鐘芯片具有自動(dòng)切換電源的特性。為了在系統(tǒng)+5V主電源消失的情況下,確保系統(tǒng)時(shí)鐘正常運(yùn)行,設(shè)計(jì)了一個(gè)3.6V的可充電銼電池,作為備用電源。正常情況下,由DS13O2對(duì)它進(jìn)行涓流充電,以確保電池的長(zhǎng)效性。7.3監(jiān)控軟件設(shè)計(jì)7.3.1監(jiān)控軟件結(jié)構(gòu)結(jié)構(gòu)系統(tǒng)監(jiān)控軟件的重點(diǎn)和難點(diǎn)是按時(shí)間控制表的時(shí)間順序進(jìn)行控制和串行通信中斷子程序2局部.為了減少中斷程序占用CPU的時(shí)間,串行中斷只將接收到的本機(jī)時(shí)間表等信息寫人系統(tǒng)開辟的緩沖區(qū)。時(shí)間表信息中還包括時(shí)間表累加和信息、2路控制輸出標(biāo)志信息等,前者主要用于判斷時(shí)間表的有效性與完整性,防止錯(cuò)誤動(dòng)作;后者主要用于指定控制對(duì)象。監(jiān)控程序的程序流程如圖7一12所示。圖7-12系統(tǒng)監(jiān)控程序流程2.關(guān)鍵子程序設(shè)計(jì)MAX7219的初始化及讀/寫子程序初始MAX7219的程序流程如圖7-13所示。按照?qǐng)D7-13,送完所有控制存放器的地址和相應(yīng)的控制命令之后,再按同樣的方法送待顯示的數(shù)據(jù),每次先送某個(gè)數(shù)碼管的地址字節(jié),后送待顯示的數(shù)據(jù)字節(jié)。由于控制存放器和數(shù)據(jù)顯示存放器全部單獨(dú)編址,所以在送控制字或送顯示數(shù)據(jù)時(shí),均沒(méi)有規(guī)定其先后順序。圖7-13MAX721,的初始化流程如何用51單片機(jī)的普通I/O端口控制MAX7219呢?關(guān)鍵是要編寫51單片機(jī)向MAX7219寫1B的子程序。應(yīng)用單片機(jī)位操作指令能尋址累加器A各位的指令編程。累加器A中D7~D0各位對(duì)應(yīng)的地址分別為E7,E6,…E0,以此分別對(duì)D7,D6,…D0位進(jìn)行判斷,判斷某位為1還是為0,分別調(diào)寫1和寫0的子程序WMI和WM0。下面簡(jiǎn)要分析51單片機(jī)向MAX7219寫1B的子程序,有關(guān)指令的分析說(shuō)明見程序清單后的注釋。程序清單如下:;**************************************;寫字節(jié)子程序WMAX;占用存放器ACC;;**************************************DINEQUPI.6CLKEQUPI.4WMAX:JBE7,W7;判是否為lLCALLWM0;不是,那么調(diào)用寫“0〞子程序LJMPN7W7:LCALLWMI;是,那么調(diào)用寫“1〞子程序N7:JBE6,W6LCALLWM0LJMPN6W6:LCALLWM1N6:JBE5,W5LCALLWM0LGMPN5W5:LCALLWM1N5:JBE4,W4LCALLWM0LJMPN4W4:LCALLWM1N4:JBE3,W3LCALLWM0LJMPN3W3:LCALLWM1N3:JBE2,W2JCALLWM0LJMPN2W2:LCALLWM1N2:JBE1,W1LCALLWM0LJMPN1W1:LCALLWM1N1:JBE0,W0LCALLWM0LJMPN0W0:LCALLWM1N0:CLRCLKCLRDINRET;**************************************;寫“1〞子程序;**************************************WM1;CLRCLKSETBDIN;送出“1〞NOPSETBCLK;產(chǎn)生CLK的下降沿RET;**************************************WM0;CLRCLKCLRDIN;送出“0〞NOPSETBCLK;產(chǎn)生CLK的下降沿NOPNOPCLRCLK;產(chǎn)生CLK的下降沿RET〔2〕X25045的初始化及讀/寫子程序?qū)25045的操作包括寫狀態(tài)存放器、寫數(shù)據(jù)、讀狀態(tài)存放器及讀數(shù)據(jù)等。這里僅介紹對(duì)X25045寫數(shù)據(jù)程序及其相關(guān)程序的設(shè)計(jì)。;X25045引腳定義如下SCKEQUP2.3;串行時(shí)鐘輸入SIEQUP2.4;串行數(shù)據(jù)輸入SOEQUP2.6;串行數(shù)據(jù)輸出CSEQUP2.7;片選輸入;其中寫保護(hù)輸入WP始終接高電平;狀態(tài)存放器及各命令字節(jié)定義STATUS_REGEQU#00000011BWR1TE_INSTEQU#00000010BRDSR_INSTEQU#00000101BWREN_INSTEQU#00000110BWRSR_INSTEQU#00000001BWRDI_INSTEQU#00000100B;**************************************;寫1B數(shù)據(jù)X25045種的子程序WRONE;數(shù)據(jù)在A中,地址在DPTR種;占用存放器;ACC,DPTR;**************************************WRONE:PUSHACC;待寫數(shù)據(jù)保護(hù)LCALLWREN;WRITEENABLECLRSCK;X25045的SCK置低MOVA,WRITE_INSTMOVB,DPHMOVC,B.0MOVACC.3,C;DPH的最低位〔A8〕送ACC.3LCALLOUTBYT;送含地址高位的寫命令MOVA,DPLLCALLOUTBYT;送低8位地址POPACCLCALLOUTBYT;寫1B數(shù)據(jù)CLRSCK;X25045的SCK置低STEBCS;片選CS置高,無(wú)效RET;**************************************;設(shè)置寫使能鎖存器WREN子程序〔即允許寫操作〕;**************************************WREN:CLRCSCLRSCKMOVA,WREN_INSTLCALLOUTBYT;送寫使能命令WRENSETBCSCLRSCKRET;**************************************;給X25045寫入1B地址或數(shù)據(jù)子程序OUTBYT;欲寫內(nèi)容A中;占用存放器:ACC,B;**************************************OUTBYT:MOVB,#081;置循環(huán)次數(shù)8OUTBYT1:CLRSCKRLCA;ACC的最高位送CyMOVSI,C;Cy送X25045的SISETBSCKDJNZB,OUTBYT1;循環(huán)8次,8bitsCLRSI;X25045DESI置低RET;**************************************;功能:讀X25045狀態(tài)存放器,等待內(nèi)部寫;入口條件:R6的數(shù)據(jù)事等待延時(shí)時(shí)間;出口信息:WIP=1,正在寫;WIP=0,寫完成;占用資源:R6,A,B,PSW;**************************************RDS045:MOVR6,0FFH;循環(huán)次數(shù)送入R6RDS01:CLRSCKNOPCLRCS;選中X25045NOPMOVA,RDSR_INST;05H,讀X25045狀態(tài)存放器命令送ALCALLOUTBYT;調(diào)用X25045寫入1B子程序LCALLINBYT;調(diào)用X25045讀出1B子程序SETBCS;不選中X25045JNBACC.0.DS02;WIP=`1正在寫;WIP=0,寫完成DJNZR6,DS01RDS02:RET;**************************************;功能:向X25045寫入一批數(shù)據(jù)子程序W045;入口條件:R0的內(nèi)容偉CPU內(nèi)存的地址;R1的內(nèi)容事X25045的待寫地址,R3事待寫數(shù)據(jù)的長(zhǎng)度R4的內(nèi)容事02H或0AH,表示寫命令的執(zhí)行區(qū)域;出口信息:R3的內(nèi)容為0;占用資源:A,B,PSW,R0,R1,R2,R3,R4;**************************************W045:CLRSCKNOPCLRCSNOPMOVA,WREN_INST;#06H,寫允許命令送入ALCALLOUTBYT;調(diào)用向X25045寫入1B子程序SETBCSNOPCLRCSMOVA,R4;命令送入ALCALLOUTBYT;調(diào)用X25045寫入1B子程序MOVA,R1;X25045的首地址送入ALCALLOUTBYT;調(diào)用X25045寫入1B子程序W0450MOVA,@R0;待寫數(shù)據(jù)送入ALCALLOUTBYT;調(diào)用X25045寫入1B子程序INCR0;調(diào)整CPU內(nèi)數(shù)據(jù)存儲(chǔ)區(qū)的位置DJNZR3,W0450;判斷這批數(shù)據(jù)事否完整SETBCS;批量數(shù)據(jù)寫完,不選中X25045RET;**************************************;功能:向X25045讀出一批數(shù)據(jù)子程序;入口條件:R0的內(nèi)容偉CPU內(nèi)存的地址R1的內(nèi)容是X25045的待寫地址,R3是待寫數(shù)據(jù)的長(zhǎng)度R4的內(nèi)容是03H或0BH,表示寫命令的執(zhí)行區(qū)域;出口信息:R3的內(nèi)容為0;占用資源:A,S,PSW,R0,R1,R2,R3,R4;**************************************R045:CLRSCKNOPCLRCSNOPMOVA,R4;命令送入ALCALLOUTBYT;X25045寫入8B子程序MOVA,R1;對(duì)X25045的操作首地址送入ALCALLOUTBYT;X25045寫入8B子程序R0451:LCALLINBYT;調(diào)用讀出8位數(shù)據(jù)子程序MOV@R0,A;讀出的數(shù)據(jù)送入CPU內(nèi)存INCR0;調(diào)整CPU內(nèi)部存放數(shù)據(jù)的位置DJNZR3,R0451;數(shù)據(jù)未讀完,跳轉(zhuǎn)SFTBCS;數(shù)據(jù)讀完,不選中X25045RET;**************************************;功能:從X25045中讀出8位數(shù)據(jù)子程序;出口信息:A的內(nèi)容為讀出的8位數(shù)據(jù);占用資源:B,PSW;**************************************INBYT:MOVB,#08HINBYT:CLRSCKNOPMOVMOVC,SONOPSETBSCKRLCANOPDJNZB,INBYTCLRSCKRET〔3〕DS1302的初始化及讀/寫子程序?qū)崟r(shí)時(shí)鐘芯片DS1302的初始化及其讀/寫程序設(shè)計(jì)的關(guān)鍵是要遵循其時(shí)序要求。這里討論有關(guān)子程序模塊的設(shè)計(jì)。設(shè)計(jì)中的有關(guān)要點(diǎn)參見程序清單的注釋。;**************************************T_CLKEQUP3.3;實(shí)時(shí)時(shí)鐘時(shí)鐘線引腳T_IOEQUP3.4;實(shí)時(shí)時(shí)鐘數(shù)據(jù)線引腳T_RSTEQUP3.2;實(shí)時(shí)時(shí)鐘復(fù)位線引腳;**************************************;子程序名:Set1302;功能:設(shè)置DS1302初始時(shí)間,并啟動(dòng)計(jì)時(shí);說(shuō)明:;調(diào)用:RTInputbyte;入口參數(shù):初始時(shí)間在Second,Minute,Hour,Day,Month,Week,Year〔地址連續(xù)〕;返回值:無(wú);影響資源:A,B,R0,R1,R4,R7;**************************************Set1302:CLRT_RSTCLRT_CLKSETBT_RSTMOVB,#8EH;控制存放器LCALLRTInputByteMOVB,#00H;寫操作前WP=0LCALLRTInputByteSETBT_CLKCLRT_RSTMOVR0,#Second;MOVR7,#7;秒、分、時(shí)、日、月、星期、年MOVR1,#80H;秒寫地址Set13021:CLRT_RSTCLRT_CLKSETBT_RSTMOVB,R1;寫秒、分、時(shí)、日、月、星期、年地址LCALLRTInputByteMOVA,@R0;寫秒數(shù)據(jù)MOVB,ALCALLRTInputByteINCR0INCR1INCR1SETBT_CLKCLRT_RSTDJNZR7,Set13021CLRT_RSTCLRT_CLKSETBT_RSTMOVB,#8EH;控制存放器LCALLRTInputByteMOVB,#80H;控制,WP=1,寫保護(hù)LCALLRTInputByteSETBT_CLKCLRT_RSTRET;**************************************;子程序名:Get1302;功能:從DS1302讀時(shí)間;說(shuō)明:;調(diào)用:RTInputByte,RTOutputBte;入口參數(shù):時(shí)間保存在Second,Minute,Hour,Day,Month,Week,Year;返回值:無(wú);影響資源:A,B,R0,R4,R7;**************************************Get1302:MOVR0,#SecondMOVR7,#7MOVR1,#81H;秒地址Get13021:CLRT_RSTCLRT_CLKSETBT_RSTMOVB,R1;秒、分、時(shí)、日、月、星期、年地址LCALLRTInputByteLCALLRTOutputByteMOV@R0,A;秒INCR0INCR1INCR1SETBT_CLKCLRT_RSTDJNZR7,Get13021RET;**************************************;寫13021B子程序;**************************************RTInputByte:MOVR4,#8Inbitl:MOVA,BRRCAMOVB,AMOVT_IO,CSETBT_CLKCLRT_CLKDJNZR4,InbitlRET;**************************************;讀13021B子程序;**************************************RTOutputByte:MOVR4,#8Outbitl:MOVC,T_IORRCASETBT_CLKCLRT_CLKDJNZR4,OutbitlRET(4)RS一485通信接口程序設(shè)計(jì)主從式半雙工通信方式系統(tǒng)傳送數(shù)據(jù)采用主從站的方法。主機(jī)可以是PC機(jī)、工控機(jī)或單片機(jī)。每個(gè)從機(jī)擁有自己固定的地址,由主機(jī)控制完成網(wǎng)上的每一次通信。開始時(shí)所有從機(jī)復(fù)位,即處于監(jiān)聽狀態(tài),等待主機(jī)的呼叫。當(dāng)主機(jī)向網(wǎng)上發(fā)出某一從機(jī)的地址時(shí),所有從機(jī)接收到該地址并與自己的地址相比擬。如果相符,說(shuō)明主機(jī)在呼叫自己,應(yīng)發(fā)回應(yīng)答信號(hào),表示準(zhǔn)備好開始接收后面的命令和數(shù)據(jù);否那么不予理睬,繼續(xù)監(jiān)聽呼叫地址。主機(jī)收到從機(jī)的應(yīng)答后,那么開始一次通信。通信完畢,從機(jī)繼續(xù)處于監(jiān)聽狀態(tài),等待呼叫。由于使用半雙工方式,RS-485接口芯片的SN75LBC184的A,B為RS-485總線接口;DI是發(fā)送端,RO為接收端,分別與單片機(jī)串行口的TXD,RXD連接;RE,DE為收/發(fā)使能端,由單片機(jī)的Pl.7口作為收/發(fā)控制。網(wǎng)絡(luò)拓樸原理可用圖7一14表示。圖7一14RS一485拓樸結(jié)構(gòu)通信網(wǎng)絡(luò)協(xié)議SN75LBC184僅能保證在物理層上二進(jìn)制信號(hào)流的暢通。為了能使具體的命令、數(shù)據(jù)在一網(wǎng)絡(luò)上正確地傳輸,在數(shù)據(jù)鏈路層必須提供一定的網(wǎng)絡(luò)協(xié)議,保證在物理層的比特流出現(xiàn)錯(cuò)誤時(shí),進(jìn)行檢測(cè)和校正,同時(shí)實(shí)現(xiàn)生成數(shù)據(jù)幀和命令幀的功能。主機(jī)發(fā)出的信息分為地址和數(shù)據(jù),必須區(qū)分開。單片機(jī)串行口模式3是波特率可變的9位通信方式,可編程位〔TB8〕由主機(jī)單片機(jī)自動(dòng)打包區(qū)別地址和數(shù)據(jù)。TBS為1,表示地址字節(jié);否那么是數(shù)據(jù)字節(jié)。從機(jī)接收時(shí)那么根據(jù)這一位來(lái)區(qū)別地址和數(shù)據(jù)。通信開始前,所有的從機(jī)處于復(fù)位狀態(tài),監(jiān)聽主機(jī)的地址呼叫。FFH的呼叫地址將使所有的從機(jī)復(fù)位。這時(shí)的從機(jī)只對(duì)TBS為1的地址字節(jié)敏感,對(duì)數(shù)據(jù)字節(jié)不予理睬。如果有地址呼叫,那么中斷所有的從機(jī)。每個(gè)從機(jī)都把接收到的呼叫地址和本機(jī)地址相比擬,如果相符,那么該從機(jī)開始接收數(shù)據(jù)幀;其他從機(jī)保持不變,后面的數(shù)據(jù)字節(jié)由于TB8為O,它們不接收,繼續(xù)監(jiān)聽地址呼叫。通信的從機(jī)完成通信后,自動(dòng)轉(zhuǎn)人復(fù)位狀態(tài)。通信的數(shù)據(jù)長(zhǎng)度必定大于1B,必須將它們合成一幀。網(wǎng)絡(luò)數(shù)據(jù)協(xié)議幀的格式如表7-5所列。第1局部只有1B,代表該幀的長(zhǎng)度為N+2。第2局部是N個(gè)數(shù)據(jù)的數(shù)據(jù)包。具體地說(shuō),當(dāng)主機(jī)發(fā)給從機(jī)時(shí),數(shù)據(jù)包包括命令字及參數(shù);當(dāng)從機(jī)回送給主機(jī)時(shí),包括狀態(tài)字以及必要的數(shù)據(jù)。最后1部處是采用CCITT(consultativecommitteeinternationalfortelephonyandtelegraph,國(guó)際電報(bào)咨詢委員會(huì))的CRC(cyclicredundancycheek,循環(huán)冗余校驗(yàn))碼,長(zhǎng)度是2B。通信接口程序設(shè)計(jì)按照網(wǎng)絡(luò)協(xié)議的幀格式編寫的通信接口程序,通過(guò)物理層最終完成主機(jī)與從機(jī)之間的數(shù)據(jù)交換。主機(jī)和各從機(jī)間傳送的命令和數(shù)據(jù)是二進(jìn)制的直接傳送。RS-485通信接口程序包括主機(jī)程序和從機(jī)程序。由于主機(jī)為PC機(jī),因此其程序不予討論,可基于VB開發(fā)。這里僅討論從機(jī)〔即本系統(tǒng)〕局部的程序設(shè)計(jì)。為了提高從機(jī)響應(yīng)的靈敏度,采用中斷方式進(jìn)行接收與發(fā)送通信。為了減少現(xiàn)場(chǎng)保護(hù)的工作量,中斷子程序采用了存放器組切換方式。串行通信使用1組,主程序使用O組,相互之間互不干擾。有關(guān)分析參見程序注釋。;**************************************;發(fā)送/接受控制信號(hào)SFCTRLEQUP1.7;本通信節(jié)點(diǎn)地址定義ADDRESSEQU01H;通信所需變量定義;**************************************;主程序串行通信的初始化MAIN:MOVSP,#60HMOVPCON,#00H;SMODE=0MOVTMOD,#20H;定時(shí)器1設(shè)為模式2〔波特率發(fā)生器〕CLREAMOVTH1,#0F3H;定時(shí)起始值,6MHz晶振時(shí)波特率1200bpsMOVSCON,#0D8H;串行口模式3,TB8=1發(fā)送地址呼叫SETBTR1SETBEA〔其他初始化〕〔其他處理程序〕TXSETBRS0;選擇1組工作存放器PUSGACCCLRR1;清接收標(biāo)志CLRES;關(guān)閉串行口中斷CLRSFCTRL;使485處于接收方式MOVA,SBUF;接受數(shù)據(jù)MOVB,A;數(shù)據(jù)暫存XRLA,#0FFH;判是否復(fù)位命令〔字節(jié)0FFH〕JNZTX_1;不是,那么轉(zhuǎn)SETBSM2;是,那么進(jìn)行軟復(fù)位處理SETBES〔設(shè)置系統(tǒng)軟復(fù)位標(biāo)志,以便系統(tǒng)進(jìn)行軟復(fù)位處理〕POPACC;恢復(fù)現(xiàn)場(chǎng)CLRR
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代信息技術(shù)在城市公共安全中的重要作用
- 現(xiàn)代教育中系統(tǒng)性能監(jiān)控的應(yīng)用
- 吊裝危險(xiǎn)作業(yè)方案
- 7《什么比獵豹的速度更快》(說(shuō)課稿)-2024-2025學(xué)年統(tǒng)編版語(yǔ)文五年級(jí)上冊(cè)
- 27紀(jì)昌學(xué)射(說(shuō)課稿)2024-2025學(xué)年四年級(jí)上冊(cè)語(yǔ)文統(tǒng)編版
- 8賣火柴的小女孩 第二課時(shí) 說(shuō)課稿 -2024-2025學(xué)年語(yǔ)文三年級(jí)上冊(cè)統(tǒng)編版
- 5《走近我們的老師》說(shuō)課稿-2024-2025學(xué)年道德與法治三年級(jí)上冊(cè)統(tǒng)編版
- Unit4 Then and Now(說(shuō)課稿)-2024-2025學(xué)年譯林版(三起)英語(yǔ)六年級(jí)上冊(cè)
- 2024年六年級(jí)品社下冊(cè)《走出國(guó)門》說(shuō)課稿 山東版
- 4我們的公共生活(說(shuō)課稿)-2023-2024學(xué)年道德與法治五年級(jí)下冊(cè)統(tǒng)編版
- 2024年執(zhí)業(yè)醫(yī)師考試-醫(yī)師定期考核(口腔)筆試參考題庫(kù)含答案
- 中國(guó)律師學(xué) 課件 陳衛(wèi)東 第10-17章 律師收費(fèi)制度-律師非訴訟業(yè)務(wù)(二)
- 宮頸癌后裝治療及護(hù)理
- 2024年度-IATF16949運(yùn)行培訓(xùn)課件
- 理解師生關(guān)系的重要性
- 統(tǒng)編版語(yǔ)文八年級(jí)下冊(cè)第7課《大雁歸來(lái)》分層作業(yè)(原卷版+解析版)
- 2024年湖南省普通高中學(xué)業(yè)水平考試政治試卷(含答案)
- 零售企業(yè)加盟管理手冊(cè)
- 設(shè)備維保的維修流程與指導(dǎo)手冊(cè)
- 招標(biāo)代理服務(wù)的關(guān)鍵流程與難點(diǎn)解析
- 材料預(yù)定協(xié)議
評(píng)論
0/150
提交評(píng)論