【正文】
電源監(jiān)控電路 本系統(tǒng)的電源監(jiān)控電路的核心采用MAXIM公司的MAX706芯片,使電路簡(jiǎn)化成為可能,而且性能穩(wěn)定、功能齊全。目前,微機(jī)控制系統(tǒng)中越來(lái)越廣泛的應(yīng)用單片電源監(jiān)控電路。MAX706提供功能有:上電、掉電以及降壓情況下的復(fù)位輸出;獨(dú)立的看門狗輸出,用于電源故障報(bào)警、低電池檢測(cè)或+5v以外的電源的監(jiān)控;低電平有效的人工復(fù)位輸出。,此器件有8腳的DIP和SO兩種封裝形式。本設(shè)計(jì)選用的是DIP/SO的一種:1MR,人工復(fù)位;2VCC,電源輸入;3GND,接地;4PFI,電源掉落電壓監(jiān)測(cè)輸入;5PFO,電源掉落信號(hào)輸出;6WDI,看門狗輸入;7RESET,復(fù)位信號(hào)輸出;8WDO,看門狗輸出。上電掉電復(fù)位功能由芯片本身提供,而看門狗功能則由該電路保證。在程序執(zhí)行中,在正常運(yùn)行時(shí),RESET信號(hào)不會(huì)有效。如果程序跳飛盲目運(yùn)行,RESET信號(hào)有效。在設(shè)計(jì)中啟用了看門狗功能和電源監(jiān)控功能,電源監(jiān)控的原理是:(低電平有效),使得單片機(jī)知道電源不足,由此進(jìn)一步做出處理。與單片機(jī)的連接需要兩個(gè)I/O口,復(fù)位信號(hào)輸出端接單片機(jī)的復(fù)位端即可。第4章 系統(tǒng)軟件設(shè)計(jì) 系統(tǒng)主程序設(shè)計(jì) 流程圖是揭示和掌握封閉系統(tǒng)運(yùn)動(dòng)狀況的有效方式。作為診斷工具,它能夠輔助決策制定,讓管理者清楚地知道,問(wèn)題可能出在什么地方,從而確定出可供選擇的行動(dòng)方案。本設(shè)計(jì)系統(tǒng)由初始化模塊、數(shù)據(jù)采集模塊、計(jì)量模塊、數(shù)據(jù)存儲(chǔ)模塊、顯示模塊,IC卡模塊等模塊組成。來(lái)實(shí)現(xiàn)數(shù)據(jù)采集、熱能計(jì)量、顯示信息,遠(yuǎn)程抄表等功能。采用模塊化編程與結(jié)構(gòu)化編程,它們是相輔相成的。熱量表的功能實(shí)現(xiàn)需要大量而有效的程序來(lái)實(shí)現(xiàn),這么多的繁瑣程序需要采用模塊化編程的方法,即將一個(gè)大的程序分成若干小的模塊,各個(gè)模塊保持相對(duì)的獨(dú)立性,這樣一來(lái),各個(gè)程序模塊可分別設(shè)計(jì),從而使程序的調(diào)試、修改和維護(hù)都變得容易,另外,程序較大時(shí)還可以由不同人來(lái)同時(shí)編寫不同的模塊。各個(gè)子程序之間使用結(jié)構(gòu)良好的轉(zhuǎn)移或調(diào)用,這樣各個(gè)模塊可以有機(jī)的組合成一個(gè)整體,使流程明確的從一個(gè)程序模塊轉(zhuǎn)移到下一個(gè)程序模塊。在這個(gè)過(guò)程中,要注意嚴(yán)格控制使用任意轉(zhuǎn)移語(yǔ)句。 主程序主要負(fù)責(zé)控制整個(gè)系統(tǒng)的工作流程,在主程序中,首先應(yīng)考慮到的是系統(tǒng)各模塊的初始化。單片機(jī)初始化后,數(shù)據(jù)存儲(chǔ)器重置,需要進(jìn)行初始化設(shè)置,包括堆棧指針、中斷入口地址及中斷控制等。初始化設(shè)置完成后,開(kāi)啟中斷后調(diào)用鍵盤子程序進(jìn)行數(shù)據(jù)設(shè)置,如無(wú)設(shè)置,則啟用默認(rèn)設(shè)置并啟動(dòng)D/A轉(zhuǎn)換子程序進(jìn)行監(jiān)控,顯示數(shù)據(jù),保持系統(tǒng)穩(wěn)定的自動(dòng)運(yùn)行。主程序是熱量表運(yùn)行的正常入口,它主要是調(diào)動(dòng)各個(gè)中斷子程序來(lái)完成系統(tǒng)的功能。主程序框圖中首先初始化,然后進(jìn)入主循環(huán)程序,依次判定是否存在計(jì)量中斷、IC卡中斷,再執(zhí)行一次保護(hù)性處理后,進(jìn)入STOP模式,等待中斷喚醒CPU。初始化開(kāi)始IC卡中斷?時(shí)鐘中斷處理程序時(shí)鐘中斷?計(jì)量中斷處理程序計(jì)量中斷?主循環(huán)開(kāi)始 N Y N Y N YIC卡中斷處理程序 進(jìn)入STOP模式,等待中斷喚醒CPU,處理中斷程序保護(hù)性處理 初始化子程序設(shè)計(jì) 在主程序執(zhí)行前,必須對(duì)程序的執(zhí)行環(huán)境即初始化狀態(tài)進(jìn)行設(shè)計(jì),即初始化,否則程序主體將不能正常執(zhí)行,得不到正確的結(jié)果。程序的初始化主要包括以下幾個(gè)方面的內(nèi)容:CPU寄存器、狀態(tài)和控制寄存器的定義;端口控制寄存器的設(shè)置,如I/O口的初始化和時(shí)鐘芯片初始化等所使用的存儲(chǔ)單元的初始化,包括RAM數(shù)據(jù)初始化和FLASH數(shù)據(jù)初始化。 需要指出的是并非所有的CPU的控制/方式寄存器和工作寄存器都進(jìn)行初始化。一般只對(duì)相關(guān)參與工作的寄存器進(jìn)行初始化,另外程序中用到的符號(hào)也要定義、賦值,如串行時(shí)鐘線SCL和串行數(shù)據(jù)線SDA等等。開(kāi)始設(shè)置初始化總線時(shí)鐘初始化RAM數(shù)據(jù)初始化FLASH數(shù)據(jù)初始化I/O初始化時(shí)鐘芯片初始化結(jié)束 溫度檢測(cè)子程序設(shè)計(jì)單片機(jī)程序?qū)S18B20的訪問(wèn)流程是:先對(duì)DS18B20初始化,再對(duì)ROM進(jìn)行操作命令,最后才能對(duì)存儲(chǔ)器操作。,單片機(jī)控制DS18B20完成一次溫度轉(zhuǎn)換,需要經(jīng)過(guò)三個(gè)步驟:每一次讀寫之前都要對(duì)DS18B20進(jìn)行復(fù)位,復(fù)位成功后發(fā)送一條ROM指令,最后發(fā)送RAM指令。程序中將DQ拉低,精確延時(shí),再將DQ拉高,通過(guò)判斷值來(lái)確定是否已經(jīng)初始化完成。在實(shí)際應(yīng)用中,應(yīng)該注意DS18B20從測(cè)溫結(jié)束到將溫度值轉(zhuǎn)換成數(shù)字量需要一定的轉(zhuǎn)換時(shí)間,這是必須保證的,不然會(huì)導(dǎo)致轉(zhuǎn)換錯(cuò)誤,使溫度輸出總是顯示85℃。較小的硬件開(kāi)銷需要相對(duì)復(fù)雜的軟件進(jìn)行補(bǔ)償,由于DS18B20與單片機(jī)間采用串行方式傳送數(shù)據(jù),因此,在對(duì)DS18B20進(jìn)行讀寫編程時(shí),必須嚴(yán)格保證讀寫時(shí)序,否則將無(wú)法讀取測(cè)溫結(jié)果。開(kāi)始 端口設(shè)置初始化總線復(fù)位啟動(dòng)溫度轉(zhuǎn)化發(fā)送DS18B20編碼 讀取溫度 返回 流量檢測(cè)子程序設(shè)計(jì)用單片機(jī)測(cè)量頻率信號(hào)有多種方法,基本方法是在一定時(shí)間內(nèi),控制計(jì)數(shù)與門啟閉,用計(jì)數(shù)器對(duì)被測(cè)量的脈沖信號(hào)進(jìn)行計(jì)數(shù),再把計(jì)數(shù)值根據(jù)啟閉與門的定時(shí)時(shí)間轉(zhuǎn)換成頻率顯示。測(cè)量頻率要解決如下三個(gè)基本問(wèn)題:控制計(jì)數(shù)與門啟閉的定時(shí)對(duì)被測(cè)信號(hào)脈沖計(jì)數(shù)定時(shí)器與計(jì)數(shù)器的同步工作對(duì)脈沖計(jì)數(shù)可以通過(guò)查詢法或外部中斷方法實(shí)現(xiàn)軟件計(jì)數(shù),也可用片內(nèi)計(jì)數(shù)器進(jìn)行計(jì)數(shù),還可以外加集成計(jì)數(shù)器進(jìn)行計(jì)數(shù)。T0初始化啟動(dòng)定時(shí) N觸動(dòng)啟動(dòng)變化? Y計(jì)數(shù)器加1 N T0定時(shí)到否? Y關(guān)閉T0定時(shí)計(jì)數(shù)器 值送存儲(chǔ)器返回本設(shè)計(jì)采用查詢法進(jìn)行軟件計(jì)數(shù),用T0做定時(shí)器,結(jié)合軟件定時(shí)1s。用查詢法進(jìn)行軟件計(jì)數(shù)。被測(cè)信號(hào)脈沖檢測(cè)從高到低變化時(shí),從觸動(dòng)變化處輸出一正脈沖,啟動(dòng)T0計(jì)數(shù)工作,在定時(shí)時(shí)間內(nèi),通過(guò)不斷查詢輸出信號(hào)電平的變化,進(jìn)行軟件計(jì)數(shù)。直至定時(shí)時(shí)間到,關(guān)T0定時(shí)器,讀入軟件計(jì)數(shù)器的值即可得到被測(cè)信號(hào)的頻率值。為減小量化誤差的影響,可以加長(zhǎng)定時(shí)間。進(jìn)一步通過(guò)對(duì)測(cè)量結(jié)果的判斷,動(dòng)態(tài)的確定定時(shí)時(shí)間,根據(jù)被測(cè)頻率的高低調(diào)整定時(shí)器初值或擴(kuò)展計(jì)數(shù)器初值。 熱能計(jì)量子程序設(shè)計(jì)當(dāng)10L熱水流過(guò)時(shí),會(huì)產(chǎn)生一個(gè)脈沖給MCU一個(gè)中斷信號(hào),喚醒MCU進(jìn)入計(jì)量中斷處理子程序。調(diào)用溫度采集子程序,對(duì)于兩路溫度信號(hào)的采集,本設(shè)計(jì)采用了數(shù)值濾波算法。在數(shù)據(jù)處理中,主要是根據(jù)熱量表的計(jì)量原理,調(diào)用非壓縮BCD碼的加法、減法和乘法子程序進(jìn)行數(shù)據(jù)處理。然后調(diào)BCD碼比較子程序進(jìn)行判斷;當(dāng)剩余熱量小于等于10J,系統(tǒng)報(bào)警提示用戶要購(gòu)熱、對(duì)IC卡充值;當(dāng)剩余熱量小于等于0J,系統(tǒng)關(guān)閥,切斷供熱。采集進(jìn)回水溫度數(shù)據(jù)處理 報(bào)警剩余熱量≤10J Y剩余熱量≤0J N 關(guān)閥 Y N循環(huán)顯示剩余、累計(jì)、本次購(gòu)入熱量 返回 顯示子程序設(shè)計(jì)顯示模塊顯示用戶需要的各種信息,包括進(jìn)水溫度、出水溫度、熱水流量、耗熱量及剩余熱量、取暖費(fèi)用等。本文顯示系統(tǒng)由LCD1602液晶構(gòu)成,控制方便,能夠滿足顯示要求。在主程序中,顯示模塊被定時(shí)調(diào)用。 LCD初始化 讀取顯示信息 顯示進(jìn)水溫度 顯示出水溫度 顯示流量 顯示剩余熱能 顯示消耗值 顯示剩余金額 LCD初始化 IC卡讀寫子程序設(shè)計(jì)。本設(shè)計(jì)IC卡是通過(guò)對(duì)密碼存儲(chǔ)器的操作實(shí)現(xiàn)的。通過(guò)校驗(yàn)密碼校驗(yàn)輸入密碼與芯片內(nèi)的密碼是否相符, 若相符則對(duì)主存儲(chǔ)器的寫操作使能, 以及對(duì)密碼存儲(chǔ)器的讀寫使能。 開(kāi)始端口初始化 MFRC522復(fù)位 尋卡請(qǐng)求 有卡? N Y 防沖撞 選卡 Y 密碼驗(yàn)證通過(guò)? N 有卡? N Y讀數(shù)據(jù)塊停機(jī)數(shù)據(jù)備份寫數(shù)據(jù)塊扣款充值 IC卡讀寫子程序流程圖 報(bào)警子程序設(shè)計(jì)。通過(guò)單片機(jī)不斷檢測(cè)余額,當(dāng)達(dá)到設(shè)定要求時(shí),系統(tǒng)發(fā)出聲光報(bào)警對(duì)用戶進(jìn)行提示。 開(kāi)始 余額小于5 N Y 聲光報(bào)警 有按鍵 N Y 聲光報(bào)警停止 余額小于0 N 聲光報(bào)警 Y 有按鍵 N Y 聲光報(bào)警停止 返回 CAN總線子程序設(shè)計(jì)CAN的初始化主要是設(shè)置CAN的有關(guān)通信參數(shù)。其過(guò)程主要是,通過(guò)對(duì)CAN控制器控制段中的寄存器寫入控制字,從而確定CAN控制器的工作方式等。有3種方式進(jìn)入初始化程序:上電復(fù)位、硬件復(fù)位、軟件復(fù)位。即在運(yùn)行期間通過(guò)給CAN控制器發(fā)一個(gè)復(fù)位請(qǐng)求,置復(fù)位請(qǐng)求為“1”。在初始化中,必須初始化的寄存器有ACR接收代碼寄存器、AMR屏蔽寄存器、BRT總線定時(shí)寄存器及ORC輸出控制寄存器等。需要注意的是,這些寄存器只能在復(fù)位期間寫訪問(wèn),因此,在對(duì)這些寄存器初始化前,必須保證系統(tǒng)進(jìn)入復(fù)位狀態(tài)。 初始化開(kāi)始 關(guān)CAN中斷源,置CAN為復(fù)位狀態(tài) N Y 進(jìn)入復(fù)位狀態(tài)初始化與通信有關(guān)的寄存器 清除復(fù)位標(biāo)識(shí)位,置CAN為運(yùn)行狀態(tài) N Y進(jìn)入運(yùn)行狀態(tài) 開(kāi)CAN中斷 CAN總線子程序流程圖第5章 結(jié)論近幾年來(lái),隨著人們物質(zhì)文化生活水平的提高和商品價(jià)值意識(shí)的增強(qiáng)。政府部門已經(jīng)開(kāi)始制定供暖按照熱量消耗收費(fèi)的方式,現(xiàn)在,以高新技術(shù)為核心的熱能計(jì)量技術(shù)必定將成為未來(lái)供暖收費(fèi)主要的趨勢(shì)。本設(shè)計(jì)把傳感器技術(shù)、電子測(cè)量技術(shù)、遠(yuǎn)程通訊技術(shù)等應(yīng)用于城市冬季供暖收費(fèi)當(dāng)中。以城市供暖中各個(gè)參數(shù)指標(biāo)為測(cè)量對(duì)象,流量的測(cè)量采用先進(jìn)的無(wú)磁測(cè)量技術(shù),很好的地解決了以往有磁流量測(cè)量時(shí)存在的鐵屑吸附而導(dǎo)致堵塞以及精度下降功耗增加的問(wèn)題。完成了溫度測(cè)量電路的設(shè)計(jì),在考慮降低成本的前提下,盡量的簡(jiǎn)化電路結(jié)構(gòu)并能夠達(dá)到規(guī)定的精度和功耗的要求,減少了電路的復(fù)雜程度。采用非接觸IC卡通訊完成系統(tǒng)的預(yù)付費(fèi)和監(jiān)控功能。與接觸式卡相比,非接觸卡具有使用壽命長(zhǎng),可靠性更高等優(yōu)點(diǎn)。通過(guò)在系統(tǒng)中設(shè)置不同作用的卡,完善了系統(tǒng)的功能,確保了整個(gè)付費(fèi)過(guò)程的安全以及用戶和供方利益的公平公正。在系統(tǒng)的研究中,充分考慮了系統(tǒng)成本,靈活性和可擴(kuò)展的基