课程设计数字电路课程设计单片机温度采集与控制.doc
-
资源ID:4150473
资源大小:1.03MB
全文页数:16页
- 资源格式: DOC
下载积分:8金币
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
课程设计数字电路课程设计单片机温度采集与控制.doc
教育信息与技术学院课 程 设 计 09 级 信息工程 专业题 目单片机温度采集与控制课程名称 数字电路课程设计姓 名学 号指导教师日 期2011.12.30一、设计任务及要求:设计任务:设计单片机温度采集与控制仿真电路。要求: 1.以51系列单片机为核心,设计温度采集与控制系统。2.温度传感器自选(推荐DS1820)。3.用数码管或LCD液晶屏显示所测温度。4.要求能测气温范围(-1050)。5.至少实现能测量和显示温度。6.能设置一个确定的温度,通过控制算法快速地控制加热器或制冷器达到所设温度。指导教师签名: 2011年11月10日 二、指导教师评语:指导教师签名: 2011 年11月 日 三、成绩 验收盖章 2011年11月 日 信息工程专业单片机温度采集与控制1 设计目的41.1熟悉集成电路的引脚安排。41.2掌握各芯片的逻辑功能及使用方法。41.3了解每个模块的工作原理。41.4了解单片机温度采集与控制的组成及工作原理。41.5熟悉单片机温度采集与控制的设计与制作。42 设计思路42.1设计所需要的几个模块:单片机控制模块、显示模块、加热或制冷模块、报警模块、复位模块。42.2设计温度上限和下限电路。42.3设计报警电路。42.4设计加热或制冷电路。42.5设计运行程序43 设计过程43.1方案论证43.2电路设计54系统调试与结果124.1组装调试单片机温度采集与控制电路。124.2设置温度的上限为50下限为-10。124.3当温度低于-10调试结果如图a,可见报警电路的灯亮加热装置开始工作124.4当温度位于-10和50之间调试结果如图,无灯亮124.5当温度高于50调试结果如图c,可见报警电路的灯亮制冷装置开始工作135主要仪器与设备136设计体会与建议146.1设计体会146.2对设计的建议14参考文献141 制系统设计J.湖北汽车工业学院学报142 电子设计工程143 金唯香等编. 电子测试技术. 长沙:湖南大学出版社,2004年144谈宏华,赖旭员,陈家林。基于AT89C51的气动标记控制系统设计145 阎石. 数字电子技术基础. 北京:高等教育出版社,2001年146.3实物仿真图14 单片机温度采集与控制1 设计目的1.1熟悉集成电路的引脚安排。1.2掌握各芯片的逻辑功能及使用方法。1.3了解每个模块的工作原理。1.4了解单片机温度采集与控制的组成及工作原理。1.5熟悉单片机温度采集与控制的设计与制作。2 设计思路2.1设计所需要的几个模块:单片机控制模块、显示模块、加热或制冷模块、报警模块、复位模块。2.2设计温度上限和下限电路。2.3设计报警电路。 2.4设计加热或制冷电路。2.5设计运行程序3 设计过程 3.1方案论证单片机温度采集与控制总体方框图如图1所示。AT89C51单片机控制1602显示DS18B20温度采集与转换按键复位电 路单片机时钟电路报警电路加热制冷电路单片机温度采集与控制框图其工作原理为:接通电源后,AT89c51是整个系统的控制核心,其内置FlashROM用于存放用户程序,DS18B20所感测的温度数字信号和用户目标温度作为输入信号,经控制程序处理后发出相应的控制信号,若测试温度超过程序温度设置上限或者低于温度设置下限,报警器发出提示,从而加热制冷电路相应的调节,达到程序设置的温度范围。3.2电路设计单片温度采集与控制protues仿真电路如图2所示。图2 单片机温度采集与控制单片温度采集与控制原理图:单片温度采集与控制PCB图:单片温度采集与控制PCB覆铜图:该电路完成两个功能:一是温度传感器采集并在1602上显示温度,设置温度的上限或者低于下限;二是若温度超过上限或者低于下限则利用加热制冷装置实现温度的控制。程序流程图:开始系统初始DS18B20读取温度1602温度显示温度是否超过上下线报警进行温度控制结束Y正常显示N程序流程图用Keil uVision2编写.c程序,程序如下:#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit RS=P12;sbit RW=P13;sbit E=P14;sbit d1=P10;/模拟加热/sbit d2=P11;/模拟制冷/sbit BJ=P15;/报警/sbit DQ=P37;unsigned char code str1="temperature: "unsigned char code str2=" "uchar data disdata5;int num;uint tvalue;uchar tflag;/温度正负标志/*lcd1602程序*/void delay1ms(unsigned int ms)/延时1毫秒(不够精确的)unsigned int i,j; for(i=0;i<ms;i+) for(j=0;j<100;j+);void wr_com(unsigned char com)/1602写指令/ delay1ms(1); RS=0; RW=0; E=0; P2=com; delay1ms(1); E=1; delay1ms(1); E=0;void wr_dat(unsigned char dat)/1602写数据/ delay1ms(1); RS=1; RW=0; E=0; P2=dat; delay1ms(1); E=1; delay1ms(1); E=0;void lcd_init()/1602初始化设置/delay1ms(15);wr_com(0x38);delay1ms(5); wr_com(0x08);delay1ms(5); wr_com(0x01);delay1ms(5); wr_com(0x06);delay1ms(5); wr_com(0x0c);delay1ms(5);void display(unsigned char *p)/显示/while(*p!='0')wr_dat(*p);p+;delay1ms(1);void init_play()/初始化显示 lcd_init(); wr_com(0x80);display(str1);wr_com(0xc0);display(str2); /*ds1820*/void delay_18B20(unsigned int i)/延时1微秒 while(i-);void ds1820rst()/*ds1820复位*/ unsigned char x=0;DQ = 1; /DQ复位delay_18B20(4); /延时DQ = 0; /DQ拉低delay_18B20(100); /精确延时大于480usDQ = 1; /拉高delay_18B20(40); uchar ds1820rd()/*读数据*/ unsigned char i=0;unsigned char dat = 0;for (i=8;i>0;i-) DQ = 0; /给脉冲信号 dat>>=1; DQ = 1; /给脉冲信号 if(DQ) dat|=0x80; delay_18B20(10); return(dat);void ds1820wr(uchar wdata)/*写数据*/unsigned char i=0; for (i=8; i>0; i-) DQ = 0; DQ = wdata&0x01; delay_18B20(10); DQ = 1; wdata>>=1; read_temp()/*读取温度值并转换*/uchar a,b;uint tvalue;/温度值ds1820rst(); ds1820wr(0xcc);/*跳过读序列号*/ds1820wr(0x44);/*启动温度转换*/ds1820rst(); ds1820wr(0xcc);/*跳过读序列号*/ ds1820wr(0xbe);/*读取温度*/ a=ds1820rd();b=ds1820rd();tvalue=b;tvalue<<=8;tvalue=tvalue|a; if(tvalue<0x0fff) tflag=0; else tvalue=tvalue+1;tflag=1; tvalue=tvalue*(0.625);/温度值扩大10倍,精确到1位小数return(tvalue);/*/void baojing() /报警 int num1;/ num=read_temp(); num1=num/10; if(num1>50) d1=1; d2=0; BJ=0; else if(num1<-10) d1=0; d2=1; BJ=0; else d1=1; d2=1; BJ=1; void ds1820disp()/温度值显示 uchar flagdat; num=read_temp(); disdata0=num/1000+0x30;/百位数 disdata1=num%1000/100+0x30;/十位数 disdata2=num%100/10+0x30;/个位数 disdata3=num%10+0x30;/小数位 if(tflag=0) flagdat=0x20;/正温度不显示符号 else flagdat=0x2d;/负温度显示负号:- num=-num; if(disdata0=0x30) disdata0=0x20;/如果百位为0,不显示 if(disdata1=0x30) disdata1=0x20;/如果百位为0,十位为0也不显示 wr_com(0xc0); wr_dat(flagdat);/显示符号位 wr_com(0xc1); wr_dat(disdata0);/显示百位 wr_com(0xc2); wr_dat(disdata1);/显示十位 wr_com(0xc3); wr_dat(disdata2);/显示个位 wr_com(0xc4); wr_dat(0x2e);/显示小数点 wr_com(0xc5); wr_dat(disdata3);/显示小数位 /*主程序*/void main() init_play();/初始化显示 d1=1; d2=1; BJ=1; while(1) /read_temp();/读取温度/ ds1820disp();/显示baojing();工作过程:本实验是通过数字温度传感器DS18B20采集测量周围环境温度,测量后的温度经51单片机处理,再在LM016上显示当前 DS18B20所测量的温度。实验设置的温度范围为-1050,实验中设计了两个加热和制冷装置和一个报警电路。若温度若低于-10下限,则加热装置工作,使温度保持在给定的范围内,不致损坏仪器件,同时报警电路报警给与人提醒。若温度高于50上限,则制冷装置工作,使温度保持在给定的范围内,不致损坏仪器件,同时报警电路给与人提醒。若温度在范围内,则正常工作。若运行程序中出现了问题,则可通过按键复位电路,使电路恢复正常。4系统调试与结果4.1组装调试单片机温度采集与控制电路。4.2设置温度的上限为50下限为-10。4.3当温度低于-10调试结果如图a,可见报警电路的灯亮加热装置开始工作4.4当温度位于-10和50之间调试结果如图,无灯亮4.5当温度高于50调试结果如图c,可见报警电路的灯亮制冷装置开始工作5主要仪器与设备数字电路实验箱或Proteus软件集成电路 AT89C511片,DS18B201片,LM016L1片电 阻 2502只,1K2只,4.7kl只,0.25kl只,8.2kl只。电 容 30pF2只,22 uF1只。三极管 3DG121只。其 它 LED-RED1只,LED-BLUE1只,LED-GREEN1只,BUZZER1只,SWITCH1只。6设计体会与建议 6.1设计体会通过这次对单片机温度采集与控制的设计与制作,让我了解了设计电路的程序,也让我了解了关于温度采集与控制的基本原理与设计理念,要设计一个电路总要先用仿真仿真成功之后才实际接线的。但是最后的仿真因为程序的不完整出现与理想中不完全相同的现象,经过老师的指导最后得以完成。在仿真中无法成功的电路接法,在实际中因为芯片本身的特性而能够成功。此外,本实验也可通过Proteus、Keil uVison2软件实现。通过这次学习,让我对c51系列的单片机、温度传感器都有了大概的了解,所以说,坐而言不如立而行,对于这些电路还是应该自己动手实际操作才会有深刻理解。6.2对设计的建议我希望老师在我们动手制作之前应先告诉我们一些关于所做电路的资料、原理,以及如何检测电路的方法,还有关于检测芯片的方法。这样会有助于我们进一步的进入状态,完成设计。参考文献1 制系统设计J.湖北汽车工业学院学报2 电子设计工程 3 金唯香等编. 电子测试技术. 长沙:湖南大学出版社,2004年4谈宏华,赖旭员,陈家林。基于AT89C51的气动标记控制系统设计5 阎石. 数字电子技术基础. 北京:高等教育出版社,2001年6.3实物仿真图正常的温度情况下:超过51情况下如图所示报警灯亮:温度太低如法实现,以下为正常温度情况: