基于熱敏電阻的數(shù)字溫度計(jì)_第1頁(yè)
基于熱敏電阻的數(shù)字溫度計(jì)_第2頁(yè)
基于熱敏電阻的數(shù)字溫度計(jì)_第3頁(yè)
基于熱敏電阻的數(shù)字溫度計(jì)_第4頁(yè)
基于熱敏電阻的數(shù)字溫度計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩18頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、科信學(xué)院?jiǎn)纹瑱C(jī)應(yīng)用系統(tǒng)(三級(jí))項(xiàng)目設(shè)計(jì)說(shuō)明書(shū)(2012/2013學(xué)年第二學(xué)期)題 目 : 基于熱敏電阻的數(shù)字溫度計(jì) _專業(yè)班級(jí) : 電子信息工程1021 學(xué)生姓名 : 指導(dǎo)教師 : 馬永強(qiáng) 吳開(kāi)興 劉會(huì)軍 馬小進(jìn) 設(shè)計(jì)周數(shù) : 兩周 設(shè)計(jì)成績(jī) : 2013年6月28日基于熱敏電阻的數(shù)字溫度計(jì)目錄1實(shí)驗(yàn)設(shè)計(jì)目的22系統(tǒng)軟件設(shè)計(jì)22.1軟件總體流程設(shè)計(jì)22.2系統(tǒng)設(shè)計(jì)及主要程序32.2.1系統(tǒng)主函數(shù)32.2.2漢顯lcd1286442.2.3時(shí)鐘芯片ds130262.2.4adc0832112.3上位機(jī)設(shè)計(jì)及主要代碼142.3.1serialport 組件142.3.2串口操作152.3.3數(shù)據(jù)的

2、接收152.3.4保存數(shù)據(jù)與清空數(shù)據(jù)173系統(tǒng)硬件電路設(shè)計(jì)173.1恒溫橋電路173.2信號(hào)放大電路183.3a/d轉(zhuǎn)換電路183.4控制電路193.5顯示電路204總結(jié)與展望20參考文獻(xiàn)211實(shí)驗(yàn)設(shè)計(jì)目的 隨著以知識(shí)經(jīng)濟(jì)為特征的信息化時(shí)代的到來(lái)人們對(duì)儀器儀表的認(rèn)識(shí)更加深入,溫度作為一個(gè)重要的物理量,是工業(yè)生產(chǎn)過(guò)程中最普遍,最重要的工藝參數(shù)之一。隨著工業(yè)的不斷發(fā)展,對(duì)溫度的測(cè)量的要求也越來(lái)越高,而且測(cè)量的范圍也越來(lái)越廣,對(duì)溫度的檢測(cè)技術(shù)的要求也越來(lái)越高,因此,溫度測(cè)量及其測(cè)量技術(shù)的研究也是一個(gè)很重要的課題。 本系統(tǒng)的溫度測(cè)量采用的就是熱阻效應(yīng)。溫度測(cè)量模塊主要為溫度測(cè)量電橋,當(dāng)溫度發(fā)

3、生變化時(shí),電橋失去平衡,從而在電橋輸出端有電壓輸出,但該電壓很小。將輸出的微弱電壓信號(hào)通過(guò)op07放大,將放大后的信號(hào)輸入ad轉(zhuǎn)換芯片,  進(jìn)行a/d轉(zhuǎn)換后,就可以用單片機(jī)進(jìn)行數(shù)據(jù)的處理,在顯示電路上,就可以將被測(cè)溫度顯示出來(lái)。單片機(jī)顯示模塊電 源 模 塊測(cè)溫模塊信號(hào)放大模塊ad轉(zhuǎn)換模塊圖1-1系統(tǒng)框圖2系統(tǒng)軟件設(shè)計(jì)2.1軟件總體流程設(shè)計(jì)軟件設(shè)計(jì)采用c語(yǔ)言編程,運(yùn)用模塊化程序設(shè)計(jì)思想,對(duì)不同功能模塊的程序進(jìn)行分別編程,以便移植或調(diào)用,這樣使軟件層次結(jié)構(gòu)清晰,有利于軟件的調(diào)試修改。數(shù)字溫度計(jì)系統(tǒng)軟件部分采用模塊化設(shè)計(jì)思想,將系統(tǒng)分為主程序、初始化處理模塊、中斷檢測(cè)模塊、延時(shí)處

4、理模塊、數(shù)據(jù)處理模塊、顯示模塊,其軟件系統(tǒng)的主程序?qū)崿F(xiàn)流程如下圖所示: 開(kāi) 始ds1302時(shí)鐘信息采集數(shù)據(jù)處理12864顯示結(jié) 束系統(tǒng)初始化pt100溫度采集圖2-1系統(tǒng)軟件流程2.2系統(tǒng)設(shè)計(jì)及主要程序2.2.1系統(tǒng)主函數(shù)程序的入口,分別調(diào)用了其他頭文件,實(shí)現(xiàn)了lcd12864漢顯的顯示,ds1302時(shí)鐘芯片時(shí)間的運(yùn)行,adc0832模數(shù)轉(zhuǎn)換。主要代碼實(shí)現(xiàn)如下:#include "reg52.h"#include "intrins.h"#include "lcd12864.h"#include "ds1302.h"

5、#include "adc0832.h"#define uchar unsigned char#define uint unsigned intvoid main( void )com_init();v_lcd12864init_f() ;v_lcd12864putstring_f( 1,0, "年") ;v_lcd12864putstring_f( 3,0, "月") ;v_lcd12864putstring_f( 5,0, "日") ;v_lcd12864putstring_f( 1,1, "時(shí)&qu

6、ot;) ;v_lcd12864putstring_f( 3,1, "分") ;v_lcd12864putstring_f( 5,1, "秒") ;v_lcd12864putstring_f( 5,2, "");while(1)run_ds1302();displayadc ();send(); _nop_; 2.2.2漢顯lcd12864 主要實(shí)現(xiàn)漢顯lcd12864接收時(shí)鐘芯片ds1302與a/d轉(zhuǎn)換模塊傳遞來(lái)的溫度與時(shí)間,并顯示在液晶屏上。主要代碼實(shí)現(xiàn)如下:#include"lcd12864.h"#inclu

7、de "intrins.h" #define uchar unsigned char#define uint unsigned intvoid v_lcd12864checkbusy_f( void ) /忙檢測(cè)函數(shù) unsigned int ntimeout = 0 ; set_inc set_read clr_en set_en while( ( io_lcd12864_dataport & 0x80 ) && ( +ntimeout != 0 ) ) ; clr_en set_inc set_readvoid v_lcd12864sendcmd

8、_f( unsigned char bycmd ) /發(fā)送命令 v_lcd12864checkbusy_f() ; set_inc set_write clr_en io_lcd12864_dataport = bycmd ; _nop_(); _nop_(); set_en _nop_(); _nop_(); clr_en set_read set_incvoid v_lcd12864senddata_f( unsigned char bydata ) /發(fā)送數(shù)據(jù) v_lcd12864checkbusy_f() ; set_data set_write clr_en io_lcd12864_

9、dataport = bydata ; _nop_(); _nop_(); set_en _nop_(); _nop_(); clr_en set_read set_incvoid v_delayms_f( unsigned int ndelay ) /延時(shí) unsigned int i ; for( ; ndelay > 0 ; ndelay- ) for( i = 125 ; i > 0 ; i- ) ; void v_lcd12864init_f( void ) /初始化 v_lcd12864sendcmd_f( 0x30 ) ; /基本指令集 v_delayms_f( 50

10、 ) ; v_lcd12864sendcmd_f( 0x01 ) ; /清屏 v_delayms_f( 50 ) ; v_lcd12864sendcmd_f( 0x06 ) ; /光標(biāo)右移 v_delayms_f( 50 ) ; v_lcd12864sendcmd_f( 0x0c ) ; /開(kāi)顯示void v_lcd12864setaddress_f( unsigned char x, y ) /地址轉(zhuǎn)換 unsigned char byaddress ; switch( y ) case 0 : byaddress = 0x80 + x ; break; case 1 : byaddress

11、 = 0x90 + x ; break ; case 2 : byaddress = 0x88 + x ; break ; case 3 : byaddress = 0x98 + x ; break ; default : break ; v_lcd12864sendcmd_f( byaddress ) ;void v_lcd12864putstring_f( uchar x, uchar y, uchar *pdata ) v_lcd12864setaddress_f( x, y ) ; while( *pdata != '0' ) v_lcd12864senddata_f(

12、 *pdata+ ) ; 2.2.3時(shí)鐘芯片ds1302 主要為漢顯12864提供時(shí)間輸出。主要代碼實(shí)現(xiàn)如下:#include"ds1302.h"#include"intrins.h"#include"lcd12864.h"#define uchar unsigned char#define uint unsigned intvoid v_rtinputbyte(uchar ucda)/ 功能 : 往ds1302寫入1byte數(shù)據(jù)uchar i;acc = ucda;t_rst = 1;for(i=8; i>0; i-)t_io

13、 = acc0;t_clk = 1;t_clk = 0;acc = acc >> 1;uchar uc_rtoutputbyte(void)/從ds1302讀取1byte數(shù)據(jù) uchar i;t_rst = 1;for(i=8; i>0; i-)acc = acc >>1;t_io=1;acc7 = t_io;t_clk = 1;t_clk = 0;return(acc);void v_w1302(uchar ucaddr, uchar ucda) /往ds1302寫入數(shù)據(jù) ucaddr: ds1302地址, ucda: 要寫的數(shù)據(jù)t_rst = 0;t_clk

14、= 0;t_rst = 1;v_rtinputbyte(ucaddr); / 寫地址 _nop_();_nop_();v_rtinputbyte(ucda); / 寫1byte數(shù)據(jù)t_clk = 1;t_rst = 0;uchar uc_r1302(uchar ucaddr) /讀取ds1302某地址的數(shù)據(jù) ucaddr: ds1302地址uchar ucda;t_rst = 0;t_clk = 0;t_rst = 1;v_rtinputbyte(ucaddr); /寫地址,命令_nop_();_nop_();ucda = uc_rtoutputbyte(); /讀1byte數(shù)據(jù)t_clk =

15、 1;t_rst = 0;return(ucda); /ucda :讀取的數(shù)據(jù)void v_burstw1302t(uchar *psecda) /往ds1302寫入時(shí)鐘數(shù)據(jù)uchar i;v_w1302(0x8e, 0x00); /控制命令,wp=0,寫操作t_rst = 0;t_clk = 0;t_rst = 1;v_rtinputbyte(0xbe); /0xbe:時(shí)鐘多字節(jié)寫命令for(i=8; i>0; i-) /8byte = 7byte 時(shí)鐘數(shù)據(jù) + 1byte 控制v_rtinputbyte(*psecda); /寫1byte數(shù)據(jù)psecda+;t_clk = 1;t_r

16、st = 0;void v_burstr1302t(uchar *psecda) /讀取ds1302時(shí)鐘數(shù)據(jù)uchar i;t_rst = 0;t_clk = 0;t_rst = 1;v_rtinputbyte(0xbf); /0xbf:時(shí)鐘多字節(jié)讀命令for(i=8; i>0; i-)*psecda = uc_rtoutputbyte(); /讀1byte數(shù)據(jù)psecda+;t_clk = 1;t_rst = 0;void v_burstw1302r(uchar *preda) /往ds1302寄存器數(shù)寫入數(shù)據(jù) preda: 寄存器數(shù)據(jù)地址uchar i;v_w1302(0x8e,0x

17、00); /控制命令,wp=0,寫操作t_rst = 0;t_clk = 0;t_rst = 1;v_rtinputbyte(0xfe); /0xbe:時(shí)鐘多字節(jié)寫命令for(i=31; i>0; i-) /31byte 寄存器數(shù)據(jù)v_rtinputbyte(*preda); /寫1byte數(shù)據(jù)preda+;t_clk = 1;t_rst = 0;void v_burstr1302r(uchar *preda) /讀取ds1302寄存器數(shù)據(jù) preda: 寄存器數(shù)據(jù)地址uchar i;t_rst = 0;t_clk = 0;t_rst = 1;v_rtinputbyte(0xff); /

