单片机4.docx

上传人:b****8 文档编号:27627171 上传时间:2023-07-03 格式:DOCX 页数:18 大小:160.27KB
下载 相关 举报
单片机4.docx_第1页
第1页 / 共18页
单片机4.docx_第2页
第2页 / 共18页
单片机4.docx_第3页
第3页 / 共18页
单片机4.docx_第4页
第4页 / 共18页
单片机4.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

单片机4.docx

《单片机4.docx》由会员分享,可在线阅读,更多相关《单片机4.docx(18页珍藏版)》请在冰豆网上搜索。

单片机4.docx

单片机4

第一章设计背景

目前温度计的发展很快,从原始的玻璃管温度计发展到了现在的热电阻温度计、热电偶温度计、数字温度计、电子温度计等等。

电子智能时代下的产物为人类创造一个更加便捷舒适的生活环境。

本数字温度计设计中,当将单片机用作测控系统时,系统总要有被测信号懂得输入通道,由计算机拾取必要的输入信息。

对于测量系统而言,如何准确获得被测信号是其核心任务;而对测控系统来讲,对被控对象状态的测试和对控制条件的监察也是不可缺少的环节。

设计中,传感器是实现测量与控制的首要环节,是测控系统的关键部件,如果没有传感器对原始被测信号进行准确可靠的捕捉和转换,一切准确的测量和控制都将无法实现。

工业生产过程的自动化测量和控制,几乎主要依靠各种传感器来检测和控制生产过程中的各种参量,使设备和系统正常运行在最佳状态,从而保证生产的高效率和高质量。

第二章设计方案

2.1数字温度计设计方案

方案一:

采用热电阻温度传感器。

热电阻是利用导体的电阻随温度变化的特性制成的测温元件。

现应用较多的有铂、铜、镍等热电阻。

其主要的特点为精度高、测量范围大、便于远距离测量。

铂的物理、化学性能极稳定,耐氧化能力强,易提纯,复制性好,工业性好,电阻率较高,因此,铂电阻用于工业检测中高精密测温和温度标准。

缺点是价格贵,温度系数小,受到磁场影响大,在还原介质中易被玷污变脆。

按IEC标准测温范围-200~650℃,XX电阻比W(100)=1.3850时,R0为100Ω和10Ω,其允许的测量误差A级为±(0.15℃+0.002|t|),B级为±(0.3℃+0.005|t|)。

铜电阻的温度系数比铂电阻大,价格低,也易于提纯和加工;但其电阻率小,在腐蚀性介质中使用稳定性差。

在工业中用于-50~180℃测温。

方案二:

采用DS18B20,全数字温度转换及输出;先进的单总线数据通信;最高12位分辨率,精度可达土0.5摄氏度;12位分辨率时的最大工作周期为750毫秒;可选择寄生工作方式;检测温度范围为55°C—+125°C(–67°F—+257°F)内置EEPROM,限温报警功能;64位光刻ROM综合比较方案一与方案二,方案二更为适合于本设计系统对于温度传感器的选择。

2.2系统整体设计方案

本系统主要有:

单片机主控制器电路(包括复位电路和时钟电路)、测温电路、显示电路和电源电路四部分组成。

整体框图如下:

图2.1系统框图

第三章方案实施

3.1硬件电路的设计

3.1.1单片机主控制器电路设计

本系统采用AT89C52单片机作为主控制器,AT89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。

使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。

片上Flash允许程序存储器在系统可编程,亦适于常规编程器。

在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

AT89S52具有以下标准功能:

4k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。

另外,AT89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。

空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。

掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

这部分主要由复位电路和时钟电路组成,具体电路图如下所示:

图3.1单片机控制器电路

3.1.2温度检测电路设计

图3.2DS18B20电路图

DS18B20的主要特征:

全数字温度转换及输出;先进的单总线数据通信;最高12位分辨率,精度可达土0.5摄氏度;12位分辨率时的最大工作周期为750毫秒;可选择寄生工作方式;检测温度范围为55°C—+125°C(–67°F—+257°F)内置EEPROM,限温报警功能;64位光刻ROM,内置产品序列号,方便多机挂接;多样封装形式,适应不同硬件系统。

DS18B20引脚功能如下表所示:

引脚号

名称

功能

1

GND

2

DQ

双向数据线

3

VDD

高电平

表3.1DS18B20引脚功能表

DS18B20工作原理及应用:

DS18B20的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。

其一个工作周期可分为两个部分,即温度检测和数据处理。

18B20共有三种形态的存储器资源,它们分别是:

ROM只读存储器,用于存放DS18B20ID编码,其前8位是单线系列编码(DS18B20的编码是19H),后面48位是芯片唯一的序列号,最后8位是以上56的位的CRC码(冗余校验)。

数据在出产时设置不由用户更改。

DS18B20共64位ROM。

RAM数据暂存器,用于内部计算和数据存取,数据在掉电后丢失,DS18B20共9个字节RAM,每个字节为8位。

第1、2个字节是温度转换后的数据值信息,第3、4个字节是用户EEPROM(常用于温度报警值储存)的镜像。

在上电复位时其值将被刷新。

第5个字节则是用户第3个EEPROM的镜像。

第6、7、8个字节为计数寄存器,是为了让用户得到更高的温度分辨率而设计的,同样也是内部温度转换、计算的暂存单元。

第9个字节为前8个字节的CRC码。

EEPROM非易失性记忆体,用于存放长期需要保存的数据,上下限温度报警值和校验数据,DS18B20共3位EEPROM,并在RAM都存在镜像,以方便用户操作。

RAM及EEPROM结构图:

图3.3DS18B20RAM及EEPROM结构图

3.1.3显示电路设计

本系统采用串行显示,串行口工作在方式0时,可通过外接移位寄存器实现串并行转换。

在这种方式下,数据为8位,只能从RXD端输入输出,TXD端总是输出移位同步时钟信号,其波特率固定为晶振频率1/12。

由软件置位串行控制寄存器(SCON)的REN后才能启动串行接收,在CPU将数据写入SBUF寄存器后,立即启动发送。

待8位数据输完后,硬件将SCON寄存器的TI位置1,TI必须由软件清零。

在移位时钟的作用下,串行口发送给缓冲器的数据一位一位地从P3.0移入74LS164中,通过74LS164实现了数码管移位显示。

电路图如下所示:

图3.4显示电路

3.1.4电源电路设计

电源是由7805构成的稳压电路组成。

电源电路如图3.4所示:

图3.5电源电路

3.1.5系统电路原理总图

将各个模块连接在一起,即可得到系统的硬件原理图,如图3.6所示:

图3.6系统硬件图

3.2系统程序设计

系统程序主要由主程序、温度检测程序、显示程序三部分组成。

3.2.1主程序设计

主程序的主要功能系统初始化、调用显示程序和温度检测程序。

主程序流程

图如图3.7所示:

图3.7主程序流程图图3.8读温度子程序

3.2.2温度检测程序设计

温度检测程序的主要功能是读出RAM中的9字节,在读出时需要进行CRC校验,校验有错时不进行温度数据的改写。

其程序流程图如图3.8所示:

3.2.3温度转换子程序设计

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

温度转换命令子程序流程图如图3.9所示

图3.9温度转换子程序流程图图3.10数据转换程序

3.2.4数据转换程序设计

数据转换程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其流程图如图3.10所示:

3.2.5显示程序设计

显示程序主要是对显示缓冲区中的显示数据进行刷新操作,当最高显示位0时将符号显示位移入下一位。

流程图如图3.113.12所示:

图3.11显示程序一图3.11显示程

第四章结论

本次课程设计我们选择的是基于DS18B20的数字温度计,完成了在数码管上显示要求下的温度。

在整个过程中发挥团队合作精神,分工合作,充分发挥个人的主观能动性,学到了许多知识,完成了对数字温度计的设计,达到了预期的目的。

在电路焊接时虽没有什么大问题,但从中知道了焊接的重要性,电路工程虽小,但不能心急。

对电路的布局要先有一个好的构想,才能使电路板美观。

在程序编写中遇到了许多问题,经过细心思考,最终还是完成了。

通过本次实习,知道了做事不能心急,要一步一步慢慢来,不要想走捷径,要有耐心。

第五章收获与致谢

通过这次的设计使我认识到我对单片机方面的知识知道的太少了,对于书本上的很多知识还不能灵活运用,有很多我们需要掌握的知识在等着我去学习,我会在以后的学习生活中弥补我所缺少的知识。

本次的设计使我从中学到了一些很重要的东西,那就是如何从理论到实践的转化,怎样将我所学到的知识运用到我以后的工作中去。

在大学的课堂的学习只是在给我们灌输专业知识,而我们应把所学的用到我们现实的生活中去,此次的设计给我奠定了一个实践基础,我会在以后的学习、生活中磨练自己,使自己适应于以后的竞争。

在这里我首先要感谢学校给我们提供这次实践的机会,让我们有机会把所学的知识运用于实践当中;其次还要感谢我的指导老师*和其他老师给我们的理论指导,使得我们的理论知识有了新的提高;另外还要感谢本组的同学,是他们让我学会了团队协作,为以后踏入社会打下基础。

此外,感谢所有帮助过我的同学,谢谢!

第六章参考文献

[1]张毅刚.单片机原理及应用.北京:

高等教育出版社,2009.2

[2]沈德金,陈粤初.MCS-51系列单片机接口电路与应用程序实例.北京航空航天大学出版社,1990

[3]胡汉才.单片机原理及接口技术.清华大学出版社,1996

[4]李志全等.智能仪表设计原理及应用.国防工业出版社,1998.6

[5]何立民.MCS-51系列单片机应用系统设计.北京航空航天大学出版社,1990.1

[6]李建民.单片机在温度控制系统中的应用.江汉大学学报,1996.6

[7]张毅刚、彭喜元、姜守达、乔立岩.新编MCS-51系列单片机应用设计.哈尔滨工业大学出版社,2003.6

[8]潘其光.常用测温仪表技术问答.国防工业出版社,1989

[9]杨世成.信号放大电路.电子工业出版社,1995

[10]高光天.仪表放大器应用.科学出版社,1995

工业出版社,2005.1

第七章附件

附件A硬件电路原理图

图7.1硬件原理图

附件B程序清单

#include

#defineucharunsignedchar

#defineuintunsignedint

ucharflag,count,flag1,cnt;

uinttemp,i,temp1,temp2,temp3;

floattemp_value;

ucharcodetab[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};

sbitDQ=P3^7;

sbitD3=P3^2;

sbitD4=P3^3;

voiddelay(unsignedintz)

{

unsignedintx,y;

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

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

}

voiddelay_18B20(unsignedinti)

{

while(i--);

}

voidInit_DS18B20(void)

{

unsignedcharx=0;

DQ=1;

delay_18B20(8);

DQ=0;

delay_18B20(80);

DQ=1;

delay_18B20(14);

x=DQ;

delay_18B20(20);

}

 

unsignedcharReadOneChar(void)

{

uchari=0;

uchardat=0;

for(i=8;i>0;i--)

{

DQ=0;

dat>>=1;

DQ=1;

if(DQ)

dat|=0x80;

delay_18B20(4);

}

return(dat);

}

 

voidWriteOneChar(uchardat)

{

unsignedchari=0;

for(i=8;i>0;i--)

{

DQ=0;

DQ=dat&0x01;

delay_18B20(5);

DQ=1;

dat>>=1;

}

}

floatReadTemp(void)

{

unsignedchara=0;

unsignedcharb=0;

unsignedchart=0;

Init_DS18B20();

WriteOneChar(0xCC);

WriteOneChar(0x44);

delay_18B20(100);

Init_DS18B20();

WriteOneChar(0xCC);

WriteOneChar(0xBE);

delay_18B20(100);

a=ReadOneChar();

b=ReadOneChar();

temp_value=b<<8;

temp_value+=a;

temp_value=temp_value*625/10000;

temp_value=temp_value+0.5;

returntemp_value;

}

voidmain()

{

Init_DS18B20();

SBUF=0;

while

(1)

{uintaa,temph,templ;

aa=ReadTemp();

temph=aa/10;

templ=aa%10;

P1=tab[templ];

P2=tab[temph];

D3=1;

D4=0;

SBUF=tab[templ];

delay(100);

while(TI==0);

TI=0;

SBUF=tab[temph];

D3=0;

D4=1;

delay(100);

while(TI==0);

TI=0;

}

}

附件C元器件列表

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

当前位置:首页 > 自然科学 > 化学

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

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