STC89C52的室内火气安全检测装置设计.docx

上传人:b****6 文档编号:9160232 上传时间:2023-02-03 格式:DOCX 页数:31 大小:250KB
下载 相关 举报
STC89C52的室内火气安全检测装置设计.docx_第1页
第1页 / 共31页
STC89C52的室内火气安全检测装置设计.docx_第2页
第2页 / 共31页
STC89C52的室内火气安全检测装置设计.docx_第3页
第3页 / 共31页
STC89C52的室内火气安全检测装置设计.docx_第4页
第4页 / 共31页
STC89C52的室内火气安全检测装置设计.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

STC89C52的室内火气安全检测装置设计.docx

《STC89C52的室内火气安全检测装置设计.docx》由会员分享,可在线阅读,更多相关《STC89C52的室内火气安全检测装置设计.docx(31页珍藏版)》请在冰豆网上搜索。

STC89C52的室内火气安全检测装置设计.docx

STC89C52的室内火气安全检测装置设计

STC89C52的室内火、气安全检测装置设计

课程设计总结报告

课程名称电子技术课程设计

设计题目STC89C52的室内火、气安全检测装置设计

专业电子科学与技术

班级

姓名

学号

指导教师

报告成绩

二〇一二年四月八日

《系统设计与实践》课程设计任务书

一、课题名称

《基于STC89C52的室内火、气安全检测装置》

二、设计任务

1.采用STC89C52单片机和DS18B20和烟雾、气体传感器MQ-2等设计室内火灾、有毒气体泄露等多功能检测装置;

2.能检测火灾事故,并报警。

3.能检测有毒气体泄露事故,并报警

4.能实时显示室内温度值,并通过键盘设置温度报警上下限值。

三、设计报告撰写规范

系统设计总结报告正文,主要含以下内容(硬件、软件各部分内容也可组合起来进行撰写说明):

1.系统总体设计方案(画出系统原理框图、方案的论证与比较等内容);

2.硬件系统分析与设计(各模块或单元电路的设计、工作原理阐述、参数计算、元器件选择、完整的系统电路图、系统所需的元器件清单。

等内容);

3.软件系统分析与设计(各功能模块的程序设计流程图与说明、软件系统设计、软件抗干扰措施、完整的程序等内容);

4.系统仿真调试与参数测量(使用仪器仪表、故障排除、电路硬件和软件调试的方法和技巧、指标测试的参数和波形、测量误差分析);

5.总结(本课题核心内容及使用价值、电路设计、软件设计的特点和选择方案的优缺点、改进方向和意见等);

6.按统一格式列出主要参考文献。

第1节引言

本应用系统设计的目的是通过在课堂上学习的知识,以及查阅资料,培养一种自学的能力。

并且引导一种创新的思维,把学到的知识应用到日常生活当中。

在设计的过程中,不断的学习,思考和同学间的相互讨论,运用科学的分析问题的方法解决遇到的困难,掌握单片机系统一般的开发流程,学会对常见问题的处理方法,积累设计系统的经验,充分发挥教学与实践的结合。

全能提高个人系统开发的综合能力,开拓了思维,为今后能在相应工作岗位上的工作打下了坚实的基础。

第2节STC89C52的室内火、气安全检测装置的硬件结构设计

2.1DS18B20工作原理

DS18B20采用3脚PR-35封装或8脚SOIC封装,其内部结构框图如图3所示。

图3DS18B20内部结构图

64位ROM的位结构如图4所示。

开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。

非易失性温度报警器触发器TH和TL,可通过软件写入户报警上下限。

图464位ROM结构图

DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可擦除的EERAM。

高速暂存RAM的结构为8字节的存储器,结构如图5所示。

头2个字节包含测得的温度信息,第3和第4字节是TH和TL的拷贝,是易失的,每次上电复位时被刷新。

第5个字节为配置寄存器,它的内容用于确定温度值的数字转换分辨率。

DS18B20工作时按此寄存器中的分辨率将温度转换为相应精度的数值。

该字节各位的定义热图6所示。

低5位一直为1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。

在DS18B20出厂时该位被设置为0,用户不要改动,R1和R0决定温度转换得精度位数,即用来设置分辨率,定义方法见表1。

图5高速暂存RAM结构图

图6配置寄存器

表1DS18B20分辨率的定义规定

由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要,系统对DS18B20的各种操作必须按协议进行.操作协议为:

初始化DS18B20→发ROM功能命令→发存储器操作命令→处理数据.

图8DS18B20测温原理图

DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源.另一种是寄生电源供电方式,如图9所示.单片机端口接单线总线,为为保证有效DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉.

