最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

用LED数码管和DS18B20设计的温度显示器

IT圈 admin 114浏览 0评论

2024年2月12日发(作者:刑聪)

单片机课程设计说明书

用LED数码管和DS18B20设计的温度显示器

word文档 可自由复制编辑

目 录

1.概述 ........................................................................................................................................................ 3

1.1课题研究背景和意义 .................................................................................................................. 3

1.2课题设计内容.............................................................................................................................. 3

2.课程方案设计 ........................................................................................................................................ 4

2.1系统总体设计要求 ...................................................................................................................... 4

2.2系统模块结构论证 ...................................................................................................................... 4

2.2.1方案一............................................................................................................................... 4

2.2.2方案二............................................................................................................................... 4

3.系统硬件设计 ........................................................................................................................................ 7

3.1总体设计 ..................................................................................................................................... 7

3.2单片机最小运行系统 .................................................................................................................. 7

3.3温度传感器(DS18B20)电路 ....................................................................................................... 8

3.3.1 DS18B20基本介绍 .......................................................................................................... 8

3.3.2 DS18B20控制方法 .......................................................................................................... 8

3.3.3 DS18B20供电方式 .......................................................................................................... 9

3.4七段数码管显示电路 .................................................................................................................. 9

3.5驱动电路 ................................................................................................................................... 10

4.系统软件设计 ...................................................................................................................................... 10

4.1程序结构分析............................................................................................................................ 10

4.2系统程序流图............................................................................................................................ 11

5.软硬件联调 .......................................................................................................................................... 14

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

5.2实物图 ....................................................................................................................................... 14

5.3调试结果 ................................................................................................................................... 14

结束语 ..................................................................................................................................................... 15

参考文献 ................................................................................................................................................. 16

附 录 ................................................................................................................................................. 17

附录1:基于单片机的温度显示系统设计原理图 ....................................................................... 18

附录2:基于单片机的温度显示系统设计PCB图 ..................................................................... 19

附录3:proteus仿真图 .................................................................................................................. 20

附录4:基于单片机的温度显示系统设计C语言程序清单 ...................................................... 21

附录5: 基于单片机的温度显示系统设计元器件目录表 ............................................................ 25

word文档 可自由复制编辑

1.概述

1.1课题研究背景和意义

温度控制是工业自动控制的重要组成部分,在工业、电子、化工精度实验等诸多领域都有重要的应用,而温度测量又是温度控制当中重要的一环。将现场温度控制在一定范围内,是在各种实际应用的重要保证和前提。因此温度控制系统在工业控制领域中十分重要。

由于现代工艺越来越多的需要对实时温度进行监测和控制,而且需要的精度越来越高。所以温度控制系统国内外许多有关人员的重视,得到了十分广泛的应用。温度控制系统发展迅速,而且成果显著。由于单片微处理器的性能日益提高、价格又不断降低,使其性能价格比的优势非常明显。“用LED数码管和DS18B20设计的温度显示器”课程设计,主要设计以一个单片机为控制核心的温度自动测量系统,

本课题的研究意义如下:

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

(2)它的测温部分采用了美国Dallas半导体公司的DS18B20一线式数字式温度传感器,DS18B20是最新一代的测温器件,具有许多优点,它正在逐步取代传统的测温元件——热敏电阻和热电偶。它的最主要的优点是把温度转换、A/D转换和数据的串行通讯集成为一体,而且它的体积很小,非常便于构成多点测温系统。

1.2课题设计内容

本课题的主要任务是设计并制作用LED数码管和DS18B20设计的温度显示器,即根据温度传感器感受室温,通过数码管显示出来。它能感受微小的温度误差,灵敏度为0.1摄氏度。灵活方便,用途广泛。

设计温度显示器的硬件电路与软件控制程序,对硬件电路与软件程序分别进行调试,并进行软硬件联调,要求获得调试成功的实物。

word文档 可自由复制编辑

2.课程方案设计

2.1系统总体设计要求

该系统组要有STC89C51为核心的主控电路测温电路(DS18B20)、LED显示电路。

