基于单片机的温度监测系统的设计

发布时间:2012-3-14 13:53    发布者:1770309616
关键词: D1S18B20 , 单片机 , 温度监测
  引言
  温度检测是许多行业的重要工作条件之一。
  无论是粮食仓库、中药仓库,还是图书保存。都需要在符合规定的温度环境条件之中。而温度却是最不易保障的指标。针对这一情况。研制一款可靠、方便、易及时调控的温度检测系统就显得极为重要。笔者运用D1S18B20采集数字信号,通过蓝牙无线通信技术和USB接口技术。实现由89S52单片机检测控制温度的监测系统。
 1 系统的结构
  整个系统由采集板、通信板和PC机监控程序组成。采集板以温度监测芯片DS18B20t21、单片机芯片AT89S52和蓝牙芯片BC4为核心分时完成监听主机的命令和数据采集以及数据发送的功能。可以根据接收到的主机的命令随时改变系统的工作状态。 如图1。通信板以USB 芯片PDIUSBD12、单片机芯片AT89S52为核心,实现数据接收、数据发送,以及将采集回来的外部信号通过波形图实时显示在PC机界面上。同时把数据保存到数据库中。如图2。
30.jpg
图1采集板系统框图
31.jpg
图2通信板系统框图
  2 系统硬件设计
  2.1 采集板电路设计
  2.1.1 蓝牙模块—无线接收发射电路
  系统采用了CSR公司蓝牙芯片BC417143.该芯片采用Blue2.0、支持主或从模式、支持AT命令集、支持波特率为2 400到1 382 400 bps,适用于嵌入式串口传输无线的全新的模块。
  值得注意的是。蓝芯片工作在3.3 V,而MCU工作在5 V.存在逻辑电平不匹配问题。且IO管脚无法容忍MCU的5 V逻辑电平。设计中采用了1117芯片进行电平转换输出3.3 V.蓝牙与MCU连接需经过电平限制以保证蓝牙模块正常工作 以下是蓝牙模块的电源选择方案及串口模块的引脚定义。如图3。
32.jpg
图3蓝牙模块的电路塬理图
  在建立蓝牙数据通信时。需要先对其通信协议进行设置:
  (1)UART参数设置:先设置通信协议长度,再设置波特率、硬件控制流参数。校验参数、数据位数及停止位
  (2)工作模式设置:可将蓝牙模块的工作模式设置为主模式或者从模式。
  (3)设置蓝牙模块名:名称是蓝牙模块在进行通信的标识之一。通过设置蓝牙模块名协议可以更改蓝牙模块名
  (4)设置安全模式:蓝牙通信中的数据安全主要是有蓝牙通信时的PIN码保障的。通过设置安全模式协议。可以根据不同的需要。设置蓝牙通信的安全模式
  (5)设置PIN码:设置PIN码可以保证仅有可靠的设备通过蓝牙与模块互相通信系统采用的波特率为9 600 bps.传输距离能达10 In。由于采用蓝牙做为传输。具有很强的抗干扰能力。
  2.1.2 采集板电路塬理图
  采集板电路塬理图如图4。蓝牙模块主要与单片机的串行IO口连接。数字温度传感器DS18B20与单片机的P1.0口连接。继电器则与P1.2口连接。温度传感器DS18B20将温度转化为数字信号通过P1.0 El送给单片机。经单片机处理后的数据由串口传给蓝牙模块(BLUETOOTH) 也可以通过蓝牙模块接收通信板发来的指令2-2通信板电路设计通信板主要由单片机、蓝牙模块、USB模块等相关电路构成。如图5PDIUSBD12是一款性价比很高的USB器件它通常用作微控制器系统中实现与微控制器进行通信的高速通用并行接口。它还支持DMA传输此外它还集成了许多特性。包括SoftConnetTM、GoodLinkTM、可编程时钟输出低频晶振和终止寄存器集合 所有这些特性都为系统显着节约了成本。 同时使USB功能在外设上的应用变得容易。
33.jpg
图4采集板电路塬理图
  PDIUSBD12的8根DATA引脚与单片机的PO口相连接,采用 10 k的排阻作为上拉电阻;SUSPEND是当芯片挂起状态挂起时,输出为高。
  与单片机的P1.1连接:INT_N是中断请求。与单片机的IN,m 连接:RD N和WR N读写选通信号分别与单片机的RD和WR连接;DMREQ、DMACK N、EOT N分别是DMA 的中断请求、DMA应答和DMA传输完成。由于没用启用DMA功能直接接高电平。RESET N是复位引脚。接单片机的P1.7;GL N是芯片的工作指示灯。接人一个LED指示灯。可以直接观察USB设备的运行状态;XTAL1和XTAL2接6MHZ.CS N为片选信号。接单片机的PI.6,A0地址线,采用I/O口模拟,接单片机P3.4:D+和D一是USB的差分数据线分别串联一个l8 Q的阻抗匹配电阻。后接USB插头上 。
  蓝牙模块连接方法与采集板的连接方式相同。
  通讯板的信号流程为:由采集板采集的温度数据经蓝牙模块传输到通讯板上,送到单片机上处理。通过PDIUSBD12传输到PC上进行显示保存。
  单用户在PC上进行操作时,数据由PC通过PDIUSBD12传送到单片机。再经过蓝牙传输,送到采集板进行相对的响应。
34.jpg
图5通信板电路塬理图
  3 软件设计
  本系统涉及内容较多。开发环境也都不一样,对于单片机软件的开发是基于KEIL uVision 3的uVision3集成开发环境IDE是一个基于Window的软件开发平台,有功能强大的编辑器、项目管理器和制作工具。
  对于USB驱动的开发采用了WinDriver9.2.1.用该软件生成所需驱动只需要USB设备插入后通过简单的几步就可以完成,同时还可以根据需要生成相应的应用程序代码。方便应用程序的开发嘲。
  采集板的系统流程图如图6,通讯板的系统流程图如图7PC机应用程序则采用了VISUAL STUDIO 6.0进行开发。采用C++语言编写程序代码。由于VC具有文档类程序、对话框类程序等。可以很快地实现界面的编程。
35.jpg
图6采集板程序流程图
36.jpg
图7通信板程序流程图
  为了将波形图实时显示。就需要重复绘制波形图。运用传统的绘图方法。会引起屏幕的强烈闪烁。现在常用的解决方法是:利用内存绘图的技术。将需显示的图形绘制在内存位图中。然后再拷贝到屏幕上。很好地解决了屏幕闪烁的问题,并且处理速度快自定义的绘图函数声明如下。在该函数内部实现了内存绘图。
  void CMyusbDlg::MEM— DRAW(
  int ID,
  unsigned char m_buf,
  int d_ pnow,int ONDRAW,
  CString TXT)
  在数据保存方面。本系统使用Access建立数据库。系统流程图如图8。
37.jpg
图8 PC机主程序流程图
  当主程序开始后。初始化了USB和界面后。就创建一个新的线程,和主线程并行工作。新线程主要就是完成USB数据的读取。然后把接收到得数据存放到一个缓冲区和数据库中。缓冲区主要是供主线程显示波形时使用。数据库则供用户日后查看历史记录使用。
  4 结论
  提出了一种基于USB与蓝牙芯片BC417143的无线温度监测系统的设计方案。并从硬件和软件两个方面介绍了系统的设计过程。实现了对温度信息进行的无线数据采集。利用蓝牙芯片作为无线收发模块。DS18B20作为温度数据采集。USB接口芯片作为与PC机的通信接口。简化了电路设计并具有易扩展和组网的特点。