18、0xbf:時(shí)鐘多字節(jié)讀命令for(i=31; i>0; i-) /31byte 寄存器數(shù)據(jù)*preda = uc_rtoutputbyte(); /讀1byte數(shù)據(jù)preda+;t_clk = 1;t_rst = 0;/* 輸入 : psecda: 初始時(shí)間地址。初始時(shí)間格式為: 秒 分 時(shí) 日 月 星期 年* 7byte (bcd碼) 1b 1b 1b 1b 1b 1b 1b*/void v_set1302(uchar *psecda) /設(shè)置初始時(shí)間 uchar i;uchar ucaddr = 0x80;v_w1302(0x8e, 0x00); /控制命令,wp=0,寫操作for(

19、i=7; i>0; i-)v_w1302(ucaddr, *psecda); / 秒 分 時(shí) 日 月 星期 年psecda+;ucaddr += 2;v_w1302(0x8e, 0x80); /控制命令,wp=1,寫保護(hù)void v_get1302(uchar uccurtime)/讀取ds1302當(dāng)前時(shí)間 uccurtime: 保存當(dāng)前時(shí)間地址。 bcd碼uchar i;uchar ucaddr = 0x81;for(i=0; i<7; i+)uccurtimei = uc_r1302(ucaddr); /格式為: 秒 分 時(shí) 日 月 星期 年ucaddr += 2;uchar

20、dectobcd(uchar dec) /dec碼轉(zhuǎn)換為bcd碼uchar bcd;bcd = 0;while(dec >= 10) dec -= 10; bcd+; bcd <<= 4;bcd |= dec;return bcd;uchar bcdtodec(uchar bcd)/bcd碼轉(zhuǎn)換為dec碼uchar data1;data1 = bcd & 0x0f; /取bcd低4位bcd = bcd & 0x70; /剔除bcd的最高位和低4位。data1 += bcd >> 1;data1 += bcd >> 3; /用位移代替乘法

21、運(yùn)算return data1;void write_ds1302init(void) /寫入數(shù)據(jù) 初始化v_w1302(0x8e,0);v_w1302(0x80,0x50);/寫入秒v_w1302(0x8e,0);v_w1302(0x82,0x59);/寫入分v_w1302(0x8e,0);v_w1302(0x84,0x07);/寫入小時(shí)v_w1302(0x8e,0);v_w1302(0x86,0x08);/寫入日v_w1302(0x8e,0);v_w1302(0x88,0x06);/寫入月v_w1302(0x8e,0);v_w1302(0x8a,0x05);/寫入星期v_w1302(0x8e

22、,0);v_w1302(0x8c,0x13);/寫入年void run_ds1302()uchar sec, min, hour, day, month, year , week;v_w1302(0x8f, 0);sec = bcdtodec(uc_r1302(0x81); /讀出ds1302中的秒v_w1302(0x8f, 0);min = bcdtodec(uc_r1302(0x83); /讀出ds1302中的分v_w1302(0x8f, 0);hour = bcdtodec(uc_r1302(0x85); /讀出ds1302中的小時(shí)v_w1302(0x8f, 0);day = bcdto

23、dec(uc_r1302(0x87); /讀出ds1302中的日v_w1302(0x8f, 0);month = bcdtodec(uc_r1302(0x89); /讀出ds1302中的月v_w1302(0x8f, 0);year = bcdtodec(uc_r1302(0x8d); /讀出ds1302中的年v_w1302(0x8f,0);week = bcdtodec(uc_r1302(0x8b); /讀出 星期v_lcd12864setaddress_f(0,0) ;v_lcd12864senddata_f( year /10 % 10 + 48 ) ;v_lcd12864senddata

24、_f( year% 10 + 48 ) ;v_lcd12864setaddress_f(2,0) ;v_lcd12864senddata_f( month / 10 % 10 + 48 ) ;v_lcd12864senddata_f( month % 10 + 48 ) ;v_lcd12864setaddress_f(4,0) ;v_lcd12864senddata_f( day / 10 % 10 + 48 ) ;v_lcd12864senddata_f( day % 10 + 48 ) ;v_lcd12864setaddress_f(6,0);v_lcd12864senddata_f( w

25、eek + 48);v_lcd12864setaddress_f(0,1) ;v_lcd12864senddata_f( hour /10 % 10 + 48 ) ;v_lcd12864senddata_f( hour % 10 + 48 ) ;v_lcd12864setaddress_f(2,1) ;v_lcd12864senddata_f( min /10 % 10 + 48 ) ;v_lcd12864senddata_f( min % 10 + 48 ) ;v_lcd12864setaddress_f(4,1) ;v_lcd12864senddata_f( sec /10 % 10 +

26、48 ) ;v_lcd12864senddata_f( sec % 10 + 48 ) ; 2.2.4adc0832 本系統(tǒng)最重要的模塊,是實(shí)現(xiàn)本項(xiàng)目數(shù)字溫度計(jì)系統(tǒng)基本功能的核心模塊,在本模塊中傳遞出0255共256個(gè)數(shù)字,然后通過(guò)分段計(jì)算得出溫度。本模塊代碼中還加入了串口通信,串口初始化為方式二,9600比特率。主要代碼實(shí)現(xiàn)如下:#include "adc0832.h"#include "intrins.h"#include"lcd12864.h"#define uchar unsigned char#define uint uns

27、igned int uchar l_temp; unsigned char lcdbuf110=""uchar adc0832_read(uchar ch)uchar i;uchar adc_buff=0;adc0832_cs = 1;adc0832_dio = 1; /啟動(dòng)位adc0832_clk = 0;adc0832_cs = 0;_nop_();adc0832_clk = 1; _nop_();adc0832_clk = 0;adc0832_dio = 1; /送 sgl/dif 位 _nop_();adc0832_clk = 1;_nop_();adc0832_c

28、lk = 0;if(ch=0) adc0832_dio = 0; /送轉(zhuǎn)換通道值else adc0832_dio = 1;adc0832_clk = 1;_nop_();adc0832_clk = 0;_nop_(); adc0832_dio = 1; /釋放dio端口,轉(zhuǎn)由adc控制for(i=0;i<8;i+)_nop_();adc0832_clk = 0;_nop_();adc0832_clk = 1;_nop_();if(adc0832_dio=1) adc_buff=adc_buff+1; /讀取8位數(shù)據(jù)adc_buff=adc_buff<<1;_nop_();_n

29、op_();adc0832_cs = 1;adc0832_clk = 1;return adc_buff; /返回轉(zhuǎn)換值unsigned int adc0832da_to_volage(unsigned char da)unsigned int volage;float tt;tt=da*4.95/255;volage= tt*100+0.5; return volage; void displayadc ()char i;int w;int temp ,temp2,l_temp1;unsigned long res;uint l_v;l_temp = adc0832_read(0); l_v

30、 = adc0832da_to_volage(l_temp);v_lcd12864setaddress_f(0,3) ; l_temp1 = l_temp * 2;res=(float)(2550000+110000*(512-l_temp1)/30)/(2550-11*(512-l_temp1)/30); temp=(float)(res*10000-10000000)/3851-545; temp2 = temp; if(temp >= 0) for(i=6;temp>0;i-) lcdbuf1i=temp%10+48; temp/=10; if(temp < 0 ) w

31、= -temp; for(i=6;w>0;i-) lcdbuf1i=w%10+48; w/=10; if(i>=0&&temp<0) if(temp > -10) lcdbuf1i = '0' i-; lcdbuf1i = '-' i-; for(;i>=0;i-) lcdbuf1i=' ' for(i=0;i<5;i+) lcdbuf1i=lcdbuf1i+1; if(lcdbuf14=' ')lcdbuf14='0' lcdbuf15='.'

32、v_lcd12864putstring_f( 0,2,lcdbuf1 );void com_init(void) /串口初始化 tmod = 0x20; pcon = 0x00; scon = 0x50; th1 = 0xfd; /波特率9600=11.0592*1000000/12/(0x100-0xfd)/32 tl1 = 0xfd; tr1 = 1;void send_char_com( unsigned char ch) /發(fā)送一個(gè)字符 sbuf=ch; while (ti= 0 ); ti= 0 ; void send_string_com( unsigned char *str,

33、unsigned int strlen) /向串口發(fā)送一個(gè)字符串,strlen為該字符串長(zhǎng)度 unsigned int k= 0 ; do send_char_com(*(str + k); k+; while (k < strlen); void send()send_string_com(lcdbuf1, 10);2.3上位機(jī)設(shè)計(jì)及主要代碼上位機(jī)即簡(jiǎn)易的串口小助手,主要用于對(duì)串口的管理及對(duì)下位機(jī)數(shù)據(jù)的接收。本程序有c#編寫,方便簡(jiǎn)潔。2.3.1serialport 組件在 visual studio 2008 開(kāi)發(fā)工具中,可以不再采 用第三方控件的方法來(lái)設(shè)計(jì)串口通訊程序。net fr

34、amework 2.0 類庫(kù)包含了 serialport 類,方便地實(shí)現(xiàn)了所需要串口通訊的多種功能,可以實(shí)現(xiàn)mscomm 編程方法快速轉(zhuǎn)換到以 serialport 類為核心的串口通訊。本上位機(jī)選用固定串口com1,波特率為9600,器件屬性如圖2-2所示:圖2-2設(shè)置串口屬性2.3.2串口操作在程序中添加一個(gè)打開(kāi)串口按鈕btnopen,btnopen.text 初始化為“打開(kāi)串口”。在btnopen 響應(yīng)函數(shù)中加入以下代碼:private void btnopen_click(object sender, eventargs e) if (btnopen.text = "打開(kāi)串口&

35、quot;) btnopen.text = "關(guān)閉串口" serialport1.open(); else btnopen.text = "打開(kāi)串口" serialport1.close(); 設(shè)置窗體響應(yīng)事件,代碼如下: private void form1_load(object sender, eventargs e) btnopen.text = "打開(kāi)串口" 這時(shí)該程序已經(jīng)具有開(kāi)關(guān)串口的作用,可以用單片機(jī)虛擬串口互連方法方法進(jìn)行串口測(cè)試。2.3.3數(shù)據(jù)的接收數(shù)據(jù)接收大體有兩種方案:1、主動(dòng)定時(shí)讀取;2、事件響應(yīng)驅(qū)動(dòng)。事件響應(yīng)

36、驅(qū)動(dòng)這種方式是串口通信上位機(jī)制作的主要方式,其采用中斷思想而成,當(dāng)串口輸入緩沖區(qū)中的字節(jié)數(shù)據(jù)大于某個(gè)設(shè)定的個(gè)數(shù)時(shí),觸發(fā)串口輸入中斷,這時(shí)在中斷程序中讀取串口輸入緩沖區(qū)中的數(shù)據(jù),具有實(shí)時(shí)性和靈活性,是個(gè)常用的較好的方法。本程序也是采用這種方法來(lái)進(jìn)行串口輸入緩沖區(qū)的實(shí)時(shí)數(shù)據(jù)讀取。 .net 中封裝了serialport 類表示串行端口資源。 命名空間: system.io.ports 程序集: system(在system.dll 中) 除了前面用到的串口常規(guī)屬性設(shè)置(buadrate,portname),這里用到了一個(gè)新的串口屬性:receivedbytesthreshol 獲取或設(shè)置datar

37、eceived 事件發(fā)生前內(nèi)部輸入緩沖區(qū)中的字節(jié)數(shù)。這個(gè)receivebytesthreshold 屬性即是設(shè)置串口輸入緩沖區(qū)中的數(shù)據(jù)字節(jié)大于receivebytesthreshold 時(shí)觸發(fā)datareceived 事件。主要代碼如下:string serialreadstring; private void serialport1_datareceived(object sender, serialdatareceivedeventargs e) serialreadstring = serialport1.readexisting(); this.rtb_receive.invoke (

38、 new methodinvoker ( delegate this.rtb_receive.appendtext(serialreadstring); ) ); 此時(shí)接收功能已經(jīng)實(shí)現(xiàn),如圖2-3所示:圖2-3上位機(jī)接收數(shù)據(jù) 2.3.4保存數(shù)據(jù)與清空數(shù)據(jù)本模塊僅為完善上位機(jī)功能,程序簡(jiǎn)單,主要代碼實(shí)現(xiàn)如下:private void btnsave_click(object sender, eventargs e) try system.io.filestream objfile; savefiledialog1.showdialog(); objfile = system.io.file.cr

39、eate(savefiledialog1.filename); objfile.close(); objfile.dispose(); system.io.streamwriter objfil = new system.io.streamwriter(savefiledialog1.filename); objfil.write(rtb_receive.text); objfil.close(); objfil.dispose(); catch messagebox.show("數(shù)據(jù)未保存!"); private void btnclear_click(object se

40、nder, eventargs e) rtb_receive.clear(); 3系統(tǒng)硬件電路設(shè)計(jì)系統(tǒng)由五大部分組成:(1)測(cè)溫電橋溫量電路;(2)數(shù)據(jù)采集,濾波,放大,ad轉(zhuǎn)換電路;(3)單片機(jī)at89c51控制及數(shù)據(jù)計(jì)算電路;(4)電源電路;(5)溫度實(shí)時(shí)顯示電路。3.1恒溫橋電路本次課程設(shè)計(jì)的測(cè)溫電路為測(cè)溫電橋,測(cè)溫電橋的主要部分是熱敏電阻。本次設(shè)計(jì)采用的是正溫度系數(shù)的熱電阻pt100,它是最常用的溫度傳感器之一,它具有較好的長(zhǎng)期穩(wěn)定性,利用適當(dāng)?shù)臄?shù)據(jù)處理設(shè)備就可以傳輸、顯示并記錄其溫度輸出。因?yàn)闊崦綦娮璧淖柚岛蜏囟瘸收汝P(guān)系,我們只需將已知電流流過(guò)該電阻就可以得到與溫度成正比的輸出電壓

41、。pt100是電阻式溫度傳感器,測(cè)溫的本質(zhì)其實(shí)是測(cè)量傳感器的電阻,通常是將電阻的變化轉(zhuǎn)換成電壓或電流等模擬信號(hào),然后再將模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào),再由處理器換算出相應(yīng)溫度。測(cè)溫電路原理圖如圖3-1所示:圖3-1測(cè)溫電路原理圖電橋原理圖如圖3-2所示:圖3-2電橋原理圖3.2信號(hào)放大電路本次課程設(shè)計(jì),放大模塊采用的是lm324放大集成電路。lm324是四運(yùn)放集成電路,它采用14腳雙列直插塑料封裝,外形如圖所示。它的內(nèi)部包含四組形式完全相同的運(yùn)算放大器,除電源共用外,四組運(yùn)放相互獨(dú)立。3.3a/d轉(zhuǎn)換電路此次課程設(shè)計(jì)的a/d轉(zhuǎn)換電路,負(fù)責(zé)將放大后的模擬電壓信號(hào)轉(zhuǎn)化為可供單片機(jī)識(shí)別的數(shù)字信號(hào)。此次課程設(shè)計(jì)選用adc0832芯片。adc0832為8位分辨率a/d轉(zhuǎn)換芯片,其最高分辨可達(dá)256級(jí),可以適應(yīng)一般的模擬量轉(zhuǎn)換要求。其內(nèi)部電源輸入與參考電壓的復(fù)用,使得芯片的模擬電壓輸入在05v之間。芯片轉(zhuǎn)換時(shí)間僅為32s,據(jù)有雙數(shù)據(jù)輸出可作為數(shù)據(jù)校驗(yàn),以減少數(shù)據(jù)誤差,轉(zhuǎn)換速度快且穩(wěn)定性能強(qiáng)。獨(dú)立的芯片使能輸入,使多器件掛接和處理器控制變的更加方便。通過(guò)di數(shù)據(jù)輸入端,可以輕易的實(shí)現(xiàn)通道功能的選擇。正常情況下adc0832與單片機(jī)的接口應(yīng)為4條數(shù)據(jù)線,分別是cs、clk、do、d

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論