2.2系统模块结构论证

2.2.1方案一

用铂电阻测温的非线性校正方法,采用桥式电路将热敏电阻的感温效应,在将随被测温度变化的电压或电流采集过来,再加上放大器将信号放大,并经AD转换器,在通过显示电路,就可以将被测温度显示出来。

图2-1铂电阻桥式测温电路

2.2.2方案二

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

word文档 可自由复制编辑

图2-2 DS18B20测温系统框图

2.2.3方案比较

方案一采用模拟温度传感器,数据处理麻烦,且容易产生信号失真. DS18B20可以直接温度转换为串行数字信号,供单片机进行处理,具有低功耗、高性能、抗干扰能力强等优点。比较以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计容易实现,故实际设计中拟采用方案二。在本系统的电路设计方框图如图2-3所示。

DS18B20温度芯片

LED显示

报警电路

STC89C52

CPU

电源

图2-3 温度计电路总体设计方案

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

业可采用寄生电源方式产生,多个DS18B20可以并联到三根或者两根线上,CPU只需一根端口线就能与多个DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。从而可以看出DS18B20可以非常方便的被用于远距离多点温度检测系统。

word文档 可自由复制编辑

图2-4 温度芯片DS18B20

3.系统硬件设计

3.1总体设计

根据第2节设计方案,设计的系统总体电路如附录1所示,下面具体介绍每一部分的设计。

3.2单片机最小运行系统

a)晶振

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

C211.0592MY1 30pF30pFXTAL2XTAL1C3图3-1 晶振电路

b)复位电路

单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。89系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。单片机系统的复位方式有:手动按钮复位和上电复位。

VccS4R11kΩ 10kΩR2 RSTCJ2

word文档 可自由复制编辑

图3-2 复位电路

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

3.3温度传感器(DS18B20)电路

3.3.1 DS18B20基本介绍

DS18B20是美国DALLAS半导体公司推出的第一片支持“一线总线”接口的温度传感器,它具有微型化、低功耗、高性能、抗干扰能力强、易配微处理器等优点,可直接将温度转化成串行数字信号处理器处理。

DS18B20进行精确的温度转换,I/O线必须保证在温度转换期间提供足够的能量,由于每个DS18B20在温度转换期间工作电流达到1mA,当几个温度传感器挂在同一根I/O线上进行多点测温时,只靠4.7K上拉电阻就无法提供足够的能量,会造成无法转换温度或温度误差极大。

因此,下图电路只适应于单一温度传感器测温情况下使用,不适宜采用电池供电系统中。并且工作电源VCC必须保证在5V,当电源电压下降时,寄生电源能够汲取的能量也降低,会使温度误差变大。

VCCR215.1KU1VCCI/OGNDDS18B20321VCCP22

图3-3温度传感器电路引脚图

如图3-2,P3.6引脚接继电器电路的4.7K的限流电阻上。

3.3.2 DS18B20控制方法

DS18B20有六条控制命令:

温度转换 44H 启动DS18B20进行温度转换

读暂存器 BEH 读暂存器9个字节内容

word文档 可自由复制编辑

写暂存器 4EH 将数据写入暂存器的TH、TL字节

复制暂存器 48H 把暂存器的TH、TL字节写到E2RAM中

重新调E2RAM B8H 把E2RAM中的TH、TL字节写到暂存器TH、TL字节

读电源供电方式 B4H 启动DS18B20发送电源供电方式的信号给主CPU

3.3.3 DS18B20供电方式

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.4七段数码管显示电路

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

word文档 可自由复制编辑

图3-4 数码管引脚图

考虑到实际室温的温度范围,显示需用五位,硬件中用了2个四位数码管,共8个位选,接到P2口。

3.5驱动电路

一般也可以用三极管9012来驱动4位数码管,不仅增加了成本也增加了布线难度,功耗大。这里用锁存器74LS245来驱动数码管显示。

U323456789191A0A1A2A3A4A5A6A7EDIR74LS245图3-5 74LS245引脚图

B0B1B2B3B4B5B6B7VCCGND312112010

74LS245是常用的芯片,用来驱动LED或者其他的设备,它是8路双向总线收发器,可双向传输数据。74LS245还具有双向三态功能,既可以输出,也可以输入数据。当AT89C51单片机的P0口总线负载达到或超过P0口最大负载能力时,必须接入74LS245等总线驱动器。

DIR为方向控制端。当E端为低电平时,DIR=“0”,信号由B向A传输(接收); 当DIR=“1”时,信号由A向B传输(发送);当E为高电平时,A、B均为高组态。A总线端接8位P0口,B总线端接数码管的a、b、c、d、e、f、g、dp引脚。

4.系统软件设计

4.1程序结构分析

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

温度信号处理程序:对温度芯片送过来的数据进行处理,进行判断和显示。

word文档 可自由复制编辑

数码管显示程序:向数码的显示送数,控制系统的显示部分。

4.2系统程序流图

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

主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图4.2所示。

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

图4-1 DS18B20温度流程图

uchar Init_DS18B20()

{

word文档 可自由复制编辑

uchar status;

DQ=1;Delay(8);

DQ=0;Delay(90);

DQ=1;Delay(8);

status=DQ;

Delay(100);

DQ=1;

return status;

}

uchar ReadOneByte()

{

uchar i,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;

}

return dat;

}

void WriteOneByte(uchar dat)

{

uchar i;

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

{

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

}

}

void Read_Temperature()

{

if( Init_DS18B20()==1)

DS18B20_IS_OK=0;

else

{

WriteOneByte(0xCC);

WriteOneByte(0x44);

Init_DS18B20();

WriteOneByte(0xCC);

word文档 可自由复制编辑

WriteOneByte(0xBE);

Temp_Value[0]=ReadOneByte();

Temp_Value[1]=ReadOneByte();

DS18B20_IS_OK=1;

}

}

word文档 可自由复制编辑

5.软硬件联调

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

问题1:温度传感器1、3引脚接线错误,导致数码管无显示

解决措施:将温度传感器1脚接地,3脚接Vcc。

问题2:数码管显示乱码,甚至无显示

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

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

解决措施:用万用表检查各个引脚之间是否导通,是否出现空焊现象。

5.2实物图

5.3调试结果

word文档 可自由复制编辑

结束语

课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域, 在生活中可以说是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。

通过这次单片机课程设计,第一,我加深了对单片机理论的理解,将理论很好地应用到实际当中去,我花了近三天的时间做实物,焊板子是一项很考验技术的活,我们组焊好后有人成功有人失败。接下来我们面对的是查错,先看看是不是电路原理图接错了,然后再看是不是虚焊,我拿着万用表一个一个焊点检查,着实不易。最苦恼的是发现不存在虚焊、短路时,可能是有元器件烧掉了,我们又去网上买。

在做实物的过程中,提高了分析和解决实际问题的综合能力。另外,也培养了自己严肃认真的科学态度和严谨求实的作风。

在此期间,张兰红老师对我的设计进行了耐心的修改和指导,我十分感激。

word文档 可自由复制编辑

参考文献

1曹巧媛主编. 单片机原理及应用(第二版). 北京:电子工业出版社,2002

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

3何力民编. 单片机高级教程. 北京:北京航空大学出版社,2000

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

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

6谭浩强著.C程序设计.北京:清华大学出版社,2007;

7王忠飞,胥芳.MCS-51 单片机原理及嵌入式系统应用[M].西安:西安电子科技大学出版社,2007.P268-273

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

word文档 可自由复制编辑

附 录

附录1:基于单片机的温度显示系统设计原理图

附录2:基于单片机的温度显示系统设计PCB图

附录3:proteus仿真图

附录4:基于单片机的温度显示系统设计C语言程序清单

附录5:基于单片机的温度显示系统设计元器件目录表

word文档 可自由复制编辑

附录1:基于单片机的温度显示系统设计原理图

word文档 可自由复制编辑

附录2:基于单片机的温度显示系统设计PCB图

word文档 可自由复制编辑

附录3:proteus仿真图

word文档 可自由复制编辑

附录4:基于单片机的温度显示系统设计C语言程序清单

#include

#include

#define uchar unsigned char

#define uint unsigned int

sbit DQ=P3^6;

uchar

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

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

uchar CurrentT=0;

uchar Temp_Value[]={0x00,0x00};

uchar Display_Digit[]={0,0,0,0};

bit DS18B20_IS_OK=1;

void Delay(uint x)

{

while (--x);

}

uchar Init_DS18B20()

{

uchar status;

DQ=1;Delay(8);

DQ=0;Delay(90);

DQ=1;Delay(8);

status=DQ;

Delay(100);

DQ=1;

return status;

}

uchar ReadOneByte()

{

uchar i,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;

word文档 可自由复制编辑

code

}

return dat;

}

void WriteOneByte(uchar dat)

{

uchar i;

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

{

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

}

}

void Read_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;

}

}

void Display_Temperature()

{

uchar i;

uchar t=150;

uchar ng=0, np=0;

char Signed_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]++;

word文档 可自由复制编辑

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;

}

}

}

void main(void)

{

Read_Temperature();

word文档 可自由复制编辑

Delay(50000);

Delay(50000);

while(1)

{

Read_Temperature();

if(DS18B20_IS_OK)

{

Display_Temperature();

}

else

{

P0=P2=0x00;

}

}

}

word文档 可自由复制编辑

附录5: 基于单片机的温度显示系统设计元器件目录表

编号

(1)

(2)

(3)

(4)

(5)

(6)

(7)

(8)

(9)

(10)

(11)

(12)

(13)

(14)

元件名称

STC89C52 单片机

1kΩ电阻

10KΩ电阻

330Ω电阻

30uF电容

11.0592MHz晶振

发光二极管

七段共阴极数码管

10uf电容

排阻

DS18B20温度传感器

74LS245

复位按钮

4.7kΩ电阻

元件数量

1个

1个

1个

8个

2个

1个

8个

8个

1个

1个

1个

1个

1个

1个

word文档 可自由复制编辑

2024年2月12日发(作者:刑聪)

单片机课程设计说明书

用LED数码管和DS18B20设计的温度显示器

word文档 可自由复制编辑

目 录

1.概述 ........................................................................................................................................................ 3

1.1课题研究背景和意义 .................................................................................................................. 3

1.2课题设计内容.............................................................................................................................. 3

2.课程方案设计 ........................................................................................................................................ 4

2.1系统总体设计要求 ...................................................................................................................... 4

2.2系统模块结构论证 ...................................................................................................................... 4

2.2.1方案一............................................................................................................................... 4

2.2.2方案二............................................................................................................................... 4

3.系统硬件设计 ........................................................................................................................................ 7

3.1总体设计 ..................................................................................................................................... 7

3.2单片机最小运行系统 .................................................................................................................. 7

3.3温度传感器(DS18B20)电路 ....................................................................................................... 8

3.3.1 DS18B20基本介绍 .......................................................................................................... 8

3.3.2 DS18B20控制方法 .......................................................................................................... 8

3.3.3 DS18B20供电方式 .......................................................................................................... 9

3.4七段数码管显示电路 .................................................................................................................. 9

3.5驱动电路 ................................................................................................................................... 10

4.系统软件设计 ...................................................................................................................................... 10

4.1程序结构分析............................................................................................................................ 10

4.2系统程序流图............................................................................................................................ 11

5.软硬件联调 .......................................................................................................................................... 14

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

5.2实物图 ....................................................................................................................................... 14

5.3调试结果 ................................................................................................................................... 14

结束语 ..................................................................................................................................................... 15

参考文献 ................................................................................................................................................. 16

附 录 ................................................................................................................................................. 17

附录1:基于单片机的温度显示系统设计原理图 ....................................................................... 18

附录2:基于单片机的温度显示系统设计PCB图 ..................................................................... 19

附录3:proteus仿真图 .................................................................................................................. 20

附录4:基于单片机的温度显示系统设计C语言程序清单 ...................................................... 21