图9DS18B20采用寄生电源的电路图

当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us.采用寄生电源供电方式时Vdd和GND端均接地.由于单线制只有一根线,因此发送接口必须是三态的

2.3STC89C2单片机及其引脚说明

89C51是一种高性能低功耗的采用CMOS工艺制造的8位微控制器,它提供下列标准特征:

4K字节的程序存储器,128字节的RAM,32条I/O线,2个16位定时器/计数器,一个5中断源两个优先级的中断结构,一个双工的串行口,片上震荡器和时钟电路。

STC89C52管脚功能图

引脚说明:

·VCC:

电源电压

·GND:

·P0口:

P0口是一组8位漏极开路型双向I/O口,作为输出口用时,每个引脚能驱动8个TTL逻辑门电路。

当对0端口写入1时,可以作为高阻抗输入端使用。

当P0口访问外部程序存储器或数据存储器时,它还可设定成地址数据总线复用的形式。

在这种模式下,P0口具有内部上拉电阻。

在EPROM编程时,P0口接收指令字节,同时输出指令字节在程序校验时。

程序校验时需要外接上拉电阻。

·P1口:

P1口是一带有内部上拉电阻的8位双向I/O口。

P1口的输出缓冲能接受或输出4个TTL逻辑门电路。

当对P1口写1时,它们被内部的上拉电阻拉升为高电平,此时可以作为输入端使用。

当作为输入端使用时,P1口因为内部存在上拉电阻,所以当外部被拉低时会输出一个低电流(IIL)。

·P2口:

P2是一带有内部上拉电阻的8位双向的I/O端口。

P2口的输出缓冲能驱动4个TTL逻辑门电路。

当向P2口写1时,通过内部上拉电阻把端口拉到高电平,此时可以用作输入口。

作为输入口,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出电流(IIL)。

P2口在访问外部程序存储器或16位地址的外部数据存储器(例如MOVX@DPTR)时,P2口送出高8位地址数据。

在这种情况下,P2口使用强大的内部上拉电阻功能当输出1时。

当利用8位地址线访问外部数据存储器时(例MOVX@R1),P2口输出特殊功能寄存器的内容。

当EPROM编程或校验时,P2口同时接收高8位地址和一些控制信号。

·P3口:

P3是一带有内部上拉电阻的8位双向的I/O端口。

P3口的输出缓冲能驱动4个TTL逻辑门电路。

当向P3口写1时,通过内部上拉电阻把端口拉到高电平,此时可以用作输入口。

作为输入口,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出电流(IIL)。

P3口同时具有AT89C51的多种特殊功能,具体如下表1所示:

端口引脚

第二功能

P3.0

RXD(串行输入口)

P3.1

TXD(串行输出口)

P3.2

(外部中断0)

P3.3

(外部中断1)

P3.4

T0(定时器0)

P3.5

T1(定时器1)

P3.6

(外部数据存储器写选通)

P3.7

(外部数据存储器都选通)

表1P3口的第二功能

·RST:

复位输入。

当振荡器工作时,RST引脚出现两个机器周期的高电平将使单片机复位。

·ALE/

:

当访问外部存储器时,地址锁存允许是一输出脉冲,用以锁存地址的低8位字节。

当在Flash编程时还可以作为编程脉冲输出(

)。

一般情况下,ALE是以晶振频率的1/6输出,可以用作外部时钟或定时目的。

但也要注意,每当访问外部数据存储器时将跳过一个ALE脉冲。

·

程序存储允许时外部程序存储器的读选通信号。

当AT89C52执行外部程序存储器的指令时,每个机器周期

两次有效,除了当访问外部数据存储器时,

将跳过两个信号。

·

/VPP:

外部访问允许。

为了使单片机能够有效的传送外部数据存储器从0000H到FFFH单元的指令,

必须同GND相连接。

需要主要的是,如果加密位1被编程,复位时EA端会自动内部锁存。

当执行内部编程指令时,

应该接到VCC端。

·XTAL1:

振荡器反相放大器以及内部时钟电路的输入端。

·XTAL2:

振荡器反相放大器的输出端。

在本次设计中,采用89C51作为CPU处理器,充分利用其硬件资源,结合D触发器CD4013,分频器CD4060,模拟转换开关CD4051,计数器74LS90等数字处理芯片,主要控制两大硬件模块,量程切换以及显示模块。

下面还将详细说明。

2.4信号调理及放大整形模块,LM358芯片LM358内部包括有两个独立的、高增益、内部频率补偿的双运算放大器,适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式,在推荐的工作条件下,电源电流与电源电压无关。

它的使用范围包括传感放大器、直流增益模块和其他所有可用单电源供电的使用运算放大器的场合。

特性:

内部频率补偿

直流电压增益高(约100dB)

单位增益频带宽(约1MHz)

电源电压范围宽:

单电源(3—30V);

双电源(±1.5一±15V)

低功耗电流,适合于电池供电,低输入偏流

低输入失调电压和失调电流

共模输入电压范围宽,包括接地

差模输入电压范围宽,等于电源电压范围

输出电压摆幅大(0至Vcc-1.5V)

第3节软件设计

统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等等.

1.主程序

主程序的主要功能是负责温度的实时显示,读出并处理DS18B20的测量温度值,温度测量1s进行一次,其程序流程图见图10.

2.读出温度子程序

读出温度子程序的主要功能是读出RAM中的9个字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写.其程序流程图如图11所示.

图10DS18B20温度计主程序流程图

图11读出温度子程序流程图

3.温度转换命令子程序

温度转换命令子程序主要是发温度转换开始命令,当采用12分辨率时转换时间为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成.温度转换命令子程序流程图如图12所示.

图12温度转换命令子程序流程图

4.计算温度子程序

计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判断,其程序流程图如图13所示.

图13计算温度子程序流程图

5.显示数据刷新子程序

显示数据刷新子程序主要是对显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位.程序流程图如图14所示.

图14显示数据刷新子程序流程图

结束语

通过这两周的课程设计,我运用相关知识,自己从头至尾完完全全的制作了一块板子,并进行调试。

对“纸上学来终觉浅,绝知此事要躬行”这句话的含义也了解的更加透彻了。

虽然,讲解枯燥乏味;虽然,焊接烫伤了手;虽然……但还是很开心(也有放假两周的喜悦)。

最后做完了,验收时效果不是很好,心里还是有点淡淡的小伤感。

呵呵,算了不想了,下次努力吧(如果有下次的话)。

事实上,只有通过自己亲力亲为的去解决,才能体会到成功是的那份收获时的喜悦,从这次课程设计中,我深切的体会自己动手创造出来的劳动成果才是可贵的,不仅如此,在参与动手的过程中会有很多意想不到的收获。

参考文献

[1]李光飞,楼苗然主编.51系列单片机.北京:

北京航空航天大学出版社,2003

[2] 孙江宏、李良玉等.《Protel99电路设计与应用》.机械工业出版社.2003.2

[3]康华光.邹寿彬.电子技术基础(数字部分)[M].高等教育出版社.1998.7

[4]张毅刚.单片机原理及应用[M].高等教育出版社.2003

[5]陈步月.基于单片机的测试技术原理与应用[M].机械工业出版社.2007.3

[6]李忠国.陈刚.单片机应用技能实训[M].辽宁科技出版社.2006.11

[7]冯育长.马金强.单片机系统设计于实例分析[M].2007.5

附录一:

#include

#include//包含_nop_()函数定义的头文件

#defineucharunsignedchar

#defineuintunsignedint

#defineledP0

#definekeyP2

uinty1,y2,y3,y4;

unsignedcharTL;//储存暂存器的温度低位

unsignedcharTH;//储存暂存器的温度高位

uinttemph,templ;

uintTN;//储存温度的整数部分

uintTD;//储存温度的小数部分

floatTD1;//以小数形式储存温度的小数部分

uinttemp;

sbitw1=P1^7;

sbitw2=P1^6;

sbitw3=P1^5;

sbitw4=P1^4;

sbitMQ=P1^3;

sbitfmq=P3^5;

sbitdeng=P3^6;

uchars=0;//模式切换标志位

ucharcodetable2[]={0xc0,0xcf,0xa4,0x86,0x8b,0x92,0x90,0xc7,0x80,0x82,0xff};//没点的反

ucharcodetable4[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x2e,0x20};//0~9的ASCii码

unsignedcharcodetable1[]=

