计算机控制课程设计单片机的炉温控制设计_第1页
计算机控制课程设计单片机的炉温控制设计_第2页
计算机控制课程设计单片机的炉温控制设计_第3页
计算机控制课程设计单片机的炉温控制设计_第4页
计算机控制课程设计单片机的炉温控制设计_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

1、引言目 录第一章引言11.1 前言11.2 设计内容概述21.3 报告概述4第二章课程设计要求52.1 课题要求52.2 元器件清单5第三章总体结构设计73.1 总体设计方案73.2 pid算法83.3 数据处理流程9第四章硬件电路设计114.1 sl-i型51单片机综合实验箱114.1.1 单片机最小系统114.1.2 数码管显示模块124.1.3 按键模块134.1.4 报警模块154.2 ds18b20温度传感器164.2.1 ds18b20简介164.2.2 ds18b20原理164.2.3 控制器对18b20操作流程174.2.4 ds18b20芯片与单片机的接口184.2.5 ds

2、28b20芯片rom指令表194.3 继电器电路设计20第五章系统软件设计225.1 主程序设计225.2 数码管显示程序235.3 键盘扫描程序245.4 db18b20通信程序24第六章加热炉温控系统使用方法276.1 系统连接方法276.2 系统使用方法27第七章总结28参考文献xxix附录a 系统程序代码xxxiii第一章 引言第一章 引言1.1 前言单片微机是单片微型计算机scmc(single chip micro computer)的译名简称,在国内也常简称为“ 单片微机” 或“单片机” 。它包括cpu、ram、rom、中断系统、定时器/计数器、串行口和i/o等。除了工业控制领域

3、,单片微机在家用电器、电子玩具、通信、高级音响、图形处理、语言设备、机器人、计算机等各个领域迅速发展。目前单片微机的世界年产量已超过100亿片,而在中国大陆地区的年应用量已达6亿多片。8051是美intel公司在1980年推出的mcs-51系列的第一个成员,mcs是intel公司的注册商标。其它公司生产的以8051为核心单元的其它派生单片微机只能称为8051系列。80c51系列包括intel公司的mcs-51,又包括了以8051为核心单元的世界许多公司生产的单片微机,比如philips 的83c552及51lpc系列等、siemens 的sab80512等、amd(先进微器件公司) 的8053

4、等、oki(日本冲电气公司) 的msm80c154等、atmel公司的89c51等、dallas公司的ds5000/ds5001等、华邦公司的w78c51及w77c51等。 单片微机的应用正从根本上改变着传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分控制功能,现在已能使用单片微机通过软件方法实现了。这种以软件取代硬件,并能提高系统性能的控制技术,称之为微控制技术。这标志着一种全新概念的建立。单片微机在以下领域应用广泛:1家用电器领域2办公自动化领域3工业自动化领域的在线应用 4. 智能仪器仪表与集成智能传感器领域5汽车电子与航空航天电子系统1.2 设计内容概述本次计

5、算机控制课程设计是应用计算机的实时监控和温度测量技术,采用单片机、温度检测电路、温度控制电路等,实现电阻炉炉温的实时监控。本次设计使用的stc12c5a60s2系列单片机是宏晶科技生产的单时钟/机器周期(1t)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成max810专用复位电路,2路pwm,8路高速10位a/d转换(250k/s),针对电机控制,强干扰场合。本系列单片机有丰富的内部资源,极大地扩展了8051系列单片机的用途:1.增强型8051 cpu,1t,单时钟/机器周期,指令代码完全兼容传统8051;2.工作电压:s

6、tc12c5a60s2系列工作电压:5.5v-3.3v(5v单片机)stc12le5a60s2系列工作电压:3.6v-2.2v(3v单片机);3.工作频率范围:0 - 35mhz,相当于普通8051的 0420mhz;4.用户应用程序空间8k /16k / 20k / 32k / 40k / 48k / 52k / 60k / 62k字节;5.片上集成1280字节ram;6.通用i/o口(36/40/44个),复位后为:准双向口/弱上拉(普通8051传统i/o口),可设置成四种模式:准双向口/弱上拉,推挽/强上拉,仅为输入/高阻,开漏,每个i/o口驱动能力均可达到20ma,但整个芯片最大不要超

