欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    过程控制课程报告基于单片机的水温控制系统.docx

    • 资源ID:24488181       资源大小:369.16KB        全文页数:21页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    过程控制课程报告基于单片机的水温控制系统.docx

    1、过程控制课程报告基于单片机的水温控制系统过程控制系统课程设计 实验报告课程设计题目:基于单片机的水温控制系统指导老师: XXX小组成员:XX XX 一、 系统总方案设计 图1-1 系统框图本系统的电路设计方框图如图1-1所示,它由七部分组成:控制部分主芯片采用单片机STC89C52;显示部分采用4位共阳极LED数码管以动态扫描方式实现温度显示;温度采集部分采用DS18B20温度传感器;加热控制部分采用继电器电路;时钟电路;复位电路;单列3按键键盘输入设定温度值。二、 硬件电路设计1. 时钟电路设计时钟电路是用来产生STC89C52单片机工作时所必须的时钟信号,STC89C52本身就是一个复杂的

    2、同步时序电路,为保证工作方式的实现,STC89C52在唯一的时钟信号的控制下严格的按时序执行指令进行工作 ,时钟的频率影响单片机的速度和稳定性。通常时钟由于两种形式:内部时钟和外部时钟。我们系统采用内部时钟方式来为系统提供时钟信号。STC89C52内部有一个用于构成振荡器的高增益反向放大器,该放大器的输入输出引脚为XTAL1和XTAL2,它们跨接在晶体振荡器和用于微调的电容,便构成了一个自激励振荡器。电路中的C1、C2的选择在30PF左右,但电容太小会影响振荡的频率、稳定性和快速性。晶振频率为在1.2MHZ12MHZ之间,频率越高单片机的速度就越快,但对存储器速度要求就高。为了提高稳定性我们采

    3、用温度稳定性好的30pf的贴片电容,采用的晶振频率为12MHZ。本次系统的时钟电路设计如图2-1所示。图 2-1 时钟电路图2系统复位电路在图2-2 中复位开关K1 被按下并松开,使端获得低电平,RST 端输出复位信号,单片机复位。图2-2 复位电路3报警与控制电路设计当水箱内的温度超出或低于设定的温度超出1时,P1.4输出低电平“0”时,晶体管导通,压电蜂鸣器两端获得约+5V电压而鸣叫,出报警声音;单片机的P1.1输出低电平,此时红色指示灯亮,直到低于设定的最低温度时,P1.4输出高电平时,三极管截止,蜂鸣器停止发声,P1.1输出电平高电平,发光二极管灭,(由于实验器材有限,本设计的蜂鸣器使

    4、用发光二级管替代)报警和控制电路而下图2-3所示 图2-3 报警与控制电路与单片机的连接4 LED显示电路设计在本设计中采用了四位共阳极八段数码管,用动态驱动来显示温度的值,如图2-4-2所示,其结构如2-4-1所示图2-4-1 数码管内部结构 图2-4-2 LED显示电路5温度检测电路设计本次设计所采用的温度传感器为DS18B20,无需A/D转换,因此从主机CPU到DSl8B20仅需一条线,当DS18B20接收到温度转换命令后,开始启动转换。DS18B20的测量温度范围为 -55C-+125C,在-10-+85C范围内,精度为0.5C。现场温度直接以“一线总线”的数字方式传输,大大提高了系统

    5、的抗干扰性。图2-5为DS18B20与单片机的连接图图2-5 DS18B20与STC89C52单片机的连接6按键电路设计键盘共有三个键,判断K2-K4键是否按下,可采用软件查询和中断的方法,当某个键按下时,低电平有效。3个键K2-K4的功能定义如表所示。K2-K4键的定义按键键名功能K2功能转换键此键按下,显示温度设定值,按键松开,显示当前温度K3加1键设定温度值加1K4减1键设定温度值减1 图 2-6 按键电路7 继电器控制电路 控制P10的高低电平来控制继电器的断开和闭合,当P10口为低电平时,三极管导通,发光二极管亮,控制继电器开始加热,当P10为高电平时,三极管截止,继电器断开,停止加

    6、热。(由于实验设备有限,本设计使用发光二级管代替继电器加热装置,当二极管发亮时代表正在加热)。 图2-7 继电器控制加热装置电路图三、软件设计1 .系统总流程图图3-1 系统总流程图2.主程序主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图3-2所示。通过调用读温度子程序把存入内存储中的整数部分与小数部分分开存放在不同的两个单元中,然后通过调用显示子程序显示出来。图3-2 主程序流程图3.读出温度子程序DS18B20复位、应答子程序读温度命令子程序写入子程序跳过ROM匹配命令DS18B2

    7、0复位、应答子程序显示子程序(延时)写入子程序温度转换命令写入子程序跳过ROM匹配命令 图4-3 读出温度子程序4.数码管显示模块图4-4 数码管显示模块附录一 系统电路图附录二 系统源代码#include /52系列头文件#include #define uchar unsigned char#define uint unsigned intsbit ds=P34;sbit dula=P26;sbit beep=P14; /定义蜂鸣器sbit led=P11;sbit jdq=P10;uint temp,t,w; /定义整型的温度数据uchar flag;float f_temp; /定义浮

    8、点型的温度数据uint low; /定义温度下限值 是温度乘以10后的结果uint high; /定义温度的上限值sbit led1=P10; /控制发光二极管sbit led2=P11; /控制发光二极管sbit s1=P35;sbit s2=P36;sbit s3=P37;uchar flag1,flag2,flag3,flag4,s1num,qian,bai,shi,ge;uchar code table= 0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90,0xc6 ; /共阳数码管段码表uchar code table1=0x40,0

    9、x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10;/带小数点的编码 void delay(uchar z) /延时函数 uchar a,b; for(a=z;a0;a-) for(b=100;b0;b-);void init() EA=1; ET1=1; TR1=1; TMOD=0x10; TH1=(65536-4000)/256; TL1=(65536-4000)%256; flag=0; high=100; jdq=1;void didi() beep=0; led=0; delay(500); beep=1; led=1; delay(500);vo

    10、id dsreset(void) /DS18b20复位, 初始化函数 uint i; ds=0; i=103; /延时最短480us while(i0) i-; ds=1; /等待16-60us,收到低电平一个约60-240us则复位成功 i=4; while(i0) i-;bit tempreadbit(void) /读1位数据函数 uint i; bit dat; ds=0;i+; ds=1;i+;i+; /i+起到延时作用 dat=ds; i=8; while(i0)i-; return(dat);uchar tempread(void) /读1字节的数据函数 uint i,j,dat;

    11、 dat=0; for(i=1;i=8;i+) j=tempreadbit(); dat=(j1); /读出的数据最低位在最前面,这样刚好一个字节在dat里 return(dat);void tempwritebyte(uchar dat) /向DS18B20写一个字节的数据函数 uint i; uchar j; bit testb; for(j=1;j1; if(testb) /写1 ds=0; i+;i+; ds=1; i=8; while(i0) i-; else /写0 ds=0; i=8; while(i0) i-; ds=1; i+;i+; void tempchange(void

    12、) /DS18B20开始获取温度并转换 dsreset(); delay(1); tempwritebyte(0xcc); /写跳过读ROM指令 tempwritebyte(0x44); /写温度转换指令uint get_temp() /读取寄存器中存储的温度数据 uchar a,b; dsreset(); delay(1); tempwritebyte(0xcc); /写跳过读ROM指令 tempwritebyte(0xbe); /写温度转换指令 a=tempread(); /读低8位 b=tempread(); /读高8位 temp=256*b+a; f_temp=temp*0.0625;

    13、 /温度在寄存器中为12位,分辨率为0.0625 temp=f_temp*10+0.5; /乘以10表示小数点后面只取一位 return temp; /temp是整型void keyscan() if(s1=0) P2=0xff; delay(5); if(s1=0) while(!s1); s1num+; if(s1num=1) flag=1; if(s1num=2) s1num=0; flag=0; if(s1num=1) flag=1; if(s2=0) delay(5); if(s2=0) while(!s2); high+=10; if(high=1000) high=100; if

    14、(s3=0) delay(5); if(s3=0) while(!s3); high-=10; if(high=0) high=100; void main() /主函数 init(); while(1) tempchange(); /温度转换函数 if(temp=high-10)&(temphigh)&(temphigh+10) jdq=1; didi(); void time1() interrupt 3 TH1=(65536-4000)/256; TL1=(65536-4000)%256; t+; keyscan(); if(flag=0) if(t=4) t=0; switch(t)

    15、case 1:P0=tableget_temp()/100; P2=0xfd;break; case 2:P0=table1get_temp()%100/10;P2=0xfb;break; case 3:P0=tableget_temp()%10; P2=0xf7;break; if(flag=1) if(t=4) t=0; switch(t) case 0:P0=0xff; P2=0xfe;break; case 1:P0=0xff; P2=0xfd;break; case 2:P0=tablehigh/100; P2=0xfb;break; case 3:P0=tablehigh%100/10; P2=0xf7;break;


    注意事项

    本文(过程控制课程报告基于单片机的水温控制系统.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开