基于51單片機(jī)的稱重系統(tǒng)設(shè)計(jì)_第1頁
基于51單片機(jī)的稱重系統(tǒng)設(shè)計(jì)_第2頁
基于51單片機(jī)的稱重系統(tǒng)設(shè)計(jì)_第3頁
基于51單片機(jī)的稱重系統(tǒng)設(shè)計(jì)_第4頁
基于51單片機(jī)的稱重系統(tǒng)設(shè)計(jì)_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、單片機(jī)作業(yè) 學(xué) 院 計(jì)算機(jī)與控制工程學(xué)院 專 業(yè) 自動(dòng)化132 學(xué) 號(hào) 2013022030 姓名 王偉 基于51單片機(jī)的稱重系統(tǒng)一 動(dòng)態(tài)稱重所謂動(dòng)態(tài)稱重是指通過分析和測量車胎運(yùn)動(dòng)中的力,來計(jì)算該運(yùn)動(dòng)車輛的總重量、軸重、輪重和部分重量數(shù)據(jù)的過程。動(dòng)態(tài)稱重系統(tǒng)按經(jīng)過車輛行駛的速度劃分,可分為低速動(dòng)態(tài)稱重系統(tǒng)與高速動(dòng)態(tài)稱重系統(tǒng)。因?yàn)槲覈咚俟返南匏僮罡呤?20,所以高速動(dòng)態(tài)稱重系統(tǒng)在理論上可對(duì)5到120之間時(shí)速通過稱量裝置的車輛進(jìn)行動(dòng)態(tài)稱重。而低速動(dòng)態(tài)稱重系統(tǒng)則一定要限制通過車輛的行駛速度,要想有較高的測量精度,理論要求車輛在5km/h以下時(shí)速勻速通過。在我國,車輛動(dòng)態(tài)稱重一般都使用低速動(dòng)態(tài)稱重

2、來完成,在很多收費(fèi)站和車輛檢測站都有應(yīng)用,國家也出臺(tái)了相關(guān)的測量標(biāo)準(zhǔn)。與傳統(tǒng)意義上的靜態(tài)稱重相比,動(dòng)態(tài)稱重可以在車輛緩慢運(yùn)動(dòng)情況下直接進(jìn)行稱重,這樣動(dòng)態(tài)稱重的高效率、測量時(shí)間短、能流暢交通等主要特點(diǎn)就凸顯出來了。動(dòng)態(tài)稱重的問世,不但使車輛的管理上有了很大的促進(jìn)作用,而且還對(duì)我國的公路管理和維護(hù)起到了至關(guān)重要的作用。二 系統(tǒng)總體結(jié)構(gòu)及其功能設(shè)計(jì)總體結(jié)構(gòu)是以51單片機(jī)為處理器的系統(tǒng),如圖3.1所示。上位機(jī)鍵盤輸入A/D轉(zhuǎn)換器ADC0832放大器OP07橋式稱重傳感器WPL110AT89C51單片機(jī)RS232轉(zhuǎn)換器蜂鳴器LED顯示圖 3.1本設(shè)計(jì)要求能判斷出車輛是否超載,如果車輛超載,本系統(tǒng)能夠提供

3、該車輛的超載信息并發(fā)出警報(bào)。本設(shè)計(jì)采用STC89C52單片機(jī)作為系統(tǒng)的處理核心,利用橋式稱重傳感器采集到車輛重量并轉(zhuǎn)換成電壓信號(hào),然后通過放大電路將電壓信號(hào)進(jìn)行放大處理后,傳送到A/D轉(zhuǎn)換器中轉(zhuǎn)換為數(shù)字信號(hào),再經(jīng)過單片機(jī)處理、傳輸?shù)浇涌陔娐?,最后送到上位機(jī),該數(shù)據(jù)可以與上位機(jī)里用鍵盤事先輸入設(shè)定的總重量作比較并判斷出該車輛是否超載,如果超載,則可通過顯示器、蜂鳴器作顯示超載信息并報(bào)警,當(dāng)然,鍵盤的作用除了輸入設(shè)定值還可以解除和開啟警報(bào)。三 動(dòng)態(tài)稱重系統(tǒng)的組成動(dòng)態(tài)稱重系統(tǒng)主要由車輛重量(含超載、偏載檢測)檢測子系統(tǒng)、貨車長、寬、高三維尺寸超限檢測子系統(tǒng)、自動(dòng)觸發(fā)攝像拍照子系統(tǒng)、車輛類型自動(dòng)判別子