7、过55ma;7. isp(在系统可编程)/iap(在应用可编程),无需专用编程器,无需专用仿真器 可通过串口(p3.0/p3.1)直接下载用户程序,数秒即可完成一片;8.有eeprom功能(stc12c5a62s2/ad/pwm无内部eeprom);9. 看门狗;10.内部集成max810专用复位电路(外部晶体12m以下时,复位脚可直接1k电阻到地);11.外部掉电检测电路:在p4.6口有一个低压门槛比较器,5v单片机为1.32v,误差为+/-5%,3.3v单片机为1.30v,误差为+/-3%;12.时钟源:外部高精度晶体/时钟,内部r/c振荡器(温漂为+/-5%到+/-10%以内) 1用户在

8、下载用户程序时,可选择是使用内部r/c振荡器还是外部晶体/时钟,常温下内部r/c振荡器频率为:5.0v单片机为:11mhz15.5mhz,3.3v单片机为:8mhz12mhz,精度要求不高时,可选择使用内部时钟,但因为有制造误差和温漂,以实际测试为准;13.共4个16位定时器 两个与传统8051兼容的定时器/计数器,16位定时器t0和t1,没有定时器2,但有独立波特率发生器 做串行通讯的波特率发生器 再加上2路pca模块可再实现2个16位定时器;14. 2个时钟输出口,可由t0的溢出在p3.4/t0输出时钟,可由t1的溢出在p3.5/t1输出时钟;15.外部中断i/o口7路,传统的下降沿中断或

9、低电平触发中断,并新增支持上升沿中断的pca模块, power down模式可由外部中断唤醒,int0/p3.2,int1/p3.3,t0/p3.4, t1/p3.5, rxd/p3.0,ccp0/p1.3(也可通过寄存器设置到p4.2 ), ccp1/p1.4 (也可通过寄存器设置到p4.3);16. pwm(2路)/pca(可编程计数器阵列,2路):也可用来当2路d/a使用也可用来再实现2个定时器也可用来再实现2个外部中断(上升沿中断/下降沿中断均可分别或同时支持);17.a/d转换, 10位精度adc,共8路,转换速度可达250k/s(每秒钟25万次)18.通用全双工异步串行口(uart

10、),由于stc12系列是高速的8051,可再用定时器或pca软件实现多串口;19. stc12c5a60s2系列有双串口,后缀有s2标志的才有双串口,rxd2/p1.2(可通过寄存器设置到p4.2),txd2/p1.3(可通过寄存器设置到p4.3);20.工作温度范围:-40 - +85(工业级) / 0 - 75(商业级)21.封装:pdip-40,lqfp-44,lqfp-48 i/o口不够时,可用2到3根普通i/o口线外接 74hc164/165/595(均可级联)来扩展i/o口, 还可用a/d做按键扫描来节省i/o口,或用双cpu,三线通信,还多了串口。1.3 报告概述这份技术报告中,

11、详尽地介绍了本系统的整体结构、硬件电路、软件控制算法、调试方法等,并附有单片机程序和详细的操作方法。本文主要介绍基于stc12c5a60s2单片机的炉温控制设计流程,介绍了炉温控制方案以及各个主要模块的工作原理和设计思路。本文并涉及温度传感器系统、继电器系统、显示系统、输入系统的设计。由于系统的复杂性和硬件使用要求以及人力、时间等方面的制约,考虑到系统的实时性和运算能力,系统并没有采用复杂的处理算法和控制算法,一切以实用为主。对于温度控制算法还有待进一步的研究和改进。同时,在电路保护方面的设计有待进一步地学习和实践。xlviii第一章 引言第二章 课程设计要求2.1 课题要求用单片机及相应的组

12、成部件组成电阻炉温的自动控制系统,要求测温范围0100,使其控制系统控制的温度保温值的变化范围为3060。要求:(1)完成电阻炉温度控制系统设计,包括硬件电路设计和软件程序设计;(2)能够显示控温时的实际炉温和恒温时间;(3)对其主电路和控制电路设计相应的保护电路,使其安全可靠地工作。2.2 元器件清单元件名称数量电热杯1个sl1型51单片机综合试验箱1个ds18b20温度传感器1片stc12c5a60s2单片机1片usb下载线1条单线固态继电器1个导线若干另有剪刀、镊子等工具表2.1 元器件清单第三章 总体结构设计第三章 总体结构设计3.1 总体设计方案本系统采用stc12c5a60s作为系

13、统的主控芯片,负责加热炉的温度检测与控制。其主要任务是:1、读取ds18b20的温度数据。2、控制继电器通断,保证温度达到设定值并保温。3、读取键盘设置的温度值。4、在led上显示设置的温度、当前温度以及恒温时间。5、当温度到达警戒值的时候控制蜂鸣器报警。图3.1 总体结构图由于加热炉仅能通过通断电路控制,不具备良好的可控性,且加热所需的速度和精度要求并不高,这里无需使用pid算法这样的高速跟踪算法,只要使用二次线性化的方法控制,就可以很好地实现炉子的加热和恒温控制了。3.2 pid算法按反馈控制系统偏差的比例( proportional)、积分( integral )和微分( differe

14、ntial )规律进行控制的调节器,简称为pid调节器,是控制系统中应用最为广泛的一种控制规律。pid算法的表达式为: 对应的模拟pid调节器的传递函数为: 位置式pid公式:增量式pid公式:图3.2 pid控制流程图在工程实际中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称pid控制,又称pid调节。pid控制器问世至今已有近70年历史,它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。当被控对象的结构和参数不能完全掌握,或得不到精确的数学模型时,控制理论的其它技术难以采用时,系统控制器的结构和参数必须依靠经验和现场调试来确定,这时应用pid控制技术最为

15、方便。即当我们不完全了解一个系统和被控对象,或不能通过有效的测量手段来获得系统参数时,最适合用pid控制技术。pid控制,实际中也有pi和pd控制。pid控制器就是根据系统的误差,利用比例、积分、微分计算出控制量进行控制的。比例(p)控制比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳态误差(steady-stateerror)。积分(i)控制在积分控制中,控制器的输出与输入误差信号的积分成正比关系。对一个自动控制系统,如果在进入稳态后存在稳态误差,则称这个控制系统是有稳态误差的或简称有差系统(systemwithsteady-statee

16、rror)。为了消除稳态误差,在控制器中必须引入“积分项”。积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。因此,比例+积分(pi)控制器,可以使系统在进入稳态后无稳态误差。微分(d)控制在微分控制中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳。其原因是由于存在有较大惯性组件(环节)或有滞后(delay)组件,具有抑制误差的作用,其变化总是落后于误差的变化。解决的办法是使抑制误差的作用的变化“超前”,

17、即在误差接近零时,抑制误差的作用就应该是零。这就是说,在控制器中仅引入“比例”项往往是不够的,比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分项”,它能预测误差变化的趋势,这样,具有比例+微分的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。所以对有较大惯性或滞后的被控对象,比例+微分(pd)控制器能改善系统在调节过程中的动态特性。5、pid控制器的参数整定pid控制器的参数整定是控制系统设计的核心内容。它是根据被控过程的特性确定pid控制器的比例系数、积分时间和微分时间的大小。pid控制器参数整定的方法很多,概括起来有两大类:一是理论计算整定法。

18、它主要是依据系统的数学模型,经过理论计算确定控制器参数。这种方法所得到的计算数据未必可以直接用,还必须通过工程实际进行调整和修改。二是工程整定方法,它主要依赖工程经验,直接在控制系统的试验中进行,且方法简单、易于掌握,在工程实际中被广泛采用。pid控制器参数的工程整定方法,主要有临界比例法、反应曲线法和衰减法。三种方法各有其特点,其共同点都是通过试验,然后按照工程经验公式对控制器参数进行整定。但无论采用哪一种方法所得到的控制器参数,都需要在实际运行中进行最后调整与完善。现在一般采用的是临界比例法。利用该方法进行pid控制器参数的整定步骤如下:(1)首先预选择一个足够短的采样周期让系统工作;(2

19、)仅加入比例控制环节,直到系统对输入的阶跃响应出现临界振荡,记下这时的比例放大系数和临界振荡周期;(3)在一定的控制度下通过公式计算得到pid控制器的参数。在实际调试中,只能先大致设定一个经验值,然后根据调节效果修改。对于温度系统:p(%)20-60,i(分)3-10,d(分)0.5-3对于流量系统:p(%)40-100,i(分)0.1-1对于压力系统:p(%)30-70,i(分)0.4-3对于液位系统:p(%)20-80,i(分)1-53.3 数据处理流程首先使用循环查询的方法依次读取按键的键值,判断用户的指令,并以此为依据选择led显示的数据。输入过程结束后,开始炉温控制模块,首先读取ds

