基于AVR USB接口的温度测量系统下位机设计

发布者:快乐家庭最新更新时间:2013-12-12 来源: eefocus关键字:AVR  USB接口  温度测量系统  下位机 手机看文章 扫描二维码
随时随地手机看文章

0引言

近年来,随着集成电路以及芯片制造技术的不断发展,不同的USB通信芯片不断涌现,目前典型的USB通信芯片有CH375、PDIUSBD12等,这些器件的特点是功能较为强大,但价格较高,很难在中低价位的产品开发中使用。而AVR USB技术则是利用高性能的8位RISC架构的AVR单片机的IO口来模拟USB的通信端口,并由软件来实现USB通信协议,以将普通的AVR单片机模拟成一个USB低速设备,从而实现AVR单片机与计算机之间的通信和控制。尽管这种方式只能实现低速传输,但对常用数据量不是十分巨大的系统而言,它已经足够使用了,且其速度远远高于传统的串口传输速度,因而在产品开发中具有广阔的应用前景。本文便是利用AVR USB技术来实现对温度的测量和显示功能。

1 系统下位机软件流程

下位机软件设计及其实现可基于WINAVR编程环境,代码则可利用C语言实现。AVR单片机主要完成两个功能:温度测量和数据传送。温度测量主要是对电压信号进行采样,以确定温度的离散数值。传送数据则是将测量的数据通过AVR所模拟的USB端口传至PC端,以便PC端进行数据的显示和处理。其主要流程如图1所示。

2软件功能的实现

2.1温度数据的采集

ATmega8内含一个10位逐次逼近型ADC。该ADC可与一个8通道的模拟多路复用器连接,以对来自端口C的8路单端输入电压进行采样。单端电压输入以0 V(GND)为基准。AD转换的时序图如图2所示。

对于连续AD数据采集,可采用查询法和中断法,该程序中采用的是中断法,即一次AD转换结束后便产生中断。设计时可利用如下函数对电压数值进行采集:

首先定义全局变量Value,储存所测量到的温度数值,并将该值作为USB端口的发送数值。

2.2 USB数据传输

为了利用ATMEGA8模拟"软USB",应在WINAVR将AVRUSB的文件配置文件夹USBDRV放置在源文件目录下,在该目录下,编程中所需要的文件如表1所列。

该设计只要对usbconfig.h的内容进行配置,便可减小代码量。其主要参数配置如表2所列。

一般情况下,每种USB设备都有一个PID和VID。其中VID是生产商的代号,PID是产品的代号,每个代号都是一个双字节的整数。PID和VID不能随意设置,它是由USB标准协会进行分配的(0x16C0、0x05DC),并在用户配置文件中要遵循低位在前高位在后的原则。

2.3 USB数据传输的接口函数

(1)初始化函数

使用AVRUSB前,通常都要通过调用初始化函数usbInit ()来对USB端口进行初始化,调用该函数之前,考虑到该程序可能由其他程序段跳转而来,因此,初始化之前,一般要将USB端口进行重新复位,复位只需要将D-和D+端口的电平拉低即可,利用如下语句便可实现上述功能:

DDRD=0x14;PORTD=0x00;

通常可在程序其他部分初始化完成后再调用函数usbInit (),最后再调用sei ()函数允许中断。在main.c文件中的实现代码如下:[page]

(2)事件处理函数

用户程序的主循环中需要定期调用USB事件处理函数usbPoll ()。USB事件处理函数usbPoll ()在没有USB事件需要处理时将直接返回,否则将调用内部函数来进行相应的事件处理,最后再将数据传递到用户接口函数中。通常的方法是:

一次USB通信的超时时间是50ms。所以,在编程时应注意其他事件不要占用太长的时间,以勉usbPoll ()函数不能及时执行。

(3)事件接口函数

在用户程序中,需要编写USB用户事件接口函数,以完成USB通信。AVRUSB将用户接口简化为以下3个函数:

上述三个函数需要用户进行编程处理,它们将完成USB通信的数据处理。

为了使代码最优化,本系统只使用usbFunctionSetup函数,而屏蔽了usbFunctionWrite和usbFnctionRead函数,方法是在usbconfig.h中设置相应的位为0或1即可(参见表2)。

函数usbFunctionSetup负责传递USB请求,其参数存放在一个8字节的数组中(uchar data [8]),其含义是:

由于该系统功能只需要将测得的温度值传送到PC端,因此,该函数中只需做数据传送即可,而无须作不同指令的辨识,设计时可使用如下代码来实现上述功能:

2.4编译文件的配置

在WINAVR软件环境下,还需要配置MakeFile,以用于编译编程文件:



经过上述过程的配置和编程后,即可实现下位机的数据采样和USB端口的数据传输。

3 结束语

基于AVRUSB技术的温度测量和显示系统由于使用了一体的软USB技术,其硬件电路设计更加小巧稳定。经使用和测试证明:该系统具有性能稳定、价格低廉等特点。重要的是,本系统提供了一种低成本的USB设计方案,同时较详细的提供了下位机的设计流程和部分代码,从而为中低成本的USB设备开发提供了一个较好的思路。

关键字:AVR  USB接口  温度测量系统  下位机 引用地址:基于AVR USB接口的温度测量系统下位机设计

上一篇:基于AVR单片机的煤矿传感器设计
下一篇:基于ATmega16的多路水文参数采集及无线传输系统

推荐阅读最新更新时间:2024-03-16 13:32

