基于单片机的双路信号检测系统综合设计_第1页
基于单片机的双路信号检测系统综合设计_第2页
基于单片机的双路信号检测系统综合设计_第3页
基于单片机的双路信号检测系统综合设计_第4页
基于单片机的双路信号检测系统综合设计_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于单片机的双路信号检测系统综合设计摘要:通过单片机编程实现对电压和温度两路信号进行实时检测并且显示,同时设置不同的工作状态,使得可以单独显示电压或者温度值,当然也能同时显示两路信号。其中电压由外部电路输入进行测试,温度由温度传感器进行输入测试为了测试方便记录显示,还应设计一个等待状态。关键字:单片机 温度显示 电压显示 1 设计任务概述设计一个能同时对环境温度和0V2.5V直流电压进行检测的系统,压的检测采用TLC549串行ADC器件;对温度的检测采用LM75A数字温度感器;检测结果以动态扫描方式显示在一个8位LED数码显示器上(可以同时显示,也可以轮流显示)。结合Quick51核心板和SmartSOPC教学实验开发平台的有关实验电路完成系统原理图设计和程序设计;程序的调试在实验箱上完成。2 硬件电路设计2.1 系统总体框图设计综合实验系统主要由以下几部分组成:AT89C51单片机及其仿真系统,温度、电压模拟量传感器及其接口电路,AD转换模块,数据存储模块,微控制器AT89C51、数字温度计LM75A、数字电压表TLC549、LED数码显示器、键盘等组成,框图如图1所示: 图1系统采用AT89C51单片机作为主控芯片,AD转换模块将两路模拟号转换为数字信号;外部数据存储模块为该系统采集的数据提供存储空间;按键控制模块向CPU传回键值,用来设置工作状态和方式;时钟芯片不仅可以给系统提供准确的时间;看门狗电路模块为系统提供了精确复位和低电压监控功能,一旦系统出现故障或程序跑飞,它就可以在超时周期之后使CPU复位,提高系统的整体可靠性和抗干扰能力;LCD液晶显示模块可同时显示温度和电压,也可以单独 显示其中一项数据。2.2 微控制器AT89C51微控制器AT89C51模块如图2所示: 图2单片机仿真系统可以模拟CPU在仿真机上运行用户程序(程序和数据存器借用仿真机的),也可以连接外部电路来实现动态监测和控制功能仿真机一般都具有单片机的基本功能部件,如CPU、RAM、用户程序存储区、键盘等;具有单步、设置断点(以便随时观察内部各RAM、特殊功能寄存器的数据变化)、连续运行用户程序的功能。该机可以仿真8031、89C2051、89C51等类型的单片机,该机的调试软件可以直接编辑汇编源程序通过仿真机进行编程和调试减少了对芯片的频繁写人、擦除和修改操作,只有当程序调试顺利通过才将程序写入芯片,编程方便且节省时间AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,和工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。2.3 LM75A数字温度计LM75A数字温度计模块如图3所示: 图3LM75A 是一个使用了内置带隙温度传感器和-模数转换技术温度-数字转换器。它也是一个温度检测器,可提供一个过热检测输出。LM75A 包含许多数据寄存器:配置寄存器(Conf),用来存储器件的 某些配置,如器 件的工作模式、OS 工作模式、OS 极性和OS 故障队列等(在功能描述一节中有详细描述);温度寄存器(Temp),用来存储读取的数字温度;设定点寄存器(Tos & Thyst),用来存储可编程的过热关断和滞后限制,器件通过2 线的串行I2C 总线接口和控制器通信。LM75A 还包含一个开漏输出(OS),当温度超过编程限制的值时该输出有效。LM75A 有3 个可选的逻 辑地址管脚,使得同一总线上可同时连接8 个器件而不发生地址冲突,LM75A 可配置成不同的工作条件。它可设置成在正常工作模式下周期性地对环境温度进行监控或进入关断模式来将器件功耗降至最低。OS 输出有2 种可选的工作模式:OS 比较器模式和OS 中断模式。OS 输 出可选择高电平或低电平有效。故障队列和设定点限制可编程,为了激活OS 输出,故障队列定义了许多连续的故障。温度寄存器通常存放着一个11 位的二进制数的补码,用来实现0.125的精度。这个高精度在需要精确地测量温度偏移或超出限制范围的使用中非常有用。正常工作模式下,当器件上电时,OS 工作在比较器模式,温度阈值为80,滞后75,这时,LM75A 就可用作一个具有以上预定义温度设定点的独立 的温度控制器。 特性 :器件可以完全取代工业标准的LM75,并提供了良好的温度精度(0.1单个器件的电源可 超出2.8V5.5V 的范围。 小型8 脚封装:SO8 和TSSOP8。 具有I2C 总线接口,同一总线上可连接多达8 个器件。 电源电压范围:2.8V5.5V。 温度范围:55 +125。 提供0.125的精度的11 位的ADC 。 温度精度: 25100时为2 55125时为3 可编程温度阈值和滞后设定点。 为了降低功耗,关断模式下消耗的电流仅为3.5uA。 上电时器件可用作一个独立的温度控制器。 ESD 保护:JESD22-A114 为2000V HBM,JESD22-A115 为200VJESD22-C10为1000V CDM。 超过100mA 的JESDEC 标准JESD78 要进行栓锁测试(Latch-uptesting)。2.4 数字电压表TLC549 数字电压表TLC549模块如图4所示: 图4TLC549 是以8 位开关电容逐次逼近A/D 转换器为基础而构造的CMOS A/D 转换器。它们设计成能通过3 态数据输出和模拟输入和微处理器或外围设备串行接口。TLC549 仅用输入/输出时钟 (I/O CLOCK )和芯片选择 (CS )输入作数据控制。TLC549 的I/O CLOCK 输入频率最高可达 1.1MHz 。有关和大多数通用微处理器接口的详细资料已由工厂准备好,可供使用。TLC549 的运用和较复杂的TLC540 和 TLC541 的运用非常相似;不过,TLC549 提供了片内系统时钟,它通常工作在4MHz 且不需要外部元件。片内系统时钟使内部器件的操作独立于串行输入/输出的时序并允许TLC549 像许多软件和硬件所要求的那样工作。I/O CLOCK 和内部系统 时钟一起可以实现高速数据传送以及对于TLC549 为每秒40,000 次转换的转换速度。TLC549 的其他特点包括通用控制逻辑,可自动工作或在微处理器控制下工作的片内采样-保持电路,具有差分高阻抗基准电压输入端、易于实现比率转换 (ratiometric conversion )的高速转换器,定标 (scaling )以及和逻辑和电源噪声隔离的电路。整个开关电容逐次逼近转换器电路的设计允许在小于 17 s 的时间内以最大总误差为0.5 最低有效位 (LSB )的精度实现转换。TLC548C和TLC549C 的工作温度范围为0 至 70 。TLC548I 和 TLC549I 的工作温度范围为-40 至 85 。2.5 LED数码显示器 LED数码显示器模块如图5所示: 图5LED数码显示器的,亦叫十进制技术、译码驱动显示器,是一种功能齐全,使用方便的电子器件,它把十进制技术寄存译码驱动LED数码显示等组合成一体。数码显示器有共阴极和共阳极。一个LED数码显示器两端所加正向电压增加到2V时,则会出现正向电流并发光,极限电流为20mA左右。因此,无论是共阳极,还是共阴极结构,LED数码显示器都要加限流电阻。2.6 键盘键盘模块如图6所示: 图6键盘用来实现对各种状态的转换控制按钮,使显示结果通过键盘的操作实现温度、电压的单独显示和同时显示。3 程序设计3.1 系统流程框图系统软件包括单片机软件和PC机软件。单片机软件采用模块化结构,利用C语言编写根据要实现的功能,该软件由主程序以及数据采集、AD转换、数据通信、日历时钟编程、键盘中断调控、液晶显示、DA转换、数码管显示等程序模块组成。给出系统程序流程图如图7所示:判断键值开始初始化结束 图7键值状态 state键值处理处的框图流程图: 做出相应的键值处理温度测量并显示电压和温度交替测量并显示返回“待命”状态 P电压测量并显示“待命”状态 P再进行循环判断 图 83.2 各部分程序函数介绍3.2.1 数字温度计显示函数: ReadAdc() 功能: 读取A/D转换结果结果: 返回8位ADC代码3.2.2 接口初始化函数:AdcInit()功能:初始化ADC接口3.2.3 延迟函数:Delay()功能:延时1ms65.536s参数:t0时,延时(t*0.001)s;t=0时,延时65.536s3.2.4 系统初始化函数:SysInit()功能:系统初始化3.2.5 温度读取函数:LM75A_GetTemp功能:读出LM75A的温度值返回:LM75A温度寄存器的数值(乘以0.125可得到摄氏度值)3.2.6 转换函数:ByteToStr()功能:字节型变量c转换为十进制字符串3.2.7 函数:DispTemp()功能:在数码管上显示出温度值参数:t:补码,除以8以后才是真正温度值4 系统调试4.1 SmartSOPC 实验箱和Quick51简介采用SmartSOPC 实验箱和Quick51核心板SmartSOPC 教学实验开发平台集众多功能于一体,是 SOPC、DSP、EDA、ARM、ARM7 SOC 以及8051 教学实验、科研开发的最佳选择。开发平台采用“主板核心板”的模式,更换不同的核心板即可实验不同平台的功能。 Quick51 正是跟SmartSOPC相配套的 8051 单片机核心板,Quick51 是一款自由的、开放全部系统资源的单片机实验板。单片机芯片采用Philips最新推出的拥有64KBFlash的增强型 8052内核单片机P89LV51RD2,工作电压 3.3V (3V逻辑是大趋势)。Quick51 和SmartSOPC配合,可以做各种单片机教学实验,如LED点阵扫描显示、键盘检测、动态数码管、液晶屏、电机驱动、I2C总线、红外收发、蜂鸣器、数字温度计、电子钟等。4.2 程序调试步骤及工具:Quick51 实验板自带的标有“仿真”字样的单片机板,在Keil C51软件支持下,能够进行硬件在线仿真。该仿真模式具有操作方便、占用资源少优点。具体操作步骤如下: 1注意,如果此时 SmartSOPC 实验箱的电源指示灯还亮着,就请先切断其电源。 2从 Quick51 上取出标有“ISP”的单片机板,再将标有“仿真”字样的单片机板插在DIP-40 锁紧座内,并锁紧。 3 跳线设置、8 针排线、串行口电缆的接法都和ISP 下载方式相同。 4 运行Keil C51 软件,选择菜单“ Project | Open Project”,找到文件夹“E:Quick51First ” 下的工程文件“First.Uv2”,打开。5单击Keil C51工具栏的“ ”图标,弹出“Option for Target Target 1”对话框。 6单击“Debug ”标签页,默认的调试器是“Use Simulator ”。现在选中“Use: Keil Monitor-51 Driver”调试器,然后勾中下面的“Go till main”项。 7单击右上角的 “Settings”按钮。请选择正确的串行通信端口 (通常为COM1 )和波 特率(9600 或 19200),然后确定。 8单击“Options for Target Target 1”对话框的“确定”按钮,完成设置。 9接通 SmartSOPC 实验箱的电源。 10单击 KeilC51 工具栏的 “”图标。这时,会弹出一个警告对话框,提示当前的 Keil C51 软件是“EVALUATION VERSION”(评估版)。单击 “确定”按钮,进入仿真调试状态。如果未能进入调试状态,请仔细检查硬件电路的连接,然后按照正确的操作步骤再试一次。 11单击 KeilC51 工具栏的“ ”图标,可以单步运行程序。单击“”图标可以全速运行。我们看到在仿真调试下全速运行的效果跟 ISP 方式是相同的。 12退出全速运行状态的方法是,按 Quick51 实验板上的 RST 按键。再次单击“ ” 图标,退出仿真调试。4.3程序调试遇到的问题及解决方法: 1.硬件问题,如:按键不灵,要多按几次才能出现程序设计的结果。解决办法:这种问题除了更换机子就没有别的办法。但由于实验条件的限制,同学们都在用主机,所以无法更换。2.程序启动时P不在程序要求的位置。如要求P在第5格显示,而开始在第2位显示。解决办法:必须在软件中修改,具体改发如下:就是在第一种情况下(K=0)时把显示字符串的程序DispChar(2,p)改成DispChar(5,p);就会得到想要的结果。3.单独显示温度时出现了很多不必要的0如:出现20.000,出现这种情况的原因是显示程序中没有把字符串型的数据转化成整型数据而是直接送到显示程序中显示。解决办法:就要先转化数据类型,再送出去显示。这个问题出现在第三种情况下。具体软件修改如下: 把数据转化程序添加在第三种情况之前,以下是添加的程序:if ( s ) DispChar(x,-); x+;/显示整数部分 DispStr(x,buf+1);/显示小数点 DispDotOn(4);/显示小数部分 DispStr(5,supTabd-2); 4.单独显示电压值的时候调节电位器但显示的电压值不变。可能的问题有:一是由于接线放法不对或者是线有问题接触不良,二是由于读出ADC的程序没有真确读出。我在这里遇到的问题是接线的方法不对。因为我的程序到其他主机上时没有这种问题,当我接线重新正确接好之后可以正常运行。4.4 硬件部分各跳线的连接情况 1.按照(quick51)检查quick51电路板上的跳线jp1-jp7是否是默认设置 2.SmartSOPC实验箱C2区的SCL用杜邦线连接到quick51实验班JP5的T0 3 SmartSOPC实验箱C2区的SDA用杜邦线连接到quick51实验班JP5的T1 4 5 quick51电路板上的PB0用杜邦线连接到quick51电路板上D4区的NCS 6 quick51电路板上的PB1用杜邦线连接到quick51电路板上D4区的DAT 7 quick51电路板上PB2的用杜邦线连接到quick51电路板上D4区的CLK 5. 结论该综合实验系统不仅能为以单片机为核心的系统前期探索研究提供一种方便的实验装置,而且能在远离工业现场的实验室解决工业使用中的实际问题。实验结果表明该系统可将许多分散的实验项目整合在一起进行研究和分析,节约资源,降低成本;实验数据正确率高,通信实时性强,系统工作可靠;单片机串行网络构成的分布式通讯系统灵活性强,易于扩充,其基本原理适用于工业现场的分布式数据采集、检测及控制系统,具有很大的实用价值6. 参考文献1李朝青PC机及单片机数据通信技术M北京:北京航空航天大学出版,2001LI Chao-qingData Communication Technology of PC and SCMMBeijing:Beijing University of Aeronautics and Spaceflight Press,2001(in Chinese)2杨文龙单片机原理及使用M西安:西安电子科技大学出版社,1993YANG W enlongPrinciple and Application of SCMMXian:Xian University of Electronics Technol-ogy Press,1993(in Chinese)3高红红矿区专用铁路调度监督系统的研制J现代电子技术,2005,21:84GAO Hong-hongResearch and Development of Dispatch and Supervision System of Mine RailwayJModern Electronics Technique,2005,21:84(in Chinese)4陈世攀,李玉忍E2PROM器件CAT1161在单片机系统中的使用J电气传动自动化,2003,25(4):57CHEN Shipan。LI YurerL Application of E2PROMDe vice CAT1 1 6 1 in the Single Chip MicrocomputerSystemJElectric Drive Automation,2003,25(4):57(in Chinese6 附录实验程序:/*main.cLM75A数字温度计*/#include Disp.h#include I2C.h#include VOLTAB.H#include #include /定义TLC549操作接口sbit CS = P20;sbit DAT = P21;sbit CLK = P22;sbit k1=P24;sbit k2=P25;sbit k3=P26;sbit k4=P27;/*函数:ReadAdc()功能:读取A/D转换结果返回:8位ADC代码*/unsigned char ReadAdc()unsigned char d;unsigned char n;CS = 0;n = 5;while ( -n != 0 );n = 8;dod 0时,延时(t*0.001)st=0时,延时65.536s*/void Delay(unsigned int t)doTH0 = 0xFC;TL0 = 0x66;TR0 = 1;while ( !TF0 );TR0 = 0;TF0 = 0; while ( -t != 0 );/*函数:SysInit()功能:系统初始化*/void SysInit()TMOD &= 0xF0;TMOD |= 0x01;/设置T0为16位定时器DispInit();/数码管扫描显示初始化I2C_Init();/初始化I2C总线/AdcInit();Delay(10);/*函数:LM75A_GetTemp功能:读出LM75A的温度值返回:LM75A温度寄存器的数值(乘以0.125可得到摄氏度值)*/int LM75A_GetTemp()unsigned char buf2;int t;I2C_Gets(0x90,0x00,2,buf);t = buf0;t = 5;/去掉无关位return t;/*函数:ByteToStr()功能:字节型变量c转换为十进制字符串*/void ByteToStr(unsigned char idata *s, unsigned char c)code unsigned char Tab = 100,10;unsigned char i;unsigned char t;for ( i=0; i2; i+ )t = c / Tabi;*s+ = 0 + t;c -= t * Tabi;*s+ = 0 + c;*s = 0;/*函数:DispTemp()功能:在数码管上显示出温度值参数:t:补码,除以8以后才是真正温度值*/void DispTemp(int t,unsigned char v,unsigned char ok)code unsigned char Tab84 =0,1,2,3,5,6,7,8;code unsigned char supTab84 =000,125,250,375,500,625,750,875;unsigned char buf4;bit s;/符号位unsigned char i;/整数部分unsigned char d;/小数部分unsigned char x;/临时变量/分离出符号s = 0;if ( t 0 )s = 1;t = -t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论