20、18b20数据,再与设定值比较,决定继电器的通断时间,控制加热炉温度及警报器超限报警。 图3.3 数据处理流程图第四章 硬件电路设计第四章 硬件电路设计4.1 sl-i型51单片机综合实验箱4.1.1 单片机最小系统stc12c5a60s2系列单片机是宏晶科技生产的单时钟/机器周期(1t)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成max810专用复位电路,2路pwm,8路高速10位a/d转换(250k/s),针对电机控制,强干扰场合。最小系统如图4.1.1所示:图4.1 单片机最小系统4.1.2 数码管显示模块数码管的

21、显示原理不论是共阴还是共阳,其基本原理是一样的,都是靠点亮内部的led来发光。一位数码管的引脚是十个,显示一个8字需要7个小段,另外还有一个小数点。图4.2 数码管内部原理图实际实验时,为了保证编程的方便和通常将数码管的数字所对应的八位数字记录在数组中,程序中直接使用查表的方法,可以提高程序的效率,也使程序的编写更加简单方便。符号编码符号编码00xc080x8010xf990x9020xa4a0x8830xb0b0xc740x99c0xc650x92d0xa160x82e0x8670xf8f0x8e我们实验箱中的led数码管是四位数码管,因此为了控制方便,四个数码管的“段选端”是连在一起的,他

22、们的gnd或vcc端作为“位选端”来输入控制信号,这样单片机就可以通过程序来控制显示的字符。下图是实验箱开发板中的数码管电路图:图4.3 实验箱数码管电路4.1.3 按键模块弹性按键被按下时闭合,松手后自动断开。单片机检测按键的原理是:单片机的i/o口既可以作为输出也可作为输入使用,当检测按键时使用的是它的输入功能,把按键的一端接地,另一端与单片机的某一个i/o口相连,开始时先给i/o口赋一高电平,然后让单片机不断地检测该i/o口是否变成低电平,当按键闭合时,即相当于该i/o口通过按键与地相连,变成低电平,程序一旦检测到i/o口变为低电平则说明按键被按下,然后执行相应的指令。图4.4 按键按下

23、时电压的变化从图4.4可以看出,理想波形与实际波形之间是有区别的,实际波形在按下和释放的瞬间都有抖动现象,抖动时间的长短和按键的机械特性有关,一般为510ms。通常我们手动按时都要加上去抖动操作,有专用的去抖动电路,也有专用的去抖动芯片,但通常我们软件延时的方法就能很容易解决抖动问题,而没有必要再添加多余的硬件电路。图4.5 按键检测流程图无论独立键盘还是矩阵键盘,单片机检测其是否被按下的依据都是一样的,也就是检测该键对应的i/o口是否为低电平。独立键盘有一端固定为低电平,单片机写程序检测时比较方便。而矩阵键盘两端都与单片机i/o口连接,因此在检测时需人为通过单片机i/o口送出低电平。检测时,

24、先送一列为低电平,其余几列为高电平,然后然后立即轮流检测一次各行是否有低电平,若检测到某一行为低电平,就可以确定当前被按下的按键是哪一行哪一列的,用同样的方法轮流各列送一次低电平,再轮流检测一次各行是否变为低电平,这样既可检测完所有的按键。图4.6 按键电路图4.1.4 报警模块报警模块的结构比较简单,只是一个蜂鸣器模块,当温度高于设定值较大时,单片机在i/o口上输入一个低电平,就可以是蜂鸣器报警。图4.7 报警电路4.2 ds18b20温度传感器4.2.1 ds18b20简介dallas 半导体公司的数字化温度传感器ds1820是世界上第一片支持 “一线总线”接口的温度传感器。一线总线独特而