{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//没点的正

unsignedcharcodetable3[]=

{0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0xff};//有点的正

voiddelay(uintz)

{

uintx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

voiddelay_2us()//延时2us

{

ucharp;

for(p=0;p<1;p++)

_nop_();

}

/*****************************************************

函数功能:

延时若干纳秒

入口参数:

n

***************************************************/

voiddelay_nus(ucharn)//延时2nus

{

ucharp;

for(p=0;p

delay_2us();

}

voiddelay1ms()

{

uchari,j;

for(i=0;i<2;i++)

for(j=0;j<30;j++);

}

/*****************************************************

函数功能:

延时若干微秒

入口参数:

n

***************************************************/

voiddelayms(ucharn)

{

uchari;

for(i=0;i

delay1ms();

}

/*****************************************************

函数功能:

位置寻找函数

***************************************************/

findout(uintr,uinty)

{

uinti;

for(i=0;i<11;i++)

{

if(table4[i]==r)

break;

}

y=i;

}

/************************************************************************

以下是DS18B20的操作程序

************************************************************************/

sbitDQ=P1^0;

uchartime;//设置全局变量,专门用于严格延时

/*****************************************************

函数功能:

将DS18B20传感器初始化,读取应答信号

出口参数:

flag

***************************************************/

/*****************************************************

函数功能:

将DS18B20传感器初始化,读取应答信号

出口参数:

flag

***************************************************/

bitInit_DS18B20(void)

{

bitflag;//储存DS18B20是否存在的标志,flag=0,表示存在;flag=1,表示不存在

DQ=1;//先将数据线拉高

for(time=0;time<2;time++)//略微延时约6微秒

;

DQ=0;//再将数据线从高拉低,要求保持480~960us

for(time=0;time<200;time++)//略微延时约600微秒

;//以向DS18B20发出一持续480~960us的低电平复位脉冲

DQ=1;//释放数据线(将数据线拉高)

for(time=0;time<10;time++)

;//延时约30us(释放总线后需等待15~60us让DS18B20输出存在脉冲)

flag=DQ;//让单片机检测是否输出了存在脉冲(DQ=0表示存在)

for(time=0;time<200;time++)//延时足够长时间,等待存在脉冲输出完毕

;

return(flag);//返回检测成功标志

}

/*****************************************************

函数功能:

从DS18B20读取一个字节数据

出口参数:

dat

***************************************************/

unsignedcharReadOneChar(void)

{

unsignedchari=0;

unsignedchardat;//储存读出的一个字节数据

for(i=0;i<8;i++)

{

DQ=1;//先将数据线拉高

_nop_();//等待一个机器周期

DQ=0;//单片机从DS18B20读书据时,将数据线从高拉低即启动读时序

dat>>=1;

_nop_();//等待一个机器周期

DQ=1;//将数据线"人为"拉高,为单片机检测DS18B20的输出电平作准备

for(time=0;time<2;time++)

;//延时约6us,使主机在15us内采样

if(DQ==1)

dat|=0x80;//如果读到的数据是1,则将1存入dat

else

dat|=0x00;//如果读到的数据是0,则将0存入dat

//将单片机检测到的电平信号DQ存入r[i]

for(time=0;time<8;time++)

;//延时3us,两个读时序之间必须有大于1us的恢复期

}

return(dat);//返回读出的十进制数据

}

/*****************************************************

函数功能:

向DS18B20写入一个字节数据

入口参数:

dat

***************************************************/

WriteOneChar(unsignedchardat)

{

unsignedchari=0;

for(i=0;i<8;i++)

{

DQ=1;//先将数据线拉高

_nop_();//等待一个机器周期

DQ=0;//将数据线从高拉低时即启动写时序

DQ=dat&0x01;//利用与运算取出要写的某位二进制数据,

//并将其送到数据线上等待DS18B20采样

for(time=0;time<10;time++)

;//延时约30us,DS18B20在拉低后的约15~60us期间从数据线上采样

DQ=1;//释放数据线

for(time=0;time<1;time++)

;//延时3us,两个写时序间至少需要1us的恢复期

dat>>=1;//将dat中的各二进制位数据右移1位

}

for(time=0;time<4;time++);//稍作延时,给硬件一点反应时间

}

/*****************************************************

函数功能:

显示温度的整数部分

入口参数:

x

***************************************************/

voiddisplay_temp1(ucharx)

{

uchark,l;//j,k,l分别储存温度的百位、十位和个位

k=x/10%10;//取十位

l=x%10;//取个位

w1=0;

led=table1[k];

delay(4);

w1=1;

led=table3[l];

w2=0;

delay(4);

w2=1;

}

//小数部分

voiddisplay_temP3(ucharx)

{

w3=0;

led=table1[x];

delay(4);

w3=1;

w4=0;

led=0xC6;

delay(4);

w4=1;

}

/*****************************************************

函数功能:

做好读温度的准备

***************************************************/

voidReadyReadTemp(void)

{

Init_DS18B20();//将DS18B20初始化

WriteOneChar(0xCC);//跳过读序号列号的操作

WriteOneChar(0x44);//启动温度转换

for(time=0;time<100;time++);//温度转换需要一点时间

Init_DS18B20();//将DS18B20初始化

WriteOneChar(0xCC);//跳过读序号列号的操作

WriteOneCh

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

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