附录5: 基于单片机的温度显示系统设计元器件目录表 ............................................................ 25

word文档 可自由复制编辑

1.概述

1.1课题研究背景和意义

温度控制是工业自动控制的重要组成部分,在工业、电子、化工精度实验等诸多领域都有重要的应用,而温度测量又是温度控制当中重要的一环。将现场温度控制在一定范围内,是在各种实际应用的重要保证和前提。因此温度控制系统在工业控制领域中十分重要。

由于现代工艺越来越多的需要对实时温度进行监测和控制,而且需要的精度越来越高。所以温度控制系统国内外许多有关人员的重视,得到了十分广泛的应用。温度控制系统发展迅速,而且成果显著。由于单片微处理器的性能日益提高、价格又不断降低,使其性能价格比的优势非常明显。“用LED数码管和DS18B20设计的温度显示器”课程设计,主要设计以一个单片机为控制核心的温度自动测量系统,

本课题的研究意义如下:

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

(2)它的测温部分采用了美国Dallas半导体公司的DS18B20一线式数字式温度传感器,DS18B20是最新一代的测温器件,具有许多优点,它正在逐步取代传统的测温元件——热敏电阻和热电偶。它的最主要的优点是把温度转换、A/D转换和数据的串行通讯集成为一体,而且它的体积很小,非常便于构成多点测温系统。

1.2课题设计内容

本课题的主要任务是设计并制作用LED数码管和DS18B20设计的温度显示器,即根据温度传感器感受室温,通过数码管显示出来。它能感受微小的温度误差,灵敏度为0.1摄氏度。灵活方便,用途广泛。

设计温度显示器的硬件电路与软件控制程序,对硬件电路与软件程序分别进行调试,并进行软硬件联调,要求获得调试成功的实物。

word文档 可自由复制编辑

2.课程方案设计

2.1系统总体设计要求

该系统组要有STC89C51为核心的主控电路测温电路(DS18B20)、LED显示电路。

2.2系统模块结构论证

2.2.1方案一

用铂电阻测温的非线性校正方法,采用桥式电路将热敏电阻的感温效应,在将随被测温度变化的电压或电流采集过来,再加上放大器将信号放大,并经AD转换器,在通过显示电路,就可以将被测温度显示出来。

图2-1铂电阻桥式测温电路

2.2.2方案二

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

word文档 可自由复制编辑

图2-2 DS18B20测温系统框图

2.2.3方案比较

方案一采用模拟温度传感器,数据处理麻烦,且容易产生信号失真. DS18B20可以直接温度转换为串行数字信号,供单片机进行处理,具有低功耗、高性能、抗干扰能力强等优点。比较以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计容易实现,故实际设计中拟采用方案二。在本系统的电路设计方框图如图2-3所示。

DS18B20温度芯片

LED显示

报警电路

STC89C52

CPU

电源

图2-3 温度计电路总体设计方案

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

业可采用寄生电源方式产生,多个DS18B20可以并联到三根或者两根线上,CPU只需一根端口线就能与多个DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。从而可以看出DS18B20可以非常方便的被用于远距离多点温度检测系统。

word文档 可自由复制编辑

图2-4 温度芯片DS18B20

3.系统硬件设计

3.1总体设计

根据第2节设计方案,设计的系统总体电路如附录1所示,下面具体介绍每一部分的设计。

3.2单片机最小运行系统

a)晶振

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

C211.0592MY1 30pF30pFXTAL2XTAL1C3图3-1 晶振电路

b)复位电路

单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。89系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。单片机系统的复位方式有:手动按钮复位和上电复位。

VccS4R11kΩ 10kΩR2 RSTCJ2

word文档 可自由复制编辑

图3-2 复位电路

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

3.3温度传感器(DS18B20)电路

3.3.1 DS18B20基本介绍

DS18B20是美国DALLAS半导体公司推出的第一片支持“一线总线”接口的温度传感器,它具有微型化、低功耗、高性能、抗干扰能力强、易配微处理器等优点,可直接将温度转化成串行数字信号处理器处理。

DS18B20进行精确的温度转换,I/O线必须保证在温度转换期间提供足够的能量,由于每个DS18B20在温度转换期间工作电流达到1mA,当几个温度传感器挂在同一根I/O线上进行多点测温时,只靠4.7K上拉电阻就无法提供足够的能量,会造成无法转换温度或温度误差极大。

因此,下图电路只适应于单一温度传感器测温情况下使用,不适宜采用电池供电系统中。并且工作电源VCC必须保证在5V,当电源电压下降时,寄生电源能够汲取的能量也降低,会使温度误差变大。

VCCR215.1KU1VCCI/OGNDDS18B20321VCCP22

图3-3温度传感器电路引脚图

如图3-2,P3.6引脚接继电器电路的4.7K的限流电阻上。

3.3.2 DS18B20控制方法

DS18B20有六条控制命令:

温度转换 44H 启动DS18B20进行温度转换

读暂存器 BEH 读暂存器9个字节内容

word文档 可自由复制编辑

写暂存器 4EH 将数据写入暂存器的TH、TL字节

复制暂存器 48H 把暂存器的TH、TL字节写到E2RAM中

重新调E2RAM B8H 把E2RAM中的TH、TL字节写到暂存器TH、TL字节

读电源供电方式 B4H 启动DS18B20发送电源供电方式的信号给主CPU

3.3.3 DS18B20供电方式

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.4七段数码管显示电路

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

word文档 可自由复制编辑

图3-4 数码管引脚图

考虑到实际室温的温度范围,显示需用五位,硬件中用了2个四位数码管,共8个位选,接到P2口。

3.5驱动电路

一般也可以用三极管9012来驱动4位数码管,不仅增加了成本也增加了布线难度,功耗大。这里用锁存器74LS245来驱动数码管显示。

U323456789191A0A1A2A3A4A5A6A7EDIR74LS245图3-5 74LS245引脚图

B0B1B2B3B4B5B6B7VCCGND312112010

74LS245是常用的芯片,用来驱动LED或者其他的设备,它是8路双向总线收发器,可双向传输数据。74LS245还具有双向三态功能,既可以输出,也可以输入数据。当AT89C51单片机的P0口总线负载达到或超过P0口最大负载能力时,必须接入74LS245等总线驱动器。

DIR为方向控制端。当E端为低电平时,DIR=“0”,信号由B向A传输(接收); 当DIR=“1”时,信号由A向B传输(发送);当E为高电平时,A、B均为高组态。A总线端接8位P0口,B总线端接数码管的a、b、c、d、e、f、g、dp引脚。

4.系统软件设计

4.1程序结构分析

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

温度信号处理程序:对温度芯片送过来的数据进行处理,进行判断和显示。

word文档 可自由复制编辑

数码管显示程序:向数码的显示送数,控制系统的显示部分。

4.2系统程序流图

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

主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图4.2所示。

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

图4-1 DS18B20温度流程图

uchar Init_DS18B20()

{

word文档 可自由复制编辑

uchar status;

DQ=1;Delay(8);

DQ=0;Delay(90);

DQ=1;Delay(8);

status=DQ;

Delay(100);

DQ=1;

return status;

}

uchar ReadOneByte()

{

uchar i,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;

}

return dat;

}

void WriteOneByte(uchar dat)

{

uchar i;

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

{

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

}

}

void Read_Temperature()

{

if( Init_DS18B20()==1)

DS18B20_IS_OK=0;

else

{

WriteOneByte(0xCC);

WriteOneByte(0x44);

Init_DS18B20();

WriteOneByte(0xCC);

word文档 可自由复制编辑

WriteOneByte(0xBE);

Temp_Value[0]=ReadOneByte();

Temp_Value[1]=ReadOneByte();

DS18B20_IS_OK=1;

}

}

word文档 可自由复制编辑

5.软硬件联调

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

问题1:温度传感器1、3引脚接线错误,导致数码管无显示

解决措施:将温度传感器1脚接地,3脚接Vcc。

问题2:数码管显示乱码,甚至无显示

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

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

解决措施:用万用表检查各个引脚之间是否导通,是否出现空焊现象。

5.2实物图

5.3调试结果

word文档 可自由复制编辑

结束语

课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域, 在生活中可以说是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。

通过这次单片机课程设计,第一,我加深了对单片机理论的理解,将理论很好地应用到实际当中去,我花了近三天的时间做实物,焊板子是一项很考验技术的活,我们组焊好后有人成功有人失败。接下来我们面对的是查错,先看看是不是电路原理图接错了,然后再看是不是虚焊,我拿着万用表一个一个焊点检查,着实不易。最苦恼的是发现不存在虚焊、短路时,可能是有元器件烧掉了,我们又去网上买。

在做实物的过程中,提高了分析和解决实际问题的综合能力。另外,也培养了自己严肃认真的科学态度和严谨求实的作风。

在此期间,张兰红老师对我的设计进行了耐心的修改和指导,我十分感激。

word文档 可自由复制编辑

参考文献

1曹巧媛主编. 单片机原理及应用(第二版). 北京:电子工业出版社,2002

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

3何力民编. 单片机高级教程. 北京:北京航空大学出版社,2000

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

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

6谭浩强著.C程序设计.北京:清华大学出版社,2007;

7王忠飞,胥芳.MCS-51 单片机原理及嵌入式系统应用[M].西安:西安电子科技大学出版社,2007.P268-273

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

word文档 可自由复制编辑

附 录

附录1:基于单片机的温度显示系统设计原理图

附录2:基于单片机的温度显示系统设计PCB图

附录3:proteus仿真图

附录4:基于单片机的温度显示系统设计C语言程序清单

附录5:基于单片机的温度显示系统设计元器件目录表

word文档 可自由复制编辑

附录1:基于单片机的温度显示系统设计原理图

word文档 可自由复制编辑

附录2:基于单片机的温度显示系统设计PCB图

word文档 可自由复制编辑

附录3:proteus仿真图

word文档 可自由复制编辑

附录4:基于单片机的温度显示系统设计C语言程序清单

#include

#include

#define uchar unsigned char

#define uint unsigned int

sbit DQ=P3^6;

uchar

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

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

uchar CurrentT=0;

uchar Temp_Value[]={0x00,0x00};

uchar Display_Digit[]={0,0,0,0};

bit DS18B20_IS_OK=1;

void Delay(uint x)

{

while (--x);

}

uchar Init_DS18B20()

{

uchar status;

DQ=1;Delay(8);

DQ=0;Delay(90);

DQ=1;Delay(8);

status=DQ;

Delay(100);

DQ=1;

return status;

}

uchar ReadOneByte()

{

uchar i,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;

word文档 可自由复制编辑

code

}

return dat;

}

void WriteOneByte(uchar dat)

{

uchar i;

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

{

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

}

}

void Read_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;

}

}

void Display_Temperature()

{

uchar i;

uchar t=150;

uchar ng=0, np=0;

char Signed_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]++;

word文档 可自由复制编辑

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;

}

}

}

void main(void)

{

Read_Temperature();

word文档 可自由复制编辑

Delay(50000);

Delay(50000);

while(1)

{

Read_Temperature();

if(DS18B20_IS_OK)

{

Display_Temperature();

}

else

{

P0=P2=0x00;

}

}

}

word文档 可自由复制编辑

附录5: 基于单片机的温度显示系统设计元器件目录表

编号

(1)

(2)

(3)

(4)

(5)

(6)

(7)

(8)

(9)

(10)

(11)

(12)

(13)

(14)

元件名称

STC89C52 单片机

1kΩ电阻

10KΩ电阻

330Ω电阻

30uF电容

11.0592MHz晶振

发光二极管

七段共阴极数码管

10uf电容

排阻

DS18B20温度传感器

74LS245

复位按钮

4.7kΩ电阻

元件数量

1个

1个

1个

8个

2个

1个

8个

8个

1个

1个

1个

1个

1个

1个

word文档 可自由复制编辑

发布评论

评论列表 (0)

  1. 暂无评论