温度控制器设计报告_第1页
温度控制器设计报告_第2页
温度控制器设计报告_第3页
温度控制器设计报告_第4页
温度控制器设计报告_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、温度控制器课程设计报告 随着社会的发展、科技的进步以及温度控制器在各个领域的应用,自动化已是现代温度控制系统发展的主流方向。特别是近年来,温度控制器已广泛应用于人们生活的各个方面。温度控制在日常生活及工业领域应用相当广泛,比如温室、水池、发酵缸、电源等场所。以往的温度控制都是由人工完成,而且大家都不重视温度控制,因而常常发生意外。所以为了防止意外发生,许多场所都需要对温度实行监控。本文利用AT89C51单片机、ADC0909模数转换器等芯片设计一个数码管显示的热水器控制器,通过调节开关来上下调节温度。 现在介绍一下关于这个热水器控制器的具体情况,它是用6只共阴极的八段数码管来分别显示工作状态、

2、设定温度和实际温度温度。用3只按钮来分别作为开机/关机键、温度设定上升键和下降键。用1只LED发光二极管来表示加热器开关量控制输出,发光二极管要求用三极管放大驱动。温度设定范围099,在装置处于开机状态情况下,当实际温度高于等于设定温度时,加热器控制输出“关”;当实际温度低于设定温度5时,加热器控制输出“开”。上电后,自动显示关机状态、设定温度50和实际室内温度,这时用户可以设定温度进行设定,但只有在按下ON键后,控制器正式工作;在运行期间,若对温度状态进行设定,则控制器按新设定开始。若关机后(非断电)重新启动控制器,则自动进入上次关机前的设定状态。温度传感器采用AT502热敏电阻。 基于以上

3、这些情况,通过protues软件做出温度控制器的电路图,(protues软件是由英国Labcenter Electronics公司开发的EDA工具软件,它集电路设计、制版及仿真等多种功能于一身,不仅能够对电工、电子技术学科涉及的电路进行设计与分析,还能够对微处理器进行设计和仿真。)并列出以下材料清单其中,LED数码管是数字量输出,工作方式是动态扫描显示,按钮是数字量输入,工作方式是直接电平输入,加热器是开关量输出,工作方式是电平控制输出,温度传感器是模拟量输入,工作方式是电压输入。 此电路图主要芯片是AT89C51,4k字节 Flash 闪速存储器,128字节内部RAM,32 个I/

4、O 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。将LED和AT89C51通过ULN2003A、RESPACK-8和RESPACK-7链接起来,够成LED显示电路,即这张图。因为要通过3个按钮分别作为开机/关机键、温度设定上升键和下降键,通过这3个按钮来实现对此电路的操控。然后是要对交流电源进行

5、控制输出,通过继电器来实现。最后还有AD采样对于以上一些元件的参数在此提出提示,(1)ADC0808的数字输出端顺序是反的,(2)ADC0808的CLK端输入500kHz的脉冲,(3)加热器用灯代替,并接入220V的交流电源,为了显示加热的闪动效果,将交流电频率改为1Hz,(4)控制继电器的电压改为5V,内阻为240欧姆,(5)单片机的晶振用6MHz,(6)温度采集电路的可调电阻值为200欧姆。接着,介绍一下P0和P1的结构通过以上资料各种综合,我做出了完整的温度控制器电路图,程序如下:#include<reg51.h>#define uint unsigned int#defin

6、e uchar unsigned charsbit Power_out =P10;sbit Key1 =P15;sbit Key2=P16;sbit Key3=P17;sbit Eoc=P33;sbit led1=P20; sbit led2=P21; sbit led3=P22; sbit led4=P23; sbit led5=P24; sbit led6=P25;uint turn;#define ADC0808_ADDR0XBF00#defineifAdEoc(!Eoc)uchar code ad2TempTable=0x63,0x61,0x5d,0x5c,0x5a,0x59,0x58

7、,0x56,0x55,0x54,0x52,0x51,0x4f,0x4e,0x4d,0x4c,0x4b,0x4a,0x49,0x48,0x47,0x46,0x45,0x44,0x43,0x42,0x41,0x41,0x40,0x3f,0x3e,0x3e,0x3d,0x3c,0x3b,0x3a,0x3a,0x39,0x38,0x38,0x37,0x37,0x36,0x35,0x34,0x34,0x33,0x33,0x32,0x32,0x31,0x30,0x30,0x2f,0x2e,0x2e,0x2d,0x2d,0x2c,0x2c,0x2b,0x2b,0x2a,0x2a,0x29,0x29,0x28

8、,0x28,0x27,0x27,0x26,0x26,0x25,0x25,0x24,0x24,0x23,0x23,0x22,0x22,0x21,0x21,0x20,0x20,0x1f,0x1f,0x1e,0x1e,0x17,0x17,0x16,0x16,0x15,0x15,0x15,0x15,0x13,0x13,0x12,0x12,0x12,0x12,0x11,0x11,0x10,0x10,0x0f,0x0f,0x0e,0x0e,0x0d,0x0d,0x0c,0x0c,0x0c,0x0c,0x0b,0x0b,0x0a,0x0a,0x0a,0x09,0x09,0x08,0x08,0x08,0x07