4、系統(tǒng)、系統(tǒng)配置及系統(tǒng)維護(hù)子系統(tǒng)、行駛車輛速度測量子系統(tǒng)、數(shù)據(jù)統(tǒng)計(jì)、報(bào)表處理子系統(tǒng)和單據(jù)輸出打印子系統(tǒng)這幾部分組成。該系統(tǒng)組成完善,部件考慮周全,能很好的完成稱重任務(wù)。四 動(dòng)態(tài)稱重系統(tǒng)的主要功能(1)動(dòng)態(tài)檢測出通過車輛的軸數(shù)、軸重、軸距、輪數(shù)、車速等;(2)能自動(dòng)檢測出車輛的高、寬、長等外圍尺寸是否超出最大標(biāo)準(zhǔn),并能給出超出部位的具體位置和具體數(shù)據(jù);(3)拍攝機(jī)器在車輛經(jīng)過時(shí)能自行對(duì)要被檢測的車輛進(jìn)行拍照,該機(jī)器能對(duì)車牌號(hào)碼、車輛種類進(jìn)行識(shí)別,最終作為圖像證據(jù);(4)可以將不合格車輛的處理記錄、超限情況進(jìn)行打印,根據(jù)車輛超限的程度來計(jì)算罰款數(shù)額并打印收據(jù)或罰款單;(5)檢測到的數(shù)據(jù)全部存入數(shù)據(jù)庫

5、中,并對(duì)被監(jiān)測到的數(shù)據(jù)進(jìn)行分析、統(tǒng)計(jì)。便于匯總上報(bào)、日常管理和進(jìn)行查詢。五 單片機(jī)的選用本設(shè)計(jì)采用的是INTEL公司研究開發(fā)生產(chǎn)的STC89C52單片機(jī),其內(nèi)部置有256字節(jié)的內(nèi)部數(shù)據(jù)存儲(chǔ)器、8位中央處理單元、8K片內(nèi)程序存儲(chǔ)器、3個(gè)16位定時(shí)/計(jì)數(shù)器、32個(gè)雙向I/O口和一個(gè)片內(nèi)時(shí)鐘振蕩電路,全雙工串行通信口, 5個(gè)兩級(jí)中斷結(jié)構(gòu)。89C52的引腳圖如圖4.1所示。圖 4.1 89C52引腳圖本設(shè)計(jì)使用的是單片機(jī)的最小系統(tǒng),其中電路包括下載口電路、復(fù)位電路和晶振電路。復(fù)位電路中,電阻在下接地,電容在上接高電平,中間為RST。復(fù)位電路工作原理是:通電時(shí),由于電流很大,從而相當(dāng)于電容被短路,這樣R

6、ST引腳上處于高電平,這時(shí)的單片機(jī)為禁止工作狀態(tài)。如果要使單片機(jī)正常工作,就要使RST端電壓慢慢下降并到一定程度,也就是RST端為低電平,這就需要通過電源對(duì)電容進(jìn)行充電。復(fù)位電路復(fù)位的方式有手動(dòng)復(fù)位、上電復(fù)位兩種。所謂上電復(fù)位,就是通電瞬間,由于電流很大,從而相當(dāng)于電容被短路,這樣RST引腳上處于高電平,自動(dòng)復(fù)位;相反,通過對(duì)改變電容電流,當(dāng)電流很小的時(shí)候,我們就可以把電容當(dāng)做開路狀態(tài),RST端就處于低電平,程序就能正常的運(yùn)行。而手動(dòng)復(fù)位要在上電復(fù)位的基礎(chǔ)上,按下復(fù)位按鍵,使VCC直接與RST相連,電容處于放電狀態(tài),以高電平形成復(fù)位;松開復(fù)位按鍵,RST仍舊是高電平,這時(shí)充電電流作用于電阻上,

7、VCC給電容進(jìn)行充電,還是復(fù)位狀態(tài),充電結(jié)束后,RST為低電平,能夠正常工作。 A/D轉(zhuǎn)換器A/D轉(zhuǎn)換器根據(jù)輸出的信號(hào)格式有并行A/D和串行A/D兩種。ADC0832 是一種具有雙通道 A/D 轉(zhuǎn)換芯片和8 位分辨率。它的優(yōu)點(diǎn)有體積小,兼容性強(qiáng),性價(jià)比高,從而深受個(gè)人的歡迎和企業(yè)的認(rèn)可,目前在世界上也已經(jīng)有了較高的使用率。ADC0832具有能夠進(jìn)行雙通道A/D 轉(zhuǎn)換,分辨率高達(dá)8位;當(dāng)供電電源為5V時(shí),輸入電壓能穩(wěn)定的保持在05V 之間;TTL/CMOS與輸出輸入電平兼容;功耗很低,只有15mW;轉(zhuǎn)換工作時(shí)間只有 32S,也就是頻率僅有 250KHZ等特點(diǎn)。其引腳功能圖如圖4.6所示,芯片引腳

8、接口說明如表4所示。CS123418765CH0GNDVcc/REFDODICH1CLKADC0832圖4.6 引腳排列表4 ADC0832引腳說明接口說明CS片選使能,輸入低電平能使芯片工作CH1模擬的輸入通道 1,或作為 IN+/-使用CH0模擬的輸入通道 0,或作為 IN+/-使用GND接地DO轉(zhuǎn)換數(shù)據(jù)輸出,數(shù)據(jù)信號(hào)輸出DI選擇通道控制,數(shù)據(jù)信號(hào)輸入CLK芯片時(shí)鐘脈沖輸入Vcc/REF5V參考電壓輸入和電源輸入通常情況下的單片機(jī)和ADC0832的接口的數(shù)據(jù)線應(yīng)為4條,分別是 CS、CLK、DO、DI。由于ADC0832的數(shù)據(jù)信號(hào)輸入輸出口與單片機(jī)具有雙向接口通信,輸入輸出口也不同時(shí)使用,

9、所以可以將數(shù)據(jù)信號(hào)輸入輸出口并聯(lián)后當(dāng)一條數(shù)據(jù)線進(jìn)行使用。它們的硬件接口電路與單片機(jī)連接的原理如圖4.7所示。最后將以上的惠思登電橋、放大器、ADC0832轉(zhuǎn)換器和STC89C52單片機(jī)連接起來,就組成了系統(tǒng)的采集模塊。CSCH0CH1GNDVccCLKDIDOP1.1P1.2P1.3VccU0ADC0832AT89C51圖4.7 ADC0832 與單片機(jī)的接口電路 報(bào)警模塊本系統(tǒng)要實(shí)現(xiàn)一旦檢測到車輛超載超限,就會(huì)立刻鳴笛報(bào)警,通過操作人員的檢查處理后,解除報(bào)警。本設(shè)計(jì)選用蜂鳴器作為發(fā)聲裝置,蜂鳴器可利用三極管來進(jìn)行放大驅(qū)動(dòng)。該接口電路如圖4.15所示:R3R4P2.75VSpeakerVT1圖

10、4.15 報(bào)警接口電路5. 系統(tǒng)的軟件設(shè)計(jì)5.1 主程序設(shè)計(jì)當(dāng)系統(tǒng)上電復(fù)位后,系統(tǒng)開始初始化,包括端口等;初始化完畢后,調(diào)用串口輸出提示語,開始準(zhǔn)備串口輸出電壓;準(zhǔn)備完畢后,調(diào)用串口輸出電壓值,開始從串口輸出電壓值;輸出完畢后,調(diào)用串口輸出換行值;最后開始延時(shí)200ms。根據(jù)系統(tǒng)方案,設(shè)計(jì)出本設(shè)計(jì)的主程序流程,可以用框圖表示。串口初始化串口輸出提示語串口輸出電壓值串口輸出換行值延時(shí)200ms開始圖5.1 主程序流程圖5.3 ADC0832軟件設(shè)計(jì)首先要將芯片開始使能,即CS使能端置于低電平,然后通過DI和DO的同一數(shù)據(jù)輸入端口,可實(shí)現(xiàn)通道功能的選擇,再調(diào)用通道初始化程序,初始化完畢后,在8個(gè)時(shí)

11、鐘邊沿獲得正序和反序8位數(shù)據(jù),最后返回?cái)?shù)據(jù)。根據(jù)此方案,設(shè)計(jì)出本設(shè)計(jì)中A/D轉(zhuǎn)換程序流程,如圖5.2所示。當(dāng)兩位數(shù)據(jù)都為0時(shí),CH1作為負(fù)輸入端 IN-,而CH0就作為正輸入端IN+來進(jìn)行相關(guān)輸入。當(dāng)此兩位數(shù)據(jù)都為1時(shí),CH1進(jìn)行單通道轉(zhuǎn)換而CHO不轉(zhuǎn)換。當(dāng)兩位數(shù)據(jù)分別為0和1時(shí),CH1作為正輸入端IN+,CH0作為負(fù)輸入端IN-來進(jìn)行相關(guān)輸入。當(dāng)兩位數(shù)據(jù)為分別為1和0時(shí),CH0進(jìn)行單通道轉(zhuǎn)換而CH1不轉(zhuǎn)換。ADC0832的功能項(xiàng)如表7所示。芯片使能通道選擇通道初始化在8個(gè)時(shí)鐘邊沿獲得正序8位數(shù)據(jù)返回?cái)?shù)據(jù)開始在8個(gè)時(shí)鐘邊沿獲得反序8位數(shù)據(jù)圖5.2 ADC0832轉(zhuǎn)換流程圖表7 AD0832功能

12、項(xiàng)MUX AddressChanne#SGL/DIFODD/SIGN0110+11+00+_01_+ADC0832沒有工作時(shí),DO/DI和CLK的電平可高可低,但CS的輸入端口應(yīng)必須顯示高電平,此時(shí)芯片處于禁用狀態(tài)。當(dāng)A/D轉(zhuǎn)換進(jìn)行時(shí),CS端口必須處于低電平并且一直將低電平保持到轉(zhuǎn)換全部結(jié)束。當(dāng)芯片轉(zhuǎn)換工作開始,芯片的CLK端口會(huì)接收到處理器傳送來的一時(shí)鐘脈沖,DO/DI并聯(lián)端口將使用數(shù)據(jù)輸入信號(hào)的DI端口。第一個(gè)時(shí)鐘脈沖的下沉出現(xiàn)之前,DI端口一定要是高電平,表示啟始信號(hào)的發(fā)出,在第二、三個(gè)脈沖的下沉出現(xiàn)之前,DI端口要輸入兩位數(shù)據(jù)來選擇通道。第三個(gè)脈沖出現(xiàn)下沉之后,DI端口就不再起任何作用

