版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第10章
89C51應(yīng)用系統(tǒng)設(shè)計和開發(fā)單片機應(yīng)用系統(tǒng)設(shè)計包括總體方案、硬件系統(tǒng)、軟件系統(tǒng)設(shè)計,系統(tǒng)仿真調(diào)試和運行維護(hù)等。介紹一個實用的數(shù)據(jù)采集和超限報警系統(tǒng)的設(shè)計和開發(fā)。10.1
單片機應(yīng)用系統(tǒng)典型的單片機應(yīng)用系統(tǒng)除主機外,還包括有:前向通道(即輸入部分):數(shù)字量、開關(guān)量、模擬量信號(A/D)的輸入。后向通道(輸出部分):數(shù)字量、開關(guān)量、模擬量信號(D/A)的輸出。人機對話通道,即人機交互部分:鍵盤、顯示器、打印機、看門狗(監(jiān)視)電路等單片機應(yīng)用系統(tǒng)設(shè)計的特點:單片機應(yīng)用系統(tǒng)一般規(guī)模比較小。設(shè)計開發(fā)過程要借助專用的開發(fā)器、仿真器或開發(fā)系統(tǒng)來進(jìn)行。設(shè)計中要綜合考慮硬件、軟件的組成,以達(dá)到較高性能價格比??梢圆捎密浖袒瘜崿F(xiàn)部分硬件功能也可以采用硬件來實現(xiàn)某些軟件的功能。單片機應(yīng)用系統(tǒng)要求可靠性高,特別是工作于無人值守、不間斷工作的環(huán)境中,必須保證安全可靠要從電路設(shè)計、軟件程序等加以考慮??撮T狗監(jiān)視電路就是其中一種。單片機應(yīng)用系統(tǒng)要盡量作到低功耗、小體積。軟件程序固化在單片機內(nèi)的程序存儲器中。要在專門的編程器或下載設(shè)備中完成。10.2單片機應(yīng)用系統(tǒng)的設(shè)計過程設(shè)計過程包括以下幾部分:⑴.總體方案的設(shè)計⑵.硬件系統(tǒng)設(shè)計⑶.軟件系統(tǒng)設(shè)計⑷.系統(tǒng)仿真調(diào)試⑸.運行維護(hù)。這5個部分不是孤立的,而是相互關(guān)聯(lián)、相互依靠、互相制約的。10.2.1
總體方案的設(shè)計根據(jù)市場需求,進(jìn)行分析,提出本項目的任務(wù)。熟悉和了解控制對象,確定合理可行的技術(shù)指標(biāo)確定系統(tǒng)功能具體實現(xiàn)形式,選擇出適合該項目,能迅速開發(fā)出性能價格比高的應(yīng)用系統(tǒng)的單片機。合理地劃分硬件和軟件兩部分的功能要求。
確定總體方案,擬定設(shè)計任務(wù)書。按照軟件工程的思想,列出各子系統(tǒng)的任務(wù)書,以及軟件、硬件及它們之間的接口標(biāo)準(zhǔn)、技術(shù)要求。10.2.2
硬件系統(tǒng)設(shè)計
根據(jù)功能要求,選擇系統(tǒng)的CPU、存儲器、I/O接口以及傳感器、繼電器、顯示器、鍵盤等元器件。原理圖和PCB板(印制電路板)的設(shè)計。使用專門的
EDA(電子設(shè)計自動化)工具軟件(如Protel)。它們有強大的自動設(shè)計能力,高速有效的編輯功能,使得設(shè)計過程簡便高效。制版和組裝設(shè)計完成后,交付制版生產(chǎn)廠家。在PCB板和元器件齊套時,焊接組裝。硬件調(diào)試?yán)秒娮觾x器及編寫測試程序,進(jìn)行硬件調(diào)試。10.2.5
系統(tǒng)運行與維護(hù)應(yīng)用系統(tǒng)在仿真調(diào)試環(huán)境中成功后,確定硬件軟件基本正確,將程序代碼固化到單片機的程序存儲器中。獨立運行該應(yīng)用系統(tǒng)。在系統(tǒng)獨立運行中,隨時觀察系統(tǒng),有時需要對其進(jìn)行改進(jìn)。如果運行正常,就可以投入正常的工作中。一般來說,在連續(xù)工作的過程中,有可能出現(xiàn)調(diào)試中沒有遇到的問題,需要設(shè)計人員進(jìn)一步改進(jìn)。經(jīng)過一定時間的監(jiān)護(hù),系統(tǒng)運行正常10.3基于89C51單片機的數(shù)據(jù)采集系統(tǒng)介紹一個實用的數(shù)據(jù)采集和超限報警系統(tǒng)。該系統(tǒng)以單片機89C51為核心,可以采集最多16路模擬量輸入信號,可以作數(shù)據(jù)采集、運算和控制調(diào)節(jié),及進(jìn)行超限報警處理等。設(shè)開關(guān)量輸出,控制繼電器對外設(shè)控制或報警處理系統(tǒng)利用RTC芯片提供實時的日期、時間信息。通過串行RS-485接口和上位機通信構(gòu)成多機系統(tǒng)。采用LED數(shù)碼管和發(fā)光管顯示,進(jìn)行人機對話。增加硬件看門狗(監(jiān)視器),保證系統(tǒng)可靠運行。系統(tǒng)中選用同步串行接口芯片芯片間采用串行通信,大大簡化了硬件電路,減小儀器的體積。該系統(tǒng)功能齊全,是一個實用性很強的應(yīng)用系統(tǒng)。10.3.1
單片機數(shù)據(jù)采集系統(tǒng)的總體設(shè)計CPU:89C51單片機主頻:11.0592MHz數(shù)據(jù)采集:16通道模擬量輸入多路選擇器:4067 (16選1模擬開關(guān)電路)A/D轉(zhuǎn)換器:MAX187(12位串行接口A/D轉(zhuǎn)換器)開關(guān)量輸出:8路開關(guān)量輸出。看門狗:X5045(帶E2PROM的看門狗定時器電路)實時時鐘:DS1307(帶64字節(jié)RAM串行RT電路)串行通信接口:MAX485,提供RS-485標(biāo)準(zhǔn)接口并行I/O接口:8255A并行I/O接口電路顯示器:6位LED顯示器和8個發(fā)光二極管。鍵盤:4個按鍵,獨立連接的非編碼鍵盤電源:DC+5V、DC+12V軟件:程序固化單片機中,采用匯編語言編程。10.3.2
單片機數(shù)據(jù)采集系統(tǒng)主程序的設(shè)計系統(tǒng)連續(xù)運行,主程序是一個無限循環(huán)、順序執(zhí)行的程序。主程序的流程是一個閉合的圈。系統(tǒng)任務(wù)包括:初始化,數(shù)據(jù)采集和處理,結(jié)果顯示和打印,和上位機的通信,人機對話,超限報警檢和處理,定時器監(jiān)視(看門狗)及系統(tǒng)的控制等。主流程中完成系統(tǒng)初始化,數(shù)據(jù)的處理,LED顯示,超限檢測和報警處理,人機對話處理(按鍵掃描和理),串口發(fā)送數(shù)據(jù)等工作。利用定時中斷,對數(shù)據(jù)采集,存入指定工作單元。利用串口中斷,接收上位機發(fā)來的信息。10.3.3模擬量輸入接口的設(shè)計模擬量輸入是數(shù)據(jù)采集系統(tǒng)的關(guān)鍵,采集的信號是度、壓力、氣體或液體的流量、濃度等連續(xù)變化的物理量.信號通過傳感器或變送器轉(zhuǎn)換成連續(xù)變化的電信號。變換后的電信號有時須經(jīng)過放大,使信號滿足A/D轉(zhuǎn)換器的輸入要求。本系統(tǒng)可以進(jìn)行16通道的模擬量輸入。多路選擇器4067是一個16選1模擬開關(guān)電路,通過它由軟件分時選通各個模擬通道的輸入。使用12位串行接口的A/D轉(zhuǎn)換器MAX187,它采用1.模擬開關(guān)電路40674067是用數(shù)字信號控制的16選1的模擬開關(guān)在數(shù)據(jù)采集系統(tǒng)中,經(jīng)過傳感器和放大器轉(zhuǎn)換和處理的模擬信號通過4067多路選擇,分時將其中一路的信號傳送到A/D轉(zhuǎn)換器中。選擇通道的控制信號由89C51的P1口輸出。2.12位串行接口的A/D轉(zhuǎn)換器MAX187MAX187—12位精度的A/D轉(zhuǎn)換器ADC12位的A/D轉(zhuǎn)換精度;內(nèi)部采樣/保持電路,采樣速率75KHz;內(nèi)部緩存的參考電壓4.096V;3線串行接口和處理器通信,工作在單一的+5V電源低功耗,待機2μA,工作1.5mA;小封裝,8個引腳的DIP封裝。MAX187的引腳封裝:VDD(1腳):
+5V電源AIN
(2腳):
模擬量輸入,范圍為0V—VREF(0V—4.096V)SHDN(3腳):工作模式選擇輸入端低電平為待機模式,高電平為正常操作VREF(4腳):參考電壓。內(nèi)部為4.096V,外部為+2.5V—VDDGND(5腳):接地DOUT(6腳):串行數(shù)據(jù)輸出CS
(7腳):片選輸入端。低電平啟動A/D,高電平時DOUT高阻SCLK
(8腳):串行時鐘信號輸入端MAX187的操作:利用輸入采樣/保持電路和逐次比較寄存器將輸入的模擬信號轉(zhuǎn)換成12位的數(shù)字信號輸出。輸入信號電壓范圍為0V-VREF,如使用內(nèi)部參考電源,電壓為4.096V,則輸入信號范圍即為0V-4.096A/D轉(zhuǎn)換12位,最低一位電壓值4.096V/4096=100mV.A/D轉(zhuǎn)換的時間,包括采樣/保持的時間在內(nèi)為10μS.A/D轉(zhuǎn)換過程在SCLK為低,CS端輸入信號下降沿
時啟動。DOUT端變高時,表示A/D轉(zhuǎn)換完成(EOC).轉(zhuǎn)換結(jié)果在DOUT端單向串行輸出,經(jīng)過13個SCLK周期.每個SCLK下降沿后移出后一位,數(shù)據(jù)改變。數(shù)據(jù)由最高位開始。完成后,CS變高,DOUT高阻。MAX187工作時序圖3.模擬量輸入和A/D轉(zhuǎn)換的控制89C51的P1.2,P1.3,P1.4,P1.5連到4067的通道選擇A,B,C和D上,程序控制分時選通模擬量輸入信號。
MAX187和89C51間通過同步串行通信接口數(shù)據(jù)交換.89C51作主設(shè)備,由P2.3輸出時鐘SCLK信號,P2.4輸出CS信號,P2.5輸入A/D轉(zhuǎn)換后的數(shù)字信號。利用軟件程序來實現(xiàn)MAX187和89C51之間的通信。操作的過程如下:選擇模擬輸入通道。由P1.2-P1.5輸出所通道編碼啟動A/D轉(zhuǎn)換。保持SCLK(P2.3)為低,將CS(P2.4)由高變低。等待轉(zhuǎn)換完成。檢查DOUT,為上升沿時表示完成。讀出轉(zhuǎn)換后數(shù)據(jù)。保持CS(P2.4)為低電平,連續(xù)由P2.3輸出SCLK時鐘信號,最少13個時鐘周期。在第一個SCLK的下降沿時,DOUT(P2.5)端產(chǎn)生數(shù)據(jù)的最高位。在每個SCLK的下降沿,DOUT分別輸出各位數(shù)據(jù),89C51通過P2.5讀入到CPU中。;*****************************************;
MAX187的A/D轉(zhuǎn)換子程序
*;*****************************************DATBUFDATA30H;定義數(shù)據(jù)緩存單元SCLKBITP2.3CSBITP2.4DOUTBITP2.5;定義MAX187引腳ADC:MOVR5,#0MOVR6,#0MOVR7,#12CLRSCLK;SCLK=0CLRCS;CS=0,啟動A/D轉(zhuǎn)換SETBDOUT;置DOUT(P2.5)為輸入狀態(tài)LOOP1:MOVC,DOUTJNCLOOP1;查詢DOUT,等待轉(zhuǎn)換完成SETBSCLK;SCLK=1NOPCLRACLRSCLK25LOOP2:
NOPNOPSETBSCLK;SCLK=1,讀入數(shù)據(jù)NOPMOVC,DOUT;讀入第1位(最高位)MOVA,R6;R6暫存低位數(shù)據(jù)RLCAMOVR6,AMOVA,R5
;R5暫存高位數(shù)據(jù)RLCAMOVR6,ACLRSCLKDJNZR7,LOOP2
;檢查讀完12位否?SETBCS
;CS=1,數(shù)據(jù)傳送結(jié)束MOVDATBUF,R6
;存放高4位MOVDATBUF+1,R5
;存放低8位RET10.3.4
看門狗定時器X5045的設(shè)計1.看門狗定時器的工作原理自動監(jiān)視技術(shù),即看門狗技術(shù)(WatchDog)的監(jiān)控思路:在系統(tǒng)中設(shè)置一個定時器(看門狗定時器).處理器正常運行時,程序每隔一定時間發(fā)出一條(或幾條)指令,將看門狗定時器清零,俗稱“喂狗信號”,使得看門狗定時器總是不能溢出。如果處理器“死機”或程序跑飛,就不能發(fā)出“喂狗信號”,即不能向看門狗定時器發(fā)出清除脈沖。定時器產(chǎn)生計數(shù)溢出信號,該信號會自動復(fù)位微處理器,系統(tǒng)重新啟動和繼續(xù)工作。常用的看門狗定時器電路型號復(fù)位門限/V低電平復(fù)位高電平復(fù)位看門狗周期/s手動復(fù)位E2
PROM容量/bit接口封裝形式IMP7054.65有1.6有8DIP/SOIMP7064.40有1.6有8DIP/SOIMP706P2.63有1.6有8DIP/SOIMP813L4.65有1.6有8DIP/SOX50434.25-4.50有可選512×8SPI8DIP/SOX5043P2.55-2.70有可選512×8SPI8DIP/SOX50454.25-4.50有可選512×8SPI8DIP/SOX5045P2.55-2.70有可選512×8SPI8DIP/SOCAT1161可選有有可選2K×8I2C8DIP/SO2.看門狗定時器電路X5045X5045是XICOR公司具有上電復(fù)位、電壓監(jiān)控、看門狗定時器以及E2PROM數(shù)據(jù)存儲4種功能的芯片。采用SPI串行接口,體積小、占用I/O線少、功能強廣泛應(yīng)用于儀器儀表、工業(yè)控制等領(lǐng)域??删幊踢x時間的看門狗定時器
VCC電源電壓降低檢測和復(fù)位控制
512×8位串行E2PROM低功耗CMOS電路:10μA等待電流,3mA工作電流數(shù)據(jù)塊鎖定保護(hù)功能片內(nèi)建的防誤寫功能小封裝:8引腳DIP、SOIC封裝X5045引腳:為8個引腳雙列直插封裝.CS/WDI
(1腳):芯片選擇。當(dāng)CS為低時,芯片工作。又作看門狗定時器的輸入,將清零看門狗定時器。SO
(2腳):在處理器讀操作時,串行輸出數(shù)據(jù)。WP(3腳):寫保護(hù)輸入端。低電平時,禁止向其寫操作.
VSS
(4腳):地。SI
(5腳):串行輸入。SCK(6腳):串行時鐘,上升沿輸入,下降沿輸出數(shù)據(jù)。RESET(7腳):復(fù)位輸出。電源降時,輸出復(fù)位信號。
在看門狗時,輸出復(fù)位信號。VCC
(8腳):電源電壓。指令名稱指令格式指令的操作WREN0
0
0
00
1
1
0設(shè)置寫允許鎖存器,允許寫操作WRDI0
0
0
00
1
0
0復(fù)位寫允許鎖存器,禁止寫操作RDSR0
0
0
00
1
0
1讀狀態(tài)寄存器WRSR0
0
0
00
0
0
1寫狀態(tài)寄存器READ0
0
0
0A80
1
1讀存儲器,從選定的地址單元開始讀出數(shù)據(jù)WRITE0
0
0
0A80
1
0寫存儲器,從選定的地址單元開始寫入數(shù)據(jù)1—16字節(jié)X5045的控制指令:3.X5045與89C51接口及程序設(shè)計X5045通過SPI總線進(jìn)行數(shù)據(jù)傳送。單片機作主設(shè)備
X5045作從設(shè)備。89C51通過通用I/O線,利用軟件實現(xiàn)數(shù)據(jù)傳送的控制。系統(tǒng)中:P1.0接X5045的SI端,
P1.1接X5045的SCK端,
P1.6接X5045的SO端,
P1.7接X5045的CS/WDI端X5045的RESET輸出信號接89C51復(fù)位輸入端RST.⑴.看門狗定時器X5045的CS/WDI看門狗工作時,判斷CPU是否正常.設(shè)定時間內(nèi),CPU在WDI上產(chǎn)生高到低電平變化,清零定時器,不產(chǎn)生溢出。CPU在程序各部分安排“喂狗”程序,兩次間隔小于看門狗定時器的溢出時間正常時,不會產(chǎn)生復(fù)位輸出.如出現(xiàn)故障,“喂狗”
序不能執(zhí)行,定時器會溢出,產(chǎn)生復(fù)位,系統(tǒng)自動恢復(fù)間。X50W4D51狀態(tài)寄W存D0器2位可看編門程狗位溢,決出定周定期時時001.4
s01600
ms10200
ms11看門狗功能無效“喂狗”(清除定時器指令)一般在主程序,子程序,斷處理程序的適當(dāng)位置安排。;*******************************************;
復(fù)位看門狗定時器(喂狗)
*;*******************************************SIBITP1.0SCKBITP1.1SOBITP1.6CSBITP1.7
;定義X5045引腳WDOG:NOPCLRCSNOPSETBCSCLRCSRET⑵.讀寫操作包括對內(nèi)部寄存器和E2PROM的讀/寫操作。操作前,先復(fù)位CS選中芯片。結(jié)束時,要置位CS。操作必須首先由主設(shè)備(處理器)將一條控制指令入X5045的指令寄存器中,然后再進(jìn)行讀寫操作寫操作前,先讀取狀態(tài)寄存器,判斷WIP位。WIP為0時,在寫使能允許命令后就可對狀態(tài)寄存器或E2PROM寫數(shù)據(jù)。數(shù)據(jù)串行傳送操作中:讀操作,在SCK下降沿,從SO引腳讀取1位數(shù)據(jù)。;********************************************;
向X5045串行寫入8位數(shù)據(jù)
*;
入口參數(shù):
A=數(shù)據(jù)
*;*******************************************SI8B:MOVR7,#8NOPSI8B1:CLRSCKRLCAMOVSI,CSETBSCK;SCK上升沿數(shù)據(jù)輸入DJNZ
R7,SI8B1RET;*******************************************;從X5045串行讀出8位數(shù)據(jù)*;出口參數(shù):
A=數(shù)據(jù)*;*******************************************SO8B:SETBSCKMOVR7,#8NOPSO8B1:SETBSO;置SO為輸入CLRSCK;SCK下降沿送一位到SONOPMOVC,SORLCASETBSCK;準(zhǔn)備送出下一位數(shù)據(jù)DJNZR7,SO8B1RET;
設(shè)置寫允許鎖存器,允許對X5045寫操作WREN-X:
NOPCLRCLRMOVSCKCSA,#WRENLCALL
SI8B;WREN指令碼;串行寫入8位數(shù)據(jù)CLR
SCKSETB
CSRET;
復(fù)位寫允許鎖存器,禁止對X5045寫操作WRDI-X:
NOPCLRCLRMOVSCKCSA,#WRDILCALL
SI8B;WRDI指令碼;串行寫入8位數(shù)據(jù)CLR
SCKSETB
CSRET;*******************************************;
檢查WIP標(biāo)志,直到WIP無效(為0)時退出
*;*******************************************CHKWIP:
MOV;設(shè)置最大循環(huán)次數(shù)CHKWIP0:
CLRCLRMOVR7,#200SCKCSA,#RDSR;RDSR指令碼LCALL
SI8BLCALL
SO8BSETB
CSSETB
SCKJNB
ACC.0,CHKWIP1;檢查WIPDJNZ
R7,CHKWIP0CHKWIP1:
RET;*******************************************;
向X5045狀態(tài)寄存器串行寫入8位數(shù)據(jù)
*;*******************************************WRSR-X:
NOPCLR
SCKCLR
CSMOV
A,#WRSR;WRSR指令碼LCALL
SI8BMOV
A,#SRINI;狀態(tài)寄存器初值LCALL
SI8BCLR
SCKSETB
CSLCALL
CHKWIPRET;向X5045內(nèi)部存儲器串行寫入一個字節(jié)數(shù)據(jù)BYTE-W:NOP;存儲器地址;寫入寫允許鎖存器;取出地址的第9位A8;插入地址的第9位A8;寫入寫存儲器指令;存儲器地址低8位;寫入存儲器地址MOV
DPTR,#BADDRCLR
SCKCLR
CSMOV
A,#WRENCALL
SI8BSETB
CSNOPCLRMOVRRCMOVMOVCALLMOVCALLMOVCALLCSA,DPHAA,#WRITEACC.3,CSI8BA,DPLSI8BA,#BDATASI8B;寫入數(shù)據(jù)CLR
SCKSETB
CSCALL
CHKWIPRET;************************************************;
從X5045內(nèi)部存儲器串行讀出一個字節(jié)數(shù)據(jù)
*;
出口參數(shù):A=數(shù)據(jù)
*;************************************************;設(shè)置存儲器地址BYTE-R:
NOPMOV
DPTR,#BADDRCLR
SCKCLR
CSMOV
A,DPHRRCA;取出存儲器地址的第9位A8MOVA,#READMOVACC.3,C;插入地址的第9位A8CALLSI8B;寫入寫存儲器指令MOVA,DPL;存儲器地址低8位CALLSI8B;寫入存儲器地址CALLSO8B;讀出數(shù)據(jù)CLRSCKSETBCSRET10.3.5
實時時鐘RTC—DS1307的設(shè)計1.實時時鐘電路(RTC)DS1307DS1307是Dallas公司推出實時時鐘接口芯片實時時鐘功能。對年,月,日,時,分,秒進(jìn)行計時。內(nèi)部56個8位非易失RAM存儲單元,用于數(shù)據(jù)存儲。具有可編程的方波輸出信號。內(nèi)部具有電源自動檢測電路。采用2線雙向串行總線傳送地址和數(shù)據(jù)信息。只用SCL(串行時鐘)、SDA(串行數(shù)據(jù))兩條線。簡化了和微處理器間的通信。低功耗、小封裝。8個引腳的DIP或用于表面安裝的
SOIC封裝,大大減小體積。DS1307的引腳(雙列直插DIP封裝):
X1、X2
(1,2腳):外接32.768KHz晶振。VBAT
(3腳):GND
(4腳):外接+3V電池。接地。SDA
(5腳):
串行數(shù)據(jù)輸入/輸出。SCL
(6腳):
串行時鐘輸入。SQW/OUT(7腳):方波/輸出驅(qū)動。當(dāng)允許時,該引腳可輸出四種頻率(1Hz,4KHz,8KHz,32KHz)的方波Vcc
(8腳):接主電源。DS1307內(nèi)部寄存器:實時時鐘寄存器地址00H—07H,通過寫入實現(xiàn)時間和日歷初始化和設(shè)置。通過讀得到時間和日歷的信息(BCD碼)。控制寄存器用來控制SQW/OUT引腳的操作,它的地址為07H。OUT(D7):引腳SQW/OUT輸出控制位。SQWE(D4):方波輸出允許位。RS1、RS0(D1、D0):頻率選擇位。 可選擇輸出四種頻率的方波56個RAM寄存器的地址在08H—3FH。D7D6D5D4D3D2D1D0OUT××SQWE××RS1RS02.實時時鐘電路DS1307的數(shù)據(jù)傳送DS1307支持I2C總線協(xié)議。I2C總線(Intel-IntegraCircuit)是Philips公司推出的同步串行總線。通信只用兩根信號線:串行數(shù)據(jù)線SDA和時鐘線SCL.數(shù)據(jù)傳送時,單片機為主設(shè)備,提供串行時鐘SCL,控總線操作,并產(chǎn)生開始(START)和停止(STOP)條件。
DS1307作為總線上的從設(shè)備。3.89C51和DS1307的連接單片機數(shù)據(jù)采集系統(tǒng)中:89C51用P2口2條線
和DS1307的I2C總線相連。P2.1接DS1307的SCL端P2.2接DS1307的SDA端DS1307的SQW(方波輸出)端接89C51的P2.0。在單片機數(shù)據(jù)采集系統(tǒng)中,使用DS1307芯片為實時時鐘,提供日期和時間信息。應(yīng)用程序如下:;引腳及控制指令碼定義SQWBITP2.0SCLBITP2.1SDABITP2.2LASTREADBIT18HACKBIT19HDS1307WEQU0D0H;DS1307寫命令DS1307REQU0D1H;DS1307讀命令TPOINTERDATA4EH;RAM地址指針TCONTENTDATA4FH;RAM的內(nèi)容;******************************************;
DS1307的初始化
*;******************************************INIT-1307:
LCALL
SEND-START;發(fā)送開始START條件LCALLLCALLMOV
A,#DS1307W;DS1307寫命令:11010000BSEND-BYTE;發(fā)送寫命令MOV
A,#07H;設(shè)置控制寄存器地址07HSEND-BYTE;發(fā)送控制寄存器地址MOV
A,#00H;控制字,禁止SQWE輸出LCALLSEND-BYTE;發(fā)送控制字LCALLSEND-STOP;發(fā)送停止STOP條件RET;
DS1307的起始條件
STARTSEND-START:
SETB
SDASETB
SCLNOPNOPCLR
SDA
NOPNOPCLR
SCLRET;
DS1307的停止條件
STOPSEND-STOP:
CLR
SDASETB
SCLNOPNOPSETB
SDARET; 發(fā)送8位數(shù)據(jù)給DS1307的子程序A=數(shù)據(jù)SEND-BYTE:
CLR
SCLMOV
R6,#8SB-LOOP:
JNBACC.7,ZEROSETB
SDASJMP
ONECLR
SDAZERO:ONE:SETB
SCLNOPSB-EX:RL
ACLR
SCLDJNZ
R6,SB-LOOP
NOPSETB
SDA
NOPSETB
SCLCLR
ACKJNB
SDA,SB-EXSETB
ACKNOPCLR
SCLNOPRET;
由DS1307中讀出8位數(shù)據(jù)的子程序A=數(shù)據(jù)READ-BYTE:
CLR
SCLREAD-BITS:ACKN:C,SDAASCLR6,READ-BITSLASTREAD,ACKNSDASCLMOV
R6,#8MOV
A,#00HSETB
SDASETB
SCLNOPMOVRLCCLRDJNZJBCLRSETBNOP
NOPCLR
SCLRET;讀出DS1307內(nèi)RAM指定單元一個字節(jié)的內(nèi)容;入口參數(shù):(TPOINTER)=DS1307的RAM地址;
出口參數(shù):(TCONTENT)=DS1307的RAM數(shù)據(jù)READ-ONE:
LCALL
SEND-STARTA,#DS1307WSEND-BYTEA,TPOINTERSEND-BYTESEND-STOPSEND-STARTA,#DS1307RSEND-BYTELASTREADREAD-BYTESEND-STOPTCOTENT,AMOVLCALLMOVLCALLLCALLLCALLMOVLCALLSETBLCALLLCALLMOVRET;******************************************;向DS1307內(nèi)RAM指定單元寫入一個字節(jié)的內(nèi)容;入口參數(shù):(TPOINTER)=DS1307的RAM地址;
(TCONTENT)=寫入RAM的數(shù)據(jù);*******************************************WRITE-ONE:SEND-STARTA,#DS1307WSEND-BYTEA,TPOINTERSEND-BYTEA,TCONTENTSEND-BYTESEND-STOPLCALLMOVLCALLMOVLCALLMOVLCALLLCALLRET10.3.6
人—機對話通道的設(shè)計采用非編碼鍵盤,用P3.2-P3.5作4個按鍵輸入端,獨式的按鍵設(shè)計,利用軟件進(jìn)行按鍵識別和功能散轉(zhuǎn)采用了LED數(shù)碼管和發(fā)光二極管顯示器。其中:6個共陰極LED數(shù)碼管顯示數(shù)據(jù),動態(tài)掃描;
8個發(fā)光二極管指示工作狀態(tài)。系統(tǒng)中擴(kuò)展了一片通用并行接口8255A。它的A,B,C口均工作于方式0,即簡單輸入/出方式
A、B口控制動態(tài)掃描方式的LED顯示器:A口輸出LED段碼(a-g,dp),B口輸出LED位選信號。用PB0-PB6分時選中6個LED和一組發(fā)光管。由電路中可以看出8255A的地址如表:CS
(P2.7)A1A08255A寄存器地
址000A口7FFCH001B口7FFDH010C口7FFEH011控制寄存器7FFFH要顯示的數(shù)據(jù)保存在內(nèi)部RAM的46H(發(fā)光管)、45H、44H、43H、42H、41H、40H單元中(從左到右)。按鍵處理程序包括按鍵掃描和程序散轉(zhuǎn)兩部分。KEY:
MOV
P3,#0FFHMOV
A,P3;P3口為輸入;讀取按鍵狀態(tài);高電平表示鍵按下CPL
AANL
A,#00111100BJZ
KEYLCALL
DELAYMOV
A,P3;A=0時重新掃描鍵盤;有鍵按下延時去抖動;再次讀取按鍵狀態(tài);高電平表示鍵按下;A=0時重新掃描鍵盤;鍵值送B暫存CPL
AANL
A,#00111100B
;再判有鍵按下JZ
KEYMOV
B,AMOV
A,P3CPL
AANLA,#00111100B;判別按鍵釋放KEY1:
JNZKEY1LCALL
DELAYMOV
A,BJB
ACC.5,F(xiàn)UN1JBJBACC.4,
FUN2ACC.3,
FUN3JB
ACC.2,
FUN4;按鍵未釋放,等待;釋放,延時去抖動;取鍵值送A;K1按下轉(zhuǎn)FUN1;K2按下轉(zhuǎn)FUN2;K3按下轉(zhuǎn)FUN3;K4按下轉(zhuǎn)FUN4EKEY:RET;功能切換鍵(FUN1)處理程序;功能切換鍵(FUN2)處理程序;功能切換鍵(FUN3)處理程序;功能切換鍵(FUN4)處理程序FUN1:
………RETFUN2:………RETFUN3:………RETFUN4:………RETDELAY:MOV
R7,#10H;10
ms延時子程序MOV
R6,#0FFHDS1:DS2:DJNZ
R6,DS2DJNZ
R7,DS1RETLED動態(tài)掃描顯示程序:ORG
0000HLJMP
MAINORG1000HDISP
:
MOVDPTR,#7FFFH;8255A控制端口MOVA,#80H;8255A的控制字MOVX@DPTR,A;8255A初始化LED:MOV
R2,#07H;R2為LED位數(shù)MOV
R5,#01H;R5為位選寄存器,位選碼從左到右依次為:;
40H、20H、10H、08H、04H、02H、01HMOV
R1,#40H;R1為緩存區(qū)地址,數(shù)據(jù)從左到右存在內(nèi)部;
RAM的46H,45H,44H,43H,42H,41H,40H。DISP:
MOV
A,@R1
;取要顯示的數(shù)據(jù)MOV
DPTR,#TABMOVC
A,@A+DPTR
;轉(zhuǎn)換成LED段碼MOV
DPTR,#7FFCHMOVX
@DPTR,A;8255A的A口地址;LED段碼(字形碼)MOV
A,R5MOV
DPTR,#7FFDH;8255AB口地址;送LED位選碼;延時1ms;指向下一個數(shù)據(jù)MOVX
@DPTR,ALCALL
DELAYINC
R1MOV
A,R5RL
AMOV
R5,A;指向下一位DJNZR2,DISP;6位顯示完否?LJMPLED;重復(fù)顯示過程DELAY:MOV
R7,#02H
;延時1
ms子程序TAB:DL:
MOV
R6,#0FFHDL1:
DJNZ
R6,DL1DJNZ
R7,DLRETDB
3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHEND10.3.7
異步串行通信RS-485
接口的設(shè)計將IBM-PC機(或工控機)和多臺單片機控制單元構(gòu)成集散控制或數(shù)據(jù)采集系統(tǒng)是應(yīng)用的一大趨勢。系統(tǒng)中,單片機為核心的智能測控儀表是現(xiàn)場控制單元,完成數(shù)據(jù)采集和控制任務(wù)。同時,它們作為下機又將采集的數(shù)據(jù)傳送到PC機中。PC機(或工控機)為上位機,用高級語言或數(shù)據(jù)庫語言將數(shù)據(jù)加工處理,建立數(shù)據(jù)庫,進(jìn)行顯示、打印。同時再將控制命令發(fā)送給各下位機,以實現(xiàn)集中管理和遠(yuǎn)程對單片機系統(tǒng)進(jìn)行最優(yōu)控制。通信系統(tǒng)采用主從式串行總線結(jié)構(gòu)。下位機掛在上位機串行通信標(biāo)準(zhǔn)總線上,之間進(jìn)行主從方式通信1.單片機與PC機通信的RS-485標(biāo)準(zhǔn)串行接口單片機和PC機間通信采用異步串行通信來進(jìn)行。
PC機配置有COM通信接口。單片機有串行接口。PC機與89C51單片機串行通信采用零調(diào)制三線型,只使用TXD(發(fā)送數(shù)據(jù))、RXD(接收數(shù)據(jù))和GND(接地)三條信號線。R8RS9SC-C-545418185單5單標(biāo)片準(zhǔn)機采和用PC“C“機平間衡通電信壓采數(shù)用字了接R口S口S-電48路5標(biāo)的準(zhǔn)電。氣特性”標(biāo)準(zhǔn)的平衡傳輸方式,是半雙工的通信方式。
RS-485標(biāo)準(zhǔn)最大傳輸距離約1200m,最大傳輸速率為
10Mb/s。用于多站點互連節(jié)省信號線,便于高速、遠(yuǎn)距離的數(shù)據(jù)傳送。RE(2腳):接收器輸出使能。
DE(3腳):驅(qū)動器輸出使能。
DI(4腳):驅(qū)動器輸入。
GND(5腳):地。A
(6腳):
同相輸入端和輸出端。B
(7腳):
反相輸入端和輸出端。VCC
(8腳):正電源用于RS-485通信的半雙工收發(fā)器MAX485MAX485是MAXIM公司RS-485通信的低功耗收發(fā)器.引腳:RO(1腳):接收器輸出。2.單片機數(shù)據(jù)采集系統(tǒng)的串行接口電路在89C51單片機數(shù)據(jù)采集系統(tǒng)中,利用異步串行接口經(jīng)MAX485轉(zhuǎn)換,提供符合RS-485標(biāo)準(zhǔn)的串行通信接
口,實現(xiàn)和PC機間的通信。電路中利用P2.6作為控制串口工作的信號,3.
89C51通信軟件設(shè)計在異步串行通信中,收、發(fā)雙方必須事先規(guī)定兩件事:一是通信雙方必須采用統(tǒng)一的編碼方法。異步串行通信是按字符傳送,傳送一個字符時包括起始位數(shù)據(jù)位、校驗位和停止位幾部分。在通信時,必須規(guī)定字符各部分所占的位數(shù),是否采用奇偶校驗以及校驗的方式(偶校驗還是奇校驗)等。二是通信雙方相同的傳送速率,即相同的波特率。串行通信是按位傳送,波特率即每秒傳送的二進(jìn)制位數(shù),雙方必須按照相同的波特率來發(fā)送和接收數(shù)據(jù)波特率反映串行通信速率,也反映對傳輸通道的要⑴.單片機串口波特率的設(shè)置:本系統(tǒng)中,設(shè)置串口的波特率為9600b/s.89C51通常用定時器T1模式2(自動重裝初值定時器方式)作串行通信波特率發(fā)生器。T1計數(shù)計數(shù)速率為fosc/12,溢出后作為移位脈沖其速率即是波特率。計算公式如下:晶振頻率fosc=11.095MHz,選SMOD=0,則定時器的初裝值為:計算出定時器T1的計數(shù)初值為253(0FDH)。有關(guān)定時器初始化的程序為:INIT1:MOVTMOD
,#20H;置T1為模式2MOVTL1
,#0FDH;裝入初值MOVTH1
,#0FDHMOVPCON
,#00H;設(shè)SMOD=0SETBTR1;啟動T1運行⑵.串口通信協(xié)議在通信協(xié)議中,必須包括以下幾個方面的約定:①數(shù)據(jù)文件的格式數(shù)據(jù)文件中,必須包括被尋呼單片機站號(地址)、命令、字段、數(shù)據(jù)首地址長度、數(shù)據(jù)塊及各種校驗值等必須加以規(guī)定,統(tǒng)一格式。②差錯檢測可采用奇偶校驗法,數(shù)據(jù)幀可采用數(shù)據(jù)位累加法,也可采用累加和校驗法、CRC循環(huán)冗余校驗等方法。③差錯處理每發(fā)送一數(shù)據(jù)塊后,如果接收正確,接收方要發(fā)回響應(yīng)信息;否則,回送出錯信息,要求重發(fā)送,直至正確為否則轉(zhuǎn)出錯處理程序,顯示系統(tǒng)出錯。⑶.串口通信程序波特率:9600b/s。用T1工作方式2作波特率發(fā)生器信息格式:串口方式3,數(shù)據(jù)的傳送格式為11位,1位起始位+8位數(shù)據(jù)位+1位停止位+數(shù)據(jù)/地址控制位的第9位,無奇偶檢驗。傳送方式:PC機采用查詢方式收發(fā)數(shù)據(jù);89C51采用中斷方式接收,查詢方式發(fā)送握手信號:采用軟件握手方法。發(fā)送方發(fā)送聯(lián)絡(luò)
信號“?”,接收方回送“·”號作為應(yīng)答,建立握聯(lián)絡(luò)。隨后再依次發(fā)送數(shù)據(jù)。數(shù)據(jù)塊格式:長度(字節(jié)數(shù))+發(fā)送的數(shù)據(jù)+校驗和。校驗方式:累加和校驗?;厮汀?0H”,表示正確89C51串口通信的流程圖①.單片機的主程序串口初始化,定時器初始化,設(shè)定串口的波特率。若串口采用中斷方式,還需對中斷處理進(jìn)行設(shè)置。以下是有關(guān)串口初始化的程序段:RFLAGBIT00H;接收聯(lián)絡(luò)信號標(biāo)志位RNUMBIT01H;接收字節(jié)數(shù)標(biāo)志位RDATABIT02H;接收數(shù)據(jù)標(biāo)志位RENDBIT03H;接收文件結(jié)束標(biāo)志位ORG0000HAJMP
MAINORG0023HAJMP
RECEORG0040HMAIN:
MOVSP
,
#60HMOVSCON
,
#50H;串口初始化,方式1MOVTMOD,
#20H;定時器初始化方式2MOVTH1
,
#0FDHMOVTL1
,
#0FDH;設(shè)置波特率9600波特MOVPCON
,
#00H;設(shè)置波特率倍增位SETBTR1;啟動定時器1SETBEA;開放中斷SETBES;開放串行中斷L1:CLRRFLAGCLRRNUMCLRRDATACLRRENDMOVR6
,
#00HMOVDPTR
,
#1000HL2:
……
(以下為主程序的其它部分,本處略)②.89C51單片機串口查詢發(fā)送子程序?qū)⑵釸AM從1000H開始的小于256B的數(shù)據(jù)從串行口發(fā)送出去。發(fā)送數(shù)據(jù)字節(jié)數(shù)在R7中,用R6作累加和寄存器。程序流程圖如圖所示。單片機串口查詢發(fā)送子程序如下:SEND:;發(fā)‘?’號,即3FHA,#2EH,SEND
;應(yīng)答信號是‘.’
A,R7;暫存總字節(jié)數(shù)MOV
A,
#3FHMOV
SBUF,AJNB
TI
,
$CLR
TIJNB
RI
,
$CLR
RIMOV
A
,
SBUFCJNEMOVMOV
MOVJNBCLRR3,
ASBUF
,
ATI
,
$TIMOV
R6
,
#00HMOV
DPTR
,
#1000HSEND1:MOVX
A
,
@DPTR;發(fā)送一個字符;計算累加校驗和MOV SBUF,
AJNB
TI
,
$CLR
TIADD
A,R6MOV
R6,
AINC
DPTR;計數(shù)器R7不為零轉(zhuǎn)移DJNZ
R7
,
SEND1MOV
A,R6;發(fā)送校驗和MOV
SBUF
,
AJNB
TI
,
$CLR
TIJNB
RI
,
$CLR
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 主題公園演員聘用合同
- 廣告牌制作焊接施工合同
- 資金籌集操作規(guī)程
- 城市綜合體改造委托書模板
- 島嶼探險區(qū)防水施工安全協(xié)議
- 2025年度光伏發(fā)電項目安裝工程承包協(xié)議3篇
- 2024年集裝箱買賣合同模板
- 2025版?zhèn)€人區(qū)塊鏈技術(shù)應(yīng)用借款合同
- 2025版家具展會參展合同范本6篇
- 2025年1月山西、陜西、寧夏、青海普通高等學(xué)校招生考試適應(yīng)性測試(八省聯(lián)考)政治試題(含答案)
- 醫(yī)學(xué)課件-新生兒腹瀉護(hù)理查房教學(xué)課件
- ROV的結(jié)構(gòu)設(shè)計及關(guān)鍵技術(shù)研究的任務(wù)書
- 2022滬教版小學(xué)數(shù)學(xué)二年級上冊期末試卷含部分答案(三套)
- 湖南省長沙市雅禮教育集團(tuán)2022-2023學(xué)年七年級上學(xué)期期末英語試卷
- 線性代數(shù)PPT(本科)全套完整教學(xué)課件
- 2023-2024學(xué)年云南省昆明市小學(xué)語文四年級期末深度自測題詳細(xì)參考答案解析
- 全《12個維度細(xì)化部門管理》市場部部門職責(zé)
- 2022年廣東省普通高中學(xué)業(yè)水平第一次合格性考試歷史真題卷
- 高標(biāo)準(zhǔn)農(nóng)田施工組織設(shè)計(全)
- 部編版小學(xué)四年級語文上冊復(fù)習(xí)教案課程
- 演示文稿產(chǎn)品拍攝及后期圖片處理
評論
0/150
提交評論