温度控制电路与设计.docx
《温度控制电路与设计.docx》由会员分享,可在线阅读,更多相关《温度控制电路与设计.docx(14页珍藏版)》请在冰豆网上搜索。
温度控制电路与设计
目录
一.课程设计题目···································2
二.课程设计目的···································2
三.课程设计任务及要求·····························2
四.课程设计思路···································2
五.课程设计报告内容·······························2
1.主要元件和芯片介绍··························2
单片机(STC89C52)······························2
18B20温度传感器·······························3
LCD液晶屏····································6
2.总实验电路图································6
3.实验电路仿真图······························7
4.对应程序·····································7
5.实物图······································12
六.实验心得········································12
1、课程设计题目:
温度控制电路与设计
2、课程设计目的
1、学习运用单片机设计温度监测及控制电路的方法。
进一步掌握单片机控制知识,培养工程设计能力和综合分析问题、解决问题的能力;
2、掌握常用电子电路的一般设计方法,提高电子电路的设计和实验能力;
了解一些中规模集成电路的接线方法,学会电子电路的组装、调试和测量方法;
3、熟悉并学会选用电子元器件,为以后从事生产和科研工作打下一定的基础;
4、熟悉并能基本使用仿真软件对设计电路进行仿真和检测。
三、课程设计任务及要求
1、检测电路采用18B20温度传感器作为测温元件。
2、设计温度检测电路和温度控制电路。
3、具有自动报警系统。
4、安装调试测量实验结果。
5、写出完整的设计及实验调试总结报告。
四、课程设计思路:
1、查阅相关书籍,对设计温度控制电路有个大致了解
2、设计一个的电路
3、计算所需电阻、电容大小,及相关所需器件,拟定电路图
4、使用电子仿真软件multisim2001对电路进行仿真,并进行调试
5、购买相关器件,进行电路的焊接,并调试
五、课程设计报告内容
1、主要元件和芯片介绍
单片机(STC89C52)
STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
具有以下标准功能:
8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口。
另外STC89X52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
最高运作频率35Mhz,6T/12T可选。
图1
18B20温度传感器
DS18B20的主要特征:
全数字温度转换及输出。
先进的单总线数据通信。
最高12位分辨率,精度可达土0.5摄氏度。
12位分辨率时的最大工作周期为750毫秒。
可选择寄生工作方式。
检测温度范围为–55°C~+125°C(–67°F~+257°F)
内置EEPROM,限温报警功能。
64位光刻ROM,内置产品序列号,方便多机挂接。
多样封装形式,适应不同硬件系统。
DS18B20芯片封装结构:
图2
DS18B20引脚功能:
·GND电压地·DQ单数据总线·VDD电源电压·NC空引脚
DS18B20复位及应答关系示意图:
图3
每一次通信之前必须进行复位,复位的时间、等待时间、回应时间应严格按时序编程。
DS18B20读写时间隙:
DS18B20的数据读写是通过时间隙处理位和命令字来确认信息交换的。
写时间隙:
图4
写时间隙分为写“0”和写“1”,时序如图7。
在写数据时间隙的前15uS总线需要是被控制器拉置低电平,而后则将是芯片对总线数据的采样时间,采样时间在15~60uS,采样时间内如果控制
器将总线拉高则表示写“1”,如果控制器将总线拉低则表示写“0”。
每一位的发送都应该有一个至少15uS的低电平起始位,随后的数据“0”或“1”应该在45uS内完成。
整个位的发送时间应该保持在60~120uS,否则不能保证通信的正常。
读时间隙:
图5
读时间隙时控制时的采样时间应该更加的精确才行,读时间隙时也是必须先由主机产生至少1uS的低电平,表示读时间的起始。
随后在总线被释放后的15uS中DS18B20会发送内部数据位,这时控制如果发现总线为高电平表示读出“1”,如果总线为低电平则表示读出数据“0”。
每一位的读取之前都由控制器加一个起始信号。
注意:
如图8所示,必须在读间隙开始的15uS内读取数据位才可以保证通信的正确。
在通信时是以8位“0”或“1”为一个字节,字节的读或写是从高位开始的,即A7到A0.字节的读写顺序也是如图2自上而下的。
LCD液晶屏
表1
2、总实验电路图
图6
图6是在proteus中仿真输出的pdf格式的图片,其中左边是对应的12864LCD液晶屏的连接电路,其需要的元器件为:
RV1为10KΩ的可调电阻,屏幕对应的数据输出端由单片机的P1口来控制,其中屏幕的EN由P3^6控制,RW由P3^5控制,RS由P3^4控制,PSB由P3^3来控制,RST由P3^2控制,其中屏幕的1以及20管脚都接地,2以及19管脚接电源的正极,16管脚为空端,不需要接任何的单片机控制端。
3.实验电路仿真图
图7
图7即为仿真电路图。
4、对应程序
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
#definedelayNOP();{_nop_();_nop_();_nop_();_nop_();};
uchartemper;
sbitD=P2^1;
sbitbeep=P2^5;
#defineLCD_dataP1
sbitLCD_RS=P3^4;
sbitLCD_RW=P3^5;
sbitLCD_EN=P3^6;
sbitLCD_PSB=P3^3;
sbitLCD_RST=P3^2;
voiddelay(intms)
{
while(ms--)
{
uchari;
for(i=0;i<150;i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
bitlcd_busy()
{
bitresult;
LCD_RS=0;
LCD_RW=1;
LCD_EN=1;
delayNOP();
result=(bit)(P1&0x80);
LCD_EN=0;
return(result);
}
voidlcd_wcmd(ucharcmd)
{
while(lcd_busy());
LCD_RS=0;
LCD_RW=0;
LCD_EN=0;
_nop_();
_nop_();
P1=cmd;
delayNOP();
LCD_EN=1;
delayNOP();
LCD_EN=0;
}
voidlcd_wdat(uchardat)
{
while(lcd_busy());
LCD_RS=1;
LCD_RW=0;
LCD_EN=0;
P1=dat;
delayNOP();
LCD_EN=1;
delayNOP();
LCD_EN=0;
}
voidlcd_init()
{
LCD_PSB=1;
LCD_RST=0;
delay(3);
LCD_RST=1;
delay(3);
lcd_wcmd(0x34);
delay(5);
lcd_wcmd(0x30);
delay(5);
lcd_wcmd(0x0C);
delay(5);
lcd_wcmd(0x01);
delay(5);
}
voidclr_screen()
{
lcd_wcmd(0x34);
delay(5);
lcd_wcmd(0x30);
delay(5);
lcd_wcmd(0x01);
delay(5);
}
voiddelay2(uinti)
{
ucharj;
for(i;i>0;i--)
for(j=0;j<2;j++);
}
ucharreset()
{
uchari;
D=0;
delay2(29);
D=1;
delay2(3);
i=D;
delay2(25);
returni;
}
ucharread_bit()
{
uchari;
D=0;
D=1;
for(i=0;i<3;i++);
returnD;
}
voidwrite_bit(uchardat)
{
D=0;
if(dat==1)
D=1;
delay2(5);
D=1;
}
ucharread_byte()
{
uchardat=0;
uchari;
for(i=0;i<8;i++)
{
if(read_bit())
dat|=0x01<
delay2
(1);
}
returndat;
}
voidwrite_byte(uchardat)
{
uchari,j;
for(i=0;i<8;i++)
{
j=((dat>>i)&0x01);
write_bit(j);
delay2
(1);
}
}
intread_temp()
{
uchartempl,temph;
inttemp;
reset();
write_byte(0xcc);
write_byte(0x44);
delay2(10000);
reset();
write_byte(0xcc);
write_byte(0xbe);
templ=read_byte();
temph=read_byte();
temp=templ+temph*256;
returntemp;
}
voidwrite_xy(ucharadd,uchardat)
{
lcd_wcmd(0x80+add);
lcd_wdat(dat);
}
voidmain()
{
delay(100);
lcd_init();
clr_screen();
while
(1)
{
temper=read_temp();
if(temper<0)
{
write_xy(0,'-');
temper=0-temper;
}
elsewrite_xy(0,'+');
write_xy(1,(temper>>4)/100+0x30);
write_xy(2,((temper>>4)%100)/10+0x30);
write_xy(3,(temper>>4)%10+0x30);
if((((temper>>4)%100)/10)*10+((temper>>4)%10)>=10)
{
beep=0;
}
if((((temper>>4)%100)/10)*10+((temper>>4)%10)<10)
{
beep=1;
}
write_xy(4,'.');
write_xy(5,((temper&0x000f)*62.5)/100+0x30);
write_xy(6,'c');
}
}
5、实物图
图8
6、实验心得
在这次课程设计作业的过程中由于在设计方面我们没有足够的经验,理论基础知识掌握的不牢固,在设计中难免会出现这样那样的问题:
如对器件了解的不够娴熟,导致焊接不牢,出现虚焊、假焊和漏焊。
这些都充分暴露了前期我们在焊接收音机的学习过程中,这些专业知识的不足和经验的欠缺。
对于我来说,收获最大的是:
方法和能力,那些分析问题的方法和解决问题的能力。
在整个课程设计的过程中,在经验方面十分缺乏,空有理论知识,没有实践能力,很多东西都与实际脱节。
在焊接的过程中电路图一定要看懂,图中的元件正负极一定要先了解清楚,走线要注意不能短路。
认真检查。
不过总体来说,我觉得像课程设计这种类型的作业对我们的帮助很大,它需要我们将学过的相关知识系统地联系起来,提出问题,分析问题,解决问题,并从中暴露出自身的不足,以待改进!
本次的课程设计,培养了我解决工程实际问题的能力。
在设计的过程中还培养出我们的合作精神,两人一组共同协作,解决了许多个人无法解决的问题。
但是理论知识有限,焊接水平掌握的不够熟练,有很多不足之处,在老师的指导和帮助下,我们认真的回顾基础理论知识,认真的检查分析,最终在失败中寻得成功,在成功中体会成长。
相信我们会在今后的学习实践中更加努力。