25、且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。现在,新一代的“ds1820”体积更小、更经济、更灵活。使您可以充分发挥“一线总线”的长处。速度分配策略。ds18b20可以程序设定912位的分辨率,精度为0.5c。可选更小的封装方式,更宽的电压适用范围。分辨率设定,及用户设定的报警温度存储在eeprom中,掉电后依然保存。4.2.2 ds18b20原理ds18b20的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。其一个工作周期可分为两个部分,即温度检测和数据处理。在讲解其工作流程之前我们有必要了解18b20的内部存储器资源。18b20共有三种形态的存储

26、器资源,它们分别是: rom 只读存储器,用于存放ds18b20id编码,其前8位是单线系列编码(ds18b20的编码是19h),后面48位是芯片唯一的序列号,最后8位是以上56的位的crc码(冗余校验)。数据在出产时设置不由用户更改。ds18b20共64位rom。 ram 数据暂存器,用于内部计算和数据存取,数据在掉电后丢失,ds18b20共9个字节ram,每个字节为8位。第1、2个字节是温度转换后的数据值信息,第3、4个字节是用户eeprom(常用于温度报警值储存)的镜像。在上电复位时其值将被刷新。第5个字节则是用户第3个eeprom的镜像。第6、7、8个字节为计数寄存器,是为了让用户得到

27、更高的温度分辨率而设计的,同样也是内部温度转换、计算的暂存单元。第9个字节为前8个字节的crc码。eeprom 非易失性记忆体,用于存放长期需要保存的数据,上下限温度报警值和校验数据,ds18b20共3位eeprom,并在ram都存在镜像,以方便用户操作。4.2.3 控制器对18b20操作流程1, 复位:首先我们必须对ds18b20芯片进行复位,复位就是由控制器(单片机)给ds18b20单总线至少480us的低电平信号。当18b20接到此复位信号后则会在1560us后回发一个芯片的存在脉冲。 2, 存在脉冲:在复位电平结束之后,控制器应该将数据单总线拉高,以便于在1560us后接收存在脉冲,存

28、在脉冲为一个60240us的低电平信号。至此,通信双方已经达成了基本的协议,接下来将会是控制器与18b20间的数据通信。如果复位低电平的时间不足或是单总线的电路断路都不会接到存在脉冲,在设计时要注意意外情况的处理。 3, 控制器发送rom指令:双方打完了招呼之后最要将进行交流了,rom指令共有5条,每一个工作周期只能发一条,rom指令分别是读rom数据、指定匹配芯片、跳跃rom、芯片搜索、报警芯片搜索。rom指令为8位长度,功能是对片内的64位光刻rom进行操作。其主要目的是为了分辨一条总线上挂接的多个器件并作处理。诚然,单总线上可以同时挂接多个器件,并通过每个器件上所独有的id号来区别,一般

29、只挂接单个18b20芯片时可以跳过rom指令(注意:此处指的跳过rom指令并非不发送rom指令,而是用特有的一条“跳过指令”)。rom指令在下文有详细的介绍。 4, 控制器发送存储器操作指令:在rom指令发送给18b20之后,紧接着(不间断)就是发送存储器操作指令了。操作指令同样为8位,共6条,存储器操作指令分别是写ram数据、读ram数据、将ram数据复制到eeprom、温度转换、将eeprom中的报警值复制到ram、工作方式切换。存储器操作指令的功能是命令18b20作什么样的工作,是芯片控制的关键。 5, 执行或数据读写:一个存储器操作指令结束后则将进行指令执行或数据的读写,这个操作要视存

30、储器操作指令而定。如执行温度转换指令则控制器(单片机)必须等待18b20执行其指令,一般转换时间为500us。如执行数据读写指令则需要严格遵循18b20的读写时序来操作。数据的读写方法将有下文有详细介绍。 若要读出当前的温度数据我们需要执行两次工作周期,第一个周期为复位、跳过rom指令、执行温度转换存储器操作指令、等待500us温度转换时间。紧接着执行第二个周期为复位、跳过rom指令、执行读ram的存储器操作指令、读数据(最多为9个字节,中途可停止,只读简单温度值则读前2个字节即可)。其它的操作流程也大同小异,在此不多介绍。4.2.4 ds18b20芯片与单片机的接口图4.8 ds18b20芯

