优选VR虚拟现实本系统AVR与虚拟仪器.docx

上传人:b****4 文档编号:4177513 上传时间:2022-11-28 格式:DOCX 页数:8 大小:18.73KB
下载 相关 举报
优选VR虚拟现实本系统AVR与虚拟仪器.docx_第1页
第1页 / 共8页
优选VR虚拟现实本系统AVR与虚拟仪器.docx_第2页
第2页 / 共8页
优选VR虚拟现实本系统AVR与虚拟仪器.docx_第3页
第3页 / 共8页
优选VR虚拟现实本系统AVR与虚拟仪器.docx_第4页
第4页 / 共8页
优选VR虚拟现实本系统AVR与虚拟仪器.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

优选VR虚拟现实本系统AVR与虚拟仪器.docx

《优选VR虚拟现实本系统AVR与虚拟仪器.docx》由会员分享,可在线阅读,更多相关《优选VR虚拟现实本系统AVR与虚拟仪器.docx(8页珍藏版)》请在冰豆网上搜索。

优选VR虚拟现实本系统AVR与虚拟仪器.docx

优选VR虚拟现实本系统AVR与虚拟仪器

优选(VR虚拟现实)本系统AVR与虚拟仪器

基于LabVIEW的串口温度监控系统设计

张兴成20051001168

摘要:

本系统利用DS18B20数字温度传感器和Atmel公司生产的AVR系列ATmega16单片机采集被测环境温度,将测得的数据经串口传给计算机。

计算机利用LabVIEW的VISA读取串口数据并进行处理和显示,实现基于VISA的串口温度采集监控。

关键词:

DS18B20温度传感器AVR单片机VISA串口

1、概述

实时数据采集是工业控制系统中必不可少的组成部分,是进行工业分析,工业处理和工业控制的依据。

近年来由于大规模集成电路、单片机、计算机等在工业控制领域中的广泛应用,数字化的数据采集成为必然。

这就对传感器的A/D性能,单片机的数据采集、处理和传输性能,计算机接口与通信技术提出了更高的要求。

本系统采用Atmel公司生产的高速8位单片机AVR系列ATmega16单片机作为温度数据采集和传输的主控芯片,温度传感器采用单总线方式的集成数字温度传感器DS18B20。

采集得到的数据利用单片机经串口通讯的方式传输至计算机的串口。

计算机上位机软件采用数据处理能力超强的LabVIEW软件编写,利用其所带的VISA驱动进行串口的数据采集和处理,实现基于VISA的串口温度采集监控。

2、硬件设计

AVR单片机是1997年由ATMEL公司研发出的增强型内置Flash的RISC(ReducedInstructionSetCPU)精简指令集高速8位单片机。

AVR的单片机可以广泛应用于计算机外部设备、工业实时控制、仪器仪表、通讯设备、家用电器等各个领域,它与51单片机、PIC单片机相比具有一系列的优点:

1:

在相同的系统时钟下AVR运行速度最快;

2:

芯片内部的Flsah、EEPROM、SRAM容量较大;

3:

所有型号的Flash、EEPROM都可以反复烧写、全部支持在线编程烧写(ISP);

4:

多种频率的内部RC振荡器、上电自动复位、看门狗、启动延时等功能,零外围电路也可以工作;

5:

每个IO口都可以以推换驱动的方式输出高、低电平,驱动能力强;

6:

内部资源丰富,一般都集成AD、DA模数器、PWM、SPI、USART、TWI、I2C通信口、丰富的中断源等。

目前支持AVR单片机编译器的语言主要有汇编语言、C语言、BASIC语言等。

其中C编译器主要有CodeVisionAVR、AVRGCC、IAR、ICCAVR等,C语言编译器由于它具有功能强大、运用灵活、代码小、运行速度快等先天性的优点,使得它在专业程序设计上具有不可代替的地位。

DSl8B20数字温度计提供9位(二进制)温度读数,指示器件的温度。

信息经过单线接口送入DSl8B20或从DSl8B20送出,因此从主机CPU到DSl8B20仅需一条线(和地线),DSl8B20的电源可以由数据线本身提供而不需要外部电源。

因为每一个DSl8B20在出厂时已经给定了唯一的序号,因此任意多个DSl8B20可以存放在同一条单线总线上,这允许在许多不同的地方放置温度敏感器件。

DSl8B20的测量范围从-55摄氏度到+125摄氏度增量值为0.5摄氏度。

可在ls(典型值)内把温度变换成数字。

系统的硬件设计主要分为四个部分:

单片机、供电电路、DS18B20、串口通讯。

图1:

单片机部分电路设计

单片机部分的电路设计如图1所示,主要包括复位电路、ISP接口、JTAG接口、晶振电路、A/D参考电压电路(此部分用于AD采集,本系统并未使用)。

复位电路使用了钳位二极管钳位,防止触点电压过高烧坏RESET引脚。

图2:

供电电路设计图3:

DS18B20电路设计

供电电路如图2所示,供电电路使用了BM1117进行稳压,防止电压过高烧坏单片机,并可以提高系统适应电压的范围,即使供电电压高于单片机正常工作电压也可以由BM1117稳压到单片机正常工作电压的范围。

DS18B20的工作电路如图3所示,采用外部供电而非总线供电的方式,只需一个电容和两个电阻。

图4:

串口通信电路

串口通信采用Max232进行电平转换,电路原理图如图4所示,实物照片如图5所示。

图5:

实物照片

3、软件设计

下位机软件采用C语言编写,包括DS18B20的读写和串口通信两个主要部分。

上位机软件采用LabVIEW编写。

相关程序段如下所示:

获取DS18B20数据:

uint8gettemp(void)//读取温度值

{

uint8temh,teml,wm0,wm1,wm2,wm3,temp;

init_1820();//复位18b20

write_1820(0xCC);//跳过ROM

write_1820(0x44);//温度变换

init_1820();

write_1820(0xCC);//跳过ROM

write_1820(0xbe);//读暂存存储器

teml=read_1820();//读数据

temh=read_1820();

wm0=teml>>4;//只要高8位的低四位和低8位的高四位,温度范围0~99

wm1=temh<<4;

wm2=wm1+wm0;//16进制转10进制

returnwm2;

}

系统下位机主函数:

voidmain(void)

{

unsignedchari=0,tmp=0;

USART_Init(9600);//波特率9600初始化串口

while

(1)

{

tmp=gettemp();

USART_Transmit(tmp);

}

}

上位机软件采用当前测试测量应用最广泛的LabVIEW编写。

LabVIEW(LaboratoryVirtualinstrumentEngineering)是一种图形化的编程语言,它广泛地被工业界、学术界和研究实验室所接受,视为一个标准的数据采集和仪器控制软件。

LabVIEW集成了与满足GPIB、VXI、RS-232和RS-485协议的硬件及数据采集卡通讯的全部功能。

它还内置了便于应用TCP/IP、ActiveX等软件标准的库函数。

这是一个功能强大且灵活的软件。

利用它可以方便地建立自己的虚拟仪器,其图形化的界面使得编程及使用过程都生动有趣。

图形化的程序语言,又称为“G”语言。

使用这种语言编程时,基本上不写程序代码,取而代之的是流程图或流程图。

它尽可能利用了技术人员、科学家、工程师所熟悉的术语、图标和概念,因此,LabVIEW是一个面向最终用户的工具。

它可以增强你构建自己的科学和工程系统的能力,提供了实现仪器编程和数据采集系统的便捷途径。

使用它进行原理研究、设计、测试并实现仪器系统时,可以大大提高工作效率。

利用LabVIEW,可产生独立运行的可执行文件,它是一个真正的32位编译器。

像许多重要的软件一样,LabVIEW提供了Windows、UNIX、Linux、Macintosh的多种版本。

上位机的软件前后面板如图6所示:

图6上位机软件前后面板视图

4、结束语

本系统利用数字化的温度传感器进行温度的采集监控,利用串口通信将采集的温度数据传给电脑,利用电脑进行数据处理和显示。

既实现了采集监控的功能,又可以进行数据的进一步处理和分析。

附录:

主要下位机程序代码

18B20.c

#include"config.h"

uint8count,wmh,wml;//count为实际温度,wmh为温度的高位,wml为温度的低位

voidinit_1820(void)

{

SET_TEM_DDR;//设置数据端口为输出

SET_TEM_SDT;

CLR_TEM_SDT;

delay_us(480);//480us以上

SET_TEM_SDT;

CLR_TEM_DDR;

delay_us(20);//15~60us

while(CHECK_TEM_SDT);

SET_TEM_DDR;

SET_TEM_SDT;

delay_us(140);//60~240us

}

voidwrite_1820(uint8data)

{

uint8i;

for(i=0;i<8;i++)

{

CLR_TEM_SDT;//从高到低,产生写间隙

if(data&(1<

SET_TEM_SDT;

else

CLR_TEM_SDT;

delay_us(40);//15~60us

SET_TEM_SDT;

}

SET_TEM_SDT;

}

uint8read_1820(void)

{

uint8temp,k,n;

temp=0;

for(n=0;n<8;n++)

{

CLR_TEM_SDT;

SET_TEM_SDT;//从高到低再到高,产生读间隙

CLR_TEM_DDR;//设为输入

k=CHECK_TEM_SDT;//读数据,从低位开始

if(k)

temp|=(1<

else

temp&=~(1<

delay_us(50);//60~120us

SET_TEM_DDR;//设为输出

}

return(temp);

}

uint8gettemp(void)//读取温度值

{

uint8temh,teml,wm0,wm1,wm2,wm3,temp;

init_1820();//复位18b20

write_1820(0xCC);//跳过ROM

write_1820(0x44);//温度变换

init_1820();

write_1820(0xCC);//跳过ROM

write_1820(0xbe);//读暂存存储器

teml=read_1820();//读数据

temh=read_1820();

wm0=teml>>4;//只要高8位的低四位和低8位的高四位,温度范围0~99

wm1=temh<<4;

wm2=wm1+wm0;//16进制转10进制

returnwm2;

}

Sio.c

#include"config.h"

voidUSART_Init(unsignedintbaud)

{

unsignedinttmp;

/*设置波特率*/

tmp=F_CPU/baud/16-1;

UBRRH=(unsignedchar)(tmp>>8);

UBRRL=(unsignedchar)tmp;

/*接收器与发送器使能*/

UCSRB=(1<

/*设置帧格式:

8个数据位,2个停止位*/

UCSRC=(1<

}

//数据发送【发送5到8位数据位的帧】

voidUSART_Transmit(unsignedchardata)

{

/*等待发送缓冲器为空*/

while(!

(UCSRA&(1<

;

/*将数据放入缓冲器,发送数据*/

UDR=data;

}

//数据接收【以5到8个数据位的方式接收数据帧】

unsignedcharUSART_Receive(void)

{

/*等待接收数据*/

while(!

(UCSRA&(1<

;

/*从缓冲器中获取并返回数据*/

returnUDR;

}

Main.c

#include"config.h"

voidmain(void)

{

unsignedchartmp=0;

USART_Init(9600);//波特率9600初始化串口

while

(1)

{

tmp=gettemp();

USART_Transmit(tmp);

}

}

 

谢谢阅读!

!

!

随心编辑,值得下载拥用!

专业│专注│精心│卓越

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 畜牧兽医

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1