13、,此后 DO/DI并聯(lián)端口則是被DO端口占領(lǐng)進(jìn)行讀取轉(zhuǎn)換數(shù)據(jù)。第四個(gè)下沉脈沖出現(xiàn)開始,DO端口輸出最高位的轉(zhuǎn)換數(shù)據(jù)DATA7,接下來每個(gè)脈沖下沉之后DO端口都會(huì)輸出下一位的轉(zhuǎn)換數(shù)據(jù)。直到發(fā)出最低位數(shù)據(jù)DATA0,也就是由第十一個(gè)脈沖發(fā)出的數(shù)據(jù)之后,這樣一個(gè)字節(jié)的數(shù)據(jù)輸出就完成了。再從第十一個(gè)脈沖下沉開始從DATD0開始輸出下一個(gè)相反數(shù)據(jù)字節(jié)。然后一直到第十九個(gè)脈沖完成數(shù)據(jù)的輸出,這樣一次A/D 轉(zhuǎn)換才結(jié)束。最后,要想將轉(zhuǎn)換后的數(shù)據(jù)進(jìn)行相關(guān)處理就必須將芯片禁用,也就是將CS端口輸入高電平。5.4 LCD顯示程序設(shè)計(jì)首先設(shè)置顯示模式,設(shè)置第(x,y)個(gè)字符的DDRAM的地址,為15×2顯

14、示,因?yàn)橐壕э@示為15列,所以x位置的范圍是0到15,同理,因?yàn)轱@示2行,所以y位置的范圍是0到1。顯示程序如下:void Lcd_Pos(uchar yPos,uchar xPos)uchar tmp;xPos &= 0x0f; /x位置范圍是015,因?yàn)轱@示15列yPos &= 0x01; /y位置范圍是01,因?yàn)轱@示2行if(yPos=0) /顯示第一行tmp = xPos;elsetmp = xPos + 0x40; /顯示第二行tmp |= 0x80;Write_com(tmp);5.5 主函數(shù)軟件主要分成四個(gè)部分:串口配置,ADC0832的初始化,等待接受數(shù)據(jù)和輸出

15、數(shù)據(jù)。程序如下:void main(void)InitUART(); /串口初始化Lcd_init();Write_String("Weight: ", 0, 0);Write_String("H=", 1, 0);Write_String("L=", 1, 6);Beep = 1;while(1) Process10ms(); DispVal(Wh, 1, 2);DispVal(Wl, 1, 8); CheckProcess();if (flagget10s = 1)flagget10s = 0;Get_temp(sum*100);

16、 ET0 = 1;TR0 = 1;Disp_Voltage(); /采集電壓并發(fā)送 參考文獻(xiàn)1 周杏鵬,傳感器與檢測技術(shù),清華大學(xué)出版社,20102 趙燕,傳感器原理及應(yīng)用,北京大學(xué)出版社,20093 王幸之、鐘愛琴、王雷、王閃,AT89系列單片機(jī)原理與接口技術(shù),北京航天大學(xué)出版社,20044 高玉芹,單片機(jī)原理與應(yīng)用及C51編程技術(shù),機(jī)械工業(yè)出版社,20115 張毅剛、彭喜元、彭宇,單片機(jī)原理與應(yīng)用,高等教育出版社,20106 劉小成、吳清、夏春明,單片機(jī)原理及C51應(yīng)用,華東理工大學(xué)出版社,20097 國務(wù)院全國治理車輛超限超載領(lǐng)導(dǎo)工作小組,全國治理車輛超限超載工作簡報(bào)Z,2004(1)8

17、 張勇、吳文兵、謝竹生、張雨,汽車輪重動(dòng)態(tài)檢測中的單片機(jī),汽車科技,2004(3)9 張積東,單片機(jī)51/98開發(fā)與應(yīng)用,電子工業(yè)出版社,199410 周航慈,單片機(jī)程序設(shè)計(jì)基礎(chǔ),北京航空航天大學(xué)出版社,1997單片機(jī)系統(tǒng)部分硬件原理圖單片機(jī)程序#include "reg52.h"#include "My_type.h" /數(shù)據(jù)類型頭文件#include <intrins.h>#define nop() _nop_()#define uchar unsigned char#define uint unsigned intsbit Lcd_rs

18、=P20;sbit Lcd_rw=P21;sbit Lcd_en=P22;sbit key1 = P35;sbit key2 = P36;sbit key3 = P37;sbit Beep = P27;sbit Led = P26;sbit CS=P13; /使能sbit CLK=P11; /時(shí)鐘sbit Do=P12; / 數(shù)據(jù)輸出sbit Di=P12; /數(shù)據(jù)輸入#define first_channel 0x02 /通道1#define second_channel 0x03 /通道2uchar CH = first_channel; #define Fclk 11059200UL /

19、*使用11.0592M晶體*/#define BitRate 9600UL /*波特率定義為9600*/uint8 Sending; /發(fā)送標(biāo)志code uint16 AD_Tab41 = 512, 2048, 2970, 3840, 4659, 5581, 6349, 7117, 7782, 8397, 9165, 9830, 10291, 11162, 11520, 11981, 12749, 13210, 13926, 14490, 15206, 15821, 16538, 17357, 17971, 18842, 19814, 20838, 21760, 22477, 23091, 2

20、3603, 23962, 24371, 24678, 24883, 25037, 25190, 25293, 25395, 25600;uint8 temp_zheng;float temp_xiao;uint8 flag10ms = 0;uint8 flag50ms = 0;uint8 get10s = 0;uint8 flagget10s = 0;uint8 Alarmflag = 1;uint16 sum = 0;uint8 count5ms = 0;uint8 Wh = 40;uint8 Wl = 20;void Delay_lcd1602(uint dly) uint i; for(

21、; dly>0; dly-) for(i=0; i<100; i+);bit Lcd_busy()bit result;Lcd_rw = 1;Lcd_rs = 0;Lcd_en = 1;nop();nop();nop();nop();result = (bit)(P0&0x80);Lcd_en = 0;return(result);void Write_com(uchar com) while(Lcd_busy(); /LCD忙等待Lcd_rs = 0;Lcd_rw = 0;P0 = com;Delay_lcd1602(5);Lcd_en = 1;Delay_lcd1602

22、(5);Lcd_en = 0;void Write_data(uchar date) while(Lcd_busy(); /LCD忙等待Lcd_rs = 1;Lcd_rw = 0;P0 = date;Delay_lcd1602(5);Lcd_en = 1;Delay_lcd1602(5);Lcd_en = 0;void Lcd_init()Lcd_en = 0;Write_com(0x38);Delay_lcd1602(5);Write_com(0x0c);Delay_lcd1602(5);Write_com(0x04);Delay_lcd1602(5);Write_com(0x01);Del

23、ay_lcd1602(5); void Lcd_Pos(uchar yPos,uchar xPos)/設(shè)置第(xPos,yPos)個(gè)字符的DDRAM地址 uchar tmp;xPos &= 0x0f; /x位置范圍是015,因?yàn)轱@示15列yPos &= 0x01; /y位置范圍是01,因?yàn)轱@示2行if(yPos=0) /顯示第一行tmp = xPos;elsetmp = xPos + 0x40; /顯示第二行tmp |= 0x80;Write_com(tmp);void Write_char(uchar c,uchar xPos,uchar yPos) /定義Write_Cha