9、,0x07,0x06,0x06,0x05,0x05,0x04,0x04,0x04,0x03,0x03,0x02,0x02,0x01,0x01,0x00,0x00;uchar code Led_seg10 =0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;uchar idata temp_now;uchar idata temp_set;uchar idata time_cnt;bitsample_flag;void delay(uint k)uint x,y;for(x=k;x>0;x-)for(y=125;y>0;y-);voi

10、dGet_temp(void)/ad处理得到温度uchar ad;uchar xdata *ptr;ptr=ADC0808_ADDR;*ptr =0;delay(1);while(!ifAdEoc);delay(1);ad = *ptr;if(ad>=24)ad-=24;else ad = 0;temp_now=ad2TempTablead;void main_Init(void) /开中断 TMOD = 0x01;TR0=1;ET0=1;IT0=1;EX0=1;EA=1;Power_out=0;temp_now=20;temp_set=50;time_cnt=10;sample_fla

11、g=1;void outside0() interrupt 0 EX0=0; /执行外部中断1程序时,屏蔽外部中断1的响应 if(Key1=0) /是否有key1按键按下 delay(10); /有,延迟,消抖 if(Key1=0) /确认是否有key1按键 按下 if(turn=0) /ON/OFF选择 turn=1; /turn为0,按下key1, turn为1表开机 else / turn=0; /turn为1,按下key1, turn为0表关机 if(Key2=0) /是否有key2按键按下 delay(10); /有,延迟,消抖 if(Key2=0) /确认是否有key2按键 按下

12、/开机时 if(temp_set<=99) /settep设定温度小于 等于98时,可以继续加 temp_set+; if(Key3=0) /是否有key3按键按下 delay(10); /有,延时,消抖 if(Key3=0) /确认是否有key3按键 按下 /开机时 if(temp_set>=1) /settep设定温度大于等于 1时,可以继续减 temp_set -; EX0=1; /允许外部中断1中断,继续 等待按键 void display(uchar turn,uchar temp_set,uchar temp_now) /显示子函数 turn表示开关,settep表示

13、uchar setshi,setge,realshi,realge; /setshi,setge对设 定温度的settep的十位和个 setshi=temp_set/10; /settep的十位放在setshi setge=temp_set%10; /settep的个位放在setge realshi=temp_now/10; /realtep的十位放在realshi realge=temp_now%10; /realtep的个位放在 realgeP0=0xff; /清除P0口 led1=1; /选通数码管1 P0= Led_segturn; /P0口送数 delay(1); /点亮,延迟5ms

14、 led1=0; /关闭数码管1 P0=0xff; /清除P0口 led2=1; /选通数码管2 P0= Led_segturn; /P0口送数 delay(1); /点亮,延迟5ms led2=0; /关闭数码管2 P0=0xff; /清除P0口 led3=1; /选通数码管3 P0= Led_segsetshi; /P0口送数 delay(1); /点亮,延迟5ms led3=0; /关闭数码管3 P0=0xff; /清除P0口 led4=1; /选通数码管4 P0= Led_segsetge; /P0口送数 delay(1); /点亮,延迟5ms led4=0; /关闭数码管4 P0=0

15、xff; /清除P0口 led5=1; /选通数码管5 P0= Led_segrealshi; /P0口送数 delay(1); /点亮,延迟5ms led5=0; /关闭数码管5 P0=0xff; /清除P0口 led6=1; /选通数码管6 P0= Led_segrealge; /P0口送数delay(1); /点亮,延迟5ms led6=0; /关闭数码管6 void heat() if(turn=1) /开机时,才能进行加 热 if(temp_set<=temp_now) /当实际温度大于等于 设定温度,停止加热 Power_out=1; /加热关 if(temp_set-4)=

16、temp_now) /当实际温度小于设定 温度5度以下,开始加热 Power_out=1; /加热开 if(temp_set-3)=temp_now) /当实际温度小于设定 温度5度以下,开始加热 Power_out=1; /加热开 if(temp_set-2)=temp_now) /当实际温度小于设定 温度5度以下,开始加热 Power_out=1; /加热开 if(temp_set-1)=temp_now) /当实际温度小于设定 温度5度以下,开始加热 Power_out=1; /加热开 if(temp_set-5)>temp_now) /当实际温度小于设定 温度5度以下,开始加热

17、Power_out=0; /加热开 else if (turn=0) Power_out=1; void timer0 (void)interrupt 1/定时器中断子程序TH0 = (65535-10000)/256;TL0 =(65535-10000)%256;if(time_cnt>0)time_cnt-;else time_cnt=10;sample_flag=1;void main(void)/主函数main_Init();while(1)if(sample_flag=1)sample_flag=0;Get_temp();display(turn,temp_set,temp_now);heat() ;PCON=0x01; 本文介绍了关于温度控制器的电路图和连接方式,此温度控制器可进行上下

温馨提示

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

评论

0/150

提交评论