




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
基于單片機自動無線抄表系統(tǒng)設計--畢業(yè)匯編(完整版)資料(可以直接使用,可編輯優(yōu)秀版資料,歡迎下載)
基于單片機自動無線抄表系統(tǒng)設計--畢業(yè)匯編(完整版)資料(可以直接使用,可編輯優(yōu)秀版資料,歡迎下載)摘要長期以來,水電供應部門對用戶電表、水表、煤氣計量都來用傳統(tǒng)的手工抄表方式,該方法費時、費力,缺乏準確性和及時性,不利于供應部門進行更深層次的分析和管理決策,在行業(yè)信息化過程之中,戶表數(shù)據(jù)的自動化抄送具有非常重大的意義。本設計從硬件、軟件兩大角度對無線抄表系統(tǒng)進行全面設計。其中,硬件設計包括:單片機最小系統(tǒng)、數(shù)據(jù)顯示模塊、數(shù)據(jù)采集模塊、信號發(fā)射模塊和串行通信等部件的設計。軟件設計包括主程序、顯示程序、脈沖計數(shù)器子程序、鍵盤程序、串行通信子程序這五大模塊。通過硬件電路和軟件設計協(xié)調(diào)工作完成了系統(tǒng)所要求的所有功能。硬件電路采用CC400單片集成無線收發(fā)芯片和89C51單片機為核心,配以適當?shù)耐鈬娐罚殖謾C具有鍵盤和LED顯示功能,并可通過串口將抄得數(shù)據(jù)傳給計算機。軟件設計采用匯編語言對整個系統(tǒng)進行編程。本系統(tǒng)適用于電、氣、熱表的無線抄收。通過構建自動抄表系統(tǒng),使電力公司和物業(yè)管理部門大大提高了工作效率和經(jīng)濟效益,而且從根本上解決了入戶抄表收費給用戶和抄表人員帶來的麻煩,同時也避免了不必要的糾紛。關鍵詞:單片機;CC400;LEDAbstractAbstract:Ithasbeenalongtimethatsupportdepartmentadoptedtraditionalmethodtoreadthedatafromammeter,waterandmeter,thiswaycostsalotoftimeandforce,lackveracityandpunctuality.Itisn'tconvenienttoanalyseandvider.withmoreandmoredeparmentsrelyoninformationtechnologytoday,Itisveryimportanttoreaddatafrommeterbyautomaticmeans.Thedesignofhardware,software,twowirelessmeterreadingsystemintermsofoveralldesign.Amongthem,thehardwaredesigninclude:thesmallestsingle-chipsystems,datadisplaymodule,dataacquisitionmodule,signaltransmission,suchasserialcommunicationmoduleandthedesignofcomponents.Softwaredesign,includingthemainprogram,displayprogram,pulsecountersubroutine,keyboardprocedures,serialcommunicationsubroutinethesefivemodules.Throughthehardwarecircuitandsoftwaredesignofthesystemtocoordinatethecompletionofallthefeaturesrequired.CC400hardwaresingle-chipintegratedcircuitchipwirelesstransceiverand89C51single-chipmicrocomputerasthecore,withappropriateexternalcircuitry,handsetwithakeyboardandLEDdisplay,andthroughtheserialdatawillbecopiedtothecomputer.Softwaredesignusingassemblylanguageprogrammingtotheentiresystem.Thesystemappliestoelectricity,gas,wirelessCollectingheat.Throughtheconstructionofautomaticmeterreadingsystemstopowercompaniesandpropertymanagementsectorgreatlyenhancedtheefficiencyandcost-effectiveandfundamentalsolutiontothehousemeterreadingandmeterreadingchargestotheuserthetroubleofstaff,butalsotoavoidtheunnecessarydisputes.Keywords:Single-ChipMicrocomputer;CC400;LED
目錄TOC\o"1-3"\f\h\z第1章緒論 11.1引言 11.2無線抄表應用系統(tǒng)應用的意義 11.3無線抄表應用系統(tǒng)的總體方案設計 2第2章無線抄表應用系統(tǒng)的硬件設計 52.1信號發(fā)射裝置的硬件設計 5信號發(fā)射裝置硬件設計方案論證 5信號發(fā)射裝置的單片機最小系統(tǒng)設計 5對CC400和AT89C51芯片的介紹 6信號采集 11信號存儲及轉換 13看門狗電路 13和89C51接口電路 172.2手持機硬件裝置電路設計 19手持機硬件裝置電路設計方案論證 19手持機裝置電路的單片機最小系統(tǒng)設計 19信號接收模塊 19按鍵電路 20顯示電路模塊 21串行通信口電路 25第3章無線抄表應用系統(tǒng)軟件設計 273.1計算機語言 273.2主程序設計 29信號發(fā)射裝置主程序設計 29信號接收裝置(手持機)主程序設計 303.3子程序設計 31軟件脈沖計數(shù)器子程序設計 31鍵盤子程序設計 32顯示子程序設計 33串行通信子程序設計 34第4章程序清單 354.1信號發(fā)射系統(tǒng)程序清單 354.2信號接收系統(tǒng)(手持機)程序清單 37第5章結論 44參考文獻 45致謝 47附錄 48緒論引言長期以來,“三表”數(shù)據(jù)抄送問題一直是相關供應部門非常想解決但又得不到切實解決的問題。在行業(yè)信息化過程之中,戶表數(shù)據(jù)的自動化抄送具有非常重大的意義,因為戶表數(shù)據(jù)是相關行業(yè)銷售過程中最原始的數(shù)據(jù),這個數(shù)據(jù)的準確度和及時性直接影響了行業(yè)內(nèi)部其他信息化水平。傳統(tǒng)的手工抄表費時、費力,準確性和及時性得不到可靠的保障,這導致了相關營銷和企業(yè)管理類軟件不能獲得足夠詳細和準確的原始數(shù)據(jù)。一般手工抄表都按月抄表,對于用戶計量來說是可行的,但對于相關供應部門進行更深層次的分析和管理決策卻不夠。以PIC單片機為核心,以無線電波作為信息傳遞的媒介,在電表的基礎上把水、煤氣的測量加上把三表集成為一體。物業(yè)部門的主控機與下位單片機之間可實現(xiàn)雙向無線傳遞數(shù)據(jù)。一方面將購費額及其他信息傳人單片機,另一方面又將存儲器中的耗能數(shù)據(jù)以及儀表工作狀態(tài)等信息傳給物業(yè)管理部門,單片機根據(jù)處理后的數(shù)據(jù)情況向限電、限氣裝置發(fā)出開或關的指令。物業(yè)部門通過接收裝置接收信息并把相關數(shù)據(jù)顯示在界面上,以PIC單片機為核心進行數(shù)據(jù)采集及處理和控制。無線抄表應用系統(tǒng)應用的意義隨著科學技術的不斷發(fā)展,電力系統(tǒng)也逐漸信息化。電表數(shù)據(jù)抄送的準確性、及時性,直接影響電力系統(tǒng)的信息化發(fā)展水平、甚至管理決策和經(jīng)濟效益等,所以,構建一個無線抄表應用系統(tǒng)就顯得十分有意義,也是行業(yè)單位迫切想要解決的問題。該系統(tǒng)適用于電、氣、熱表的無線抄收。該系統(tǒng)以無線收發(fā)芯片和單片機為核心,配以適當?shù)耐鈬娐罚殖謾C具有鍵盤和顯示功能,并可通過串口將抄得數(shù)據(jù)傳給計算機。通過構建自動抄表系統(tǒng),使電力公司和物業(yè)管理部門大大提高了工作效率和經(jīng)濟效益,而且從根本上解決了入戶抄表收費給用戶和抄表人員帶來的麻煩,同時也避免了不必要的糾紛。
無線抄表應用系統(tǒng)的總體方案設計該無線抄表應用系統(tǒng),大體上由四個基本部分構成:(1)傳感器元件;(2)信號調(diào)整部分;(3)信號發(fā)射模塊;(4)信號接收模塊。其整體原理框圖如下圖1所示:圖1.1整體設計原理框圖各部分的主要組成及功能:(1)傳感器元件:本設計采用紅外反射式光電傳感器,它由紅外發(fā)射管和紅外光敏管組成,如下圖2所示:當表盤轉一周,在刻線處反射紅外光信號,從而接收一個光脈沖信號。圖1.2電傳感檢測框圖(2)信號調(diào)整:信號調(diào)整部分由脈沖計數(shù)器和信號轉換器組成,脈沖計數(shù)器用來計數(shù)一定時間內(nèi)傳感器送來的總的脈沖個數(shù),信號轉換器將總的脈沖信號個數(shù)通過信號轉換,轉換成總的用電量,然后傳送給信號發(fā)射模塊。其基本框圖3如下所示:圖1.3信號調(diào)整(3)信號發(fā)射部分:該部分的主要功能是把經(jīng)過信號調(diào)整后、并通過發(fā)射模塊的外圍電路,將已變換成所需要的電信號傳送給CC400芯片并利用天線以電磁波的形式發(fā)射出去。如圖1.4所示:圖1.4信號發(fā)射模塊(4)信號接收部分:如圖1.5所示:圖1.5信號接收模塊信號接收部分,本設計采用的是無線接收方式,信號接收部分主要由接收電路,鍵盤控制電路,單片機(89C51),時鐘電路,USB接口電路和顯示電路組成,鍵盤控制電路主要用來控制對數(shù)據(jù)的顯示和清零等,顯示電路主要用來顯示總的用電量,CC400芯片在接收模式中,CC400是被配置成傳統(tǒng)的外差式接收機。
無線抄表應用系統(tǒng)的硬件設計對于無線抄表應用系統(tǒng)的硬件設計分成,信號發(fā)射部分硬件設計和手持機的硬件設計兩部分。信號發(fā)射裝置的硬件設計信號發(fā)射裝置硬件設計方案論證該信號發(fā)射裝置,以無線收發(fā)芯片CC400和單片機(89C51)為核心,配以適當?shù)耐鈬娐?,如圖2.1所示,光電傳感器不斷的檢測信號并轉換成脈沖信號,同時將脈沖信號傳遞給89C51,89C51的主要作用是計數(shù),并將脈沖信號數(shù)轉換成用電量,并傳給CC400,CC400將用電量信號發(fā)射出去,X5043是一個看門狗芯片。圖2.1信號發(fā)射裝置系統(tǒng)硬件設計結構圖信號發(fā)射裝置的單片機最小系統(tǒng)設計本設計將采用的CC400是ChipconCompononts公司推出的單片可編程RF收發(fā)芯片,它集成了高頻發(fā)射、高頻接收、PLL合成、FSK調(diào)制/解調(diào)以及可編程控制等多種功能。MCS-51系列的89C51,主要用到89C51內(nèi)部數(shù)據(jù)存儲器,運算器,控制器。以下就各主要功能模塊簡要介紹。對CC400和AT89C51芯片的介紹對CC400芯片的介紹本設計將采用的CC400是ChipconCompononts公司推出的單片可編程RF收發(fā)芯片,它集成了高頻發(fā)射、高頻接收、PLL合成、FSK調(diào)制/解調(diào)以及可編程控制等多種功能。CC400是基于Chipcon''sSmartRF技術的單片、可編程、半雙工UHF收發(fā)芯片,電路主要工作在ISM頻段(418MHz和433MHz),但也能夠被編程工作在其它頻段(如:300MHz~500MHz)。CC400主要的工作參數(shù)能夠經(jīng)由一個串行接口編程來設定,這使得它容易被使用并且具有很大靈活性。在其典型的應用中,CC400將與一個微控制器和少數(shù)幾個外接元件一起被使用。它的工作頻率為300MHz~500MHz,靈敏度為-112dB,輸出功率可編程到25mW,可進行FSK調(diào)制,數(shù)據(jù)速率可達9.6kb/s,并可在2.7~3.3V低電源下工作。CC400在計算機遙測遙控、安防、無線數(shù)據(jù)發(fā)射/接收等系統(tǒng)中得到廣泛的使用。如圖2.2圖2.2CC400芯片引腳圖CC400采用SSOP-28封裝,各引腳功能如下:1、7、8、13、14腳AVDD:模擬回路電源;2、3、4、10、11、17腳AGND:模擬回路地;5腳RF-IN:射頻輸入;6腳RF-OUT:射頻輸出;9腳VCO-IN:壓控振蕩器輸入;12腳CHP-OUT:充電泵輸出;15、16腳XOSC-Q1/Q2:外接晶振輸入/輸出端;18、20腳DGND:數(shù)字回路地;19LOCK:同步信號輸出;21、22腳DVDD:數(shù)字回路電源;23腳DIO:數(shù)字輸入/輸出;24腳CLOCK:時鐘輸入;25腳PDATA:編程數(shù)據(jù)輸入;26腳STROBE;選通脈沖輸入;27腳IF-IN:IF輸入;28腳IF-OUT:IF輸出。對AT89C51芯片的介紹AT89C51有PDIP,PLCC,TQFP三種封裝方式,其中最常見的就是采用40PIN封裝的雙列直接PDIP封裝。芯片共有40個引腳,引腳的排列順序為從靠芯片的缺口(如圖2.3所示)左邊那列逆時針數(shù)起,依次為1,2,3,4。。。40,其中芯片的1腳頂上有一個凹點(如圖2.3所示)。在單片機的40個引腳中,電源引腳2根,外接晶體振蕩器引腳2根,控制引腳4根以及4組8為可編程I/O引腳32根。AT89C51是帶4K字節(jié)閃爍可編程可擦除只讀存儲器(EPEROM)的低電壓、128*8字節(jié)RAM、高性能CMOS8位微處理器(俗稱單片機)。該單片機與工業(yè)標準的MCS-51型機的指令集和輸出引腳兼容。AT89C51將多功能8位CPU和閃爍存儲器組合在單個芯片中,為很多嵌入式控制提供了靈活性高且價格低廉的方案。以下將對其各個引腳及功能做簡單的介紹,如圖2.3所示。圖2.389C51芯片引腳圖引腳說明:
①電源引腳
Vcc(40腳):典型值+5V。
Vss(20腳):接低電平。
②外部晶振
X1、X2分別與晶體兩端相連接。當采用外部時鐘信號時,X2接振蕩信號,X1接地。
③輸入輸出口引腳:
P0口:I/O雙向口。作輸入口時,應先軟件置“1”。
P1口:I/O雙向口。作輸入口時,應先軟件置“1”。
P2口:I/O雙向口。作輸入口時,應先軟件置“1”。
P3口:I/O雙向口。作輸入口時,應先軟件置“1”。
④控制引腳:
RST/Vpd、ALE/-PROG、-PSEN、-EA/Vpp組成了MSC-51的控制總線。
RST/Vpd(9腳):復位信號輸入端(高電平有效)。
第二功能:加+5V備用電源,可以實現(xiàn)掉電保護RAM信息不丟失。ALE/-PROG(30腳):地址鎖存信號輸出端。
第二功能:編程脈沖輸入。-PSEN(29腳):外部程序存儲器讀選通信號。
-EA/Vpp(31腳):外部程序存儲器使能端。
第二功能:編程電壓輸入端(+21V)。
98c51外部引腳:(可以直接拷入ASM程序文件中,作注釋使用,十分方便)89C51單片機的P口特點:
P1口:P1口是一個8位雙向I/O端口,其中P1.2~P1.7引腳帶有內(nèi)部上拉電阻,P1.0對端口寫1時,通過內(nèi)部的上拉電阻把端口拉到高電位,這時可作輸入口。P2口作輸入口使用時,因為內(nèi)部有上拉電阻,那些被外部信號拉低的引腳會輸出一個電流(Iil)。P3口:P3.0~P3.5、P3.7是帶有內(nèi)部上拉電阻的7個雙向I/O端口。P3.6用于固定輸入片內(nèi)比較器的輸出信號并且它作為一通用I/O口引腳而只讀。P3口輸出緩沖器可吸收20mA電流。對端口寫1時,通過內(nèi)部的上拉電阻把端口拉到高電位,這時可作輸入口。P3口作輸入口使用時,因為內(nèi)部有上拉電阻,那些被外部信號拉低的引腳會輸出一個電流(Iil)。
AT89C51單片機的P口特點:
P0口:是一個8位漏極開路輸出型雙向I/O端口。作為輸出端口時,每位能以吸收電
流的方式驅動8個TTL輸入,對端口寫1時,又可作高阻抗輸入端用。在訪問外部程序或數(shù)據(jù)存儲器時,它是時分多路轉換的地址(低8位)/數(shù)據(jù)總線,在訪問期間將激活內(nèi)部的上拉電阻。
P1口:P1口是一個帶有內(nèi)部上拉電阻的8位雙向I/O端口。P1口的輸出緩沖器可驅動
(吸收或輸出電流方式)4個TTL輸入。對端口寫1時,通過內(nèi)部的上拉電阻把端口拉到高電位,這時可作輸入口。P2口作輸入口使用時,因為內(nèi)部有上拉電阻,那些被外部信號
拉低的引腳會輸出一個電流(Iil)。
P2口:P2口是一個帶有內(nèi)部上拉電阻的8位雙向I/O端口。P2口的輸出緩沖器可驅動(吸收或輸出電流方式)4個TTL輸入。對端口寫1時,通過內(nèi)部的上拉電阻把端口拉到高電位,這時可作輸入口。P2口作輸入口使用時,因為內(nèi)部有上拉電阻,那些被外部信號
拉低的引腳會輸出一個電流(Iil)。
在訪問外部程序存儲器時和16位外部地址的外部數(shù)據(jù)存儲器(如執(zhí)行MOVX@DPTR)
時,P2口送出高8位地址。在訪問8位地址的外部數(shù)據(jù)存儲器(如執(zhí)行MOVX@RI)時,
P2口引腳上的內(nèi)容(就是專用寄存器(SFR)區(qū)中的P2寄存器的內(nèi)容),在整個訪問期間不會改變。
P3口:P3口是一個帶有內(nèi)部上拉電阻的8位雙向I/O端口。P3口的輸出緩沖器可驅動(吸收或輸出電流方式)4個TTL輸入。對端口寫1時,通過內(nèi)部的上拉電阻把端口拉到高電位,這時可作輸入口。P3口作輸入口使用時,因為內(nèi)部有上拉電阻,那些被外部信號
拉低的引腳會輸出一個電流(Iil)。
在穩(wěn)定的狀態(tài)條件下Io低被外部限制如下:
1、每個管腳的最大IOL15mA注85規(guī)格
2、每個8位口的最大IOL26mA
3、IOL輸出最大總和71mA
4、如果IOL超過測試條件VOL可能會超過相應規(guī)格不能保證超過測試電流
內(nèi)部單元:
運算器:
1、算術/邏輯部件ALU:用以完成+、-、*、/的算術運算及布爾代數(shù)的邏輯運算,并通過運算結果影響程序狀態(tài)寄存器PSW的某些位,從而為判斷、轉移、十進制修正和出錯等提供依據(jù)。
2、累加器A:在算術/邏輯運算中存放一個操作數(shù)或結果,在與外部存儲器和I/O接口打交道時,進行數(shù)據(jù)傳送都要經(jīng)過A來完成。
3、寄存器B:在*、/運算中要使用寄存器B。乘法時,B用來存放乘數(shù)以及積的高字節(jié);除法時,B用來存放除數(shù)及余數(shù)。不作乘除時,B可作通用寄存器使用。
4、程序狀態(tài)標志寄存器PSW:用來存放當前指令執(zhí)行后操作結果的某些特征,以便為下一條指令的執(zhí)行提供依據(jù)。Cy:進位標志。有進位或借位,則Cy=1,否則Cy=0;在布爾運算時,Cy(簡稱C)作為布爾處理器。
AC:輔助進位標志位。
F0:用戶標志位:用戶可用軟件對F0置位“1”或清“0”,以決定程序的流向。
OV:溢出標志位:當運算結果溢出時,OV為“1”,否則為“0”。
D.1:未定義。
P:奇偶校驗位:當累加器A中的“1”的個數(shù)為奇數(shù)時,P置“1”,否則P置“0”。
控制器:
1、指令寄存器IR和指令譯碼器。
2、程序計數(shù)器:存放CPU執(zhí)行下一條指令的地址。是一個16位寄存器,可尋址64KB。
3、堆棧指針SP:用于子程序調(diào)用和中斷處理。機器復位后,SP←#07H,因此壓入的第一個數(shù)據(jù)在08H單元中。
4、數(shù)據(jù)指針寄存器DPTR:16位的寄存器,也可以作為兩個8位寄存器DPH和DPL。DPTR主要作外部數(shù)據(jù)指針,可對64KB外部RAM進行間接尋址。
MCS-51由包括PC在內(nèi)的22個特殊功能寄存器,它們除有各自的名稱外,還有唯一的地址,離散的分布在片內(nèi)RAM中的80H~FFH共128個存儲單元中。在這128個儲存單元構成的SFR塊中,未被占用的單元不可使用。信號采集傳感器是以一定的精度和規(guī)律把被測量轉換為與之有確定關系的、便于應用的某種物理量的測量裝置。傳感器通常由三部分組成:敏感元件:接感受被測量,輸出與被測量成確定關系。轉換元件:感應元件的輸出就是轉換元件的輸入,它把輸入轉換成電量參量。轉換電路:轉換元件輸出的電量信號轉換為便于處理、顯示、記錄或控制的有用的電信號的電路。實際上,有些傳感器很簡單,一個敏感元件(兼轉換元件)就可以組成;有些傳感器很復雜。大多數(shù)傳感器是開環(huán)系統(tǒng),也有些是帶反饋的閉環(huán)系統(tǒng)。有些傳感器由敏感元件和轉換元件組成,沒有轉換電路,如壓電式加速度傳感器,其中質(zhì)量塊是敏感元件,壓電片(塊)是轉換元件。有些傳感器轉換元件不只一個,要經(jīng)過若干次轉換。傳感器的分類:按傳感器的工作機理,分為物理型、化學型和生物型。按傳感器的構成原理,分為結構型和物性型兩大類。按傳感器的能量轉換情況,分為能量控制型和能量轉換型。按傳感器的物理原理,分為電參量式傳感器、壓電式傳感器、磁電式傳感器、光電式傳感器、氣電式傳感器、熱電式傳感器、射線式傳感器、波式傳感器、半導體式傳感器、其他原理傳感器。按傳感器的輸出量,可分為模擬式傳感器和數(shù)字式傳感器。按轉換過程是否可逆,分為雙向傳感器、單向傳感器。有時也把傳感器分為機械式傳感器等。CD4093簡介:他由4個施密特觸發(fā)器構成。每個觸發(fā)器有一個2輸入與非門。當正極性或負極性信號輸入時,觸發(fā)器在不同的點翻轉。正極性(VP)和負極刑(VN)電壓的不同之處由遲滯電壓(VH)確定。信號采集電路圖如下圖2.3所示圖2.4光電傳感檢測電路 本設計利用光電傳感器,在抄表系統(tǒng)中,可以在機械表的轉盤上作一黑色標記,由于表盤對紅外線有反射能力,而黑色標記無反射能力,則當轉盤旋轉至對準光電開關的發(fā)射、接收孔時,光敏三極管通過電流,從而使CD4093的輸出vo為高電平;反之,當黑條轉至發(fā)射、接收孔時,VO=O。應用電路如圖2.3所示。因此,表盤每轉一周傳感器就可輸出一個電脈沖,表盤不斷地旋轉,V0便輸出脈沖序列,供系統(tǒng)采集。通過采集模塊對電脈沖的記數(shù),就可計算出電能的多少。信號存儲及轉換信號的存儲和轉換主要由89C51來完成,如下圖2.4所示:圖2.5傳感器和89C51的接口電路89C51的P2.0口不斷檢測是否有電平變化(0變),只要有1電平的變化89C51內(nèi)部計數(shù)器就自動加1,就這樣不停的檢測并計數(shù),同時將在一定時間內(nèi)的計數(shù)值同過簡單的算法(指計數(shù)器值和用電量之間的轉變)轉變成用電量數(shù)據(jù)并存儲,當CC400發(fā)出信號時就將用電量數(shù)據(jù)傳遞給CC400??撮T狗電路本設計采用的X5043是一種集看門狗、電壓監(jiān)控和串行EEOROM三種功能于一身的可編程電路。這種組合設計減少了電路對電路板空間的需求。功能X5043有四種功能:(1)上電復位:上電時,當電源電壓超過門檻電壓,經(jīng)過約200ms穩(wěn)定后,由低電平變?yōu)楦唠娖?。?)看門狗定時器:定時時間可編程設定。在定時時間內(nèi),若信號一直沒發(fā)生變化,則立即產(chǎn)生低電平,延時約200ms后,再由低電平變?yōu)楦唠娖?。?)電壓監(jiān)控:當電源電壓低于預先設置的最小門檻電壓后,立即由高電平變?yōu)榈碗娖讲⒁恢北3值诫娫措妷撼^預先設置門檻電壓為止。(4)串行EEPROM:串行EEPROM為512*8位,采用四線總線工作,每次最多可連續(xù)寫16個字節(jié)的數(shù)據(jù)。工作原理(1)指令X5043有6條指令,6條指令都以最高有效位在前方式傳送。READ和WRITE指令中位3(A8)是X5043的EEPROM高地址位。當A8=0時,EEPROM地址范圍為000H~0FFH,當A8=1時,EEPROM地址范圍為100H~1FFH。表2.1X5043指令系統(tǒng)表指令名指令格式操作WREN設置寫使能鎖存器(允許寫操作)WRDI復位寫使能鎖存器(禁止寫操作)RDSR讀狀態(tài)寄存器WRSR寫狀態(tài)寄存器READ0000A8011從所選地址開始的E2PROM中讀出數(shù)據(jù)WRITE0000A8010把數(shù)據(jù)寫入所選地址開始的E2PROM中(2)狀態(tài)寄存器表2.2X5043的狀態(tài)寄存器76543210XXWD1WD0BL1BL0WELWIPWIP位為只讀位,當WIP=0時,表示沒有進行寫操作,此時可向EEPROM中寫數(shù)據(jù)。當WIP=1時,表示正在進行寫操作,此時不能向EEPROM中寫數(shù)據(jù)。WEL位表示寫使能鎖存器的狀態(tài)。當WEL=0時,禁止向EEPROM中寫數(shù)據(jù)。BL1和BL0為可編程位,確定EEPROM的塊保持地址范圍。塊保護地址范圍內(nèi)的EEPROM數(shù)據(jù)可被讀出,但無法寫入。WD1和WD0為可編程位,確定看門狗定時器定時時間。表2.3BL0、BL1與塊地址范圍關系BL1BL0塊保護地址范圍00無01180H~1FFH01100H~1FFH11000H~1FFH表2.4WD0、WD1與定時時間的關系WD1WD0定時時間001.4s01600ms10200ms11禁止WRSR指令可以對狀態(tài)寄存器中的WD1、WD0、BL1和BL0進行設置,RDSR指令可以了解WEL、WIP的狀態(tài)。(1)讀時序從EEPROM中讀數(shù)據(jù)的操作為:①=0;②發(fā)送8位的讀(READ)指令(其中A8為EEPROM高地址位);③發(fā)送EEPROM低8位地址;④將該地址EEPROM中數(shù)據(jù)移到SO線上。繼續(xù)提供時鐘脈沖,可連續(xù)讀出下一地址空間數(shù)據(jù),每移出一個字節(jié)數(shù)據(jù)后,EEPROM地址計數(shù)器自動加1。值得注意的是:當?shù)刂窞?FFH時,地址計數(shù)器加1指向100H,到最后地址1FFH時,地址計數(shù)器加1回到000H,無限循環(huán)下去,直到CS=1,終止讀操作。(2)在寫時序前,必須先發(fā)WREN指令使WEL=1。寫數(shù)據(jù)到E2PROM中的操作為:①=0;②發(fā)送8位的寫(WRITE)指令(其中A8為EEPROM高地址位);③發(fā)送E2PROM低8位地址;④將待寫的數(shù)據(jù)移到SI線上。在同一頁(XXXXX0000~XXXXX1111)上,繼續(xù)提供時鐘脈沖,可連續(xù)寫數(shù)據(jù)到下一地址,每移入一個字節(jié)數(shù)據(jù)后,EEPROM地址計數(shù)器自動加1。值得注意的是:當最低4位地址為1111時,移入一個字節(jié)數(shù)據(jù)后,地址計數(shù)器加1,回到同一頁的0000地址。若此時再移入一個字節(jié)數(shù)據(jù),先前寫入的數(shù)據(jù)可能被覆蓋,故每次最多可連續(xù)寫16個字節(jié)數(shù)據(jù),若要繼續(xù)寫數(shù)據(jù),要設置EEPROM另一頁面地址。=1,終止寫操作。X5043中的看門狗對系統(tǒng)提供了保護功能。當系統(tǒng)發(fā)生故障而超過設置時間時,電路中的看門狗將通過信號向CPU作反應。X5043提供了三個時間值,供用戶選擇使用。它所具有的電壓監(jiān)控功能還可以保護系統(tǒng)免受低電壓的影響,當電源電壓降到允許范圍以下時,系統(tǒng)將復位,直到電源電壓返回到穩(wěn)定值為止。X5043的存儲器與CPU可通過串行通信方式接口,共有4096個位,可以按512*8個字節(jié)來放置數(shù)據(jù)。X5043與89C51接口電路如圖2.5所示:圖2.6X5043和89C51接口電路CC400和89C51接口電路圖2.7CC400與89C51的接口有關參數(shù):為使用在不同應用中得到較好的性能,ChipconComponents公司提供給CC400用戶一個SmartRFStudio(Windows界面)的軟件,SmartRFSurdio將根據(jù)用戶的不同選擇,產(chǎn)生設置CC400工作狀態(tài)所需8個16進制的數(shù)據(jù)。這8個16進制的數(shù)據(jù)必須輸入到與CC400連接的微控制器中,可通過3線數(shù)字串行接口輸入到CC400的可編程的寄存器中,從而完成對CC400工作狀態(tài)的設置。圖中A為發(fā)射裝置接口電路,B為接收裝置(手持機)接口電路。以下為一些可編程的關鍵參數(shù):1.接收和發(fā)射模式;2.RF輸出功率電平;3.功率放大器工作類型(A、AB、BorC);4.頻率合成關鍵參數(shù)(RF輸出頻率,FSK調(diào)制頻率分離偏差,晶振基準頻率);5.低功耗/高功耗模式;6.基準振蕩器在低功耗模式中導通或截止(當在導通時,較短的頻率同步器啟動時間被完成);7.使用片上的濾波器,IF能夠設置為60kHz,200kHz或455kHz,使用外接濾波器;8.數(shù)據(jù)速率可選;9.另外SmartRFStudio將提供給用戶PLL回路和輸入/輸出匹配電路所需的元件參數(shù)。接口電路:CC400與89C51的接口如圖2.7中所示。圖2.8CC400編程時序89C51的3個I/O口與CC400串行接口(PDATASTROBE和CLOCK)相連,1個串行數(shù)據(jù)輸入口RXD(或輸出口TXD)與CC400的DIO端相連,(用來進行數(shù)據(jù)的發(fā)送和接收),一個輸入端用來監(jiān)視同步信號(LOCK),當PLL在鎖定狀時,LOCK輸出邏輯高電平。完成CC400的一個完整設置需要發(fā)送8個16位一幀的數(shù)據(jù)其編程時序如圖3所示,在每一個寫周期,每幀16位數(shù)據(jù)被發(fā)送在PDATA上,Bit15、Bit14、Bit13是地址位(000~111共八個地址),Bit15是地址的最高位(MSB)并作為第一位發(fā)送,Bit0是最低位(LSB)。在PDATA上的位數(shù)據(jù)(Bit15~Bit0)是在CLOCK的下降沿裝入,當最后一位(Bit0)數(shù)據(jù)被裝入即16位數(shù)據(jù)全部裝入后,讀取脈沖有效(從低變到高);16位數(shù)據(jù)被輸入到CC400芯片內(nèi)的控制器,由它完成CC400的工作狀態(tài)和設置。用2MHz的時鐘速率,完成整個工作狀態(tài)設置所需的時間少于100μs。手持機硬件裝置電路設計手持機硬件裝置電路設計方案論證該裝置和信號發(fā)射裝置相似,也是以無線收發(fā)芯片CC400和單片機(89C51)為核心,配以按鍵電路,顯示電路,串行通信接口電路及適當?shù)耐鈬娐啡鐖D2.9所示:圖2.9手持機信號發(fā)射裝置系統(tǒng)硬件設計結構圖CC400將接收到的數(shù)字信號傳給單片機89C51,89C51將通過按鍵的控制將數(shù)據(jù)通過MAX7219驅動LED顯示出來,X5043是看門狗芯片,MAX485是串行口通行芯片,通過MAX485將數(shù)據(jù)上報給主機。手持機裝置電路的單片機最小系統(tǒng)設計本設計將采用的CC400是ChipconCompononts公司推出的單片可編程RF收發(fā)芯片,它集成了高頻發(fā)射、高頻接收、PLL合成、FSK調(diào)制/解調(diào)以及可編程控制等多種功能。MCS-51系列的89C51,主要用到89C51內(nèi)部數(shù)據(jù)存儲器,運算器,控制器。以下就各主要功能模塊簡要介紹。信號接收模塊信號接收模塊主要是以CC400為核心其外圍電路和信號發(fā)射模塊電路外圍電路一樣,本設計將采用的CC400是ChipconCompononts公司推出的單片可編程RF收發(fā)芯片,它集成了高頻發(fā)射、高頻接收、PLL合成、FSK調(diào)制/解調(diào)以及可編程控制等多種功能。CC400是基于Chipcon''sSmartRF技術的單片、可編程、半雙工UHF收發(fā)芯片,電路主要工作在ISM頻段(418MHz和433MHz),但也能夠被編程工作在其它頻段(如:300MHz~500MHz)。CC400主要的工作參數(shù)能夠經(jīng)由一個串行接口編程來設定,這使得它容易被使用并且具有很大靈活性。在其典型的應用中,CC400將與一個微控制器和少數(shù)幾個外接元件一起被使用。它的工作頻率為300MHz~500MHz,靈敏度為-112dB,輸出功率可編程到25mW,可進行FSK調(diào)制,數(shù)據(jù)速率可達9.6kb/s,并可在2.7~3.3V低電源下工作。因此只要將它編程成信號接收工作模式就行,這里就不再做詳細介紹。按鍵電路按鍵按照結構原理可分為兩類,一類是觸點式開關按鍵,如機械式開關、導電橡膠式開關等;另一類是無觸點式開關按鍵,如電氣式按鍵,磁感應按鍵等。前者造價低,后者壽命長。目前,微機系統(tǒng)中最常見的是觸點式開關按鍵。鍵盤與89C51單片機的接口電路如圖2.10所示。圖2.10鍵盤與89C51的接口電路按鍵按照接口原理可分為編碼鍵盤與非編碼鍵盤兩類,這兩類鍵盤的主要區(qū)別是識別鍵符及給出相應鍵碼的方法。編碼鍵盤主要是用硬件來實現(xiàn)對鍵的識別,非編碼鍵盤主要是由軟件來實現(xiàn)鍵盤的定義與識別。
全編碼鍵盤能夠由硬件邏輯自動提供與鍵對應的編碼,此外,一般還具有去抖動和多鍵、竄鍵,保護電路。這種鍵盤使用方便,但需要較多的硬件,價格較貴,一般的單片機應用系統(tǒng)較少采用。非編碼鍵盤只簡單地提供行和列的矩陣,其它工作均由軟件完成。由于其經(jīng)濟實用,較多地應用于單片機系統(tǒng)中。在本套設計中由于只需要3個功能鍵,此時,可采用獨立式按鍵結構。獨立式按鍵是直接用I/O口線構成的單個按鍵電路,其特點是每個按鍵單獨占用一根I/O口線,每個按鍵的工作不會影響其它I/O口線的狀態(tài)。獨立式按鍵電路配置靈活,軟件結構簡單,但每個按鍵必須占用一根I/O口線,因此,在按鍵較多時,I/O口線浪費較大。獨立式按鍵的軟件常采用查詢式結構。先逐位查詢每根I/O口線的輸入狀態(tài),如某一根I/O口線輸入為低電平,則可確認該I/O口線所對應的按鍵已按下,然后,再轉向該鍵的功能處理程序。該電路中的I/O口,采用P1口,系統(tǒng)設有3個按鍵,通過軟件編程,實現(xiàn)對參數(shù)的設置。顯示電路模塊本設計采用的MAX7219芯片是一種集成化的串行輸入/輸出共陰極顯示驅動器,它連接微處理器與8位數(shù)字的7段數(shù)字LED顯示,也可以連接條線圖顯示器或者64個獨立的LED。其上包括一個片上的B型BCD編碼器、多路掃描回路,段字驅動器,而且還有一個8*8的靜態(tài)RAM用來存儲每一個數(shù)據(jù)。只有一個外部寄存器用來設置各個LED的段電流。一個方便的四線串行接口可以聯(lián)接所有通用的微處理器。每個數(shù)據(jù)可以尋址在更新時不需要改寫所有的顯示。MAX7219同樣允許用戶對每一個數(shù)據(jù)選擇編碼或者不編碼。整個設備包含一個150μA的低功耗關閉模式,模擬和數(shù)字亮度控制,一個掃描限制寄存器允許用戶顯示1-8位數(shù)據(jù),還有一個讓所有LED發(fā)光的檢測模式。圖2.11是MAX7219與89C51接口電路圖。其中:
(1)DIN為串行數(shù)據(jù)輸入端。當CLK為上升沿時,數(shù)據(jù)被載入16b內(nèi)部移位寄存器。
(2)CLK為串行時鐘輸入端。其最大工作頻率可達10MHz。
(3)LOAD為片選端,當LOAD為低電平時,芯片接收來自DIN的數(shù)據(jù),接收完畢,LOAD回到高電平時,接收的數(shù)據(jù)將被鎖定。(4)DIG0~DIG7為吸收顯示器共陰極電流的位驅動線。其最大值可達500mA,關閉狀態(tài)時,輸出+VCC。
(5)SEGA~SEGG,DP為驅動顯示器7段及小數(shù)點的輸出電流,一般為40mA左右,可軟件調(diào)整,關閉狀態(tài)時,接入GND。
(6)DOUT為串行數(shù)據(jù)輸出端,通常直接接入下一片MAX7219的DIN端。MAX7219有5個工作狀態(tài)寄存器,分別是譯碼方式選擇、亮度調(diào)節(jié)、掃描位數(shù)設定、待機開關、顯示器檢測。除空指令外,7219的所有操作指令都是2個字節(jié),前一個是操作代碼,后一個是操作數(shù)。操作代碼為“09H”,操作數(shù)為“0”或“0FFH”。選中“0”則不使用BCD譯碼器,在顯示數(shù)字或符號時,按每段點亮與否編排傳送碼。而選中“0FFH”時,則按8421標準二進制編碼來代表相應的顯示數(shù)字。(1)掃描位數(shù)設定:
操作代碼為“0BH”,操作數(shù)如表2.5所示。表2.5掃描位數(shù)設定操作數(shù)00H01H02H03H04H05H06H07H位數(shù)12345678如果所用的顯示器少于8位,則應通過這條指令設置相應的位數(shù)。因為設置的位數(shù)如果比實際使用的位數(shù)大,就會形成“虛位”,而一旦對“虛位”進行操作,將會引起整個顯示器的混亂,這是需要加以注意的。
另外,掃描位數(shù)的設置,會影響到掃描頻率的變化,相應地,顯示器亮度也會隨著變化,所以應先確定掃描位數(shù),再設置顯示器亮度(2)待機開關
操作代碼為“0CH”,操作數(shù)為“0”或“1”。
操作數(shù)為“0”,則顯示器不工作(滅燈),反之,顯示器正常工作。待機狀態(tài)下,7219的工作電流僅為150μA。(3)顯示器檢測
操作代碼為“0FH”,操作數(shù)為“0”或“1”。
選擇操作數(shù)為“1”時,可點亮整個顯示器,通常用來檢查數(shù)碼管及連接電路是否存在故障。檢測時,不會改變各位原有的顯示數(shù)據(jù),即檢測完畢后,再送入不檢測指令“0”,又可恢復顯示原數(shù)據(jù)。
(4)位操作指令
位操作指令就是對8個數(shù)碼管,顯示內(nèi)容的操作,也是2個字節(jié),第1個字節(jié)是位的代碼,如表2.6所示,第2個字節(jié)則根據(jù)譯碼方式的選擇,來使用表1中的編碼。表2.6位的代碼位的代碼01H02H03H04H05H06H07H08H位12345678需要說明的是,上述所有指令的輸入,不分先后(但每個指令2個字節(jié)的秩序不能顛倒)。通常,前5條指令一般在上電初始化程序中加以設置,而在工作程序中,僅使用位操作指令即可。另外,MAX7219上電時,譯碼方式、亮度調(diào)節(jié)、掃描位數(shù)、待機開關、顯示檢測等5個控制寄存器全部歸零。(5)與單片機的連接
MAX7219與51單片機的連接形式有2種,一種是將MAX7219的3個輸入端DIN,CLK和LOAD與51單片機的任意3個端口連接;一種則是直接與51單片機的串行接口相連,本設計采用第一種連接方式。MAX7219與89C51的接口電路如圖2.11所示:圖2.11顯示電路模塊電路圖如果將MAX7219的DIN接入單片機的RXD,CLK接入TXD,LOAD選任一口線,則可通過單片機串行口對MAX7219像對其他設備一樣按模式0進行發(fā)送操作。但由于串行口數(shù)據(jù)緩沖寄存器SBUF為右移發(fā)送,所以MAX7219的所有命令和操作數(shù)與第一種方式相比均應反轉,見表2.7~2.11,注意表2.8中操作數(shù)的最低位D0為小數(shù)點。表2.7操作數(shù)一覽表操作數(shù)代碼90H50HD0H30HF0H操作內(nèi)容譯碼方式亮度選擇掃描位數(shù)待機開關顯示檢測表2.8反轉后譯碼與不譯碼的比較顯示內(nèi)容0123456789——EHLP黑屏使用BCD碼00H80H40HC0H20HA0H60HE0H10H90H50HD0H30HB0H70HFH0不用BCD碼7EH0CHB6H9EHCCHdAHFAH0EHFEHDEH80HF2HECH70HE6H00H表2.9反轉后亮度調(diào)節(jié)操作數(shù)00H80H40HC0H20HA0H60HE0H10H90H50HD0H30HB0H70HFH0驅動電流1/323/325/327/329/3211/3213/3215/3217/3219/3221/3223/3225/3227/3229/3231/32表2.10反轉后掃描位數(shù)操作數(shù)操作數(shù)00H80H40HC0H30HA0H60HE0H掃描位12345678表2.11反轉后位的代碼位的代碼00H80H40HC0H20H6HE0H10H位12345678串行通信口電路由于RS—232—C接口標準出現(xiàn)較早,難免有不足之處,主要有以下四點:
接口的信號電平值較高,易損壞接口電路的芯片,又因為與TTL電平不兼容故需使用電平轉換電路方能與TTL電路連接;傳輸速率較低,在異步傳輸時,波特率為20Kbps;接口使用一根信號線和一根信號返回線構成共地的傳輸形式,這種共地傳輸容易產(chǎn)生共模干擾,所以抗噪聲干擾性弱;傳輸距離有限,最大傳輸距離標準值為50英尺,實際上只能用在50米左右。
針對RS—232—C的不足,RS—485具有以下特點:
RS—485的接口信號電平比RS—232—C低,不易損壞接口電路的芯片,而且該電平與TTL電平兼容,可方便與TTL電路連接;RS—485的數(shù)據(jù)最高傳輸速率為10Mbps;RS—485接口是采用平衡驅動器和差分接收器的組合,抗噪聲干擾性好;RS—485接口的最大傳輸距離標準值為4000英尺,實際上可達3000米,且RS—232—C接口在總線上只允許連接1個收發(fā)器,而RS—485接口在總線上是允許連接多達128個收發(fā)器,這樣用戶可以利用單一的RS—485接口方便地建立起設備網(wǎng)絡。
在工業(yè)控制領域,數(shù)據(jù)采集與傳輸是經(jīng)常性的工作,RS-485協(xié)議通信由于采用差分方式接收,對共模干擾抑制能力強,故廣泛應用于工業(yè)控制領域。MAX485接口芯片采用單一電源+5V工作,額定電流為300μA,采用半雙工通訊方式。它完成將TTL電平轉換為RS-485電平的功能。MAX485芯片的結構和引腳都非常簡單,內(nèi)部含有一個驅動器和接收器。RO和DI端分別為接收器的輸出和驅動器的輸入端,分別與89C51單片機的RXD和TXD相連即可;和DE端分別為接收和發(fā)送的使能端,當為邏輯0時,器件處于接收狀態(tài);當DE為邏輯1時,器件處于發(fā)送狀態(tài),因為MAX485工作在半雙工狀態(tài),所以只需用單片機的一個管腳控制這兩個引腳即可;A端和B端分別為接收和發(fā)送的差分信號端,當A引腳的電平高于B時,代表發(fā)送的數(shù)據(jù)為1;當A的電平低于B端時,代表發(fā)送的數(shù)據(jù)為0。在與單片機連接時接線非常簡單,只需要一個信號控制MAX485的接收和發(fā)送即可。同時將A和B端之間加匹配電阻,一般可選120Ω的電阻。本設計采用的MAX485接口芯片是Maxim公司的一種RS-485芯片。如圖2.12所示:圖2.12串行通信接口電路無線抄表應用系統(tǒng)軟件設計計算機語言計算機語言指用于人與計算機之間通訊的語言。計算機語言是人與計算機之間傳遞信息的媒介。計算機程序設計語言的發(fā)展,經(jīng)歷了從機器語言、匯編語言到高級語言的歷程。計算機語言主要分為三類:低級語言、高級語言和專用語言。低級語言機器語言、匯編語言和符號語言。匯編語言源程序必須經(jīng)過匯編,生成目標文件,然后執(zhí)行。高級語言BASIC(Truebasic、Qbasic、VirtualBasic)、C、PASCAL、FORTRAN、智能化語言(LISP、Prolog)等等。高級語言源程序可以用解釋、編譯兩種方式執(zhí)行。通常用后一種。我們使用的C語言就是使用的后者。專用語言CAD系統(tǒng)中的繪圖語言和DBMS的數(shù)據(jù)庫查詢語言。(1)機器語言機器語言是指一臺計算機全部的指令集合。電子計算機所使用的是由"0"和"1"組成的二進制數(shù),二進制是計算機的語言的基礎。計算機發(fā)明之初,人們只能降貴于尊,用計算機的語言去命令計算機干這干那,一句話,就是寫出一串串由"0"和"1"組成的指令序列交由計算機執(zhí)行,這種計算機能夠認識的語言,就是機器語言。使用機器語言是十分痛苦的,特別是在程序有錯需要修改時,更是如此。因此程序就是一個個的二進制文件。一條機器語言成為一條指令。指令是不可分割的最小功能單元。而且,由于每臺計算機的指令系統(tǒng)往往各不相同,所以,在一臺計算機上執(zhí)行的程序,要想在另一臺計算機上執(zhí)行,必須另編程序,造成了重復工作。但由于使用的是針對特定型號計算機的語言,故而運算效率是所有語言中最高的。機器語言,是第一代計算機語言。(2)匯編語言為了減輕使用機器語言編程的痛苦,人們進行了一種有益的改進:用一些簡潔的英文字母、符號串來替代一個特定的指令的二進制串,比如,用"ADD"代表加法,"MOV"代表數(shù)據(jù)傳遞等等,這樣一來,人們很容易讀懂并理解程序在干什么,糾錯及維護都變得方便了,這種程序設計語言就稱為匯編語言,即第二代計算機語言。然而計算機是不認識這些符號的,這就需要一個專門的程序,專門負責將這些符號翻譯成二進制數(shù)的機器語言,這種翻譯程序被稱為匯編程序。匯編語言同樣十分依賴于機器硬件,移植性不好,但效率仍十分高,針對計算機特定硬件而編制的匯編語言程序,能準確發(fā)揮計算機硬件的功能和特長,程序精煉而質(zhì)量高,所以至今仍是一種常用而強有力的軟件開發(fā)工具。(3)高級語言從最初與計算機交流的痛苦經(jīng)歷中,人們意識到,應該設計一種這樣的語言,這種語言接近于數(shù)學語言或人的自然語言,同時又不依賴于計算機硬件,編出的程序能在所有機器上通用。經(jīng)過努力,1954年,第一個完全脫離機器硬件的高級語言—FORTRAN問世了,40多年來,共有幾百種高級語言出現(xiàn),有重要意義的有幾十種,影響較大、使用較普遍的有FORTRAN、ALGOL、COBOL、BASIC、LISP、SNOBOL、PL/1、Pascal、C、PROLOG、Ada、C++、VC、VB、Delphi、JAVA等。本設計采用匯編語言編程匯編語言(AssemblyLanguage)是面向機器的程序設計語言。匯編語言是一種功能很強的程序設計語言,也是利用計算機所有硬件特性并能直接控制硬件的語言。匯編語言,作為一門語言,對應于高級語言的編譯器,需要一個“匯編器”來把匯編語言原文件匯編成機器可執(zhí)行的代碼。高級的匯編器如MASM,TASM等等為我們寫匯編程序提供了很多類似于高級語言的特征,比如結構化、抽象等。在這樣的環(huán)境中編寫的匯編程序,有很大一部分是面向匯編器的偽指令,已經(jīng)類同于高級語言。現(xiàn)在的匯編環(huán)境已經(jīng)如此高級,即使全部用匯編語言來編寫windows的應用程序也是可行的,但這不是匯編語言的長處。匯編語言的長處在于編寫高效且需要對機器硬件精確控制的程序。匯編語言直接同計算機的底層軟件甚至硬件進行交互,它具有如下一些優(yōu)點:(1)能夠直接訪問與硬件相關的存儲器或I/O端口;
(2)能夠不受編譯器的限制,對生成的二進制代碼進行完全的控制;
(3)能夠對關鍵代碼進行更準確的控制,避免因線程共同訪問或者硬件設備共享引起的死鎖;
(4)能夠根據(jù)特定的應用對代碼做最佳的優(yōu)化,提高運行速度;
(5)能夠最大限度地發(fā)揮硬件的功能。同時還應該認識到,匯編語言是一種層次非常低的語言,它僅僅高于直接手工編寫二進制的機器指令碼,因此不可避免地存在一些缺點:編寫的代碼非常難懂,不好維護;很容易產(chǎn)生bug,難于調(diào)試;只能針對特定的體系結構和處理器進行優(yōu)化;開發(fā)效率很低,時間長且單調(diào)。主程序設計該裝置分為信號發(fā)射和信號接收(手持機)兩個獨立的部分,因此它們的程序也是相互獨立的信號發(fā)射裝置主程序設計圖3.1信號發(fā)射系統(tǒng)軟件流程圖根據(jù)信號發(fā)射裝置系統(tǒng)的設計要求,將軟件設計部分按照圖3.1的思路進行設計。數(shù)據(jù)采集及處理放到脈沖計數(shù)器子程序中考慮。首先需要對CPU進行初始化,然后開軟件定時器中斷,開始數(shù)據(jù)采集與處理。當CPU發(fā)出數(shù)據(jù)傳輸指令開始發(fā)送數(shù)據(jù)當數(shù)據(jù)發(fā)送完畢后然后返回。整個過程是不斷循環(huán)的。信號接收裝置(手持機)主程序設計圖3.2信號接收系統(tǒng)流程圖圖3.2信號接收裝置軟件流程框圖根據(jù)信號接收裝置系統(tǒng)的設計要求,將軟件設計部分按照圖3.2的思路進行設計。首先需要對CPU進行初始化,然后運行鍵盤子程序,開始對數(shù)據(jù)接收與存儲等處理。當數(shù)據(jù)接收完畢然后再運行鍵盤子程序進一步對數(shù)據(jù)的顯示以及串行通信等然后返回。整個過程是不斷循環(huán)的。子程序設計軟件脈沖計數(shù)器子程序設計圖3.3軟件定時器中斷子程序流程圖軟件脈沖計數(shù)器子程序,也就是數(shù)據(jù)在89C51單片機內(nèi)進行數(shù)據(jù)采集與處理的過程。首先對單片機進行初始化,啟動單片機片內(nèi)計數(shù)器對信號進行采集,然后將數(shù)據(jù)做簡單乘法處理后再做存儲,而每次存儲的數(shù)據(jù)都將覆蓋上次的數(shù)據(jù),整個過程也是一個不斷循環(huán)的過程。鍵盤子程序設計圖3.3鍵盤子程序流程圖鍵盤子程序主要通過軟件的設計對三個獨立式按鍵的功能進行調(diào)用。鍵盤的操作,無論是按鍵或鍵盤都是利用機械觸點的合、斷作用。由于機械觸點的彈性作用,在閉合及斷開瞬間均有抖動過程,則必須去除抖動。當檢測到有鍵按下,執(zhí)行一個10ms的延時程序后,再確認該鍵電平是否處于閉合狀態(tài)電平,如保持閉合狀態(tài)電平則可確認確實有鍵按下,從而消除抖動影響。當確實有鍵按下時,查詢按鍵號,執(zhí)行其所在程序。顯示子程序設計圖3.4顯示子程序對于MAX7219驅動LED顯示的編程,首先將LED初始化全部清零。初始化完成后,調(diào)用寫入命令子程序,從RAM中取數(shù)據(jù)。調(diào)用寫入命令子程序,將顯示的初始地址送入,將顯示數(shù)據(jù)初始地址。當所有數(shù)據(jù)顯示完成,返回。串行通信子程序設計圖3.5串行通信子程序
RS-485網(wǎng)絡和普通的RS-232網(wǎng)絡從程序上來講,唯一的區(qū)別是就是有方向控制。
數(shù)據(jù)發(fā)送時芯片需要工作在輸出方式,這樣數(shù)據(jù)才能被有效發(fā)出。不發(fā)送數(shù)據(jù)時一定要把RS-485芯片設置為輸入狀態(tài),否則會影響網(wǎng)絡上其它設備。首先應確定485的硬件連接,然后啟動串口,將串口初始化。將存儲區(qū)數(shù)據(jù)取出并由串口發(fā)送出去,所有數(shù)據(jù)發(fā)送完畢,等待PC機發(fā)送命令數(shù)據(jù),最終獲取數(shù)據(jù)并返回。程序清單信號發(fā)射系統(tǒng)程序清單CPU主系統(tǒng)程序清單:TAN:MOVTMAD,#10H;定時器1設置為模式1MOVTL1,#0FDH;定時器1賦初值MOVTH1,#0FDHSETBEA;CPU開中斷SETBET1;定時器1開中斷CLRES;串行口關中斷SETBPT1;定時器1置高中斷優(yōu)先級CLRPS;串行口置低中斷優(yōu)先級SETBTR1;啟動定時器1工作CLRT1;清發(fā)送中斷MOVSCON,#40H;串行口工作模式1MOVSBUF,78H;輸出高位地址JNBTI,$;等待地址發(fā)送CLRTI;清TI清0MOVSBUF,77H;輸出低位地址JNBTI,$CLRTIMOVSBUF,76H;輸出末位地址高位字節(jié)JNBTI,$CLPTIMOVSBUF,75HSETBES;串行口開中斷SJMP$….(定時器1中斷服務程序)TIN:CLRTR1;關定時器MOVTL1,0FDH;T1重新賦初值MOVTH1,0FDHSETBTR1;啟動T1工作RETI;中斷返回…(串行口中斷服務程序)ESS:PUSHDPL;把DPTR壓入堆棧保護PUSHDPHPUSHACC;把A壓入堆棧保護MOVDPH,78H;發(fā)送數(shù)據(jù)地址DPTRMOVDPL,77HMOVXA,@DPTR;發(fā)送數(shù)據(jù)ACLRTIMOVSBUF,A;輸出數(shù)據(jù)MOVA,DPHCJNEA,76H,EN1;數(shù)據(jù)未送完轉至EN1MOVA,DPLCJNEA,75H,EN1CLRES;串行口關中斷CLRET1;定時器1關中斷CLRTR1;關定時器1ESC:POPACC;恢復現(xiàn)場POPDPHPOPDPLRETIEN1:INC77H;低位地址加1MOVA,77HJNZEN2;低位地址非0轉移INC78H;高位地址加1EN2:SIMPESC脈沖計數(shù)器子程序清單:MOVAL,88HMOVDX,0FF7FHOUTDX,MOVAL,00HMOVDX,0FF7EHOUTDX,ALMOVAL,0DMOVDX,0FF7EHWAIT:INAL,0FF7EHTESTAL,P2.0JZWAITWAIT1:MOVDL,0FAHINAL,DXORLAL,00HMOV@R7,ALDJNZR7,LOOP1AJMPWAITLOOP:INCAMOVB,1HMULABMOV78H,ALMOV77H,AHRET信號接收系統(tǒng)(手持機)程序清單主系統(tǒng)程序清單:REV:MOVTMAD,#10H;定時器1設置為模式1MOVTL1,#0FDH;定時器1賦初值MOVTH1,#0FDHSETBEA;CPU開中斷SETBET1;定時器1開中斷SETBES;串行口開中斷SETBPT1;定時器1置高中斷優(yōu)先級CLRPS;串行口,置低中斷優(yōu)先級SETBTR1;啟動定時器工作MOVSCON,#50H;串行口工作模式1接收CLRB.0;設置接收起始地址標志MOV70H,#78H;設置起始地址JNBTI,$;等待接受…(定時器1中斷服務程序)REV1:CLRTR1;關定時器1MOVTL1,#0FDH;定時器1重新賦初值SETBTR1,#0FDHSETBTR1;啟動定時器1工作RET……(串行口中斷服務程序)ESS:PUSHDPL;DPTR壓棧保護PUSHDPHPUSHACC;A壓棧保護MOVA,R0;R0壓棧保護PUSHACCJBB.0,DA0;非地址轉移MOVR0,70HMOVA,SBUF;接收地址信息MOV@R0,ADEC70H;修改接收地址CLRRIMOVA,#74HCJNEA,70H,DA2;地址未接收完轉移SETBB.0;設置接收數(shù)據(jù)標志DA2:POPACC;將A彈出堆棧送R0MOVR0,APOPACCPOPDPH;恢復現(xiàn)場POPDPLRETIDA0;MOVDPH,78H;接收的起始地址送DPTRMOVDPL,77HMOVA,SBUF;接收數(shù)據(jù)信息MOVX@DPTR,ACLRRIINC77HMOVA,77H;低位地址非0轉移JNZDA3INC78HDA3:MOVA,76HCJNEA,78H,DA2;數(shù)據(jù)未接收完轉至DA2MOVA,75HCJNEA,77H.DA2CLRES;串行口關中斷CLRET1;定時器1關中斷CLRTR1;關定時器1SETBPSW.5;設置傳送結束標志AJMPDA2END鍵盤子程序清單;MOVAL,88HMOVDX,0FF7FHOUTDX,MOVAL,00HMOVDX,0FF7EHOUTDX,ALMOVAL,0DMOVDX,0FF7EHWAIT:INAL,0FF7EHTESTAL,P2.0JZLOOPWAIT1:INAL,0FF7EHTESTAL,P2.1JZLOOP1WAIT2:INAL,0FF7EHTESTAL,P2.2JZLOOP2RET顯示子系統(tǒng)程序清單:
DINBITP3.0
LOADBITP3.1
CLKBITP3.2
MOV50H,#4FH
MOV51H,#37H
AJMPMAIN
ORG30H
MAIN:MOVSP,#70H
LCALLPROCESS
LCALLDISPLAY
SJMPMAIN
PROCESS:MOVA,#0BH
MOVB,#01H
LCALLW_7219
MOVA,#09H
MOVB,#00H
LCALLW_7219
MOVA,#0AH
MOVB,#0FH
LCALLW_7219
MOVA,#0CH
MOVB,#01H
LCALLW_7219
RET
DISPLAY:MOVR0,#50H
MOVR4,#01H
MOVR3,#02H
C_DISP:MOVA,@R0
MOVB,A
MOVA,R4
LCALLW_7219
INCR0
INCR4
DJNZR3,C_DISP
RET
W_7219:CLRLOAD
LCALLSD_7219
MOVA,B
LCALLSD_7219
SETBLOAD
RET
SD_7219:MOVR6,#08H
C_SD:NOP
CLRCLK
RLCA
MOVDIN,C
NOP串行通信子程序清單:TAN:MOVTMAD,#10HMOVTL1,#0FDHMOVTH1,#0FDHSETBEASETBET1CLRESSETBPT1CLRPSSETBTR1CLR
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)學-福建省龍巖市2025年高中畢業(yè)班三月教學質(zhì)量檢測(龍巖一檢)試題和答案
- 閥門拆除施工方案
- 石方靜態(tài)爆破施工方案
- 《千米的認識》(教學設計)-2024-2025學年三年級上冊數(shù)學人教版
- 2025年中考物理模擬試卷猜題卷1(含答案)
- 醫(yī)院科室安裝監(jiān)控合同范例
- 合作租房合同范例
- 質(zhì)量控制標準提升計劃
- 人事部如何構建企業(yè)形象計劃
- 幼兒園作業(yè)與學習反饋計劃
- 2025山東能源集團中級人才庫選拔高頻重點提升(共500題)附帶答案詳解
- 20S515 鋼筋混凝土及磚砌排水檢查井
- 關于建設吉林長白山人參產(chǎn)業(yè)園的報告
- 6人小品《沒有學習的人不傷心》臺詞完整版
- 2022新教科版科學五下全冊教案、全冊教學反思(表格式)含目錄
- 土力學-第二章-土的工程性質(zhì)及工程分類
- 小學體育《陽光運動身體好》課件
- 研究生面試復試英語+常問問題
- 數(shù)學名詞中英文對照
- 線束加工工時對照表
- 一年級古詩新唱社團計劃
評論
0/150
提交評論