




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE29指导教师评定成绩:审定成绩:重庆邮电大学自动化学院计算机控制课程设计报告设计题目:两台直流电动机同步(或随动/位置)控制单位(二级学院):学生姓名:专业:班级:学号:指导教师:设计时间:年月重庆邮电大学自动化学院制目录摘要3TOC\t"一、,1,2.1,2,2.1.1,3"\h23833一、课程设计任务 326145二、基于51系列单片机的温度控制系统设计 3158922.1方案设计 3247162.1.1方案选择 312255方案一:热电偶采集温度 315526方案二:数字温度传感器DS18B20采集温度 323712.1.2方案论证 3248332.2基本芯片及PID算法简介 476012.2.1单片机STC89C52 4260692.2.2DS18B20基本工作原理 4299522.2.3PID算法 510794三、系统硬件设计 7221123.1数码管显示模块 7213923.2键盘输入模块 8265533.3温度采集模块 852513.4报警模块 927906四、系统软件设计 10140494.1主程序流程图 10203144.2温度检测子程序 1048974.3PID计算子程序 1145844.4PWM子程序 148745五、系统功能设计与实现 14191585.1测试系统特性及其传递函数 1417825.2实际温度显示功能的实现 15104495.2.1Proteus仿真图 1557545.2.2实物图 1646105.3控制温度的设定功能的实现 17223535.3.1Proteus仿真图 1739335.3.2实物图 17655.3.3系统调试 184010六、总结 19基于51系列单片机的温度控制系统摘要:本系统是一个采用STC12C5410AD单片机编程实现两台直流电机能够同步旋转的双直流电机同步驱动控制系统。通过按键输入控制主直流电机调速、正反转,其中直流电机采用PWM脉宽调制方式调速,通过两个转速传感器的差值对系统进行反馈,实现从直流电机跟随主直流电机状态。该系统能够实时检测与显示两直流电机转速,基本完成题目设计要求。关键词:STC12C5410AD单片机,直流电机,速度传感器,PWM,反馈控制。课程设计任务1.1直流电机直流电机功率不大于20W;直流电机额定电驱电压为DC12V;直流电机额定转速为300rpm。1.2设计要求及实现功能设计直流电动机控制电路;设计直流电动机调速控制电路,要求采用PWM脉宽调制方式调速,PWM脉冲宽度调制的频率为10-40KHZ,PWM脉冲宽度调制的占空比为5%-95%。实现两台直流电动机同步旋转,且误差小于3%。实现正反转。速度检测与显示。基于51系列单片机的温度控制系统设计2.1方案设计2.1.1方案选择方案一:热电偶采集温度热电偶利用热电势原理进行温度测量的。其测量精度高、
测量范围广。常用的热电偶从-50℃+1600℃均可正常测量,某些特殊热电偶最低可测到-269℃(如金铁镍铬),最高可达+2800℃(如钨-铼)。但热电偶测量需要温度补偿。而且输出量为电压,需要经过测量放大器、AD转换后才能送入微处理器处理。方案二:数字温度传感器DS18B20采集温度DS18B20采用独特的单线接口方式,与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。在使用中不需要任何外围元件,测温范围-55℃~+125℃,最小分辨率达0.0625℃。2.1.2方案论证经过比较,因为采用DS18B20测量温度,硬件电路简单,测量精度高,信号易处理,故采用方案二,即温度变送器选用DS18B20。基于51系列单片机的温度控制系统电路总体设计方框图如图2-1所示,STC89C52STC89C52时钟电路按键输入数码管显示报警电路温度检测温度传感器温度控制温度控制仪图2-1数字式温度控制仪总体设计框图2.2基本芯片及PID算法简介2.2.1单片机STC89C52STC89C52的结构如图2.1所示。由于它的广泛使用使得市面价格较8155、8255、8279要低,所以说用它是很经济的。该芯片具有如下功能:①有1个专用的键盘/显示接口;②有1个全双工异步串行通信接口;③有2个16位定时/计数器。这样,1个89C52,承担了3个专用接口芯片的工作,不仅使成本大大下降,而且优化了硬件结构和软件设计,给用户带来许多方便。STC89C52有40个引脚,有32个输入端口(I/O),有2个读写口线,可以反复插除。所以可以降低成本。其主要功能特性有:兼容MCS51指令系统32个双向I/O口线3个16位可编程定时/计数器中断2个串行中断口2个外部中断源2个读写中断口线低功耗空闲和掉电模式8k可反复擦写(>1000次)FlashROM256x8bit内部RAM时钟频率0-24MHz可编程UART串行通道共6个中断源3级加密位图2-2STC89C52引脚图软件设置睡眠和唤醒功能。图2-2STC89C52引脚图2.2.2DS18B20基本工作原理DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9-12位的数字值读数方式。DS18B20的测温原理:器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的一个基数分别置入减法计数器1、温度寄存器中,计数器1和温度寄存器被预置在-55℃所对应的一个基数值。表2-1部分温度对应值表温度/℃二进制表示十六进制表示+125000001111101000007D0H+8500000101010100000550H+25.062500000001100100000191H+10.125000000001010000100A2H+0.500000000000000100008H000000000000010000000H-0.51111111111110000FFF8H-10.1251111111101011110FF5EH-25.06251111111001101111FE6FH-551111110010010000FC90H预置值减到0时,温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到0时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作按协议进行。操作协议为:初使化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。2.2.3PID算法PID调节器控制原理在控制系统中,控制器最常用的控制规律是PID控制。PID控制系统原理框图如图2-3所示。系统由PID控制器和被控对象组成。图2-3PID控制系统原理框图 PID控制器是一种线性控制器,它根据给定值rin(t)与实际输出值yout(t)构成控制偏差: Error(t)=rin(t)-yout(t) PID控制就是对偏差信号进行比例、积分、微分运算后,形成一种控制规律。即,控制器的输出为:或写成传递函数的形式:其中,kp——比例系数;Ti——积分时间常数;Td——微分时间常数。简单说来,PID控制器各校正环节的作用如下:比例环节:成比例地反映控制系统的偏差信号error(t),偏差一旦产生,控制器立即产生控制作用,以减小偏差。积分环节:主要用于消除静差,提高系统的无差度。积分作用的强尽弱取决于积分时间常数Ti,Ti越大,积分作用越弱,反之则越强。微分环节:反偏差信号的变化趋势(变化速率),并能在偏差信号变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减少调节时间。数字PID参数的整定PID控制器的参数整定是控制系统设计的核心内容。它是根据被控过程的特性确定PID控制器的比例系数、积分时间和微分时间的大小。PID控制器参数整定的方法很多,概括起来有两大类:一是理论计算整定法。它主要是依据系统的数学模型,经过理论计算确定控制器参数。这种方法所得到的计算数据未必可以直接用,还必须通过工程实际进行调整和修改。二是工程整定方法,它主要依赖工程经验,直接在控制系统的试验中进行,且方法简单、易于掌握,在工程实际中被广泛采用。本设计采用PID归一整定法把对控制台三个参数(Kc、Ti、Td,)转换为一个参数,从而使问题明显简化。以达到控制器的特性与被控过程的特性相匹配,满足某种反映控制系统质量的性能指标。采样周期选择的原则(1)根据香农采样定理,系统采样频率的下限为fs=2fmax,此时系统可真实地恢复到原来的连续信号。(2)从执行机构的特性要求来看,有时需要输出信号保持一定的宽度。采样周期必须大于这一时间。(3)从控制系统的随动和抗干扰的性能来看,要求采样周期短些。(4)从微机的工作量和每个调节回路的计算来看,一般要求采样周期大些。(5)从计算机的精度看,过短的采样周期是不合适的。(6)当系统滞后占主导地位时,应使滞后时间为采样周期的整数倍下表2-2列出了几种常见的被测参数的采样周期T的经验选择数据。可供设计时参考。实际上生产过程千差万别,经验数据不一定就合适,可用试探法逐步调试确定。表2-2采样周期的经验数据表被测参数采用周期T(s)备注流量1~5s优先选用1s压力3~10s优先选用5s液位6~8s温度15~20s或纯滞后时间成分15~20sPID参数对系统性能的影响表2-3PID参数对系统性能的影响参数图作用缺点P加快调节,减少稳态误差稳定性下降,甚至造成系统的不稳定I因为有误差,积分调节就进行,直至无差.消除稳态误差,提高无差度。加入积分调节可使系统稳定性下降,动态响应变慢。积分作用常与另两种调节规律结合,组成PI调节器或PID调节器。D反映系统偏差信号变化率,具有预见性,能预见偏差变化的趋势,因此能产生超前的控制作用。可以减少超调,减少调节时间。微分作用对噪声干扰有放大作用,因此过强的加微分调节,对系统抗干扰不利。微分作用不能单独使用,需要与另外两种调节规蓄料目结合,组成PD或PID控制.系统硬件设计3.1数码管显示模块八段就是指数码管里有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形。共阳极就是将八个LED的阳极连在一起,让其接地,这样给任何一个LED的另一端低电平,它便能点亮,相应的段被显示出来。数码管的显示有静态显示和动态扫描显示两种方法。所谓静态显示,就是当数码管显示某一字符时,相应的发光二级管恒定的导通或截止。数码管的每一个段码都可以由一个单片机的I/O口进行驱动。静态显示的优点是编程简单,显示亮度高,但缺点是占用I/O口多,容易造成I/O接口的浪费,不易控制成本。所谓动态扫描显示就是通过分时轮流控制各个LED数码管的DPY端,使各个数码管轮流受控显示。在轮流显示过程中,每位元数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极体的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示资料,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O口,而且功耗更低。本系统采用6个共阳极8段数码管对采集到的温度值以及键盘输入的目标值进行显示,接口电路如图2-1所示。该系统采用动态扫描显示方法,虽然这种方法占用CPU资源较多,但是6个数码管共占用8个I/O接口,不存在I/O接口浪费的情况,可以有效的降低成本,故采用此种方法。图3-1数码管接线电路3.2键盘输入模块此模块采用4个按键,以满足通过键盘输入目标温度设定值的任务要求,接口电路如图2-2所示。图3-2键盘输入模块3.3温度采集模块温度采集模块采用DS18B20这款温度传感器,其与单片机连接如图2-3所示。图3-3温度传感器DS18B20接口电路根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。3.4报警模块报警采用蜂鸣器元件,当实际温度高于目标温度时,报警功能实现,电路连接图如3-4.图3-4蜂鸣器连接图系统软件设计4.1主程序流程图是是系统初始化设定目标温度显示实际温度开始不加热实际温度大于目标温度?PID控制输出PWM调节加热否图4-1主程序流程图4.2温度检测子程序DS18B20外接电路极为简单,电路连接没有太大问题;但软件编程就需要严格要求时序进行读写操作。(1)DS18B20的初始化:根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,当DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。(1)先将数据线DQ置高电平“1”。(2)延时(该时间要求的不是很严格,但是尽可能的短一点)(3)数据线拉到低电平“0”。(4)延时750微秒(该时间的时间范围可以从480到960微秒)。(5)数据线拉到高电平“1”。(6)延时等待(如果初始化成功则在15到60微妙时间之内产生一个由DS18B20所返回的低电平“0”。据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制)。(7)若CPU读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起(第(5)步的时间算起)最少要480微秒。(8)将数据线再次拉高到高电平“1”后结束。(2)DS18B20的写操作:(1)数据线先置低电平“0”。(2)延时确定的时间为15微秒。(3)按从低位到高位的顺序发送字节(一次只发送一位)。(4)延时时间为45微秒。(5)将数据线拉到高电平。(6)重复上(1)到(6)的操作直到所有的字节全部发送完为止。(7)最后将数据线拉高。(3)DS18B20的读操作:(1)将数据线拉高“1”。(2)延时2微秒。(3)将数据线拉低“0”。(4)延时3微秒。(5)将数据线拉高“1”。(6)延时5微秒。(7)读数据线的状态得到1个状态位,并进行数据处理。(8)延时60微秒。4.3PID计算子程序PID调节规律的基本输入输出关系可用微分方程表示为:式中为调节器的输入误差信号,且其中:为给定值,为被控变量;为调节器的输出控制信号;为比例系数;为积分时间常数;微分时间常数。计算机只能处理数字信号,若采样周期为T第n次采样的输入误差为,且,输出为,PID算法用的微分由差分代替,积分由代替,于是得到写成递推形式为△====其中:显然,PID计算△只需要保留现时刻以及以前的两个偏差量和。初始化程序初值通过采样并根据参数、、以及、和计算△。根据输出控制增量△,可求出本次控制输出为+△=由于温度控制仪一般是属于一阶对象和滞后的一阶对象,所以式中、、的选择取决于温度测量控制仪的阶跃响应曲线和实际经验,工程上已经积累了不少行之的参数整定方法。本设计采用Ziegler-Nichols提出的PID归一调整法,调整参数,主要是为了减少在线整定参数的数目,常常人为假定约束条件,以减少独立变量的个数,令:式中称为临界周期。在单纯比例作用下(比例增益由小到大),是系统产生等幅振荡的比例增益,这时的工作周期为临界周期,则可以得到△==式中=0.2,=1.25从而可以调节的参数只有一个。可设计一个调整子程序,通过键盘输入改变值,改变运行参数,使系统满足要求。流程图如图4-2所示,图4-2PID运算流程图4.4PWM子程序脉冲宽度调制(PWM)是一种模拟控制方式,其根据相应载荷的变化来调制晶体管栅极或基极的偏置,来实现开关稳压电源输出晶体管或晶体管导通时间的改变,这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。PWM的一个优点是从处理器到被控系统信号都是数字形式的,无需进行数模转换。让信号保持为数字形式可将噪声影响降到最小。噪声只有在强到足以将逻辑1改变为逻辑0或将逻辑0改变为逻辑1时,也才能对数字信号产生影响。用PWM波输入固态继电器的输入端,从而改变电炉加热丝内的电流通断时间。本设计中,PWM由单片机定时器中断产生,与主程序和其他函数不影响。脉宽受PID控制器的输出量控制。系统功能设计与实现5.1测试系统特性及其传递函数要设计一个控制系统,首先要建立控制系统的数学模型,在建立控制系统数学模型的过程中,最主要是确定被控对象的数学模型。目前用来测定对象动态特性的实验方法主要有三种,即时域方法、频域方法和统计研究方法。在本设计中采用实验测定法中的时域测定法,即被测温度在输入端加阶跃输入信号,而在输出端测绘其输出量随时间变化的响应曲线,再对响应曲线的结果进行分析,确定被研究对象的传递函数。温度测量控制仪是一个非线性和时变对象,且具有明显的阻尼特征,经查阅资料,对于被控对象SET-300型温度测量控制仪,可以得到它的传递函数可表示为其中,T表示对象惯性时间常数,K表示对象放大系数,为纯滞后时间。要求出其传递函数的参数K、T和,常用两种方法,切线法和两点法。测量数据并描点每隔10s采集一次温度,测量部分数据如下(单位:℃):33.734.2534.9435.8237.0037.7538.7539.8441.0642.3243.4544.6846.0047.1448.5051.0052.2053.5654.7556.1357.2658.2559.0059.6660.0660.38…用MATLAB模拟曲线,绘制如下图5-1控制仪温度曲线根据曲线采用两点法得出传递函数在y(t)上选取两个坐标值和,只要0,,三个数值之间有明显差异即可。利用公式解得所求传递函数为5.2实际温度显示功能的实现5.2.1Proteus仿真图实际温度36度,高于目标温度25度,报警提示,自由降温处理。图5-2实际温度高于目标温度5.2.2实物图实际温度24.5度,低于目标温度40度,加热指示灯亮,加热处理。图5-3实际温度低于目标温度5.3控制温度的设定功能的实现5.3.1Proteus仿真图设定目标温度为85度。图5-4设定目标温度仿真图5.3.2实物图设定目标温度为34度。图5-5设定目标温度5.3.3系统调试根据香农采样定律,系统调试时的PWM波周期定为100毫秒,采样周期定为500毫秒。当系统的期望设定温度为95℃时,取Kp=3,Ki=0.0001时,得到如图5-6中的第一次实验曲线,其中响应时间为18分钟,且稳态偏差较大;适当增大Kp,保持Ki不变,发现系统响应时间增快,稳态偏差仍较大。将Kp保持不变,增大Ki,当Ki=0.0015时,温度控制的超调量小于5%,调节时间小于30s,稳态偏差达到系统设计的要求。取Kp=4,Ki=0.0015,设定温度为50℃时,得到如图5-7所示的曲线。温度/温度/℃理想曲线时间第一次实验曲线最终曲线图5-6目标温度为95℃的调试曲线温度/℃温度/℃时间理想曲线实测曲线图5-7目标温度为50℃的调试曲线当第一次测试时,由于参数不准,所以出现了误差较大,达不到系统指标。而经过不断调整参数,系统达到了预期的控制效果。当参数调好后,重新设置输入温度。可以看出在t1以前系统全速加热,但由于自然散热,曲线并不是直线。而温度上升到48℃时上升斜率减小,到相差0.5℃时更小。综上所述,该系统在动态性能指标上完全达到了设计任务的要求。总结本系统采用STC12C5410AD单片机编程实现两台直流电机能够同步旋转的双直流电机同步驱动控制系统。通过按键输入控制主直流电机调速、正反转,其中直流电机采用PWM脉宽调制方式调速,通过两个转速传感器的差值对系统进行反馈,实现从直流电机跟随主直流电机状态。在整个课程设计的过程中,需要注意以下几个问题:(1)切实掌握和理解STC12C5410AD单片机的主要特点和性能参数,明确其工作原理;(2)采用独立键盘,简单且方便实际操作。(3)理解掌握PID算法是解决本问题的关键。这次计算机控制课程设计中,我和队友几乎每天都到实验室讨论关于温度控制系统的开展和实施工作。明确各自任务后,我们各自便进入了紧张的工作中。其中,我主要负责仿真图形的绘制,软件编程和论文写作工作。由于基础知识不够扎实,我只能查阅大量资料,通过从图书馆借书,网上查阅等各种途径学习相关知识。在此课程设计期间,我锻炼了自己独立思考研究的能力,认识到了团队合作的重要性,同时强化了自己相关专业知识的理解和使用。在今后的学习中,我要加强自己专业知识的学习,多动手参加一些课外实践活动或比赛,锻炼自己的实际操作与动手能力,将自己所学的知识运用到实践当中,不能纸上谈兵。总之,这次课程设计让我了解到了自己的不足之处,在以后的学习过程中,我会扬长避短,再接再厉,认真学习专业知识,为后续学习打下坚实的基础。参考文献[1]张毅刚,MCS-51单片机原理及应用[M].哈尔滨,哈尔滨工业大学出版社,2004.6.[2]刘文涛,MCS-51单片机培训教程.北京:电子工业出版社,1996.[3]张洪润,易涛编著,单片机应用技术教程(第二版).北京:清华大学出版社,2003.[4]李华等,MCS-51系列单片机实用接口技术.北京:北京航空航天大学出版社,1993.[5]周润景,单片机电路设计、分析与制作.北京:机械工业出版社,2010.[6]谭浩强,C程序设计[M].北京:清华大学出版社,1999,12.[7]曹巧媛,单片机原理及应用.北京:电子工业出版社,2002.2.[8]胡汉才,单片机原理及其接口技术.北京:清华大学出版社,2010.[9]蔡明生,电子设计[M].北京:高等教育出版社,2004.12.[10]李群芳,单片微型计算机接口技术及应用.北京:电子工业出版社,2005.1.[11]石宗义,电路原理图与电路板设计教程Protel99SE.北京:北京希望电子出版社,2002.6.附件附件1C程序//程序功能:通过DS18B20测试当前环境温度,并通过数码管显示当前温度值#include"reg52.h"#include<intrins.h>#include<math.H>//要用到取绝对值函数abs()#defineucharunsignedchar#defineuintunsignedintsbitwe=P2^7;//数码管位选sbitdu=P2^6;//数码管段选sbitdio=P2^5;sbitds=P2^2;sbitpwm=P3^0; //PWM输出sbitbeep=P2^3;sbitkey1=P3^4;sbitkey2=P3^5;sbitkey3=P3^6;sbitkey4=P3^7;inttempValue1;uintuk,kp;/*比例系数*/;floatki,kd;/*积分系数,微分系数*/unsignedinttemp;bitstartend;bitleftright;ucharcodeth0=(65535-3000)/256;ucharcodetl0=(65535-3000)%256;uchardispbuf[6];ucharcodedisptab[]={0x3f,0x6,0x5b,0x4f,0x66,0x6d,0x7d,0x27,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x0};ucharcodedisptabwithdot[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0xa7,0xff,0xef,0xf7,0xfc,0xb9,0xf9,0xf1};ucharcodedispbit[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};ucharge,shi;//延时函数,对于11.0592MHz时钟,例i=10,则大概延时10ms.voiddelay(unsignedinti){unsignedintj;while(i--){for(j=0;j<125;j++);}}voiddsInit(){//对于11.0592MHz时钟,unsignedint型的i,作一个i++操作的时间大于?usunsignedinti;ds=0;i=100;//拉低约800us,符合协议要求的480us以上while(i>0)i--;ds=1;//产生一个上升沿,进入等待应答状态i=4;while(i>0)i--;}voiddsWait(){unsignedinti;while(ds);while(~ds);//检测到应答脉冲i=4;while(i>0)i--;}//向DS18B20读取一位数据//读一位,让DS18B20一小周期低电平,然后两小周期高电平,//之后DS18B20则会输出持续一段时间的一位数据bitreadBit(){unsignedinti;bitb;ds=0;i++;//延时约8us,符合协议要求至少保持1usds=1;i++;i++;//延时约16us,符合协议要求的至少延时15us以上b=ds;i=8;while(i>0)i--;//延时约64us,符合读时隙不低于60us要求returnb;}//读取一字节数据,通过调用readBit()来实现unsignedcharreadByte(){unsignedinti;unsignedcharj,dat;dat=0;for(i=0;i<8;i++){j=readBit();//最先读出的是最低位数据dat=(j<<7)|(dat>>1);}returndat;}//向DS18B20写入一字节数据voidwriteByte(unsignedchardat){unsignedinti;unsignedcharj;bitb;for(j=0;j<8;j++){b=dat&0x01;dat>>=1;//写"1",将DQ拉低15us后,在15us~60us内将DQ拉高,即完成写1if(b){ds=0;i++;i++;//拉低约16us,符号要求15~60us内ds=1;i=8;while(i>0)i--;//延时约64us,符合写时隙不低于60us要求}else//写"0",将DQ拉低60us~120usds=0;i=8;while(i>0)i--;//拉低约64us,符号要求ds=1;i++;i++;//整个写0时隙过程已经超过60us,这里就不用像写1那样,再延时64us了}}//向DS18B20发送温度转换命令voidsendChangeCmd(){dsInit();//初始化DS18B20,无论什么命令,首先都要发起初始化dsWait();//等待DS18B20应答delay(1);//延时1ms,因为DS18B20会拉低DQ60~240us作为应答信号writeByte(0xcc);//写入跳过序列号命令字SkipRomwriteByte(0x44);//写入温度转换命令字ConvertT}//向DS18B20发送读取数据命令voidsendReadCmd(){ EA=0;//关闭中断是因为进入显示中断会影响到DS18B20的读写时序dsInit();dsWait();delay(1);writeByte(0xcc);//写入跳过序列号命令字SkipRomwriteByte(0xbe);//写入读取数据令字ReadScratchpad EA=1;}//获取当前温度值ucharpanduan(floatw){ucharl;floatb;b=shi*10+ge;if(b>w)l=1;elsel=0;returnl;}intgetTmpValue(){unsignedinttmpvalue;intvalue;//存放温度数值floatt;unsignedcharlow,high; EA=0;sendReadCmd();//连续读取两个字节数据low=readByte();high=readByte();//将高低两个字节合成一个整形变量//计算机中对于负数是利用补码来表示的//若是负值,读取出来的数值是用补码表示的,可直接赋值给int型的valuetmpvalue=high;tmpvalue<<=8;tmpvalue|=low;value=tmpvalue;//使用DS18B20的默认分辨率12位,精确度为0.0625度,即读回数据的最低位代表0.0625度t=value*0.0625;//将它放大100倍,使显示时可显示小数点后两位,并对小数点后第三进行4舍5入//如t=11.0625,进行计数后,得到value=1106,即11.06度//如t=-11.0625,进行计数后,得到value=-1106,即-11.06度value=t*100+(value>0?0.5:-0.5);//大于0加0.5,小于0减0.5beep=panduan(t);returnvalue; EA=1;}//PID计算voidpid(void){floatek,ek1,ek2,ek_sum;//本次偏差,上次偏差,上上一次偏差,偏差积分ek=temp_set-temp;if((ek>15)||(ek==15)){EA=0;pwm=1;}if((ek<0)||(ek==0)){EA=0;pwm=0;}if((ek>0)&&(ek<15)){EA=1;ek2=ek1;ek1=ek;ek_sum+=ek;uk=kp*ek+ki*ek_sum+kd*(ek1-ek2);}}voidInit_timer0(){ TMOD=0x01; TH0=th0; TL0=tl0; EA=1; ET0=1; TR0=1; }voidtimer0()interrupt1{ uch
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小区房地产开发项目可行性研究报告-0
- 深圳中小企业应对金融危机的策略
- 钢筋后台下料协议书
- 遗体接运冷藏协议书
- ufc格斗伤亡协议书
- 车间住宿管理协议书
- 金融投资咨询协议书
- 项目收益兜底协议书
- 银行特约存款协议书
- 长久发展入股协议书
- 北师大地理信息系统课件10 DEM与数字地形分析
- 湘雅教学科研楼初步设计成果报卫计委最终修改稿
- 小学生科普知识蜜蜂介绍PPT
- 搞笑小品剧本小品剧本《理解万岁》
- CNCKAD自动套材使用说明书,数控冲床排版软件教程
- 喷气燃料规格喷气燃料质量指标检验解析
- GB/T 3766-2001液压系统通用技术条件
- GB/T 24346-2009纺织品防霉性能的评价
- GB/T 15587-2008工业企业能源管理导则
- 蛋糕店生日蛋糕操作流程
- 初级卫生管理职称考试知识点及试题(全)
评论
0/150
提交评论