31、片与单片机连接如图所示,ds18b20只需要接到控制器(单片机)的一个i/o口上,由于单总线为开漏所以需要外接一个4.7k的上拉电阻。如要采用寄生工作方式,只要将vdd电源引脚与单总线并联即可。但在程序设计中,寄生工作方式将会对总线的状态有一些特殊的要求。4.2.5 ds28b20芯片rom指令表read rom(读rom)33h (方括号中的为16进制的命令字) 这个命令允许总线控制器读到ds18b20的64位rom。只有当总线上只存在一个ds18b20的时候才可以使用此指令,如果挂接不只一个,当通信时将会发生数据冲突。 match rom(指定匹配芯片)55h 这个指令后面紧跟着由控制器发

32、出了64位序列号,当总线上有多只ds18b20时,只有与控制发出的序列号相同的芯片才可以做出反应,其它芯片将等待下一次复位。这条指令适应单芯片和多芯片挂接。 skip rom(跳跃rom指令)cch 这条指令使芯片不对rom编码做出反应,在单总线的情况之下,为了节省时间则可以选用此指令。如果在多芯片挂接时使用此指令将会出现数据冲突,导致错误出现。 search rom(搜索芯片)f0h 在芯片初始化后,搜索指令允许总线上挂接多芯片时用排除法识别所有器件的64位rom。 alarm search(报警芯片搜索)ech 在多芯片挂接的情况下,报警芯片搜索指令只对附合温度高于th或小于tl报警条件的

33、芯片做出反应。只要芯片不掉电,报警状态将被保持,直到再一次测得温度什达不到报警条件为止。 ds28b20芯片存储器操作指令表: write scratchpad (向ram中写数据)4eh 这是向ram中写入数据的指令,随后写入的两个字节的数据将会被存到地址2(报警ram之th)和地址3(报警ram之tl)。写入过程中可以用复位信号中止写入。 read scratchpad (从ram中读数据)beh 此指令将从ram中读数据,读地址从地址0开始,一直可以读到地址9,完成整个ram数据的读出。芯片允许在读过程中用复位信号中止读取,即可以不读后面不需要的字节以减少读取时间。 copy scrat

34、chpad (将ram数据复制到eeprom中)48h 此指令将ram中的数据存入eeprom中,以使数据掉电不丢失。此后由于芯片忙于eeprom储存处理,当控制器发一个读时间隙时,总线上输出“0”,当储存工作完成时,总线将输出“1”。在寄生工作方式时必须在发出此指令后立刻超用强上拉并至少保持10ms,来维持芯片工作。 convert t(温度转换)44h 收到此指令后芯片将进行一次温度转换,将转换的温度值放入ram的第1、2地址。此后由于芯片忙于温度转换处理,当控制器发一个读时间隙时,总线上输出“0”,当储存工作完成时,总线将输出“1”。在寄生工作方式时必须在发出此指令后立刻超用强上拉并至少

35、保持500ms,来维持芯片工作。 recall eeprom(将eeprom中的报警值复制到ram)b8h 此指令将eeprom中的报警值复制到ram中的第3、4个字节里。由于芯片忙于复制处理,当控制器发一个读时间隙时,总线上输出“0”,当储存工作完成时,总线将输出“1”。另外,此指令将在芯片上电复位时将被自动执行。这样ram中的两个报警字节位将始终为eeprom中数据的镜像。 read power supply(工作方式切换)b4h 此指令发出后发出读时间隙,芯片会返回它的电源状态字,“0”为寄生电源状态,“1”为外部电源状态。4.3 继电器电路设计本系统采用单相固态继电器ssr/1p-10

