? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 摘 要 ? ?USB(Universal Serial Bus)是一种新型的通用串行总线,它是快速的、双向的、同步的、可以热插拨的、动态连接且价格低廉的串行接口。基于这一特点,许多计算机外设都有USB接口。本文正是利用这种新型的USB接口设计上下系统之间的通信。用新的一线数字温度传感器测量温度,并通过USB通信接口和计算机应用软件。 ? ?本文首先介绍了系统的背景知识USB通信协议,然后介绍温度控制的基本意义,并提出使用USB设备芯片CH372.一线数字温度传感器DS18B20和单片机AT89C51来开发基于USB温度控制系统。通过采集的温度数据USB将接口上传到上位PC在机器上,并使用应用软件进行处理。使用上位机应用软件C builder 编写,其应用CH372接口芯片的动态链接库建立了上下机之间的通信机制。上位机将收集到的温度数据放在上位机PC显示在机器上,并显示实时温度采集图像。 此外,应用软件还可以设置下位机的温度极限等简单控制功能。当收集到的温度超过设定的极限温度时,报警系统。此外,下位机还为未来的扩展保留了一定的资源。
关键词: AT89C51;USB协议; 温度采集 ;一线温度传感器 ;CH372
2 系统概述 ? ?本章将基于USB分析了面温度控制系统在工业中的应用,介绍系统的特点、功能和开发工具。 2.1 系统的特性 ? ?由于该系统的使用USB所以有接口USB实时传输数据,与上位机进行信息交流,上位机可以连接到互联网上,因此远程传输PC机器还可以利用互联网查看温度检测系统等各种操作。该系统采用先进的温度传感器快速响应温度,将温度数据传输到下位机进行初步处理数据,然后与上位机通信。一般而言,该系统具有以下特点: ? ?·工作人员可以通过计算机远离生产环境进行检查理; ? ?·多点温度测量; ? ?·在没有工作人员参与的情况下,全天候检测温度,简单处理生产环境; ? ?·设计生产环境温度的极限温度,一旦超过极限温度,系统就会报警,停止生产环境的工作; ? ?·测量温度误差比较精确,在0.5℃内; 2.2 系统的功能 ? ?该系统主要具有以下功能: ? ?? ?(1)检测温度。在远离恶劣生产环境的情况下,使用该系统进行温度测量; ? ?? ?(2)实时收集现场温度;PC显示在机器上; ? ?? ?(3)在PC实时在机器上制作温度图像;工作人员可以直观地在电脑上获得系统的温度图像; ? ?? ?(4)简单的系统控制;温度可以通过计算机上的应用软件设置。一旦超过极限温度,发出报警,然后通知工作人员快速操作生产现场,防止温度超过极限温度; ? ?? ?(5)在上端应用软件上提供系统使用帮助。用户可以使用此功能来帮助操作系统。 2.3 系统开发平台 ? ?本系统所需的开发工具为:keil C、 C builder、Protel、计算机,烧写器。 Keil C是世界上最好的MC-51单片机汇编和C语言开发工具。支持汇编c语言和混合编程。同时,软件仿真和硬件仿真功能强大。C builder 是计算机高级语言C 易于使用的编程工具是一种可视化的计算机语言。 Protel是世界上最好的硬件电路图制作的工具。
3 总体设计系统 3.1 整个系统方框图 ? ?根据前面的分析,要实现上述功能,系统必须由以下部分组成:温度采集单元、下位机温度初步处理单元、USB设备接口,上位机应用程序。 如图3所示.1: ? ?温度传感器单元测量生产温度环境,将测量温度传递给下位机(单片机)。单片机初步处理收集到的温度后,通过处理的数据USB接口上传给PC机器上位机,上位机将实时显示收集到的温度。如果要处理现场环境,上位机可以发出命令USB接口传输到下位机,下位机根据接收到的数据进行分析,然后进行报警等各种操作。 3.2 比较系统方案 ? ?本系统根据温度传感器选择方案。 ? ?目前市场上有两种传感器:模拟传感器和数字集成传感器,选择不同的传感器会有不同的解决方案。这里有两个不同的方案,分析一下,最后选择一个。 3.2.1系统有两种可行方案 ? ?方案1:选择模拟传感器 ? ?所谓模拟传感器,简单来说就是传感器对被测物质的感应,随着检测的不同做出不同的反应,但这种反应是有规律的,有规律的输出模拟信号。由于单片机是一个数字信号系统,只能识别数字信号,因此该方案必须将模拟输出数字化,即将其输出的模拟电压或电流转换为数字信号,使系统添加模拟信号转换为数字信号处理单元,通常实现该功能A/D转换器,市场对这个A/D有许多类型的转换器。所以选择这个方案也可以有效快速地设计这个系统。 图3.2给出使用模拟传感器的设计原理图。 ? ?方案2:选择数字传感器 ? ?如今,随着计算机的快速发展和单片机的日益普及,世界已经进入了数字时代。人们在处理被测信号时首先想到的是信息处理器(单片机或计算机)。输出数字信号的传感器称为数字传感器。 ? ?数字传感器是近年来才出现的,应该广泛应用于实践中。所谓数字传感器,进一步说,就是放大模拟传感器产生的信号。A/D转换、线性化和数字大纲处理成纯数字信号,在模拟传感器上添加数字处理单元,集成在芯片上,输出数字信号,方便数字处理器直接处理。图3.3给出使用数字传感器设计的方案图: 4 系统硬件设计 4.1 中央处理器----AT89C51 ? ?AT89C51由美国Atmel 公司生产的是带4的一种K可编程的字节闪烁可以擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)低压,高性能CMOS该装置采用8位单片机ATMEL高密度非易失存储器制造技术制造,工业标准MCS-51指令集与输出管脚兼容。下文将对AT89C简单介绍51单片机。 ? ?(1) AT89C51的特点 ? ?? ?AT89C51具有以下特点: ? ?? ?? ?①中央处理器CPU; ? ?? ?? ?②AT89C51与MCS-51系列单片机完全兼容指令系统和引脚; ? ?? ?? ?③片内有4k在线字节可重复编程快擦写程序存储器; ? ?? ?? ?④全静态工作,工作范围:0Hz~24MHz; ? ?? ?? ?⑤加密三级程序存储器; ? ?? ?? ?⑥128×8位内部RAM; ? ?? ?? ?⑦双向输入输出线32位; ? ?? ?? ?⑧两个十六位定时器/计数器 ? ?? ?? ?⑨五个中断源,两级中断优先级; ? ?? ?? ?⑩一个全双工的异步串行口; ? ?(2)AT89C51结构图如图4所示.1 4.2 温度传感器DS18B20 ? ?温度传感器是该系统的测量装置。温度传感器的质量直接影响测量结果,本文将详细介绍温度传感器的选择。根据本设计论文的要求,包括精度要求决定选择数字温度传感器DSB8B以下是介绍。 ? ?(1) DS18B20的概述 ? ?? ?DS18B20是DALLAS公司生产的一线数字温度传感器有3引脚TO-92小体积包装形式;温度测量范围为-55℃~+125℃,9位~12位可编程A/D转换精度,测温分辨率可达0.0625℃,用符号扩展的16位数字量串行输出被测环境的温度;其工作电源可在远端引入,也可以通过寄生电源生产;多个DS18B20可并联3或2条线,CPU只需一条端口线就可以和很多人在一起DS18B通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。以上特点使DS18B20非常适合远距离多点温度检测系统。 ? ?(2)DS18B20的内部结构 ? ?? ?图4.3是DS18B20内部结构图 ??由图可知,DS18B20主要由4部分组成:64位ROM、温度传感器、非挥发性温度传感器 警触发器TH和TL、配置寄存器。DS18B20管脚排列如图4所示.4所示, DS1820的3个管脚说明如下: DQ为数字信号输入/输出端。是漏极开路一线接口。也在寄生电源接线方式时,给设备提供电源。 GND为电源地。 VDD为外接供电电源输入端(在寄生电源接线方式时接地)。 DS18B20的64位ROM保存了设备的唯一序列码,是DS18B20的地址序列码,每一个DS18B20的地址序列码是不同的,这样就可以实现一根总线上挂接多个DS18B20。高速闪存(scratchpad)包括2个字节的温度寄存器。保存了温度传感器的数字输出。该闪存还提供了对上限(TH)和下限(TL)的超标报警寄存器、配置寄存器(一个字节)的访问。TH、TL和配置寄存器是 EEPROM,所以系统掉电时可以保存数据。 DS18B20利用DALLAS的单总线控制协议,实现了利用单线控制信号在总线上进行通信。由于所有的设备通过漏极开路端(DQ脚)连在总线上,控制线需要一个大约5K上拉电阻。在这一总线控制系统中,微控制器通过唯一的64位地址序列码识别和访问总线上的器件。由于地址序列码不同,所以连接在总线上的DS18B20可以说是无限的 。 (3)DS18B20的寄存器 DS18B20存储器组织结构如表4.2所示: 4.3 温度采集模块电路设计 以上已经介绍了AT89C51和数字温度传感器DS18B20基本知识,下面将利用它们来设计本系统的温度采集电路。DS18B20连接到单片机的方法很简单,它有两种方法连接到电路上,既外接电源方式和寄生电源方式,这里使用的是系统提供的外接电源方式,而不采用寄生电源,只要VCC、DQ、GND连接到单片机的电源正极、一个I/O端口、电源地就可以了。但是要注意的是在DQ数据线中要加一个4.7K的上拉电阻,这一个是必须要加的,无论它是接在P1口还是P0口,这点特别注意,特别提醒。之外在电源两端之间加个0.01U的电容,这样的作用主要是滤波。
由图4.7,知DS18B20工作在外部电源供电方式。单片机采用采用P1.1口与DS18B20通信。下面根据单片机的初始化时序和读写时序,写出DS18B20和单片机之间的读写操作,这里只给了温度的读取,下位机部分程序在附录中给出。 这里特别提醒的是DS18B20对时序要求很高,精度要求很高,所以程序的延时对是否能读起数据起到非常关键的作用。 DS18B20读写数据程序如下:
void delaym(int time) //延时为(time*2+2)us
{
int s;
for(s=0;s<time; s++)
}
void write_bite(unit8 bite) //写一位数据位
{
DQ=0;
if(bite==1)
DQ=1; //如果写"1",DQ=1;
delaym(29);//延时60us提供DS18B20采样
DQ=1; //释放DQ
}
unit8 read_bite(void) //读一位数据位
{
DQ=0; //将总线DQ拉低开始读时序
delaym(0); //延时2us
DQ=1; //释放DQ;
delaym(1); //延时4us后再读数据
return(DQ);
}
void write_byte(unit8 dat) //写一字节数据
{
unit8 i;
unit8 temp;
for(i=0;i<8;i++)
{
temp=dat>>1; //右移一位
temp&=0x01;
write_bite(temp);
}
}
unit8 read_byte(void)
{
unit8 i,value=0;
for(i=0;i<8;i++)
{
if(read_bite())
value|=0x01<<i;//读一字节数据,一个读时序读一位,并做移位
delaym(29) ; //延时60us有以完成读一位,之后再读下一位
}
return(value);
}
unit8 DS18B20_RESET(void)
{
unit8 data;
DQ=0;
delaym(239); //保持DQ低480us
DQ=1;
delaym(35);
da=DQ;
delaym(211);
return (data);//有芯片应答data=0,无则data=1
}
4.4 系统接口模块电路设计 本系统的采集模块采集到数据后,必须要经过CH372传到上位机应用软件才能实现控制下位机的各种操作。而CH372是USB接口芯片,下位机和上位机通信的要通过CH372接口芯片来完成,其和计算机的连接很简单,所以这一部分主要的硬件实现是CH372和单片机AT89C51的连接问题。 4.4.1 USB简介 USB(Universal Serial Bus)是外围设备与计算机进行连接的新型接口,既一种新型的通用串型总线接口,USB具有即插即用、热插拨、接口体积小、节省系统资源、传输可靠、提供电源、良好的兼容性、共享试通信等优点。 在USB产生之前,外部设备和计算机的通信主要是通过计算机主板所提供的各种接口,比如ISA接口、PCI接口、PS/2接口、串行接口,并行接口等,这些接口,存在这样那样的缺陷,比如接口规格不统一、不共享等为了克服上述外围设备的缺陷,P制造商和用户迫切需要一种新型的外设接口, USB正是在这样的环境下产生的,它是一种快速、双向、同步、廉价、并支持热插拨功能的串行接口。 USB是一种新型的接口,那么它必定有它的通信标准,也就是我们所说的协议,下面简单介绍USB的通信协议。 一般的,对终端用户来看,USB系统是USB设备连接到主机的简单连接,但对开放人员来说,这中连接可分为三个层次:功能层、USB设备层、USB总线接口层,且每一层都由主机和USB设备的不同功能模块组成。可以用下面的图型来形容。下图4.8是这种分层通信机制的简化。 由图,一个USB设备由三个功能模块组成:USB总线接口、USB逻辑设备、功能单元。USB总线接口是USB设备中的串行引擎(SIE);USB逻辑单元被看作是一个端点的集合;功能单元客户软件被看作接口的集合。 USB传输类型包括批量传输、同步传输、中断传输和控制传输,每种传输类型的传输速度、可靠性以及应用范围都不同。控制传输可靠性是最高的,但速度最慢;同步传输速度快,满足实时性,但可靠性低。在具体应用中,端点传输类型可根据传输速度和可靠性选择。 在USB通信协议中,主机取得绝对主动权利,设备只能是“听命令行事”,通过一定的命令格式(设备请求)完成通信。USB设备请求包括标准请求、厂商请求和设备类请求。设备的枚举是标准请求命令完成的;厂商请求是用户定义的请求;设备类请求是特定的USB设备类发出的请求,例如海量储存类、打印机类和HID(人机接口)类。固件编程中设备请求必须遵循一定的格式,包括请求类型、设备请求、值、索引和长度。 4.4.2 USB芯片选择 USB的传输速度可分为低速(1.5Mbps)、全速(12Mbps)和高速(480Mb/s),按传输速度来分,供选择的USB芯片类型主要有:低速(1.5Mbps)和全速(12Mbps),可选择Philips公司的PDIUSBD12和Cypress公司的EZ-USB2100系列以及国产的CH372芯片; 高速(480Mbps)可选Philips公司的ISP1581和Cypress公司的USB接口芯片CY7C68013。 本次系统要传输的速率比较少,可以所以选择全速的USB接口芯片,由于国产的芯片已经有所好转,再加上资料比较齐全,这次系统设计所选择的USB接口芯片是国产芯片CH372。 芯片介绍: CH372是南京沁恒电子有限公司生产的新型USB接口芯片,具有8位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到单片机/DSP/MCU/MPU等控制器的系统总线上;它屏蔽了USB通信协议,用户如果没有涉及到底层开放,那么只要了解芯片的普通用法就可以快速的设计USB设备。利用CH372进行USB设备的通信设计可以如下的方框图4.9 5 系统软件设计 本系统进行软件设计包括下位机软件设计和上位机软件设计,下位机软件设计可以使用汇编语言和单片机C语言,上位机设计可以采用的很多计算机高级语言,比如VC++、Delphi、C++ builder等,在这里选择C++ builder来编写上位机程序。至于下位机程序,主要有汇编语言、PL/M语言和C语言。汇编语言有执行效率高、速度快、与硬件结合紧密等特点,尤其在I/O端口管理时,使用汇编语言有快捷、直观的优点。但是使用汇编语言相对于高级语言,比如单片机C语言来讲,难度要大很多,而且汇编语言的呈现可读性低、开放性差。所以下位机的程序设计选择单片机C语言。下面简单介绍本次软件设计的编程工具。
全套资料免费下载: 关注v-x-公-众-号:【】 后-台-回-复:【】 即可获资料 回复【】即可获取 包括有:C、C++、C#、JAVA、Python、JavaScript、PHP、数据库、微信小程序、人工智能、嵌入式、Linux、Unix、QT、物联网、算法导论、大数据等资料