24、r函數(shù)Lcd_Pos(xPos,yPos);Write_data(c); void Write_String(uchar *s,uchar xPos,uchar yPos) /定義Write_String函數(shù)uchar i = 0;Lcd_Pos(xPos,yPos);while(*s)Write_data(*(s+);if(+i>16) break;void InitUART(void)EA=0;TMOD|=0x21; /定時(shí)器1工作在模式2SCON=0x50; /串口工作在模式1TCON=0x05;TH1=256-Fclk/(BitRate*12*16);TL1=256-Fclk/(

25、BitRate*12*16); TH0 = (65535 - 1000)/256;TL0 = (65535 - 1000)%256;ET0 = 1;TR0 = 1;PCON=0x80; /串口波特率加倍ES=1; /串行中斷允許TR1=1; /啟動(dòng)定時(shí)器1REN=1; /允許接收 EA=1; /允許中斷void UartISR(void) interrupt 4if(RI) /收到數(shù)據(jù)RI=0; /清中斷請(qǐng)求else /發(fā)送完一字節(jié)數(shù)據(jù)TI=0;Sending=0; /清正在發(fā)送標(biāo)志void PutChar_to_Uart(uint8 d)Sending=1;SBUF=d;while(Send

26、ing);void Prints(uint8 *pd)while(*pd)!='0')PutChar_to_Uart(*pd);pd+;unsigned char ADconv(void)unsigned char i;unsigned int data_f=0,data_c=0;ET0 = 0;TR0 = 0;Di=1;CS=1;_nop_(); CS=0;Di=1; ;/芯片使能之前的初始化。第一個(gè)下降沿CLK=1;_nop_();_nop_();CLK=0; / 確定通道模式、第2個(gè)下降沿_nop_();_nop_();CLK=1;Di=(bit)(0x02&CH

27、); /設(shè)定通道初始化_nop_();CLK=0;_nop_();_nop_(); CLK=1; Di=(bit)(0x01&CH); /設(shè)定通道初始化 .第3個(gè)下降沿_nop_();_nop_(); CLK=0; /AD轉(zhuǎn)化的初始化完成。Di=1; CLK=1;_nop_();_nop_(); CLK=0;_nop_(); CLK=1;for(i=8;i>0;i-)/得到一個(gè)正常排序的8位數(shù)據(jù) data_f|=Do;data_f<<=1; CLK=1;_nop_();_nop_(); CLK=0;_nop_(); for(i=8;i>0;i-)/得到一個(gè)反序排

28、列的8位數(shù)據(jù)data_c<<=1;data_c|=Do;_nop_();CLK=1;_nop_();_nop_();CLK=0;_nop_();CLK=0;_nop_();_nop_();CLK=1;_nop_();_nop_();CLK=0;_nop_();_nop_();CLK=1;_nop_();CS=1;_nop_();_nop_();ET0 = 1;TR0 = 1;return data_f;/*void delay_ms(unsigned int x) unsigned int i,j; i=0; for(i=0;i<x;i+) j=108; while(j-);

29、 */void DispVal(uint8 pdat, uint8 x, uint8 y)/*PutChar_to_Uart(pdat/100 + 0x30);PutChar_to_Uart(pdat%100/10 + 0x30);PutChar_to_Uart(pdat%100%10 + 0x30);*/Write_char(pdat/100 + 0x30, x, y);Write_char(pdat%100/10 + 0x30, x, y+1);Write_char(pdat%100%10 + 0x30, x, y+2);void Process10ms(void)if (flag10ms

30、 = 1)flag10ms = 0;count5ms +;if (count5ms = 5)count5ms = 0;flag50ms = 1; get10s+;sum = sum + ADconv();if (get10s = 10)get10s = 0;ET0 = 0;TR0 = 0;flagget10s = 1;sum = sum / 10;if (key1=0) while (!key1);Wh+;if (Wh >=51)Wh = 40;if (key2=0) while (!key2);Wl+;if (Wl >=Wh)Wl = 20;if (key3=0)while (!

31、key3)Alarmflag = Alarmflag;/*void Process50ms(void)if (flag50ms = 1)flag50ms = 0; Led = Led;*/void CheckProcess()uint16 Wig, SetH, SetL;Wig = (uint16)temp_zheng*100 + (uint16)(temp_xiao*100);SetH = (uint16)Wh*100;SetL = (uint16)Wl*100;if (Wig>SetH) && (Alarmflag=1)Beep = 0;else if (Wig<

32、;SetL) && (Alarmflag=1)Beep = 0;else if (Alarmflag = 0) Beep = 1;elseBeep = 1;/*uchar Get10sAD(void)uchar i;uint sum = 0;for (i=0; i<10; i+)sum = sum + ADconv();delay_ms(10); sum = sum/10;return sum;*/void Get_temp(uint ad_temp) uint8 n = 0;while(1)if (ad_temp >= AD_Tabn) && (ad_temp <= AD_Tabn+1) temp_zheng = n + 10;temp_xiao =(1.0*(ad_temp - AD_Tabn)/(AD_Tabn+1 - AD_Tabn); break; n+; if (n>40) break; void Disp_Voltage(void)uchar temp;temp = (uchar)(temp_xi

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論