单片机课程设计.docx

上传人:b****5 文档编号:3325748 上传时间:2022-11-21 格式:DOCX 页数:19 大小:514.45KB
下载 相关 举报
单片机课程设计.docx_第1页
第1页 / 共19页
单片机课程设计.docx_第2页
第2页 / 共19页
单片机课程设计.docx_第3页
第3页 / 共19页
单片机课程设计.docx_第4页
第4页 / 共19页
单片机课程设计.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

单片机课程设计.docx

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

单片机课程设计.docx

单片机课程设计

 

单片机课程设计说明书

课题名称

基于DS18B20的温度显示系统

专业

电气工程及其自动化

学生姓名

管通

班级

B电气081

学号

0810601112

指导教师

张兰红

完成日期

2011年6月20日

目录

1.概述3

1.1基于DS18B20温度显示系统的历史背景和意义3

1.2基于DS18B20温度显示系统的发展和现状3

2.课程方案设计4

2.1系统总体设计要求4

2.2方案及系统模块结构论证4

2.2.1方案一4

2.2.2方案二5

2.2.3方案比较5

3.系统硬件设计7

3.1单片机接口电路设计7

3.1.1晶振电路7

3.1.2串口引脚7

3.1.3其它引脚8

3.2温度测试电路8

3.3七段数码管显示电路8

3.4驱动电路9

4.系统软件设计10

4.1程序结构分析10

4.2系统程序流图10

5.软硬件联调12

5.1软硬件调试中出现的问题及解决措施12

5.2实物图12

5.3调试结果12

结束语13

参考文献13

附录14

附录1:

基于DS18B20的温度显示系统设计原理图14

附录2:

基于DS18B20的温度显示系统设计PCB图15

附录3:

proteus仿真图15

附录4:

基于DS18B20的温度显示系统设计C语言程序清单16

附录5:

基于DS18B20的温度显示系统设计元器件目录表19

1.概述

1.1基于DS18B20温度显示系统的历史背景和意义

温度控制是工业自动控制的重要组成部分,在工业、电子、化工精度实验等诸多领域都有重要的应用,而温度测量又是温度控制当中重要的一环。

将现场温度控制在一定范围内,是在各种实际应用的重要保证和前提。

因此温度控制系统在工业控制领域中十分重要。

本文“基于DS18B20的温度显示器”课程研究与设计,主要研究以一个单片机为控制核心的温度自动测量系统,其目的是设计一种温度控制系统,使其达到在某一特定空间对温度进行测量并满足工艺过程的要求。

本课题的研究意义如下:

(1)它是一个单片机系统,对它的设计和制作可以灵活运用在单片机课程中所学的知识,并使之得到巩固和提高。

单片机在现实生活中应用非常普遍,掌握这方面的知识对今后从事此类工作的学生来说是一项不可或缺的技能。

(2)它的测温部分采用了美国Dallas半导体公司的DS18B20一线式数字式温度传感器,DS18B20是最新一代的测温器件,具有许多优点,它正在逐步取代传统的测温元件——热敏电阻和热电偶。

它的最主要的优点是把温度转换、A/D转换和数据的串行通讯集成为一体,而且它的体积很小,非常便于构成多点测温系统。

(3)它的最终目标是完成一个实际应用的产品,所以它的设计开发过程完全按照实际仪器产品的设计制造过程进行。

研究课题的同时积累了很多实际经验,对以后的实践教学工作会有很大的帮助。

1.2基于DS18B20温度显示系统的发展和现状

由于现代工艺越来越多的需要对实时温度进行监测和控制,而且需要的精度越来越高。

所以温度控制系统国内外许多有关人员的重视,得到了十分广泛的应用。

温度控制系统发展迅速,而且成果显著。

由于单片微处理器的性能日益提高、价格又不断降低,使其性能价格比的优势非常明显。

因此,如何将单片微处理器应用到锅炉温度自动控制领域,为越来越多的生产厂家所重视。

目前先进国家各种炉窑自动化水平较高,装备有完善的检测仪表和计算机控制系统。

其计算机控制系统已采用集散系统和分布式系统的形式,大部分配有先进的控制算法,能够获得较好的工艺性能指标。

单片微型计算机是随着超大规模集成电路的技术的发展而诞生的。

由于它具有体积小,功能强,性价比高等优点,所以广泛应用于电子仪表,家用电器,节能装置,军事装置,机器人,工业控制等诸多领域,使产品小型化,智能化,既提高了产品的功能和质量又降低了成本,简化了设计。

2.课程方案设计

2.1系统总体设计要求

(1)熟悉Keil编程环境;

(2)熟悉有关探测器的理论知识;

(3)给出设计方案:

此次的设计先从硬件设计上着手。

先要整理温度显示系统的整体思路。

确定出方案设计中需要的硬件设备。

我们在确定了大的方向基础上,就应该对系统实现进行规划

2.2方案及系统模块结构论证

2.2.1方案一

测温电路的设计,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来。

针对铂热电阻传感器测量温度,采用普通稳压源桥式电路而产生非线性误差的问题,运用集成运算放大器工作在线性区域的特性,将恒流源原理应用到测温桥式电路中,并采用集成A/D转换技术的单片机Mega16,通过运算消除了非线性误差,实现了对温度的精确测量。

试验结果表明,应用此种测温电路,缩短了单片机计算时间,一定程度上缓解了变送滞后对测量精度的影响,同时降低了误差。

铂电阻温度传感器,因其测量范围大,复现性好,稳定性强等特点而被广泛使用。

在精密测量系统中,铂电阻测温系统电路结构图如图1所示:

铂电阻信号通常通过桥式电路转换为电压信号,再经过放大及A/D转换后送微处理器进行处理。

为了能对铂电阻测温的非线性进行校正,作者利用双积分A/D转换原理,设计了一种高精度的铂电阻测温非线性校正方案。

实践证明,该方法不仅性能稳定,结构简单,而且在0~200℃范围内准确度可达到0.15%FS±4字。

 

 

2.2.2方案二

考虑使用数字温度传感器,结合单片机电路设计,采用一只DS18B20温度传感器,直接读取被测温度值,之后进行转换,依次完成设计要求。

2.2.3方案比较

方案一采用模拟温度传感器,数据处理麻烦,且容易产生信号失真.DS18B20可以直接温度转换为串行数字信号,供单片机进行处理,具有低功耗、高性能、抗干扰能力强等优点。

比较以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计容易实现,故实际设计中拟采用方案二。

在本系统的电路设计方框图如图2.2.3.1所示。

图2.2.3温度计电路总体设计方案

DS18B20是Dallas公司生产的一线式数字温度传感器,它具有微型化、低功耗、高性能抗干扰能力、强易配处理器等优点,特别适合用于构成多点温度测控系统,可直接将温度转化成串行数字信号(按9位二进制数字)给单片机处理,且在同一总线上可以挂接多个传感器芯片,它具有三引脚TO-92小体积封装形式,温度测量范围-55~+125℃,可编程为9~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出,其工作电源既可在远端引入,业可采用寄生电源方式产生,多个DS18B20可以并联到三根或者两根线上,CPU只需一根端口线就能与多个DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。

从而可以看出DS18B20可以非常方便的被用于远距离多点温度检测系统。

图2.2.3.2温度芯片DS18B20

3.系统硬件设计

3.1单片机接口电路设计

DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。

另一种是寄生电源供电方式,如图3.1所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个三极管来完成对总线的上拉。

本设计采用电源供电方式,P2.2口接单线总线为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个上拉电阻和STC89C52的P2.2来完成对总线的上拉。

当DS18B20处于写存储器操作和温度A/D变换操作时,总线上必须有强的上拉,上拉开启时间最大为10μs。

采用寄生电源供电方式是VDD和GND端均接地。

由于单线制只有一根线,因此发送接收口必须是三状态的。

主机控制DS18B20完成温度转换必须经过3个步骤:

●初始化。

●ROM操作指令。

●存储器操作指令。

3.1.1晶振电路

单片机XIAL1和XIAL2分别接30PF的电容,中间再并个12MHZ的晶振,形成单片机的晶振电路。

图3.1.1

3.1.2串口引脚

P0口接9个2.2K的排阻然后接到显示电路上。

P2.2温度传感器DS18B20如图2.2.2所示。

图3.1.2DS18B20与单片机的接口电路

P3.6引脚接继电器电路的4.7K的限流电阻上;

P1口中P1.4、P1.5、P1.6、P1.7分别接到显示电路的三极管上,P3.2接蜂鸣器电路,P1.3接到发光二极管上;

P2口接到按键电路。

3.1.3其它引脚

ALE引脚悬空,复位引脚接到复位电路、VCC接电源、VSS接地、EA接电源

3.2温度测试电路

采用温度芯片DS18B20。

可以直接将被测温度转换为串行数字信号,工单片机进行处理,具有低功耗、高功能、抗扰能力强等优点。

图3.2温度传感器电路引脚图

3.3七段数码管显示电路

具体见实际连线图如图3.5,当位选打开时,送入相应的段码,则相应的数码管打开,关掉位选,打开另一个位选,送入相应的段码,则数码管打开,而每次打开关掉相应的位选时,时间间隔低于20ms,从人类视觉的角度上看,就仿佛是全部数码管同时显示的一样。

图3.3

3.4驱动电路

除了用三极管9012来驱动4位数码管,也可以用74LS245来驱动数码管显示。

图3.474LS245驱动电路引脚图

其中VCC\DIR引脚接电源,G\GND接地.74LS245原来驱动两个4位数码管。

 

4.系统软件设计

4.1程序结构分析

  主程序调用了2个子程序,分别是数码管显示程序、温度信号处理程序。

  温度信号处理程序:

对温度芯片DS18B20送过来的数据进行处理,进行判断和显示。

  数码管显示程序:

向数码的显示送数,控制系统的显示部分。

4.2系统程序流图

系统程序主要包括主程序,读出温度子程序,写入子程序等,串口通信程序,显示子程序。

主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。

这样可以在一秒之内测量一次被测温度,其程序流程见图4.2所示。

通过调用读温度子程序把存入内存储中的整数部分与小数部分开分存放在不同的两个单元中,然后通过调用显示子程序显示出来。

DS18B20温度流程图

5.软硬件联调

5.1软硬件调试中出现的问题及解决措施

问题1:

温度传感器1、3引脚接线错误,导致数码管不能显示温度

解决措施:

将温度传感器1脚接地,3脚接Vcc。

问题2:

数码管显示乱码,甚至无显示

解决措施:

检验出数码管为共阴极数码管,上网查找共阴极数码管的引脚图,认真连线,将位选和段选连接正确。

问题3:

程序、引脚间的连接都没问题,数码管还没有显示

解决措施:

用万用表检查各个引脚之间是否导通,是否出现虚焊现象。

5.2实物图

5.3调试结果

 

结束语

本次课程设计,回顾起此次单片机课程设计,我仍感慨颇多,的确,从理论到实践,在接近三星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,以及焊电路板时出现的各种错误,怎样万用表检查电路,用对单片机C语言掌握得不好,怎样修改程序……通过这次课程设计之后,一定把以前所学过的知识重新温故。

这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在张兰红老师的辛勤指导下迎刃而解。

同时,在张兰红老师那里我学得到很多实用的知识以及她的认真严谨的科学态度,让我终生受益!

同时,对给过我帮助的同学再次表示忠心的感谢!

参考文献

1彭伟主编.《单片机C语言程序设计实训100例:

基于8051+Proteus仿真》.北京:

电子工业出版社,2009

2全国大学生电子设计竞赛组委会编.第五届全国大学生电子设计竞赛获奖作品选编(2001),北京:

北京理工大学出版社,2003

3何力民编.单片机高级教程.北京:

北京航空大学出版社,2000

4金发庆等编.传感器技术与应用.北京机械工业出版社,2002

5刘坤、宋戈、赵洪波、张宪栋编.51单片机C语言应用开发技术大全,北京:

人民邮电出版社,2008

6谭浩强著.C程序设计.北京:

清华大学出版社,2007;

7王忠飞,胥芳.MCS-51单片机原理及嵌入式系统应用[M].西安:

西安电子科技大学出版社,2007.P268-273

8PeterVanDerLinden著,徐波译.C专家编程,人民邮电出版社,2003

附录

附录1:

基于DS18B20的温度显示系统设计原理图

附录2:

基于DS18B20的温度显示系统设计PCB图

附录3:

proteus

仿真图

附录4:

基于DS18B20的温度显示系统设计C语言程序清单

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitDQ=P3^6;

ucharcodeDSY_CODE[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00};

ucharcodedf_Table[]={0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9};

ucharCurrentT=0;

ucharTemp_Value[]={0x00,0x00};

ucharDisplay_Digit[]={0,0,0,0};

bitDS18B20_IS_OK=1;

voidDelay(uintx)

{

while(--x);

}

ucharInit_DS18B20()

{

ucharstatus;

DQ=1;Delay(8);

DQ=0;Delay(90);

DQ=1;Delay(8);

status=DQ;

Delay(100);

DQ=1;

returnstatus;

}

ucharReadOneByte()

{

uchari,dat=0;

DQ=1;_nop_();

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

{

DQ=0;dat>>=1;DQ=1;_nop_();_nop_();

if(DQ)dat|=0x80;Delay(30);DQ=1;

}

returndat;

}

voidWriteOneByte(uchardat)

{

uchari;

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

{

DQ=0;DQ=dat&0x01;Delay(5);DQ=1;dat>>=1;

}

}

voidRead_Temperature()

{

if(Init_DS18B20()==1)

DS18B20_IS_OK=0;

else

{

WriteOneByte(0xCC);

WriteOneByte(0x44);

Init_DS18B20();

WriteOneByte(0xCC);

WriteOneByte(0xBE);

Temp_Value[0]=ReadOneByte();

Temp_Value[1]=ReadOneByte();

DS18B20_IS_OK=1;

}

}

voidDisplay_Temperature()

{

uchari;

uchart=150;

ucharng=0,np=0;

charSigned_Current_Temp;

if((Temp_Value[1]&0xF8)==0xF8)

{

Temp_Value[1]=~Temp_Value[1];

Temp_Value[0]=~Temp_Value[0]+1;

if(Temp_Value[0]==0x01)Temp_Value[1]++;

ng=1;np=0xFD;

}

Display_Digit[0]=df_Table[Temp_Value[0]&0x0F];

CurrentT=((Temp_Value[0]&0xF0)>>4)|((Temp_Value[1]&0x07)<<4);

Display_Digit[3]=CurrentT/100;

Display_Digit[2]=CurrentT%100/10;

Display_Digit[1]=CurrentT%10;

if(Display_Digit[3]==0)

{

Display_Digit[3]=10;

np=0xFB;

if(Display_Digit[2]==0)

{

Display_Digit[2]=10;

np=0xF7;

}

}

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

{

P0=0x39;P2=0x7F;Delay(t);P2=0xFF;

P0=0x63;P2=0xBF;Delay(t);P2=0xFF;

P0=DSY_CODE[Display_Digit[0]];

P2=0xDF;Delay(t);P2=0xFF;

P0=(DSY_CODE[Display_Digit[1]])|0x80;

P2=0xEF;Delay(t);P2=0xFF;

P0=DSY_CODE[Display_Digit[2]];

P2=0xF7;Delay(t);P2=0xFF;

P0=DSY_CODE[Display_Digit[3]];

P2=0xFB;Delay(t);P2=0xFF;

if(ng)

{

P0=0x40;P2=np;Delay(t);P2=0xFF;

}

}

}

voidmain(void)

{

Read_Temperature();

Delay(50000);

Delay(50000);

while

(1)

{

Read_Temperature();

if(DS18B20_IS_OK)

{

Display_Temperature();

}

else

{

P0=P2=0x00;

}

}

}

附录5:

基于DS18B20的温度显示系统设计元器件目录表

编号

元件名称

元件数量

(1)

STC89C52单片机

1个

(2)

1kΩ电阻

1个

(3)

10KΩ电阻

1个

(4)

330Ω电阻

8个

(5)

30uF电容

2个

(6)

11.0592MHz晶振

1个

(7)

发光二极管

8个

(8)

七段共阴极数码管

8个

(9)

10uf电容

1个

(10)

排阻

1个

(11)

DS18B20温度传感器

1个

(12)

74LS245

1个

(13)

复位按钮

1个

(14)

4.7kΩ电阻

1个

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

当前位置:首页 > 外语学习 > 英语考试

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

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