本文地址:https://www.eechina.com/thread-87234-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
1770309616 发表于 2012-3-14 14:04:14
基于MCU内部Flash的在线仿真器设计方案

  由于市场对MCU功能的要求总是不断变化和升级,MCU应用的领域也不断扩展,因此往往需要对最初的设计进行修改。Flash MCU与以往OTP/MASK MCU相比,最大的优点就在于可进行高达上万次的擦写操作,顺应了MCU功能不断修改的需求;另一方面,Flash MCU市场价格也在不断下降。实际上,Flash MCU工作时Flash的延时、读写时充等特性是非常,程序存储在MCU外部仿真板上的SRAM中,由额外的硬件逻辑来模拟Flash的这些特性是费时低效的;同时将Flash和MCU内嵌的其他类型存储器如SRAM、ROM等区分开来也是十分重要的。如果在程序的调试阶段就可以反映出这特性,有且于实现程序从仿真器到商用MCU芯片的无缝转移。
  1 关于Flash MCU
  Flash MCU的构成如图1所示,主要由CPU核、Flash IP及其控制模块、SRAM IP及基控制模块、WatchDog、PMU(Power Manage Unit,功耗管理单元)、I/O端口以及ISP在线编程接口等组成。不同功能的Flash MCU还包含一些各自独特的应用模块单元,如用于寻呼的Flash MCU所包含的解码模块。对于用来构成在线仿真器的Flash MCU还可能包括仿真接口单元。本文在讨论Flash MCU的在线仿真时,指的都是包含仿真接口的Flash MCU。
  Flash存储器几乎拥有现今追求个性化的用户所需要的所有优点:掉电数据不丢失、快速的数据存取时间、电可擦除、容量大、在线(系统)可编程、价格低廉以及足够多的擦写次数的高可靠性等,已成为新一代嵌入式应用的首选存储器。与Flash MCU相比,MASK(掩膜)MCU尽管在大指生产时仍具备一定价格优势,但其升级不便的缺点,随着今后Flash成本的进步降低和MCU功能需求的逐渐增多,将表现得更为显着。
  2 基于外部SRAM的MCU在线仿真器
  SRAM不需要刷新电路即能保存它内部存储的数据。而DRAM(Dynamic Random Access Memory)每隔一段时间,要刷新充电一次,否则内部的数据即会消失,因此SRAM具有较高的性能,但是SRAM也有它的缺点,即它的集成度较低,相同容量的DRAM内存可以设计为较小的体积,但是SRAM却需要很大的体积,且功耗较大。所以在主板上SRAM存储器要占用一部分面积。
  一种是置于CPU与主存间的高速缓存,它有两种规格:一种是固定在主板上的高速缓存(Cache Memory );另一种是插在卡槽上的COAST(Cache ON A Stick)扩充用的高速缓存,另外在CMOS芯片1468l8的电路里,它的内部也有较小容量的128字节SRAM,存储我们所设置的配置数据。还有为了加速CPU内部数据的传送,自80486CPU起,在CPU的内部也设计有高速缓存,故在Pentium CPU就有所谓的L1 Cache(一级高速缓存)和L2Cache(二级高速缓存)的名词,一般L1 Cache是内建在CPU的内部,L2 Cache是设计在CPU的外部,但是Pentium Pro把L1和L2 Cache同时设计在CPU的内部,故Pentium Pro的体积较大。Pentium II又把L2 Cache移至CPU内核之外的黑盒子里。
  MCU仿真器的一种常见做法是,将用户的待调试程序(以下简称用户程序)存储在MCU外部仿真板的SRAM(以下简称外部SRAM)中,在bond-out MCU的外部结构仿真监控硬件(以下简称外部仿真逻辑),当用户程序在仿真器中调试完成后,编程到商用MCU芯片中,应用到用户系统。在商用MCU中,这些仿真接口信号不会出现在芯片封装的管脚上。
  在Flash MCU没有被广泛应用之前,仿真器设计公司通常将用户程序和监控程序都存储在外部SRAM中,这种做法基本上可以反映SRAM MCU真实的运行情况,对用户程序的调度效果影响不大。但是对于Flash MCU而言,则存在一定的问题。毕竞SRAM和Flash在工艺和读写时序上相去甚远,CPU运行存储在SRAM和Flash中的程序,情况是完全不同的。有可能出现程序存储的仿真器的外部SRAM中运行良好,但是编程到商用MCU中工作起来却不正常。随着Flash MCU在 MCU市场中的比重越来越大,这一问题显得越来越突出,有必要加以重视。
  本文介绍的Flash MCU仿真器的设计方法,几乎不增加MCU的仿真接口信号和芯片设计的复杂程度,就可以接近程序在商用MCU中的运行情况,实现用户程序从仿真器到商用MCU的良好转移。
  3 基于MCU内部Flash的在线仿真器的一种设计方法
  图2是Flash MCU仿真器系统构成示意图,其中的虚线接口信号是MCU的仿真接口,通常包括仿真使能信号,bond-out MCU中的CPU的地址、数据、读/写和取指等信号,以及少数几个用于仿真的控制信号。仿真接口是Flash MCU与外部仿真逻辑之间的桥梁,使得外部仿真逻辑能够监控MCU的内部状态。
  3.1 仿真器的工作原理
  仿真器内部的P口等硬件资源和51系列单片机基本是完全兼容的。仿真主控程序被存储在仿真器芯片特殊的指定空间内,有一段特殊的地址段用来存储仿真主控程序,仿真主控程序就象一台电脑的操作系统一样控制仿真器的正确运转。仿真器和电脑上的上位机软件(即KEIL)是通过串口相连的,通过仿真器芯片的RXD和TXD负责接收电脑主机发来的控制数据,TXD负责给电脑主机发送反馈信息。控制指令由KEIL发出,由仿真器内部的仿真主控程序负责执行接收到的数据,并且进行正确的处理。进而驱动相应的硬件工作,这其中也包括把接收到的BIN或者其它格式的程序存放到仿真器芯片内部用来存储可执行程序的存储单元(这个过程和把程序烧写到51芯片里面是类似的,只是仿真器的擦写是以覆盖形式来做的),这样就实现了类似编程器反复烧写来试验的功能!不同的是通过仿真主控程序可以做到让这些目标程序做特定的运行,比如单步、指定断点、指定地址等,并且通过KEIL可时时观察到单片机内部各个存储单元的状态。仿真器和电脑主机联机后就象是两个精密的齿轮相互咬合的关系,一量强行中断这种联系(比如强行给仿真器手动复位或都拨支联机线等),电脑就会提示联机出现问题,这也体现了硬件仿真的特性,即“所见即所得”。这些都是编程器无法做到的。这些给调试、修改、以及生成最终程序创造了比较有力的保证,从而实现较高的效率。
  仿真器工作时,CPU的取指空间需要在内外存储器之间反复切换。CPU地址空间划分示意图如图3所示。总体上,仿真器的工作受图4所示的状态机控制。该状态机共有四个状态:
  •用户程序运行态(简称用户态)
  仿真器复位后,处在运行用户程序的状态。在该状态下,CPU运行存储在内部Flash中的用户程序;外部仿真逻辑实时监测仿真接口,等待程序中断事件的发生,进入下一状态-跳转态。
  用户程序通过MCU的ISP(在线编程接口)编程到内部Flash中,由Flash MCU的专用编程器完成。在设计bond-out MCU时,应该考虑与非bond-out MCU在编程时管脚的一致性。
  外部SRAM用来存储监控程序和监时数据。
  •跳转态
  一旦程序中断事件发生,需要切换CPU的取指空间,跳转到监控程序窗口。
  由于在程序中何处中断是不可预知的,因此不可能在用户程序中预先安插好用于空间切换的跳转指令。所以需要一个专门的状态来插入跳转指令码和跳转的目的地址,即监控程序的入口地址,强制CPU运行监控程序。监控程序窗口是划分CPU地址空间时,为仿真功能预留的地址空间,空间大小视所需的监控程序的大小而定,监控程序的大小在一定程序上取决于仿真功能的强弱。
  CPU从仿真接口读跳转指令码和跳转地址。MCU外部仿真逻辑同时使能程序空间切换信号,屏蔽MCU的所外部中断,停止MCU中CPU外围模块的时钟,也就相当于屏蔽了MCU的所有内部中断。当程序空间的切换完成后,仿真器进入监控态,运行存储在外部SRAM中的监程序。
  •监控态
  在监控状态下,CPU运行存储在外部SRAM中的监控程序;继续禁止MCU的所有外部中断,停止MCU中CPU外围硬件模块的时钟。
  监控程序的任务是获取MCU当前的状态,接受软件的调试命令,控制MCU的下一步运行。监控程序可以写得很简单,仅仅获取CPU特殊寄存器和外围硬件寄存器的值,实现监视功能。如MOTOROLA的HC6808就可以通过在监控程序开始处加入以下程序段得到这些寄存器的值。对于CPU指令集不支持读取全部特殊寄存器的MCU,可以通过在MCU内部增加测试逻辑得到。PC值即为程序中断处CPU的取指地址。
  PSHA ;将ACC的值压入堆栈
  TPA ;将CCR的值传送给ACC
  STA $2FEB ;将CCR的值存入存储器,地址为$2FEB
  PULA ;将ACC弹出堆栈
  STA $2FEA ;将ACC有值存入存储器,地址为$2FEA
  STHX $5F ;将IDX(H:X)的值存入存储器,地址为$005F
  TSX ;将SP的值传送给IDX(H:X)
  STHX $5D ;将SP的值存放存储器,地址为$005D
  当不再继续调试,给出开始运行的命令,监控程序结束对运行命令的等待,并且将CPU特殊寄存器的值恢复。继续运行监控程序,直到最后一条指令即跳转指令进行返回态。
  •返回态
  CPU执行监控程序的最后一条指令-跳转指令。外部仿真逻辑在指令码后紧接着插入本次中断事件的中断点地址(进入监控程序之前的用户程序指令地址),CPU的取指空间需要跳回到用户程序空间。取消对外部中断的屏蔽,恢复CPU外围模块的工作时钟,监控程序完成使命,回到用户态,继续运行内部Flash中的用户程序。
  3.2 内部仿真逻辑
  为了构造合适的MCU的仿真接口,必须在MCU设计时,在MCU内部增加一个仿真接口模块,称为内部仿真接口模块。负责对仿真接口所需的CPU端口信号进行处理(如出于减少bond-out信号线的考虑,将地址和数据总线复用),并产生外部仿真逻辑所需的控制信号如地址锁存信号,接收来自外部仿真逻辑的控制信号如程序文凭间切换使能信号等。
  3.3 外部仿真逻辑
  外部仿真逻辑如图2左部所示,负责接收计算机通过并口发送的仿真命令,监视MCU的仿真接口,控制仿真器的工作状态。外部仿真逻辑由外部仿真接口模块、断点判断模块、轨迹纪录模块、并口接口模块和外部SRAM读写控制模块等部分组成。各个模块的作用简单介绍如下:
  •外部仿真接口模块
  该模块是外部仿真逻辑中仿真状态机所在的核心模块。功能包括:接收业自MCU的地址、数据、读/写、取指、地址锁存等信号;根据并口接口模块给出的来自软件的仿真命令,并接收来自断点判断模块的断点标志信号;产生送给MCU的程序空间切换使能信号;运行监控程序时,给出读写外部SRAM所需信号,并接收读出的数据,将其送给MCU。
  •断点判断模块
  根据外部仿真接口模块送来的CPU地址,读取断点标志存储器中的相应值。如果读出的标志为有效值,表示当前地址为断地址。接收来自并口接口模块的设置和清除断点命令,将断点存储器的相应位置1或置0。允许设置任意数目的硬件断点。
  •轨迹纪录模块
  将外部仿真接口模块送来的CPU取指地址,存储在轨迹纪录的存储器中。轨迹纪录的存储器采用的FIFO的方式,所能纪录的轨迹长度是有限的,存满刷新。软件读取该存储器,可以得到CPU的运行轨迹。
  •并口接口模块
  并口接口(并行接口),简称并口,也就是LPT接口,是采用并行通信协议的扩展接口。并口的数据传输率比串口快8倍,标准并口的数据传输率为1Mbps。并口采用的是25针D形接头。所谓“并行”,是指8位数据同时通过并行线进行传送,这样数据传送速度大大提高,但并行传送的线路长度受到限制,因为长度增加,干扰就会增加,数据也就容易出错。目前,并行接口主要作为打印机端口等。
  提供仿真器和计算机并口之间的通信接口,可以针对不同的并口模式设计,以满足不同模式的通信时序要求。
  •外部SRAM读写控制模块
  仿真过程中,仿真器的不同部分需要分时读写外部SRAM,包括:并口接口模块下装程序到外部SRAM;MCU在监控态从外部SRAM中读取程序指令,存储临时数据等。
  对于Flash MCU而言,这种将用户的待调试程序存储在MCU内部的Flash中,将监控程序存储在MCU外部的SRAM中,并在MCU外部构造仿真逻辑,通过对采用bond-out技术的MCU的bond-out管脚进行监控,来实现在线仿真的做法,在芯片设计时不需要做太多的工作,而且可以反映程序真实的运行效果。而相对于用硬件平台如FPGA仿真,则价格低廉许多,是一种种权衡折衷的方法。作者提取了一个简单的Flash MCU模型,用这种方法完成了仿真器的逻辑设计,用Synopsys DC综合,用Quartus布线Altera APEX 20K200 FPGA中,用ModelSim5.4进行了后仿真,完成了仿真验证。结果证明这样的做法是可行的。
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

相关在线工具

相关视频

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表