77范文网 - 专业文章范例文档资料分享平台

基于labview的温度采集系统 - 图文(7)

来源:网络收集 时间:2019-04-22 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

河南师范大学本科毕业论文(设计)

附录三 元器件清单 名称 型号 备注 数量 在原理图上的标号 AVR单片机 Atmega16 1 固态继电器 GTJ24-2A 1 温度传感器 DS18B20 1 晶体振荡器 7.3728MHz 1 瓷片电容 30pF 2 电解电容 25V/10uF 4 排插 2x5 2 排插底座 2x5 1 插针底座 1x3 1 排线 1x3 1 插针 1x2 1 音频头 1 接线柱 1x2 2 铜柱 8 排线 1排6根 1 串口头 DB9 公头 1 水泥电阻 8W2K2 3 铜板 万用板 1

30

河南师范大学本科毕业论文(设计)

附录四 单片机程序

下位机程序 主程序

#include

/*包含相关头文件*/

#include #include #include \#include \#include \#include \#define OCR OCR1A

//全局变量声明

unsigned char Temp_H,Temp_L; //主函数 void main(void) {

float temp,a,b,c=0;

int middle,j,k,l; unsigned char f_to_p;

unsigned int i;

unsigned char t[6]; unsigned char *p; unsigned char tmp=0; Temp_H = 0;

Temp_L = 0; port_init(); pwm_init(); OCR=0;

port_1820(); Uart_Init();

//温度高位,低位,复位成功标志 //用于暂存读回的16位温度值 //用于存温度数值及单位 //端口初始化 //pwm初始化 //DS18B20对应单片机端口初始化 //波特率9600 初始化串口

31

河南师范大学本科毕业论文(设计)

while (1) {

for(k=0;k<=9;k++) {

ds1820_reset(); ds1820_start(); longdelay(); longdelay();

//读取温度数值,读得的温度值为16位

//复位D18B20 //启动一次转换

//等待转换结束

i = ds1820_read_temp(); //用于调试的原始温度数据

//i=0x07d0; //当温度为125oC时的i值

//i=0xff5e; //负10.125度 //i=0xfebe; //负20.125度 //i=0x0191; //正25.0625度 //i=0x0550; //正85度

if(i&0x8000) //判断温度正负 {

/温度为负时

//一个字长的温度值转换成两个字节,分別放在Temp_L,Temp_H中

Temp_L=(char)(i&0x00ff); //取i中的低8位 Temp_H=(char)((i&0xff00)>>8); //取i中的高8位

i=Temp_H; //高8位放回i中 i=(i<<8)|Temp_L; //低8位放回i中 temp=(float)(i*0.0625);

32

Temp_H = ~Temp_H; //负温度。取反加1 Temp_L = ~Temp_L;

asm(\ //清零进位位标志 Temp_L++; //温度低字节加1 if((SREG&0x01)!=0x01) //有进位吗? {

Temp_H++; //有进位,则温度高字节加1 }

河南师范大学本科毕业论文(设计)

middle=(int)(temp*100); //取整数带小数点后两位

t[0]=middle/10000+0x30; t[1]=(middle000)/1000+0x30; t[2]=(middle00)/100+0x30;

t[3]=0x2e; //value_1[3]为小数点存放单元 t[4]=(middle0)/10+0x30; t[5]=(middle)+0x30;

Uart_Transmit(0x2d); for(j=0;j<=5;j++) {

Uart_Transmit(t[j]); }

Uart_Transmit(0x0d); }

else {

//溫度為正 temp=(float)(i*0.0625);

middle=(int)(temp*100); t[0]=middle/10000+0x30; t[1]=(middle000)/1000+0x30; t[2]=(middle00)/100+0x30;

t[3]=0x2e; t[4]=(middle0)/10+0x30; t[5]=(middle)+0x30;

Uart_Transmit(0x2b); for(j=0;j<=5;j++) {

Uart_Transmit(t[j]); }

Uart_Transmit(0x0d);

}

//取整数带小数点后两位 //value_1[3]为小数点存放单元 33

河南师范大学本科毕业论文(设计)

} }

DS18B20函数 #include #include

#define DQ_IN DDRA &= ~(1 << PA7) #define DQ_OUT #define DQ_CLR

DDRA |= (1 << PA7)

/*设置输入*/ /*设置输出*/ /*置高电平*/

Uart_Transmit(0x24); //和上位机握手 for(l=0;l<=4;l++) {

Uart_Receive(); a=UDR-0x30; b=a*pow(10,l-2); c+=b; }

OCR=(20*c); //根据PID输出的控制调节占空比

}

PORTA &= ~(1 << PA7) /*置低电平*/

/*读了电平*/ /*中断标志缓存*/

#define DQ_SET PORTA |= (1 << PA7) #define DQ_R PINA & (1 << PA7)

unsigned char flag;

/*DS18B20复位函数*/

unsigned char ds1820_reset(void) {

unsigned char i; flag = SREG; CLI(); DQ_OUT;

/*中断保护*/ /*关中断*/

34

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于labview的温度采集系统 - 图文(7)在线全文阅读。

基于labview的温度采集系统 - 图文(7).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/615842.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: