基于单片机的低功耗温度记录仪设计方案.doc_第1页
基于单片机的低功耗温度记录仪设计方案.doc_第2页
基于单片机的低功耗温度记录仪设计方案.doc_第3页
基于单片机的低功耗温度记录仪设计方案.doc_第4页
基于单片机的低功耗温度记录仪设计方案.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 基于单片机的低功耗温度记录仪设计方案基于单片机的低功耗温度记录仪设计方案 附录 1 总体电路图 附录 2 单片机程序 include include define uchar unsigned char bit Tflag 温度正负标志 sbit DQ P3 7 温度输入口 sbit DIN P0 7 LED 小数点控制 2 uchar code ditab 16 0 x00 0 x01 0 x01 0 x02 0 x03 0 x03 0 x04 0 x04 0 x05 0 x06 0 x06 0 x07 0 x08 0 x0 8 0 x09 0 x09 温度小数部分用查表法 unsigned char code dispcode 0 x3f 0 x06 0 x5b 0 x4f 0 x66 0 x6d 0 x7d 0 x07 0 x7f 0 x6f 0 x00 0 x40 共阴 led 段码 表 0 x40 负 unsigned char dispbitcode 0 xfe 0 xfd 0 xfb 0 xf7 uchar data temp data 2 0 x00 0 x00 读出温度暂放 unsigned char dispbuf 5 0 0 0 0 0 void digitalshow unsigned char a3 unsigned char a2 unsigned char a1 unsigned char a0 unsigned char i dispbuf 0 a0 dispbuf 1 a1 dispbuf 2 a2 dispbuf 3 a3 for i 0 i 4 i P2 0 xff 关闭所有显示 P0 dispcode dispbuf i P2 dispbitcode i if i 1 DIN 1 该程序为总线上只有一个器件 毫秒延时 11 059 Mhz void dmsec unsigned int count unsigned int i 1ms 延时 while count for i 0 i 125 i 3 void Delay unsigned int num 延时函数 while num 复位脉冲 void tmreset void DQ 0 Delay 90 精确延时 大于 480us DQ 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 大概 1us DQ 1 i i dat DQ Delay 8 return dat 读一个比特 4 unsigned char tmrbyte void unsigned char i j dat dat 0 for i 1 i 8 i j tmrbit 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 1 DQ 0 先拉低 i i 1us DQ 1 Delay 4 else Write 0 DQ 0 Delay 4 大一点 没影响 但不能太大 写一个位在 30us 内 DQ 1 5 i i 再拉高 ds1820 开始转换 void tmstart void dmsec 1 tmreset tmpre dmsec 1 tmwbyte 0 xcc skip rom tmwbyte 0 x44 转换 读取温度 read temp tmreset tmpre dmsec 1 tmwbyte 0 xcc skip rom tmwbyte 0 xbe 转换 temp data 0 tmrbyte LSB 低 8 位 temp data 1 tmrbyte MSB 高 8 位 if temp data 1 temp data 0 temp data 0 1 负温度 处理 DS18B20 的负温度是正的反码 即将它取反 1 就得到正的温度 Tflag 0 else 6 Tflag 1 MAIN void main void uchar last uchar lsb msb uchar i tmstart dmsec 450 初始化 ds18b20 while 1 tmstart ds1820 开始转换 dmsec 2 read temp 读取温度 dispbuf 4 temp data 0 dispbuf 0 ditab dispbuf 4 dispbuf 4 temp data 0 i if Tflag 1 正温 if dispbuf 4 126 7 if dispbuf 4 100 digitalshow 10 dispbuf 2 dispbuf 1 dispbuf 0 温度小于 100 度 则百位不显示 else msb msb 10 温度大于 100 度时十位需要在除 10 取 余 digitalshow Tflag dispbuf 2 dispbuf 1 dispbuf 0 温度 大于 100 度 百位显示为 1 else digitalshow 11 11 11 11 温度大于 125 度时显示 else if dispbuf 4 56 负温大于 55 度时正常显示 digitalshow 11 dispbuf 2 dispbuf 1 dispbuf 0 else digitalshow 11 11 11 11 负温小于 55 度时显示为 附录 3 PC 机程序 Dim n As Integer Dim 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 Then Label3 Caption 设定输入错误 不发送 Else 8 Label3 Caption Select Case Len Trim Text2 Text Case 5 Text8 Text Trim Text2 Text Case 4 Text8 Text 0 Trim Text2 Text Case 3 Text8 Text 00 Trim Text2 Text End Select MSComm1 Output C Timer2 Enabled True End If End Sub Private Sub Command2 Click 单击按钮执行数据采集或停止采集 If Command2 Caption 采集数据 Then Command2 Caption 停止采集 Timer1 Enabled True MSComm1 Output A Else Command2 Caption 采集数据 Timer1 Enabled False MSComm1 Output B MSComm1 Output B End If End Sub Private Sub Command4 Click 单击按钮清空数据 Text1 Text Text4 Text End Sub Private Sub Command5 Click 单击按钮开关通信端口 9 If Command5 Caption 开通信端口 Then Command5 Caption 关通信端口 COM Enabled False Command2 Enabled True Command1 Enabled True Text2 Enabled True Select Case COM ListIndex 指定端口号 COM Case 0 MSComm1 CommPort 1 Case 1 MSComm1 CommPort 2 Case 2 MSComm1 CommPort 3 Case 3 MSComm1 CommPort 4 End Select MSComm1 Settings 9600 n 8 1 9600 波特 无校验 8 位数据位 1 位停止位 MSComm1 InputMode comInputModeText 接收文本数据 MSComm1 InputLen 0 读出接收缓冲区的所有内容 MSComm1 InBufferSize 1024 MSComm1 OutBufferSize 1024 MSComm1 RThreshold 1 每接收到 1 个字符 发生 1 次事件 MSComm1 PortOpen True 打开串口 Else Timer1 Enabled False MSComm1 Output B MSComm1 Output B Command5 Caption 开通信端口 COM Enabled True MSComm1 PortOpen False Command2 Caption 采集数据 Command2 Enabled False Command1 Enabled False Text2 Enabled False End If End Sub Private Sub Command7 Click 单击按钮保存温度数据 10 CommonDialog1 Action 2 Open CommonDialog1 FileName For Append As 1 Write 1 Now Write 1 Text4 Text Close 1 End Sub Private Sub Form Load COM AddItem COM1 COM AddItem COM2 COM AddItem COM3 COM AddItem COM4 End Sub Private Sub MSComm1 OnComm 串口接收到数据时读出数据 Select Case MSComm1 CommEvent Case comEvReceive Text1 Text Text1 Text MSComm1 Input Case Else End Select End Sub Private Sub Text1 Change 对读出的数据进行处理 If Len Text1 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 Text Text7 Text Time n n 1 End If If n 100 Then n 0 Text1 Text End If 11 End Sub Private Sub Text5 Change 改变读数据的时间 Timer1 Interval Val Text5 Text 1000 End Sub Private Sub Timer1 Timer 采集数据后进行绘图 MSComm1 Output A Dim a As Single Dim a1 As String Dim a2 As String Dim a3 As String Dim k As Integer Static b 200 As Integer Text7 Text Time For k 1 To 199 b k b k 1 Next k b 200 Val Text3 Text With MSChart1 For i 1 To 200 a Val Mid Text7 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 Then a a 86400 End If If a 3600 10 Then a1 0 a 3600 Else a1 Str a 3600 End If If a Mod 3600 60 10 Then 12 a2 0 a Mod 3600 60 Else a2 a Mod 3600 60 End If If a Mod 3600 Mod 60 10 Then a3 0 a Mod 3600 Mod 60 Else a3 a Mod 3600 Mod 60 End If Row i Data b i RowLabel a1 a2 a3 Next i End With End Sub Private Sub Timer2 Timer 设置温度时间隔开发送数据的时间 以使 If t 0 Then 单片机能正常处理 MSComm1 Output

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论