水温控制系统报告 - 图文 联系客服

发布时间 : 星期五 文章水温控制系统报告 - 图文更新完毕开始阅读f34ecc1d02768e9951e738b4

课程设计报告 C60.1UFJ1594837261DB9IN4148DIODER110KC30.1UFRXDTXDC10.1UFMAX232ACPE(16)U11C1+VCC2V+GND3C1 -T1 OUT4C2+R1 IN5C2 -R1 OUT6V-T1 INTXD7T2 OUTT2 INRXD8R2 INR2 OUT161514131211109VCCVCCC4VCC0.1UF+C510UF/16VR44.7KIN4148DIODEJQC-3F(T73)12VRELAY-SPDT+121-COM-220V+++C20.1UF+SDO1SDI1PA0VCC2-OPEN3-OFF-NCVCC123Q112PB2345MOSI6MISO7SCK8RST910VCC11XTAL112XTAL213SDO114SDI115PD216PD317181920PB0PB1PB2PB3PB4PB5PB6PB7RESETVCCGNDXTAL2XTAL1PD0PD1PD2PD3PD4PD5PD6ATMEGA16VCCPA0PA1PA2PA3PA4PA5PA6PA7AREFGNDAVCCPC7PC6PC5PC4PC3PC2PC1PC0PD74039383736353433323130292827262524232221PA0PA1PA2PA4VCCI/OGNDVCCR751R1-COM-220V2-OPEND1LEDJ2CON212 RSTS1+C7R61KU2DS18B20LCD1VCC16151413121110987654321BL-BL+D7D6D5D4D3D2D1D0ENRWRSVLVCCGNDVCC +12VGNDJ3CON3123SW-PB10ufS8050NPNPA4R86.2KC8XTAL2X1MOSI13RST5SCK7MISO9MOSIVCCGNDRSTGNDSCKGNDMISOGNDAVRISPVCC2468102LCD1602R96.8KXTAL122pfX2XTALC9122pfLCD1602S2PD2SW-PBPD3SW-PBS3PB2SW-PBS4R51K 图3-14 整体电路图

电路图中,除了上面所说的DS18B20的接口电路和加热控制执行机构外,还有主控单片机ATMega16、串口模块、USB-ISP下载模块、11.0592MHz的晶振模块、单片机复位模块、LCD1602显示模块以及外部中断模块。

三个外部中断可以实现在板控制水温加热温度,从而脱开上位机的需求。其它模块在此就不赘述其功能了。

3.6系统软件算法分析

系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。 3.6.1主程序

主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图3-15所示。

第 13 页

课程设计报告

图3-15 主程序流程图

图3-16读温度流程图

3.6.2读出温度子程序

读出温度子程序的主要功能是读出RAM中的9字节,在读出时不进行CRC校验。其程序流程图如图3-16示。 3.6.3温度转换命令子程序

温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如上图,图3-17所示。

第 14 页

课程设计报告

图3-17 温度转换流程图

3.6.4 计算温度子程序

计算温度子程序将RAM中读取的值MSB和LSB进行BCD码的转换运算。进行温度值正负的判定, 将LSB的高四位与MSB的低四位合并到一个字节中作为整数信息;将LSB的低4位作为小数信息,计算小数位十分位的值,并将百分位、千分位和万分位的值舍去。因此,温度值精度为0.1○C。温度读出值示例如图3-18。

第 15 页

课程设计报告

图3-18 温度读出值示例

uchar FLASH XiaoShu[] = {

0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9 };

小数位计算与下面的查表法相类似,只不过是只显示了一位小数。

a[0]=a[0]&0x0f; //小数部分共十六个状态,采用查表 switch (a[0]) //float D[3] 十分位 /d[4] 百分位 {case 0x00: d[3]=d[4]=d[5]=d[6]=0x00;break;

case 0x01: d[3]=0x00;d[4]=0x06;d[5]=0x02;d[6]=0x05;break;//.0625 case 0x02: d[3]=0x01;d[4]=0x02;d[5]=0x05;d[6]=0x00;break;//.1250 case 0x03: d[3]=0x01;d[4]=0x08;d[5]=0x07;d[6]=0x05;break;//.1875 case 0x04: d[3]=0x02;d[4]=0x05;d[5]=0x00;d[6]=0x00;break;//.2500 case 0x05: d[3]=0x03;d[4]=0x01;d[5]=0x02;d[6]=0x05;break;//.3125

千分位 /d[6] 万分位

第 16 页