资源描述
单片机课程设计说明书 题 目: 温度检测系统设计 系 部: 专 业: 班 级: 学生姓名: 学 号: 指导教师: 2015年 12 月 14 日目 录1 设计任务与要求11.1 设计任务11.2 设计要求12 设计方案12.1 设计思路12.2 单片机STC89C52RC22.2.1 单片机STC89C52RC功能介绍22.2.2 STC89C52RC管脚介绍2 2.2.3 STC89C52RC单片机器件参数32.3 温度传感器DS18B2032.3.1 DS18B20的主要特性32.3.2 DS18B20的外形和内部结构32.4 液晶显示器LCD160242.4.1 液晶显示器LCD1602功能介绍4 2.4.2 LCD1602管脚介绍53 硬件电路设计5 3.1 系统框图6 3.2 最小的单片机系统63.2.1 时钟电路6 3.2.2 复位电路6 3.3 温度检测系统设计7 3.4 液晶显示电路设计74 主要参数计算与分析85 软件设计85.1 整体系统分析85.2 程序流程图96 proteus软件仿真107 实物制作117.1 器材清单117.2 最小系统板制作127.3 温度检测系统电路板制作127.4 温度检测展示127.5 焊接点展示137.6 作品检查138 结论14附录15参考文献201 设计任务与要求11 设计任务 利用电阻、瓷片电容、电解电容、12MHz晶振、STC89C52单片机、DS18B20温度传感器、液晶显示器、1P杜邦线彩色、排针、最小系统板、电位器、洞洞板等,完成一个温度检测系统。 1、采用单片机及温度传感器设计温度检测系统; 2、温度检测结果采用液晶显示器输出; 3、必须具有上电自检功能及外接电源,公共地线接口。1. 2 设计思路 1、熟悉此电路工作原理。 2、掌握组装与调试方法。 3、画出Proteus原理图,PCB图。 4、用Proteus仿真。 5、测量范围099摄氏度,精度误差小于1摄氏度。 6、一份设计说明书。 7、做出所设计的系统的实物。2 设计方案2. 1 设计方案 由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以可以采用温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。 故针对上述现象,本文设计了一种由单片机控制的温度采集与显示系统,它以STC89C52单片机为核心,采用温度传感器DS18B20实现对温度信号的采集以及运用LCD1602液晶显示器来显示数据。在温度信号的采集方面,采用DS18B20型温度传感器,与传统的热敏电阻相比,它能够直接读出被测温度,并可根据实际要求通过简单的编码实现912位的数字式读数方式,可在-50300范围内显示数据,在-10+85时精度为0.5。2.2 单片机STC89C52RC2.2.1 单片机STC89C52RC功能介绍 STC89C52RC是STC生产的单时钟/机器周期(1T)的单片机,是高速、低功耗、超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。2.2.2 STC89C52RC管脚介绍STC89C52RC单片机,选用PDIP封装。管脚如图3-1所示:图2-1 PDIP封装的STC89C52 单片机的引脚功能说明: 1、电源引脚 VCC(40 脚):电源端,工作电压为5V。 GND(20脚): 接地端。 2、时钟电路引脚XTAL1(19 脚)和XTAL2(18 脚)。 3、复位 RST(9 脚)。 4、输入输出(I/O)引脚 P0.0-P0.7(39脚-32脚):输入输出脚,称为P0 口,是一个8 位漏极开路型双向I/O 口,内部不带上拉电阻。 P1.0-P1.7(1脚 - 8脚):输入输出脚,称为P1 口,是一个带内部上拉电阻的8 位双向I/0 口。 P2.0-P2.7(21脚28脚):输入输出脚,称为P2 口,是一个带内部上拉电阻的8 位双向I/O 口。 P3.0-P3.7 (10脚17脚):输入输出脚,称为P3 口,是一个带内部上拉电阻的8 位双向I/O 口。P3 端口具有复用功能。 2.2.3 STC89C52RC单片机器件参数 1、增强型8051单片机,6 时钟/机器周期和12 时钟/机器周期可以任意 选择,指令代码完全兼容传统8051。 2、工作电压:5.5V3.3V(5V单片机)/3.8V2.0V(3V 单片机)。 3、工作频率范围:040MHz,相当于普通8051 的080MHz,实际工作 频率可达48MHz 4、用户应用程序空间为8K字节。 5、片上集成512 字节RAM。 6、通用I/O 口(32 个),复位后为:P0/P1/P2/P3 是准双向口/弱上拉, P0 口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为 I/O 口用时,需加上拉电阻。 7、ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无 需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程 序,数秒即可完成一片 8、具有EEPROM 功能。 9、共3 个16 位定时器/计数器。即定时器T0、T1、T2。 10、外部中断4 路,下降沿中断或低电平触发电路,Power Down 模式可 由外部中断低电平触发中断方式唤醒。 11、通用异步串行口(UART),还可用定时器软件实现多个UART。 12、工作温度范围:-40+85(工业级)/075(商业级)。 13、PDIP封装。2.3 温度传感器DS18B20 DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有LTM8877,LTM8874等等。主要根据应用场合的不同而改变其外观。2.3.1 DS18B20的主要特性 1、适应电压范围更宽,电压范围:3.05.5V,在寄生电源方式下可由数 据线供电。 2、独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。 3、 DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。 4、DS18B20在使用中不需要任何外围元件,全部 传感元件及转换电路集成在形如一只三极管的集成电路内。 5、温范围-55+125,在-10+85时精度为0.5。 6、可编程 的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温。2.3.2 DS18B20的外形和内部结构 DS18B20内部结构主要由四部分组成:64位光刻ROM 、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的外形及管脚排列如图3-2所示:图2-2 温度传感器DS18B20 DS18B20引脚定义: (1)GND为电源地; (2)DQ为数字信号输入/输出端; (3)VDD为外接供电电源输入端(在寄生电源接线方式时接地)。2.4 液晶显示器LCD16022.4.1 液晶显示器LCD1602功能介绍 1602液晶显示器也叫1602字符型液晶显示器,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。如图3-3所示:图2-3液晶显示器LCD16022.4.2 LCD1602管脚介绍LCD1602采用标准的16脚接口,如图3-3所示,其中从左到右为1-16脚: 第1脚:GND为电源地 第2脚:VCC接5V电源正极 第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。 第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。 第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。 第6脚:E(或EN)端为使能(enable)端,高电平(1)时读取信息,负跳变时执行指令。 第7-14脚:D0D7为8位双向数据端。第15-16脚:空脚或背灯电源,15脚背光正极,16脚背光负极。2.4.3 LCD1602主要特性 1、3.3V或5V工作电压,对比度可调。 2、内含复位电路。 3、提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能。 4、有80字节显示数据存储器DDRAM。 5、内建有192个5X7点阵的字型的字符发生器CGROM。6、8个可由用户自定义的5X7的字符发生器CGRAM。3 硬件电路设计3.1 系统框图温度检测系统由USB接口电源,DS18B20温度传感器组成的温度检测模块,STC89C52单片机组成的核心电路,复位电路、时钟电路及液晶显示器组成的显示电路构成。如图3-4所示:STC89C52单片机时钟电路模块复位电路模块LCD1602 显示模块 DS18B20 温度检测模块电源模块图3-1 系统框图3.2 最小的单片机系统单片机最小系统以AT89C52RC为核心,外加时钟电路和复位电路,电路结构简单,抗干扰能力强,成本相对较低,非常符合本设计的所有要求。3.2.1 时钟电路时钟电路在单片机的外部通过XTAL1,XTAL2这两个引脚跨接晶体振荡器和微调电容,构成稳定的自激振荡器。本系统采用的为12MHz的晶振,一个机器周期为1us,C1、C2为22pF。如图3-5所示图3-2 时钟电路仿真图3.2.2 复位电路复位电路分为上电自动复位和按键手动复位,RST引脚是复位信号的输入端,复位信号是高电平有效。上电自动复位通过电容C3和电阻R1来实现。如图3-6所示:图3-3 复位电路原理图 按键手动复位是复位键来实现的,上图3-6中未添加复位键,复位键可添加在正5V电源与单片机RST管脚之间。3.3 温度检测系统设计DS18B20采用单线进行数据传输,第2管脚外接一个4.7k上拉电阻与单片机的P3.6口相连进行数据的双向传输,第3管脚外接正5V电源,第1管脚接地。如图3-7所示:图3-4 温度检测仿真图 外部电源供电方式是DS18B20的最佳工作方式,工作温度可靠,抗干扰能力强,电路也简单,并且可以开发出稳定可靠的多点温度监控系统。3.4 液晶显示电路设计LCD1602液晶显示屏采用标准的16脚接口,VSS管脚接地,VDD管脚接正5V电源,VEE管脚接电位器RV1,RS管脚外接单片机的P1.1口,RW管脚接地,E管脚外接单片机的P1.2口,D0-D7管脚分别接单片机的P2.0-P2.7口,仿真图未标识出的A、K管脚为背光灯电源管脚,分别接正5V电源和地。如图3-8所示: 图3-5液晶显示电路原理图液晶显示器虽然加了驱动电路,但并不发光,液晶显示器发出来的光是由背光发出的,灯管的特性类似于家用日光灯,工作时需要高压。这部分电路通常称为高压背光电路。或叫高压背光驱动电路。液晶显示器所消耗的电能基本全是由背光消耗。相对而言,这部分电路工作在高压大电流下,很容易出现故障,液晶显示器的自然故障大多数是这个部分出现了电路故障。4 主要参数计算与分析温度显示一共 2 个字节,LSB 是低字节,MSB 是高字节,其中 MSB 是字节的高位,LSB 是字节的低位。大家可以看出来,二进制数字,每一位代表的温度的含义,都表示出来了。其中 S表示的是符号位,低 11 位都是 2 的幂,用来表示最终的温度。DS18B20 的温度测量范围是从-55 度到+125 度,而温度数据的表现形式,有正负温度,寄存器中每个数字如同卡尺的刻度一样分布。如表一所示:TEMPERATUREDIGITAL OUTPUT(Binary)DIGITAL OUTPUT(Hex)+125度0000 0111 1101 000007D0h+25.0625度0000 0001 1001 00010191h+10.125度0000 0000 1010 001000A2h+0.5度0000 0000 0000 10000008h0度0000 0000 0000 00000000h-0.5度1111 1111 1111 1000FFF8h-10.125度1111 1111 0101 1110FF5Eh-25.0625度1111 1110 0110 1111FF6Fh-55度1111 1100 1001 0000FC90h表一 实际温度对照表二进制数字最低位变化 1,代表温度变化 0.0625 度的映射关系。当 0 度的时候,那就是0x0000,当温度 125 度的时候,对应十六进制是 0x07D0,当温度是零下 55 度的时候,对应的数字是 0xFC90。反过来说,当数字是 0x0001 的时候,那温度就是0.05,达到了设计要求。5 软件设计5.1 整体系统分析温度检测系统由温度及中断初始化,温度检测,温度输入处理,温度显示等几部分模块组成。如图5-1所示: 图5-1 软件设计5.2 程序流程图程序流程图包括:开始后先进行各个模块的初始化,然后再进行温度(数据)的采样处理,最后由液晶显示器输出温度。如图5-2所示:开始单片机开始初始化LCD显示初始化中断初始化DS18B20初始化 DS18B20进行温度采集LCD显示实时温度等待图5-2 程序流程图6 Proteus软件仿真温度检测系统设计的 Proteus原理图设计,找到12MHz晶振、STC89C52单片机、DS18B20温度传感器、液晶显示器等器件,并用线进行连接,注意电源与地。如图6-1所示:图6-1 温度检测系统仿真图 加载程序液晶屏显示温度。如图6-2所示:图6-2 温度检测系统模拟运行 通过调整DS18B20中的“+”“-”即可改变显示数值。7 实物制作7.1 器材清单 实物制作用到的器件有以下几种,如表二所示: 名称封装型号参数数量瓷片电容直插30PF2石英晶体直插11.0592MHZ1电阻直插1/4W10K1电解电容直插22UF/16V1CPU双列直插STC89C52RCHD1CPU座双列直插DIP-401电阻直插1/4W4.7K1温度传感器直插DS18B201电位器直插3296W-10310K1液晶显示器LCD160211P杜邦线彩色母对母两头插好杜邦头孔对孔40根一排单根长度20cm30针排针直插脚距2.54高111X40单排插针30线最小系统板1洞洞板9X7CM单面1表二 温度检测单片机元器件明细表7.2 最小系统板制作 焊接最小系统板,把电容、极性电容、12Mhz晶振、电阻、排针、底座插到最小系统板上,因为背面电路都已连接好,只需在各个位置焊上个元器件即可。实物图如图7-1所示:图7-1 最小系统电路实物图7.3 温度检测系统电路板制作DS18B20焊接时应注意1,2,3脚,电路板最右面焊排针,以便输入信号。输入程序前用杜邦线将各个模块进行连接。实物图如图7-2所示:图7-2 温度检测系统电路实物图7.4 温度检测展示室内温度测量如图7-3所示:图7-3 室温 用手指捏住DS18B20一段时间,再次进行温度的测量。如图7-4所示:图7-4 手指加热7.5 焊接点展示每个焊点以方正,不带刺,均匀为好。当焊好电路后,仔细检查焊点质量与是否导通。如图7-5所示:图7-5 焊接点展示7.6 作品检查 1、首先按照仿真图将实物焊接,注意焊接的质量,不要出现虚焊等现象。 2、通电观察现象。 3、通电后无反应。 4、将单片机换一块最小系统板,检查是否原来最小系统板有问题及单片机是否有问题。 5、液晶显示器的显示和仿真是否有不同。 6、检查单片机引脚与液晶显示器连接的顺序是否正确.程序是否匹配。 7、液晶显示器不亮或亮的很暗。 8、检查线路的正负极是否接反,检查限流电阻阻值是否正确,检查是否有断路现象。当焊好电路后通电之后,发现电路不亮,检查了一下单片机向外的接口,虚焊了个地方,重新焊好后,接入液晶显示器,发现有一组液晶显示器不亮,原因是未连接背光电路,重新连接后,通电,试验成功。8 结论 本系统充分利用了STC89C52RC芯片的I/O引角。系统统采用MSC-51系列单片机为中心器件来设计温度检测系统,实现了能根据实际温度通过单片机芯片的P2口控制液晶显示器的显示;系统设计简便、实用性强、操作简单、程序设计简便。系统不足之处在于电路18B20易损坏、以及液晶显示不明显等。由于本设计涉及到的知识面比较广,再加上本人在相关领域知识的缺乏,所以本设计的性能指标还是有待改善的,并让我明白了仿真和真实动手是具有差距的,想的和做的并不一样。要特别注重细节,制作实物时出现液晶屏不显示故障,当时只认为是程序或焊接有问题,最后才发现只是电位器没调节好。这次课程设计,使我对所学的知识与技能、分析和解决问题的能力进行了可贵的锻炼,使我深刻领会了单片机的基本原理以及了解到单片机应用系统开发过程的艰难。在常用编程设计思路技巧的掌握方面都向前迈了一大步。通过这次的课程设计,我充分意识到了自己所学的东西还是非常有限的,明确了以为要努力的方向,不能只学习课本上的理论知识,还要了解一些书本上无法学到的东西,为自己的以后奠定了一定的基础。 附录:C语言程序:#include#include#define uchar unsigned char #define uint unsigned int#define LCDIO P2 /1602数据口sbit DQ=P36;/ds18b20与单片机连接口sbit rs=P11; /1602数据命令选择引脚/sbit rd=1;/读写选择 sbit lcden=P12;/1602选通引脚float f_temp; /浮点型温度值 uint tvalue;/温度值uchar tflag;uchar code table=The temperature ; /每行显示16个字符uchar code table1=is: 000.0C wfu;uchar data disdata5;void delay(uint z)/短延时uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void write_com(uchar com)/1602写命令子程序rs=0;/RS是数据命令选择短,高电平写数据,低电平写命令/rd=1; lcden=0;/1602选通端,高电平选通,低电平禁止P2=com;delay(5);lcden=1;delay(5);lcden=0;void write_date(uchar date)/1602写数据子程序rs=1;/RS是数据命令选择短,高电平写数据,低电平写命令/rd=1;/?lcden=0;/1602选通端,高电平选通,低电平禁止P2=date;delay(5);lcden=1;delay(5);lcden=0;void init()/1602初始化程序uchar num;lcden=0;write_com(0x38);/0011 1000B,功能模式设置,设置为8为数据口,两行显示,5*7点阵write_com(0x0c);/0000 1011B,显示开及光标设置,关显示,显示光标,光标闪烁write_com(0x06);/0000 0110B,显示光标移动设置,读或写一个字符,地址指针减一且光标减一,写一个字符屏幕显示不移动write_com(0x01);/0000 0001B,显示清屏,数据指针和所有显示清屏write_com(0x80);/1000 000B,关闭显示delay(5);write_com(0x80);/1000 000B,设置为2行显示,写入第一行字符的地址,第一行地址是00-2Ffor(num=0;num16;num+) write_date(tablenum);/写入第一行数据delay(5);write_com(0x80+0x40);/1100 0000B,设置为2行显示,写入第二行字符的地址,第而行地址是40-67for(num=0;num0;i-) DQ = 0; /给脉冲信号dat=1;DQ = 1; /给脉冲信号if(DQ)dat|=0x80;delay_18B20(10);return(dat);void ds1820wr(uchar wdata)/*写数据*/unsigned char i=0;for (i=8; i0; i-) DQ = 0;DQ = wdata&0x01;delay_18B20(10);DQ = 1;wdata=1;read_temp()/*读取温度值并转换*/uchar a,b;ds1820rst(); ds1820wr(0xCC);/跳过ROM_nop_();/ds1820wr(0x4E);/写EEPROM,发出向内部RAM的3、4 字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据/ ds1820wr(0x00);/Th/ds1820wr(0x00);/Tlds1820wr(0x7f);/12 bits温度分辨率x1f, 0x3f, 0x5f ,0x7f温度读数分辨率分别对应0.5, 0.25, 0.125 ,0.0625 /ds1820wr(0xcc); /跳过读EPROM序列 /ds1820wr(0x48); 将RAM 中第3 、4 字节的内容复制到EEPROM中ds1820rst(); ds1820wr(0xcc);/*跳过读序列号*/_nop_();ds1820wr(0x44);/*启动温度转换*/ds1820rst(); ds1820wr(0xcc);/*跳过读序列号*/ ds1820wr(0xbe);/*读取温度*/ a=ds1820rd();b=ds1820rd();tvalue=b;tvalue=8;tvalue=tvalue|a;if(tvalue0?0.5:-0.5);return(tvalue);void ds1820disp()/温度值显示 uchar flagdat; disdata0=tvalue/1000+0x30;/百位数 disdata1=tvalue%1000/100+0x30;/十位数 disdata2=tvalue%100/10+0x30;/个位数 disdata3=tvalue%10+0x30;/小数位 if(tflag=0) flagdat=0x20;/正温度不显示符号 else flagdat=0x2d;/负温度显示负号:- if(disdata0=0x30) disdata0=0x20;/如果百位为0,不显示 if(disdata1=0x30) disdata1=0x20;/如果百位为0,十位为0也不显示 write_com(0x80+0x44); /1100 0000B,设置为2行显示,写入第二行字符的地址,第而行地址是40-67 write_date(flagdat);/显示符号位 write_com(0x80+0x45); write_date(disdata0);/显示百位 write_com(0x80+0x46); write_date(disdata1);/显示十位 write_com(0x80+0x47); write_date(disdata2);/显示个位 write_com(0x80+0x48); write_date(0x2e);/显示小数点 write_com(0x80+0x49); write_date(disdata3);/显示小数位 write_com(0x80+0x4a); write_date(C);void main()init();read_temp();/读取温度ds1820disp();/显示while(1)read_temp();/读取温度ds1820disp();/显? 参考文献:1 吴黎明、王桂棠、洪添胜等. 单片机原理及应用技术 M . 北京: 科学出版社,2005.2 冯文旭. 单片机原理及应用 M . 北京: 机械工业出版社,2008.3 康华光. 电子技术基础M.北京:高等教育出版社,2010.4 张兰红、邹华等. 单片机原理及应用 M . 北京: 机械工业出版社,20125 李伯成. 基于MCS-51单片机的嵌入式系统的设计M.北京:电子工业出 版社,2004.6 楼然苗、李光飞. 单片机课程设计指导M.北京:北京航空航天大学出版 社,1997.
展开阅读全文