已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于1-wrie串行总线应用系统的设计课程设计报告专 业: 电子科学与技术 班 级: 0902 姓 名: xxx 指导教师: xxxxx 二0一二年 十 月 十八 日目录一、设计任务31.1设计题目及要求31.2 设计思路3二、设计方案42.1 单片的选择42.2 温度传感器的选择42.3 显示器的选择52.4 设计方案5三、电路设计53.1 AT89S51单片机的特殊功能部件53.2 DS18B20的工作原理63.3 硬件电路设计及其分析73.4 DS18B20测温流程及软件设计10四、心得体会19五、参考书目19第一部分 设计任务1.1设计题目及要求设计制作一个DS18B20温度计。1利用单总线完成对DS18B20的初始化操作。2利用4位数码显示实时环境温度3增加2个按键,分别用于实现启动测温和关闭(停止)测温功能。4硬件方面需要9V转5V稳压电路。1.2 设计思路温度计电路设计总体设计方框图如图1所示,控制器采用单片机AT89S51,温度传感器采用DS18B20,用2位LED数码管传送数据实现温度显示。主 控 制 器LED显 示温 度 传 感 器单片机复位时钟振荡报警点按键调整整图1总体设计方框图第二部分 设计方案2.1单片机的选择采用AT89S51单片机。中央微处理器 AT89S51: AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80S51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。2.2温度传感器的选择采用数字单片智能温度传感器DS18B20。 DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO92小体积封装形式;温度测量范围为55125,可编程为9位12位A/D转换精度,测温分辨率可达0.0625,被测温度用符号扩展的16位数字量方式串行输出,其工作电源既可在远端引入,也可采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。DS18B20支持“一线总线”接口,测量温度范围为 -55+125,在-10+85范围内,精度为0.5。DS18B20的精度较差为0.2 。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量。如:环境控制、设备或过程控制、测温类消费电子产品等。与前一代产品不同,新的产品支持3V5.5V的电压范围,使系统设计更灵活、方便。由于DS18B20将温度传感器、信号放大调理、A/D转换、接口全部集成于一芯片,与单片机连接简单、方便,与AD590相比是更新一代的温度传感器,所以温度传感器采用DS18B20。2.3显示器的选择采用传统的七段数码LED显示器。LED数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。2.4设计方案采用数字温度芯片DS18B20 测量温度,输出信号全数字化。便于单片机处理及控制,省去传统的测温方法的很多外围电路。且该芯片的物理化学性很稳定,它能用做工业测温元件,此元件线形较好。在0100 摄氏度时,最大线形偏差小于1 摄氏度。DS18B20 的最大特点之一采用了单总线的数据传输,由数字温度计DS18B20和微控制器AT89S51构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。这样,测温系统的结构就比较简单,体积也不大。采用51 单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,而且体积小,硬件实现简单,安装方便。既可以单独对多DS18B20控制工作,还可以与PC 机通信上传数据,另外AT89S51 在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟。第三部分 电路设计3.1 AT89S51单片机的特殊功能部件(1)定时/计数器AT89S51有两个16位可编程定时/计数器T0和T1,它们分别有两个独立的8位寄存器THx和TLx构成,通过编程设置可以实现4种工作方式。(2)中断系统 51单片机具备较完善的中断功能,有2个外部中断、2个内部定时器中断和1个串行口中断,可以实现不同的控制要求,并具有两级的优先级。 (3)时钟振荡电路 51内置一个振荡器和时钟电路,用于产生整个单片机运行的脉冲时序,常用频率为6MHZ、11.0592MHZ、12MHZ。振荡器实际上是一个高增益反相器,使用时需外接一个晶振和两个相匹配的电容。 3.2 DS18B20的工作原理DS18B20的测温原理如图3-1所示,图中低温度系数晶振的振荡频率受温度的影响很小用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量.计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55 所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55 所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器 1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温图2中的斜率累加器用于补偿和修正测温过程中的非线性其输出用,于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值。另外,由于DS18B20单线通信功能是分时完成的,他有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20 (发复位脉冲)发ROM功能命令发存储器操作命令处理数据。 图3-1DS18B20的测温原理3.3 硬件电路设计及其分析 硬件电路由总控制器电路、DS18B20测温电路、LED动态显示电路组成。 (1)总控制器总控制器有电源电路、时钟电路、复位电路三部分构成。时钟电路对单片机系统而言是必需的。由于单片机内部是由各种各样的数字逻辑器件(如触发器寄存器存储器等)构成,这些数字器件的工作必须按时间顺序完成,这种时间顺序就称为时序。时钟电路就是提供单片机内部各种操作的时间基准的电路,没有时钟电路单片机就无法工作。此次设计中,我们采用由由内部方式产生时钟的方法形成时钟电路。内部方式:在XTAL1和XTAL2端外接石英晶体作定时元件,内部反相放大器自激振荡,产生时钟。时钟发生器对振荡脉冲二分频,即若石英频率fosc6MHz,则时钟频率3MHZ,因此,时钟是一个双相信号,由P1相和P2相构成。fosc可在2MHZ12MHZ选择。小电容可以取30PF左右。XTAL1和XTAL2为片内振荡电路输入线,这两个端子用来外接石英晶体和微调电容。在石英晶体的两个管脚加交变电场时,它将会产生一定频率的机械变形,而这种械振动又会产生交变电场,上述物理现象称为压电效应。一般情况下,无论是机械振动的振幅,还是交变电场的振幅都非常小。但是,当交变电场的频率为某一特定值时,振幅骤然增大,产生共振,称之为压电振荡。这一特定频率就是石英晶体的固有频率(谐振频率)。即用来连接单片机内OSC的定时反馈回路。石英晶振起振后要能在XTAL2线上输出一个3V左右的正弦波,以便使单片机片内的OSC电路按石英晶振相同频率自激振荡。通常OSC输出时钟频率f为0.5MHz16MHz,典型值为12MHz或者11.0592MHz。电容C3和C4可以帮助起振,典型值为30pF,调节它们可以达到微调f的目的。时钟电路和单片机的连接如图3-2所示。图3-2时钟电路与单片机的连接图复位电路的设计,单片机在开机时都需要复位,以便中央处理CPU以及其他功能部件都处于一个确定的初始状态,并从这个状态开始工作。单片机的复位后是靠外部电路实现的, 在时钟电路工作后,只要在单片机的RST引脚上出现24个时钟振荡脉冲(2个机器周期)以上的高电平,单片机便可实现初始化状态复位。单片机的RST引脚是复位信号的输入端。单片机时钟频率为12MHz,则复位脉冲宽度至少应该为2s,复位电路如图3-3所示图3-3单片机复位电路(2)DS18B20测温电路DS18B20 最大的特点是单总线数据传输方式,DS18B20 的数据I/O 均由同一条线来完成。DS18B20 的电源供电方式有2 种: 外部供电方式和寄生电源方式。工作于寄生电源方式时, VDD 和GND 均接地, 他在需要远程温度探测和空间受限的场合特别有用, 原理是当1 W ire 总线的信号线DQ 为高电平时, 窃取信号能量给DS18B20 供电, 同时一部分能量给内部电容充电, 当DQ为低电平时释放能量为DS18B20 供电。但寄生电源方式需要强上拉电路, 软件控制变得复杂(特别是在完成温度转换和拷贝数据到E2PROM 时) , 同时芯片的性能也有所降低。因此, 在条件允许的场合, 尽量采用外供电方式。无论是内部寄生电源还是外部供电,I/O口线要接5K左右的上拉电。在这里采用前者方式供电。DS18B20与芯片连接电路如图。外部电源供电方式是DS18B20最佳的工作方式,工作稳定可靠,抗干扰能力强,而且电路也比较简单,可以开发出稳定可靠的多点温度监控系统。站长推荐大家在开发中使用外部电源供电方式,毕竟比寄生电源方式只多接一根VCC引线。在外接电源方式下,可以充分发挥DS18B20宽电源电压范围的优点,即使电源电压VCC 降到3V 时,依然能够保证温度量精度。(3)LED动态显示电路数码管由8个发光二极管(以下简称字段)构成,通过不同的组合可用来显示数字0 9、字符A F、H、L、P、R、U、Y、符号“-”及小数点“.”。采用4位共阳极数码管。共阳极数码管的8个发光二极管的阳极(二极管正端)连接在一起。通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。当某段驱动电路的输出端为低电平时,则该端所连接的字段导通并点亮。根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。将数码管公共极COM接到+5V,段选段接单片机P0口(当单片机P0口高电平输出时,要接上拉电阻以增大驱动能力),位选端加三极管驱动接单片机P2口。数码管与单片机的接口电路如图4-4中所示。系统总电路图:3.4 DS18B20测温流程及软件设计初始化DS18B20 (发复位脉冲)发ROM功能命令发存储器操作命令处理数据复位时序:复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待1660 微秒左右,后发出60240 微秒的存在低脉冲,主CPU 收到此信号表示成功.主机发送(Tx)-复位脉冲(最短为480s 的低电平信号)。接着主机便释放此线并进入接收方式(Rx)。总线经过4.7K的上拉电阻被拉至高电平状态。在检测到I/O 引脚上的上升沿之后,DS18B20 等待1560s,并且接着发送脉冲(60240s 的低电平信号)。然后以存在复位脉冲表示DS18B20 已经准备好发送或接收,然后给出正确的ROM 命令和存储操作命令的数据。DS18B20 通过使用时间片来读出和写入数据,时间片用于处理数据位和进行何种指定操作的命令。它有写时间片和读时间片两种:写时间片:当主机把数据线从逻辑高电平拉至逻辑低电平时,产生写时间片。有两种类型的写时间片:写1 时间片和写0 时间片。所有时间片必须有60 微秒的持续期,在各写周期之间必须有最短为1微秒的恢复时间.读时间片:从DS18B20 读数据时,使用读时间片。当主机把数据线从逻辑高电平拉至逻辑低电平时产生读时间片。数据线在逻辑低电平必须保持至少1 微秒;来自DS18B20 的输出数据在时间下降沿之后的15 微秒内有效。为了读出从读时间片开始算起15微秒的状态,主机必须停止把引脚驱动拉至低电平。在时间片结束时,I/O 引脚经过外部的上拉电阻拉回高电平,所有读时间片的最短持续期为60 微秒,包括两个读周期间至少1s 的恢复时间。一旦主机检测到DS18B20 的存在,它便可以发送一个器件ROM 操作命令。所有ROM 操作命令均为8位长。所有的串行通讯,读写每一个bit 位数据都必须严格遵守器件的时序逻辑来编程,同时还必须遵守总线命令序列,对单总线的DS18B20 芯片来说,访问每个器件都要遵守下列命令序列:首先是初始化;其次执行ROM 命令;最后就是执行功能命令(ROM 命令和功能命令后面以表格形式给出)。如果出现序列混乱,则单总线器件不会响应主机。当然,搜索ROM命令和报警搜索命令,在执行两者中任何一条命令之后,要返回初始化。基于单总线上的所有传输过程都是以初始化开始的,初始化过程由主机发出的复位脉冲和从机响应的应答脉冲组成。应答脉冲使主机知道,总线上有从机,且准备就绪。在主机检测到应答脉冲后,就可以发出ROM 命令。这些命令与各个从机设备的唯一64 位ROM 代码相关。在主机发出ROM命令,以访问某个指定的DS18B20,接着就可以发出DS18B20支持的某个功能命令。这些命令允许主机写入或读出DS18B20便笺式RAM、启动温度转换。主机首先发出一个复位脉冲,信号线上的DS18B20 器件被复位。接着主机发送ROM命令,程序开始读取单个在线的芯片ROM编码并保存在单片机数据存储器中,把用到的DS18B20 的ROM 编码离线读出,最后用一个二维数组保存ROM 编码。系统工作时,把读取了编码的DS18B20 挂在总线上。发温度转换命令,再总线复位。然后就可以从刚才的二维数组匹配在线的温度传感器,随后发温度读取命令就可以获得对应的度值了。在主机初始化过程,主机通过拉低单总线至少480us,来产生复位脉冲。接着,主机释放总线,并进入接收模式。当总线被释放后,上拉电阻将单总线拉高。在单总线器件检测到上升沿后,延时1560us,接着通过拉低总线60240us,以产生应答脉冲。写时序均起始于主机拉低总线,产生写1 时序的方式:主机在拉低总线后,接着必须在15us之内释放总线。产生写0 时序的方式:在主机拉低总线后,只需在整个时序期间保持低电平即可(至少60us)。在写字节程序中的写一个bit 位的时候,没有按照通常的分别写0时序和写1 时序,而是把两者结合起来,当主机拉低总线后在15us 之内将要写的位c 给DO:如果c 是高电平满足15us 内释放总线的要求,如果c是低电平,则DOc这条语句仍然是把总线拉在低电平,最后都通过延时58us 完成一个写时序(写时序0或写时序1)过程。写时间时序:当主机把数据从逻辑高电平拉到逻辑低电平的时候,写时间隙开始。有两种写时间隙,写1 时间隙和写0 时间隙。所有写时间隙必须最少持续60s,包括两个写周期至少1s 的恢复时间。I/O线电平变低后,DS18B20 在一个15s 到60s 的窗口内对I/O 线采样。如果线上事高电平,就是写1,如果是低电平,就是写0。主机要生成一个写时间隙,必须把数据线拉到低电平然后释放,在写时间隙开始后的15s 内允许数据线拉到高电平。主机要生成一个写0 时间隙,必须把数据线拉到低电平并保存60s。每个读时隙都由主机发起,至少拉低总线1us,在主机发起读时序之后,单总线器件才开始在总线上发送0 或1。所有读时序至少需要60us。读时间时序:当从DS18B20 读数据时,主机生成读时间隙。当主机把数据从高电平拉到低电平时,写时间隙开始,数据线必须保持至少1s;从DS18B20输出的数据在读时间隙的下降沿出现后15s 内有效。因此,主机在读时间隙开始后必须把I/O 脚驱动拉为的电平保持15s,以读取I/O 脚状态。、在读时间隙的结尾,I/O 引脚将被外部上拉电阻拉到高电平。所有读时间隙必须最少60s,包括两个读周期至少1s的恢复时间。 图3-6读DS18B20流程图 图3-7写DS18B20流程图系统总程序设计:(1)数字温度计工作主要分为温度采集、温度转化、数据处理、显示这几部分。单片机对与DS18B20主要完成对温度的检测和补偿,通过AT89S51单片机对DS18B20芯片的控制和数据传输,查询当前的DS18B20温度采集和转换是否完成是关键,并且完成对转换后的数据的读取。(2)系统总程序#include#define uchar unsigned char#define uint unsigned intuchar code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,/090x40,0x89,0x24,0x30,0x19,0x12,0x02,0x88,0x00,0x10,/10190xbf,/20符号-0xff,/不显示;/ds18b20与单片机连接口sbit DQ=P32;uchar data disdata5;/存放温度值uint tvalue;/温度值uchar tflag;/温度正负标志/*显示程序*/void delay(uint k)/延时1毫秒(不够精确的)unsigned int i,j; for(i=0;ik;i+) for(j=0;j100;j+);/LCD显示函数 void weixuan() if(tvalue0)/负数处理disdata0=20;tvalue-;tvalue-;tvalue=tvalue;tvalue=tvalue%1000; disdata1=tvalue/100;/获取十位if(disdata1=0)disdata1=21; tvalue=tvalue%100; disdata2=tvalue/10;/获取个位再 disdata2+=10;/加入小数点,查表可得出有小数点的排在后10位,所以加10 disdata3=tvalue%10;/获取小数第一位else /正数的处理disdata0=tvalue/1000;/显示百位if(disdata0=0)disdata0=21;/判断温度为正温度且没有上百,前面不显示,查表第12是空tvalue=tvalue%1000; disdata1=tvalue/100; /显示十位if(disdata0=21&disdata1=0) /百位和十位同时为0 则不显示 disdata1=21;tvalue=tvalue%100;disdata2=tvalue/10;/获取个位再disdata2+=10;/加入小数点,查表可得出有小数点的排在后10位,所以加10disdata3=tvalue%10;/获取小数第一位void display(uchar *lp,uchar lc)/显示 uchar i;/定义变量P0=0x00;/端口2为输出P2=0xf7;/将P2口的输出1111 0111,对应第一个数码管for(i=0;i=1;/下一位数码管if(i=3)break;/*ds1820程序*/void delay_18B20(uint i)/延时1微秒 while(i-);/*ds1820复位*/void ds1820rst() DQ = 1; /DQ复位 delay_18B20(4); /延时 DQ = 0; /DQ拉低 delay_18B20(100); /精确延时大于480us DQ = 1; /拉高 delay_18B20(40); /*从ds18b20中读数据*/uchar ds1820rd() uchar i=0; uchar dat=0; for(i=8;i0;i-) DQ = 0; /给脉冲信号 dat=1; DQ =
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年及未来5年市场数据中国水果零售行业市场深度研究及投资战略规划报告
- 2026年甘肃省陇南礼县宽川镇中心卫生院招聘乡村医生考试备考题库及答案解析
- 简阳市中小企业融资担保有限公司2026年招聘金融科技部工作人员等岗位考试备考试题及答案解析
- 和平离婚协议书
- 城镇夫妻离婚协议书
- 加湿软麻工风险评估与管理能力考核试卷含答案
- 职业规划师培训指南
- 聚甲醛装置操作工安全防护考核试卷含答案
- 母液蒸发工岗前技术传承考核试卷含答案
- 钛汞合金冶炼工岗前实操评估考核试卷含答案
- 《阳光心态迎接挑战》课件
- 河南省2023-2024学年高一化学下学期4月期中联考试题含解析
- 国家安全知识党课课件
- 干混悬剂临床应用研究-全面剖析
- 行政管理毕业论文 北京市社区治理中的问题及对策-以九龙社区为例
- 2023年瑞丰银行招聘考试真题
- 2024脚手架施工应急预案
- 蒋诗萌小品《谁杀死了周日》台词完整版
- 助贷居间费用合同协议书
- 货物运输协议书表格模板电子版
- 广东省课程思政示范高职院校申报书
评论
0/150
提交评论