36、a,当单片机给继电器供5v电压时,继电器导通。可以通过这个原理将加热炉的电源线火线分别接入继电器两端,所以单片机的i/o口供给低电平,继电器就可以导通,这样就可以控制加热炉的加热了。如图所示:图4.9 继电器结构由于考虑到单片机引脚的驱动能力可能不足,因此制作了驱动电路,放大驱动电流,并在继电器两端加上续流二极管保证加热时间够长。电路如下:图4.10 驱动电路系统软件设计参考文献第五章 系统软件设计5.1 主程序设计为了更简单的完成温度控制的任务,采用如下算法控制继电器,程序的软件流程图如下:图5.1 软件流程图首先在程序的开头先读取用户的按键命令,当没有按键时,数码管仅显示实际温度;若按下“

37、b”键,则数码管显示用户的设定温度;按下“c”键,则进入设置温度子程序,用户通过19数字键就可以设置用户所需温度,这样就完成了用户的操作。接下来读取ds18b20的数据,并按格式装配成数码管可以显示的类型。最后根据当前的温度值控制继电器的通断。主程序就是以上述流程往复运行。5.2 数码管显示程序数码管显示段选码:unsigned char code seg_table13 = 0xc0,/*0*/0xf9,/*1*/0xa4,/*2*/0xb0,/*3*/0x99,/*4*/0x92,/*5*/0x82,/*6*/0xf8,/*7*/0x80,/*8*/0x90,/*9*/0x9c,/*10*

38、/ /上框 代表实际温度 0xa3,/*11*/ /下框 代表设定温度 0xff/all off;图5.2 数码管显示照片5.3 键盘扫描程序这里使用44矩阵键盘作为命令输入,采用行列赋值的方法分别确定按键的行值和列值。图5.3 键盘扫描5.4 db18b20通信程序ds18b20测温原理为图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振 随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在55所对应的一个基数值。计数器1对 低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器

39、的值将加1,计数器1的预置将重新被装入,计数器1重 新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即 为所测温度。斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。转化后得到的12位数据,存储在18b20的两个8比特的ram中,二进制中的前面5位是符号位,如果测得的温度大于0, 这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际 温度。 例如+125的数字输出为07d0h,+25.0625的数字输出为

40、0191h,-25.0625的数字输出为ff6fh,-55的数字输出为fc90h 。根据ds18b20的通讯协议,主机(单片机)控制ds18b20完成温度转换必须经过三个步骤:每一次读写之前都要对ds18b20进行 复位操作,复位成功后发送一条rom指令,最后发送ram指令,这样才能对ds18b20进行预定的操作。复位要求主cpu将数据线下拉500微秒,然后 释放,当ds18b20收到信号后等待1660微秒左右,后发出60240微秒的存在低脉冲,主cpu收到此信号表示复位成功。图5.4 ds18b20使用方法第六章 加热炉温控系统使用方法6.1 系统连接方法实验板的usb口连接电脑,用作5v电

41、源输入,ds18b20的vcc和gnd分别接uart的vcc和gnd;数据端口接uart的rx。这样单片机就可以读取ds18b20的温度数据了,但是为了准确的测量加热炉温度,还要将芯片贴于加热炉的杯壁上,这样可以大致准确地检测炉温。然后是继电器的连接,先将电源线的火线断开,分别接在继电器220v的两个引脚上,再将继电器的控制端分别接在放大器驱动电路的集电极和地线上,而驱动电路用实验箱上的5v输出供电,最后将放大器的基级经由一个2k的电阻接入实验箱uart的tx端。这样,单片机就通过控制tx端的高低电平,控制继电器的开合。6.2 系统使用方法程序烧写完毕以后,重新打开开关,数码管就可以显示当前的

42、温度,按下键盘上的“*”号键,就可以使用09数字键设置温度(默认温度为50度)。按下“#”号键,可以查看用户设定温度。按下“d”键,可以看到恒温时间(在距设定温度0.8c的时候开始启动计时器)。加热炉的保温范围大致在设定温度上下0.5c的范围内,当超过设定温度0.5c时,就会启动蜂鸣器报警。第七章 总结本文主要介绍基于stc12c5a60s2单片机的炉温控制设计流程,介绍了炉温控制方案以及各个主要模块的工作原理和设计思路。本文并涉及温度传感器系统、继电器系统、显示系统、输入系统的设计。由于系统的复杂性和硬件使用要求以及人力、时间等方面的制约,考虑到系统的实时性和运算能力,系统并没有采用复杂的处