Lcd.h头文件下载-字符型液晶LCD的AVR单片驱动程序头文件
/***************************************************************************** 单 位:广西民族大学物理与电子工程学院07物本班 文件名称:Lcd.h 文件标识:_LCD_H_ 摘 要:字符型液晶LCD的AVR单片机驱动程序头文件 当前版本:V2.0 *****************************************************************************/ #ifndef _LCD_H_ #define _LCD_H_ #include BaiYuAvrKuD
[单片机]
[AVR应用]Timer1测量正向脉冲的宽度
#include mega16.h #include delay.h #define ICP PIND.6 sfrw ICR1=0x26; flash const unsigned char tabel ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; unsigned char ledbuff ={0x8c,0x8c,0x8c,0x8c,0x8c,0x8c}; unsigned char ov_counter; //counter for timer1 overflow unsigned int rising_edge,falling_edge; //storag
[单片机]
一种电力监控与数据采集系统设计
随着电力系统及其自动化的发展,越来越多的电力系统设备需要采用实时监控以及数据采集,从而保证电力系统设备可以安全、可靠地运行。因此,对电力监控与数据采集系统的研究,具有重要的现实意义。 本文设计了一种电力监控与数据采集系统,该系统采用USB接口作为通信方式,同时利用AD9238完成电力监控与数据采集,采集后的数据直接送到FPGA中。其中USB接口直接与FPGA相连,采集后的数据既可以暂存到FPGA中,也可直接经过USB接口发送到PC中,同时对于采集后的数据也可以在FPGA内部做相应的预处理后上报给PC机。因此,该电力监控与数据采集系统具有更广泛的适用性。 1 电力监控与数据采集系统总体设计 电力监控与数据采集系统总体设计框
[测试测量]
一种电力监控与数据采集系统设计
基于ARM7、AVR、UCOSII的发电厂大型除尘控制器设计方案
控制对象是 540脉冲控制阀,20个碟阀,3个温度检测点,2个冷风机组控制点,甲方要求控制器要有人机交互界面,温度控制点要可调,脉冲阀工作时间要可调,并且系统要能够在线检测出负载阀故障,比如开路,短路在系统运行时是不允许的必须及时的被检测出来。 整个系统有560阀,每个阀工作电流接近1A,如果按每个阀两根控制线的话将有1120根阀控制线,控制器距离现场有几百米,这样下来铜线价格超万元成本太高,所以系统采用矩阵扫描的方式进行阀控制大大节约用铜量。根据甲方要求我们将CCQ3000划分为4个硬件模块 : 1. 显示键盘模块,人机交互部分。 2. 温控模块,实现对关键测温点进行温度检测,和控制 ,温控模块并且负责CCQ3000机箱系
[单片机]
基于ARM7、<font color='red'>AVR</font>、UCOSII的发电厂大型除尘控制器设计方案
AVR 单片精确延时函数
1.毫秒级的延时 延时1ms; void delay_1ms(void) { unsigned int i; for(i=1;i (unsigned int)(xtal*143-2_;i++) ; } 在上式中,xtal为晶振频率,单位为MHz. 当晶振频率为8M时,延时函数软件仿真的结果为1000.25μs.当晶振频率为4M时,延时函数软件仿真结果为999.5μs. 如果需要准确的1ms延时时间,则本计算公式只供参考,应通过软件仿真后,再确定循环的次数及循环初值,并且循环中还必须关闭全局中断,防止中断影响延时函数的延时时间。 下面的函数可以获得1ms的整数倍的延时时间: void delay(unsigned int n) {
[单片机]
基于AT89C51和DS18B20温度测量系统
l引 言   温度的测量和控制在激光器、光纤光栅的使用及其他的工农业生产和科学研究中应用广泛。温度检测的传统方法是使用诸如热电偶、热电阻、半导体PN结之类的模拟温度传感器。信号经取样、放大后通过模数转换,再交自单片机处理。被测温度信号从温敏元件到单片机,经过众多器件,易受干扰、不易控制且精度不高。因此,本文介绍一种新型的可编程温度传感器DS18B20,他能代替模拟温度传感器和信号处理电路,直接与单片机沟通,完成温度采集和数据处理。DS18B20与AT89C51结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。    2温度测量系统硬件   系统结构图如图1所示 。这里
[测试测量]
基于AT89C51和DS18B20<font color='red'>温度</font><font color='red'>测量系统</font>
AVR单片做的电子时钟
#include avr/signal.h #include avr/interrupt.h #include avr/delay.h #include avr/wdt.h #include avr/eeprom.h #include math.h #include stdlib.h #include string.h #define uchar unsigned char #define uint unsigned int #define xtal 8 #define CS PA5 #define SID PA6 #define SCLK PA7 #define Set_CS() DDRA |= (
[单片机]
AVR单片捕获中断实现红外线解码
摘要:AVR单片机是Atmel公司推出的一个单片机系列。由于该系列单片机的集成度高,因此,其软/硬件设计都变得更加简洁。文中介绍通过AVR单片机的捕获中断来实现红外线通讯解码的一种方法。 关键词:AVR;红外线解码;输入捕获中断 1 红外线编码 红外线编码是数据传输和家用电器遥控常用的一种通讯方法,其实质是一种脉宽调制的串行通讯。家电遥控中常用的红外线编码电路有μPD6121G型HT622型和7461型等。本文就以这些电路的编码格式来讨论怎样使用AVR单片机的捕获中断功能来实现其解码。 红外线通讯的发送部分主要是把待发送的数据转换成一定格式的脉冲,然后驱动红外发光管向外发送数据。接收部分则是完成红外线的接收、放大、解调,
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved