



版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、基于單片機的低功耗溫度記錄儀設計方案附錄 1:總體電路圖:附錄 2:單片機程序:#include #include #define uchar unsigned charbit Tflag;/溫度正負標志sbit DQ=P37;/溫度輸入口sbit DIN=P07;/LED小數點控制uchar codeditab16=0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09;/溫度小數部分用查表法unsigned char code dispcode=0x3f,0x06,0x5b,0x4f,0
2、x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40;/共陰led段碼表0x40負unsigned char dispbitcode=0xfe,0xfd,0xfb,0xf7,;uchar data temp_data2=0x00,0x00;/unsigned char dispbuf5=0,0,0,0,0;讀出溫度暫放void digitalshow(unsigned char a3,unsigned char a2,unsigned char a1,unsigned char a0)unsigned char i;dispbuf0=a0;dispbuf1=a1;dis
3、pbuf2=a2;dispbuf3=a3;for(i=0;i4;i+)P2=0xff;/關閉所有顯示P0=dispcodedispbufi;P2=dispbitcodei;if(i=1)DIN=1;/*該程序為總線上只有一個器件*/ 毫秒延時 11.059 Mhzvoid dmsec (unsigned int count)unsigned int i;/ 1ms延時while (count-)for (i=0;i125;i+)void Delay(unsigned int num)/延時函數while( -num );/ 復位脈沖void tmreset (void)DQ=0;Delay(9
4、0);/精確延時大于480usDQ=1;Delay(4);/ 90,4可以小范圍變化/ 存在脈沖void tmpre (void)while (DQ);while (DQ);Delay(4);/ 讀一個位bit tmrbit (void)unsigned int i;bit dat;DQ = 0; i+;/ i+;大概1usDQ = 1; i+; i+;dat = DQ;Delay(8);return (dat);/ 讀一個比特unsigned char tmrbyte (void)unsigned char i,j,dat;dat = 0;for (i=1;i=8;i+)j = tmrbit
5、 ();dat = (j 1);return (dat);/ 寫一個比特void tmwbyte (unsigned char dat)unsigned int i;unsigned char j;bit testb;for (j=1;j 1;/從低位開始?if (testb)/ Write 1DQ=0;i+; i+;/先拉低/ 1usDQ=1;Delay(4);else/ Write 0DQ=0;Delay(4);/大一點沒影響,但不能太大,寫一個位在30us 內DQ=1;i+; i+;/再拉高/ds1820開始轉換void tmstart (void)dmsec(1);tmreset ()
6、;tmpre ();dmsec (1);tmwbyte (0xcc);tmwbyte (0x44);/ skip rom/轉換/ 讀取溫度read_temp()tmreset ();tmpre ();dmsec (1);tmwbyte (0xcc);/ skip romtmwbyte (0xbe);/轉換temp_data0 = tmrbyte ();temp_data1= tmrbyte ();if(temp_data1 & 0x80)=0x80)/LSB低8位/MSB 高 8位/ 判斷溫度正負temp_data1=temp_data1;temp_data0=temp_data0+1;/ 負
7、溫度處理( DS18B20的負溫度是正的反碼,即將它取反+1,就得到正的溫度)Tflag=0;elseTflag=1;/* MAIN */void main (void)uchar last;uchar lsb,msb;uchar i;tmstart();dmsec(450);/初始化ds18b20while(1)tmstart();/ ds1820dmsec(2);read_temp(); /讀取溫度開始轉換dispbuf4=temp_data0&0x0f;dispbuf0=ditabdispbuf4;dispbuf4=(temp_data0&0xf0)4)|(temp_data1&0x0f
8、)0;i-)if(Tflag=1)/正溫if(dispbuf4126) if(dispbuf4100)digitalshow(10,dispbuf2,dispbuf1,dispbuf0); /溫度小于100 度,則百位不顯示elsemsb=msb%10;/溫度大于 100 度時十位需要在除digitalshow(Tflag,dispbuf2,dispbuf1,dispbuf0); /10 取余溫度大于100 度,百位顯示為1else digitalshow(11,11,11,11); /溫度大于125 度時顯示 -elseif(dispbuf456)/負溫大于 -55 度時正常顯示digita
9、lshow(11,dispbuf2,dispbuf1,dispbuf0);elsedigitalshow(11,11,11,11);/負溫小于 -55 度時顯示為 -附錄3PC機程序:Dim n As IntegerDim t As Integer定義全局變量Private Sub Command1_Click()Dim i As Integer單擊溫度設置按鈕程序If Len(Trim(Text2.Text) 100 Or Val(Text2.Text) 0 Or Left(Right(Text2.Text, 2), 1) . ThenLabel3.Caption = 設定輸入錯誤,不發送
10、ElseLabel3.Caption = Select Case Len(Trim(Text2.Text)Case 5Text8.Text = Trim(Text2.Text)Case 4Text8.Text = 0 & Trim(Text2.Text)Case 3Text8.Text = 00 & Trim(Text2.Text)End SelectMSComm1.Output = CTimer2.Enabled = TrueEnd IfEnd SubPrivate Sub Command2_Click()單擊按鈕執行數據采集或停止采集If Command2.Caption = 采集數據 T
11、henCommand2.Caption = 停止采集 Timer1.Enabled = TrueMSComm1.Output = AElseCommand2.Caption = 采集數據 Timer1.Enabled = FalseMSComm1.Output = BMSComm1.Output = BEnd IfEnd SubPrivate Sub Command4_Click()Text1.Text = Text4.Text = End Sub單擊按鈕清空數據Private Sub Command5_Click() If Command5.Caption = 單擊按鈕開關通信端口開通信端口
12、 ThenCommand5.Caption = 關通信端口 COM.Enabled = FalseCommand2.Enabled = TrueCommand1.Enabled = TrueText2.Enabled = TrueSelect Case COM.ListIndex指定端口號( COM)Case 0MSComm1.CommPort = 1Case 1MSComm1.CommPort = 2Case 2MSComm1.CommPort = 3Case 3MSComm1.CommPort = 4End SelectMSComm1.Settings = 9600,n,8,19600波特
13、,無校驗, 8 位數據位, 1 位停止位MSComm1.InputMode = comInputModeText 接收文本數據MSComm1.InputLen = 0讀出接收緩沖區的所有內容MSComm1.InBufferSize = 1024MSComm1.OutBufferSize = 1024MSComm1.RThreshold = 1每接收到 1 個字符,發生 1 次事件MSComm1.PortOpen = True打開串口ElseTimer1.Enabled = FalseMSComm1.Output = BMSComm1.Output = BCommand5.Caption = 開
14、通信端口 COM.Enabled = TrueMSComm1.PortOpen = FalseCommand2.Caption = 采集數據 Command2.Enabled = FalseCommand1.Enabled = FalseText2.Enabled = FalseEnd IfEnd SubPrivate Sub Command7_Click()單擊按鈕保存溫度數據CommonDialog1.Action = 2Open CommonDialog1.FileName For Append As #1Write #1, NowWrite #1, Text4.TextClose #1
15、End SubPrivate Sub Form_Load()COM.AddItem COM1COM.AddItem COM2COM.AddItem COM3COM.AddItem COM4End SubPrivate Sub MSComm1_OnComm()Select Case MSComm1.CommEventCase comEvReceiveText1.Text = Text1.Text & MSComm1.InputCase ElseEnd SelectEnd Sub串口接收到數據時讀出數據Private Sub Text1_Change() 對讀出的數據進行處理 If (Len(Te
16、xt1.Text) Mod 4 = 0) And (Len(Text1.Text) 0) Then Text3.Text = Right$(Text1.Text, 4) & Text4.Text = Time & Chr$(6) & Chr$(6) & Chr$(6) & Text3.Text & & Text4.TextText7.Text = Time$n = n + 1End IfIf n = 100 Thenn = 0Text1.Text = End IfEnd SubPrivate Sub Text5_Change() Timer1.Interval = Val(Text5.Text
17、) * 1000 End Sub改變讀數據的時間Private Sub Timer1_Timer()采集數據后進行繪圖MSComm1.Output = ADim a As SingleDim a1 As StringDim a2 As StringDim a3 As StringDim k As IntegerStatic b(200) As IntegerText7.Text = TimeFor k = 1 To 199b(k) = b(k + 1)Next kb(200) = Val(Text3.Text)With MSChart1For i = 1 To 200a = Val(Mid(T
18、ext7.Text,1, 2) * 3600 + Val(Mid(Text7.Text,4,2) *60+Val(Mid(Text7.Text, 7, 2) - 200 * Val(Text5.Text) + i * Val(Text5.Text) + 1 If a 86400 Thena = a - 86400End IfIf a 3600 10 Thena1 = 0 & (a 3600)Elsea1 = Str(a 3600)End IfIf (a Mod 3600) 60 10 Thena2 = 0 & (a Mod 3600) 60)Elsea2 = (a Mod 3600) 60End IfIf (a Mod 3600) Mod 60) 10 Thena3 = 0 & (a Mod 3600) Mod 60)Elsea3 = (a Mod 3600) Mod 60)End If.Row = i.Data = b(i).RowLabel = a1 & : & a2 & : & a3Next iEnd WithEnd SubPrivate Sub Timer2_Timer()設置溫度時間隔開發送數據的時間,以使If t = 0 ThenMSComm1.Output = Mid(Text8.Text, 1, 1)t = t
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- Inditex集團ESG實踐對企業價值的影響及路徑研究
- 2025年深圳市聯合創藝建筑設計有限公司-企業報告(供應商版)
- 辣條行業市場分析報告2024年
- 2025年閘閥項目安全調研評估報告
- 2025年蛇油美白潤膚霜行業深度研究分析報告
- 2025年飲水健康專題報告會主持詞
- 2025年中國血管結扎夾行業市場前景預測及投資價值評估分析報告
- 2025年中國建材建工檢測行業市場前景預測及投資價值評估分析報告
- 風電場項目可行性研究報告評審合同
- 2025年新疆天然氣市場調查報告
- 《質量成本培訓教材》課件
- 人教版-八年級數學上冊-競賽專題分式方程(含答案)
- DB31∕723-2019 鋁塑復合板單位產品能源消耗限額
- 【MOOC】宋詞經典-浙江大學 中國大學慕課MOOC答案
- 公司內部審計制度模版(2篇)
- Charlson合并癥指數診斷ICD-10編碼表
- GB/T 22671-2024外轉子電動機試驗方法
- 聯通新員工培訓
- 新版加油站全員安全生產責任制
- 2025年日歷表(A4版含農歷可編輯)
- GB/T 3045-2024普通磨料碳化硅化學分析方法
評論
0/150
提交評論