43、理算法和控制算法,一切以实用为主。对于温度控制算法还有待进一步的研究和改进。同时,在电路保护方面的设计有待进一步地学习和实践。总结整个设计过程,不仅使我们得到了对已有知识进行实践的机会,更培养了一定的科研能力,拓宽了知识面,加深了对知识的理解和运用。 参考文献1 郭天祥. 51单片机c语言教程北京电子工业出版社20082 宏晶stc单片机官方网站stc12c5a60s2器件手册2010 3 doy等.18b20温度传感器应用解析.2007附录a 系统程序代码附录a 系统程序代码ds18b20通信程序#define uchar unsigned char#define delay_time1 8

44、sbit dq=p30; /改成p30void ds18b20_delay(int time)/延时时间为(time * 6 us)int i,s,temp;temp=time;for(i=0;i0)s-;/*18b20复位函数*/void init_ds18b20(void)unsigned char x=1,j;dq=1;/先将数据口拉高for(j=0;j 0; i-) /定义 8 bit,写 8 bitdq = 1;for(j=0;jdelay_time1;j+)_nop_();_nop_();dq = 0;for(j=0;j 1; /右移一位,倒数第二位变为最低位dq = 1;ds18

45、b20_delay(1); /高电平维持11us,写结束/*18b20读1个字节函数*/uchar readonechar(void)uchar i,j;uchar value = 0;for (i = 8; i 0; i-)dq = 1;for(j=0;j= 1; /右移一位dq = 0;for(j=0;jdelay_time1;j+)_nop_();_nop_();_nop_();_nop_(); /4usdq = 1;for(j=0;jdelay_time1;j+)_nop_();_nop_();_nop_();_nop_(); /4us ,读时隙if (dq)value |= 0x80

46、; /dq=1,则写入为 10000000ds18b20_delay(6); /66usdq = 1;return(value);float readtemperature(void)uchar n = 0; /存储符号unsigned int t;uchar a,b;/*读出温度函数*/init_ds18b20(); /总线复位writeonechar(0xcc); / 发skip rom命令writeonechar(0xbe); / 发读命令a = readonechar(); /温度低8位b = readonechar(); /温度高8位init_ds18b20();writeonech

47、ar(0xcc); / skip romwriteonechar(0x44); / 发转换命令t = (b 8) + a;return (t*0.0625);键盘扫描程序#include#includeshuma.hextern unsigned char keycounter;extern bit keyflag;extern bit setflag;extern bit disflag;extern bit showtimeflag;unsigned char code keycode16=0x77,0x7b,0x7d,0x7e, /1,2,3,a0xb7,0xbb,0xbd,0xbe,

48、/4,5,6,b0xd7,0xdb,0xdd,0xde, /7,8,9,c0xe7,0xeb,0xed,0xee, /*,0,#,d;unsigned char key_scan() /返回的是keycode数组的位数unsigned char i,x,y;unsigned char keycode;p2 = 0x0f;if(p2 != 0x0f)delay(500);if(p2 != 0x0f)x = p2;p2 = 0xf0;if(p2 != 0xf0)y = p2;while(p2!=0xf0); /如果不松键 则一直停在这边keycode = x|y;elsekeycode = 0xf

49、f; for(i=0;i16;i+)if(keycode=keycodei)return i;return 255; unsigned char get_code()unsigned char i=0xff,j=0xff;i=key_scan();switch(i)case 0:j=1;keyflag=1;break;case 1:j=2;keyflag=1;break;case 2:j=3;keyflag=1;break;case 3:break; /acase 4:j=4;keyflag=1;break;case 5:j=5;keyflag=1;break;case 6:j=6;keyflag=1;break;case 7:break; /bcase 8:j=7;keyflag=1;break;case 9:j=8;keyflag=1;break;case 10:j=9;keyflag=1;break;case 11:break; /ccase 12:j=a;keyflag=1;setflag=1;keycounter=0;break;case 13:j=0;keyflag=1;break;case 14:j=b;keyflag=1;disflag=disflag;break;case 15:j=c;keyflag=1;showtimeflag=sh

温馨提示

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

评论

0/150

提交评论