




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机课程设计报告设计题目:水温控制系统班 级: 自动化 081 学 号: 200808425 姓 名: 刘帅军 指导教师: 董唯光 评语: 成绩 2011 年 7 月 8 日目 录1. 问题分析及解决方案11.1 题目要求11.2 题目分析11.3 解决方案12. 单片机选型及硬件配置22.1 单片机及扩展模块选择22.1.1 单片机及输入输出模块选型22.1.2 电源模块的选择22.2 I/O地址分配22.3 系统硬件原理图32.3.1 系统原理框图32.3.2 晶振及复位电路32.3.3 数码管驱动电路4 温度显示模块42.3.5 温度控制系统整体仿真图52.3.6 DS18B20温度传
2、感器53. 软件实现93.1 控制流程图93.2 软件代码103.3 程序调试153.4 设计结果163.5 结果分析184. 结论与体会184.1 结论184.2 心得体会18参 考 书 目191. 问题分析及解决方案1.1 题目要求要求设计一个水温控制系统,能正常控制和测量温度范围,控温通道输出为继电器。测温和控温范围:室温80(实时控制);控温精度:正负1。1.2 题目分析本系统为水温控制系统,采用单片机作为控制器控制继电器的导通与关断,利用温度传感器实时监测水的温度,通过数码管显示实际温度与设定的目标温度,然后利用加热和冷却装置进行加减温度,使水的温度维持在一定的范围之内。通过调节目标
3、温度按钮,可以任意调节水的温度范围。1.3 解决方案根据题目要求,采用5V电源给单片机供电。供电电源可以利用220/9V变压器先将220V的电压将为9V,然后利用7805稳压芯片,得到5V供电电源。在控制环节,利用5551型三极管充当开关,通过单片机控制三极管的导通与关断,从而进一步控制继电器的开关,更进一步控制加热、冷却装置的工作状态。在整个控制系统中,通过温度传感器(DS18B20),对被控对象进行温度与数字转换,由温度传感器输出的温度信号经过I/O口,由单片机读出数值,并在数码管上显示,通过按键可以升高或者降低所需的温度。实际温度再经过与目标温度进行比较,若所测温度大于目标温度,则输出低
4、的门限电压,即D1灯不亮,不执行加热环节,同时指示灯D4亮,开始执行制冷环节;反之,若所测电压小于目标电压,则输出高的门限电压,即D1灯亮,执行加热环节这样就可以把温度控制在一定的范围之内。2. 单片机选型及硬件配置2.1 单片机及扩展模块选择2.1.1 单片机及输入输出模块选型在该题目当中,单片机选用STC89C52,温度检测模块采用DS18B20作为温度传感器对水温进行实时检测,温度显示模块选用两个四位一体共阳极数码管,分别显示实际温度和目标温度。2.1.2 电源模块的选择由于单片机输出的是TTL电平信号,因此对单片机单独提供5V电源。该电源可以由220V交流电源经整流、降压和稳压后获得。
5、对继电器线圈端子提供经5V放大后的8V电源供电,触头端子直接接入220V电源。2.2 I/O地址分配将单片机P0口作为实际水温的段选端,P2口作为目标水温的段选端。P1作为位选端,其中P1.0P1.3作为实际水温位选,P1.4P1.7作为目标水温位选。P3口主要作为信号指示以及读取温度传感器的温度数据使用。单片机引脚分配图如图2-1所示:图2-1 单片机引脚图2.3 系统硬件原理图2.3.1 系统原理框图该系统的原理框图如图2-2所示:数字温度传感器51单片机集成运放三极管放大继电器电热丝按键操作数码管显示图2-2 系统原理框图2.3.2 晶振及复位电路该系统中单片机外部晶振选为11.0592
6、MHZ,通过两个电容与XTAL1和XTAL2引脚连接构成单片机的外部时钟电路如图2-3所示。图2-3 单片机外部时钟电路复位操作有上电自动复位和按键手动复位两种方式。该系统复位电路由RC微分电路产生的脉冲来实现,电路如图2-4所示,按下开关即可产生复位信号,通过导线引入单片机RST引脚即可发生复位。图2-4 单片机复位电路2.3.3 数码管驱动电路该系统选择四位一体的共阳极数码管作为温度显示元件。通过测试,我们发现单片机上电后输出电流不能达到要求,导致数码管显示亮度不够,因此在本电路中对位选端加了三极管驱动电路。如图2-5所示:图2-5 数码管驱动电路2.3.4温度显示模块由P0口控制实际水温
7、的段选,P2口控制目标水温的段选。P1口作为位选端,其中P1.0P1.3作为实际水温位选,P1.4P1.7作为目标水温位选。显示模块如图2-6所示。 图2-6 温度显示模块2.3.5 温度控制系统整体仿真图同时还利用Protues对该系统进行了仿真,仿真图如图2-7所示:图2-7 Protues仿真图2.3.6 DS18B20温度传感器1DS18B20的主要特性 1、适应电压范围更宽,电压范围为3.05.5V,在寄生电源方式下可由数据线供电 2、独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯 3、DS18B20在使用中不需要任何外围
8、元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内 4、温范围55125,在-10+85时精度为±0.5 5、可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温 6、在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快 7、测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力 2. 指令约定代码操作说明 DS18B20的初始化 (1) 先将数据线置高电平“1”。 (2) 延时(该
9、时间要求的不是很严格,但是尽可能的短一点) (3) 数据线拉到低电平“0”。 (4) 延时750微秒(该时间的时间范围可以从480到960微秒)。 (5) 数据线拉到高电平“1”。 (6) 延时等待(如果初始化成功则在15到60毫秒时间之内产生一个由DS18B20所返回的低电平“0”。据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制)。 (7) 若CPU读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起(第(5)步的时间算起)最少要480微秒。 (8) 将数据线再次拉高到高电平“1”后结束。 /* *DS18B20初始
10、化* */Init_DS18B20(void)unsigned char x=0;DQ = 1; /DQ复位delay(8); /稍做延时DQ = 0; /单片机将DQ拉低delay(80); /精确延时大于480usDQ = 1; /拉高总线delay(14);x=DQ; /稍做延时后如果x=0则初始化成功delay(20);DS18B20的写操作 (1) 数据线先置低电平“0”。 (2) 延时确定的时间为15微秒。 (3) 按从低位到高位的顺序发送字节(一次只发送一位)。 (4) 延时时间为45微秒。 (5) 将数据线拉到高电平。 (6) 重复上(1)到(6)的操作直到所有的字节全部发送完
11、为止。 (7) 最后将数据线拉高。 /* * 向DS18B20写命令 * */WriteOneChar(unsigned char dat)unsigned char i=0;for (i=8; i>0; i-)DQ = 0;DQ = dat&0x01;delay(5);DQ = 1;dat>>=1;/delay(4);DS18B20的读操作 (1)将数据线拉高“1”。 (2)延时2微秒。 (3)将数据线拉低“0”。 (4)延时15微秒。 (5)将数据线拉高“1”。 (6)延时15微秒。 (7)读数据线的状态得到1个状态位,并进行数据处理。 (8)延时30微秒。 DS
12、18B20温度值格式表,如表2-1所示。这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际 温度。例如+125的数字输出为07D0H,+25.0625的数字输出为0191H,-25.0625的数字输出为FE6FH,-55的数字输出为FC90H 。表2-1 DS18B20温度值格式表/DS18B20程序读取温度ReadTemperature(void)unsigned char a=
13、0;unsigned char b=0;unsigned int t=0;Init_DS18B20();WriteOneChar(0xCC); /跳过读序号列号的操作WriteOneChar(0x44); /启动温度转换Init_DS18B20();WriteOneChar(0xCC); /跳过读序号列号的操作WriteOneChar(0xBE); /读取温度寄存器等(共可读9个寄存器)前两个就是温度a=ReadOneChar(); /低八位b=ReadOneChar(); /高八位t=b;t<<=8;t=t|a; /合并高八位和低八位return(t);此函数得到的值为温度值,最
14、小分度为0.0625,其中低四位为小数部分,(即:把一度分为16等分)。中间七位为其整数部分,高五位为符号位,若高五位为0,则说明得到的温度为正数。若高五位为1,则说明得到的温度为负数。3. 软件实现3.1 控制流程图程序控制流程图如图3-1所示:开始单片机I/O口初始化DS18B20初始化数码管显示初始化读取水的实际温度实际温度是否低于目标温度?控制继电器导通,进行加热实际温度是否高于设定的最大温度?启动报警装置,同时控制继电器关断进行降温控制继电器关断,进行降温实际温度是否低于设定的最小温度?启动报警装置,同时控制继电器导通进行加热结束结束NNYYNY图3-1 程序流程图3.2 软件代码在
15、整个软件设计过程中采用C语言编程,所用的编程环境是Keil 2。该程序源代码如下:#include<reg51.h>#define uint unsigned int#define uchar unsigned charsbit P10=P10;sbit P11=P11;sbit P12=P12;sbit P13=P13; /数码管1断码控制sbit P14=P14;sbit P15=P15;sbit P16=P16;sbit P17=P17; /数码管2段码控制sbit P32=P32; /电源指示灯sbit P34=P34;sbit P30=P30; /蜂鸣器sbit P31=
16、P31; /继电器控制位sbit up=P37;sbit down=P36; /按键操作端口sbit P35=P35; /加热指示灯端口sbit DQ =P33; /温度传感器端口/* * 温度小数部分表 * */uchar code ditab16=0x00,0x01,0x01,0x02, 0x03,0x03,0x04,0x04, 0x05,0x06,0x06,0x07, 0x08,0x08,0x09,0x09;/* * 共阳极数码管显示表 * */unsigned char code duan1=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,0x
17、90,0x88,;/* * 共阳极数码管(带小数点)显示表 * */unsigned char code duan2=0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,;void delay_1(uint z);int b=0,k,wendu_1,mubiao=200;char pwm=0,r=0,q=0;uint t=0;/* * 延时函数 * */void delay(unsigned int i)while(i-);/* *DS18B20初始化* */Init_DS18B20(void)unsigned char x=0;DQ = 1;
18、/DQ复位delay(8); /稍做延时DQ = 0; /单片机将DQ拉低delay(80); /精确延时大于480usDQ = 1; /拉高总线delay(14);x=DQ; /稍做延时后如果x=0则初始化成功x=1则初始化失败delay(20);/* * 从DS18B20读入数据 * */ReadOneChar(void)uchar i=0;uchar dat = 0;for(i=8;i>0;i-)DQ = 0; / 给脉冲信号dat>>=1;DQ = 1; / 给脉冲信号if(DQ)dat|=0x80;delay(4);return(dat);/* * 向DS18B20
19、写命令 * */WriteOneChar(unsigned char dat)uchar i=0;for(i=8;i>0;i-)DQ = 0;DQ = dat&0x01;delay(5);DQ = 1;dat>>=1;/* *DS18B20程序读取温度* */ReadTemperature(void)uchar a=0;uchar b=0;uint t=0;Init_DS18B20();WriteOneChar(0xCC); /跳过读序号列号的操作WriteOneChar(0x44); /启动温度转换Init_DS18B20();WriteOneChar(0xCC);
20、 /跳过读序号列号的操作WriteOneChar(0xBE); /读取温度寄存器等,前两个就是温度a=ReadOneChar(); /低八位b=ReadOneChar(); /高八位t=b;t<<=8;t=t|a; /合并高八位和低八位return(t);/* *当前温度显示* */xianshi()int x;int zhenshu;int xiaoshu;int num=5;wendu_1=ReadTemperature();x=wendu_1;zhenshu=x/16; /整数部分xiaoshu=x&0x0f; /小数部分wendu_1=zhenshu*10+dita
21、bxiaoshu; P10=1; P0=duan1zhenshu/10; /百位delay_1(num);P10=0;P11=1;P0=duan2zhenshu%10; /十位delay_1(num);P11=0; P12=1; P0=duan1ditabxiaoshu; /个位delay_1(num);P12=0;P13=1;P0=0xc6; /显示Cdelay_1(num);P13=0; /* * 目标温度显示 * */ P14=1; P2=duan1mubiao/100; /百位delay_1(num);P14=0;P15=1;P2=duan2mubiao/10%10; /十位delay
22、_1(num);P15=0; P16=1; P2=duan1mubiao%10; delay_1(num);P16=0;P17=1;P2=0xc6; delay_1(num);P17=0; main(void)P10=0;P11=0;P12=0;P13=0;P14=0;P15=0;P16=0;P17=0; /关闭位选段P35=0; /加热指示灯P32=0; /单片机上电指示灯P30=0; /蜂鸣器驱动口P31=0; /P31低电平时驱动继电器 P34=0; /* * 进入循环 * */ while(1) xianshi(); /显示系统数据 if(down=0) mubiao-;delay_1
23、(20);if(up=0)mubiao+;delay_1(20); if(mubiao>400|mubiao<200) P30=1; /目标设置错误时报警 else P30=0; /目标设置正常,则蜂鸣器不响/*/P35=0; pwm=mubiao-wendu_1; if(pwm>0) P35=1;P31=1; P34=0; /实际温度高于目标温度,红色指示灯发光,加热器加热 else P35=0;P31=0;P34=1; /实际温度低于目标温度,指示灯不发光,不加热void delay_1(uint z)uint x,y;for(x=z;x>0;x-)for(y=11
24、0;y>0;y-);3.3 程序调试在整个系统调试过程中,由于时间仓促没有来得及做实物。最终通过Protues仿真软件进行仿真,得到的结果和预想的结果一致。调试步骤如下:1. 先在Protues仿真软件中搭建硬件电路;2. 根据设计思想和硬件电路在Keil 2中编写程序代码,调试通过并生成.hex文件;3. 双击Protues仿真电路中的单片机,将.hex文件下载到单片机中,然后运行观察结果。3.4 设计结果在该电路中,D1代表加热指示灯,D2代表电源指示灯,D4代表冷却指示灯,D5代表报警指示灯,利用灯泡L1代表加热器,电动机代表冷却装置。整个设计结果分为三个部分,分别是实际温度高于设
25、定的目标温度、实际温度低于目标温度、目标温度高于或低于设定的温度范围。1. 当水的实际温度低于目标温度时,指示灯D1亮,加热器开始加热,同时将单片机P3.4口置0,使三极管断开,关闭D4及冷却装置。仿真结果如图3-2所示。 图3-2 实际温度高于目标温度时的工作状态2. 当水的实际温度高于目标温度时,指示灯D1不亮,加热器停止加热,同时将单片机P3.4口置1,使三极管导通,点亮D4指示灯,电动机开始旋转,对水进行降温处理。仿真结果如图3-3所示:图3-3实际温度低于目标温度时的工作状态3. 当设定的目标温度超过或者低于设定的温度范围时(2040),启动报警装置,同时报警指示灯D5发光,并且启动制冷装置。仿真结果如图3-4所示:图3-4 目标温度低于设定的温度范围时的工作状态3.5 结果分析能够从温度传感器中获得温度数据,并且能通过按键纠正目标温度,程序能正常执行,电阻丝也能按目标温度的高低调整自身的工作状态。效果还行,不过其一精度不
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国古代文化与现代企业管理试题及答案
- 奥运知识科普课件下载网
- 家乡班会课课件
- 主管护师考试技巧与攻略试题及答案
- 2025执业医师考试常见试题及答案
- 范文感恩老师演讲稿
- 行政管理专业的语文能力考察试题及答案
- 行政管理及其发展方向试题及答案
- 行政管理经济法考点细分试题及答案
- 护理文化建设试题及答案分析
- 汛期建筑施工安全课件
- 2025年北京市西城区九年级初三一模英语试卷(含答案)
- 道路维护保养项目投标方案(技术方案)
- 广东省深圳市2025年高三年级第二次调研考试数学试题(含答案)
- 山东省山东名校考试联盟2025年高三4月高考模拟考试物理试卷+答案
- 厨师技能测试题及答案
- 校园景观园林绿化植物配置设计
- 2024船用电气电子产品型式认可试验指南
- 【9物二模】深圳市2025年4月份九年级中考第二次模拟测试物理试卷(含答案)
- 2024年度云南省二级造价工程师之安装工程建设工程计量与计价实务题库检测试卷A卷附答案
- 万科施工组织设计
评论
0/150
提交评论