1、信电学院电子信息工程专业 CDIO 二级项目项目设计说明书(2012/2013 学年第二学期)项目名称 : 基于热敏电阻的数字温度计设计 专业班级 : 小组成员 : 指导教师 : 吴开兴 马永强 马小进 刘会军 设计周数 : 4 月 8 号6 月 15 号 设计成绩 : 2011 年 6 月 15 日项目分工表:目录1 概述22 总体设计方案22.1 设计目的.22.2 设计任务23 系统的硬件设计及实现 33.1 系统各模块介绍33.2 电路系统设计114 系统软件设计.115 设计总结.186 参考文献.191、概述随着以知识经济为特征的信息化时代的到来人们对仪器仪表的认识更加深入,温度作
2、为一个重要的物理量,是工业生产过程中最普遍,最重要的工艺参数之一。随着工业的不断发展,对温度的测量的要求也越来越高,而且测量的范围也越来越广,对温度的检测技术的要求也越来越高,因此,温度测量及其测量技术的研究也是一个很重要的课题。 目前温度计种类繁多,应用范围也比较广泛,大致可以包括以下几种方法: 1)利用物体热胀冷缩原理制成的温度计 2)利用热电效应技术制成的温度检测元件 3)利用热阻效应技术制成的温度计 4)利用热辐射原理制成的高温计 5)利用声学原理进行温度测量 本系统的温度测量采用的就是热阻效应。温度测量模块主要为温度测量电桥,当温度发生变化时,电桥失去平衡,从而在电桥输出端有电压输出
3、,但该电压很小。将输出的微弱电压信号通过 OP07 放大,将放大后的信号输入 AD 转换芯片, 进行 A/D 转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来。2 总体设计方案2.1 设计目的通过本次 CDIO 利用 51 单片机及热敏电阻设计一个温度采集系统,通过学过的单片机和数字电路及面向对象编程等课程的知识设计。要求的功能是能通过串口将采集的数据在显示窗口显示,采集的温度达一定的精度。2.2 设计任务1、根据技术要求和现有开发环境,分析设计题目2、设计系统实现方案3、设计并绘制电路原理图4、画出功能模块的程序流程图5、使用汇编语言(或 C 语言)编写实现程序6
4、、结合硬件调试、修改并完善程序;3 系统的硬件设计及实现3.1 系统各模块介绍3.1.1 AT89C52 芯片介绍( 1) 主 要 性 能 :与 MCS-51 单 片 机 产 品 兼 容 、 8K 字 节 的 在 系 统 可 编 程 Flash 存 储 器 、 一 千 次 的 擦写 周 期 、 全 静 态 操 作 : 0Hz 24MHz、 三 级 加 密 程 序 存 储 器 、 三 十 二 个 可 编 程 I/O 口线 、 三 个 16 位 定 时 器 /计 数 器 以 及 八 个 中 断 源 、 全 双 工 UART 串 行 通 道 、 低 功 耗 空 闲和 掉 电 模 式 、 掉 电 后
5、中 断 可 唤 醒 、 看 门 狗 定 时 器 、 双 数 据 指 针 、 掉 电 标 识 符 。( 2) 功 能 特 性 :AT89C52 是 一 种 低 功 率 消 耗 、 性 能 较 高 CMOS8 位 微 控 制 器 , 具 备 8K 在 系 统 可 编 程Flash 存 储 器 。 使 用 Atmel 公 司 高 密 度 非 易 失 性 存 储 器 高 技 术 制 作 , 可 以 与 工 业80C51 产 品 指 令 和 引 脚 全 部 兼 容 片 上 。 Flash 能 够 允 许 程 序 存 储 器 在 系 统 可 编 程 执 行 ,亦 适 合 于 常 规 编 程 器 。 在 单
6、 芯 片 上 , 拥 有 灵 巧 的 8 位 CPU 和 在 系 统 可 编 程 Flash, 使得 AT89C52 为 众 多 嵌 入 式 控 制 应 用 系 统 提 供 高 灵 活 、 超 有 效 的 解 决 方 案 。 AT89C52 具有 以 下 标 准 功 能 : 8k 字 节 Flash, 256 字 节 RAM, 32 位 I/O 口 线 , 看 门 狗 定 时 器 , 2个 数 据 指 针 , 三 个 16 位 定 时 器 /计 数 器 , 一 个 6 向 量 2 级 中 断 结 构 , 全 双 工 串 行 口 ,片 内 晶 振 及 时 钟 电 路 。 此 外 , AT89C5
7、2 可 降 低 到 0Hz 静 态 逻 辑 操 作 , 支 持 2 种 软 件 可抉 择 节 电 模 式 。 空 闲 模 式 时 , CPU 不 再 工 作 , 却 允 许 RAM、 定 时 器 /计 数 器 、 串 口 、 中断 继 续 工 作 。 掉 电 保 护 方 式 下 , RAM 内 容 被 保 留 下 来 , 振 荡 器 被 冻 结 , 单 片 机 所 有 工作 都 停 止 , 直 到 下一 个 中 断 开 始 或 者 有 硬 件 复 位 为 止 。图 1-1 AT89C52 管脚分布(3)管脚说明:VCC:供电电压,GND:接地。 P0 口:P0 口作为一个 8 位漏级开路双向的
8、 I/O 口,每脚可以吸纳 8TTL 门电流。当 P1 口的管脚第一次写 1 时,被视为输入高阻。P0 可以用于外部程序或者数据存储器,它可以被定义为数据或者地址的第八位。在 FIASH 编程时,P0 口被视为为原码输入口,当 FIASH 开始校验时,P0 输出原码,此时 P0 外部一定被拉高。P1 口:P1 口是内部提供的 8 位上拉电阻的双向 I/O 口,P1 口缓冲器能收到输出 4TTL 门电流。P1 口管脚写入 1 后,可作为输入,其管脚被内部上拉为高电平, P1 口被外部下拉为低电平的时候,将输出电流,这是由于内部上拉的原因。在 FLASH 编程和校验时,P1 口被认为是第八位地址接
9、收。 P2 口:P2 口是一个 8 位内部上拉电阻的双向 I/O 口,P1 口缓冲器可收到或者输出 4 个 TTL门电流,当 P2 口被写“1”时,其管脚被内部上拉为高电平,且作为输入。作为输入,P2 口的管脚将被外部拉低的时侯,将输出电流。这是由于内部上拉的原因。P2 口在用于外部程序存储器或者是 16 位地址外部数据存储器进行操作时,P2 口输出地址作为高八位。在给出地址“1”时,它有内部上拉的优点,当对外部八位地址数据存储器进行读写操作时,P2 口输出它的特殊功能寄存器上的内容。P2 口在 FLASH 编程和校验的时候,接收信号作为高八位地址信号和控制信号。 P3 口:P3 口管脚是 8
10、 个带内部上拉电阻的双向 I/O 口,P3 口缓冲器可接收输出 4 个 TTL门电流。当 P3 口写入“1”后,被内部上拉为高电平,并且作用于输入。作为输入,因为外部下拉为低电平,P3 口将输出电流(ILL),这是由于上拉的原因。 P3 口也可作为 AT89C51 的一些特殊功能口。P3 口管脚备选功能: P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断 0)P3.3 /INT1(外部中断 1)P3.4 T0(记时器 0 外部输入)P3.5 T1(记时器 1 外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3
11、 口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持 RST 脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储空间时,地址锁存允许的输出电平用于锁存地址的低位字节。在 FLASH 编程期之中,此引脚作用于输入编程脉冲。在平时,ALE 端以一定的频率周期输出正脉冲函数,此频率为振荡器频率的六分之一。因此它可用于对外部输出的脉冲或用于定时作用的目的。然而值得注意的是:每当用作外部数据存储的时候,它将跳过一个 ALE 脉冲。如想禁止 ALE 的输出可在 SFR8EH 地址上复位。此时, ALE 只是在执行 MOVX,MOVC 指令是 ALE 时才能够
12、起作用。此外,该引脚被略微拉高。若是微处理器在外部执行状态 ALE 为禁止,那么置位无效。PSEN:外部程序存储器的选通信号。在由外部程序存储空间取指期间,每个机器周期是两次 PSEN 才有效。但在访问外部数据存储器时,这两次有效的 PSEN 信号都将不能够实现。EA/VPP:当 EA 保持低电平时,不管是否有内部的程序存储空间,那么在此期间外部程序存储空间(0000H-FFFFH)。注意当加密方式是 1 时,EA 将内部定为 RESET;当 EA 端保持高电平时,此间内部程序存储空间。在 FLASH 编程期间,此引脚也可以用作施加 12V 编程电源。XTAL1:反向振荡放大器的输入及内部时钟
13、工作电路的输入。XTAL2:来自反向振荡器的输出。(4)复位电路:MCS-52 单片机复位电路是指单片机的初始化操作。单片机启运开始工作时,都需要先经过复位,其作用是使 CPU 和系统中其他配置器件处于一个确定的初始状态,并从这个状态开始执行命令。因而,复位是一个非常重要的操作方式。但单片机自己是不能自动执行复位的,必须配合恰当的外部电路才可以实现。复位功能:复位电路的基本功能:系统上电时提供复位功能,一直到系统电源稳定后,去除复位信号。为保险起见,电源稳定后必须经一定的延时才可以撤销复位的信号,以防电源开关或电源插头分-合过程中导致的抖动而对复位功能产生影响。单片机的复位是由外部的复位电路来
14、控制的。片内复位电路是通过复位引脚 RST 复位电路与一个斯密特触发器相连,斯密特触发器用来达到抑制噪声的目的,在每个机器周期它的输出由复位电路采样一次。复位电路通常运用上电自动复位以及按钮复位两种方式。单片机复位后的状态:单片机的复位操作使单片机达到初始化的状态,其中包括使得程序计数器 PC0000H,这说明程序从 0000H 地址开始运行。单片机工作后,片内 RAM 为任意值,运行中的复位操作不会更改片内 RAM 区中的数据,21 个特殊功能寄存器在复位之后的数据为确定值,见表 1。 值得注意的是,记住在复位后的一些特殊功能寄存器的主要状态,对于理解单片机的初态,减少相关的应用程序中的初始
15、化是非常必要的。 说明:表中符号*为随机状态;表 1-1 寄存器复位后状态表特殊功能寄存器 初始状态 特殊功能寄存器 初始状态ABPSWSPDPLDPHP0P3IPIE00H00H00H07H00H00HFFH*00000B0*00000BTMODTCONTH0TL0TH1TL1SBUFSCONPCON00H00H00H00H00H00H不定00H0*BPSW00H,表示选寄存器 0 组为工作寄存器组; SP07H,说明堆栈指针指向的是片内 RAM 07H 字节存储空间,依据堆栈操作的先加后压原则,第一个被压入的数据写入到08H 单元中;Po-P3FFH,则代表向各端口线都已经写入 1,此时,
16、各端口的作用既可用于输入又可用于输出 。IP00000B,则表明各个中断源是等级低的优先级; IE000000B,则表明各个中断均已经被关闭;系统复位是任何微机系统执行的初始化步骤,使控制芯片整体回到默认的硬件状态下。由 RESET 引脚来控制的 52 单片机复位,此引脚与高电平相连超过 24 个振荡周期后,52 单片机便可以进入芯片内部复位状态,并且可以在此状态下一直等待,一直至 RESET 引脚转为低电平以后,才校验 EA 引脚是高电平还是低电平,如果为高电平则运行芯片内部程序的代码,若为低电平则会执行外部程序的代码。在系统复位后 52 单片机将一些其内部的重要寄存器设置为特定的数值,至于
17、内部 RAM 的数据则保持不变。(5)晶振电路:晶振是晶体振荡器的简称,在电路方面它可以等效成一个电容和一个电阻并联再串联一个电容的二端口网络,电学上这个电路有两个谐振点,以频率的高低分把其中较高的频率称为并联谐振,较低的频率称为串联谐振。AT89C52 单片机内部有一个高增益反相放大器,用于构成振荡器。引脚 XTAL2 和 XTAL1分别是此放大器的输出端和输入端。作为反馈器件的片外晶体谐振器与该放大器一起构成一个自激振荡器。电容 C2 和 C1 和外接晶体谐振器一起构成并联谐振电路,接在放大器的反馈回路中。虽然对外接电容的值没有非常严格的要求,但震荡器频率的高低、震荡器的稳定性、起振的快速
18、性和温度的稳定性会由电容的大小影响。所以,此电路系统的晶体振荡器的值为 12MHz,电容的种类应尽量选择陶瓷电容,电容值大概 30F。在电路板焊接时,电容和晶体振荡器应尽可能安装得靠近单片机芯片,这样做是为了减少寄生电容,更好地保证震荡器可靠稳定地工作。负载电容值是晶振的一个重要的参数,为了得到晶振标称的谐振频率,我们可以选择与负载电容值相等的并联电容。3.1.2 ADC0804 芯片ADC0804 是用 CMOS 集成工艺制成的逐次比较型模数转换芯片。分辨率 8 位,转换时间100s,输入电压范围为 05V,增加某些外部电路后,输入模拟电压可为 5V。该芯片内有输出数据锁存器,当与计算机连接
19、时,转换电路的输出可以直接连接在 CPU 数据总线上,无需附加逻辑接口电路。ADC0804 芯片管脚如图 11.13.1 所示引脚名称及意义如下:图 1-2 ADC0804 芯片管脚VIN+、VIN-:ADC0804 的两模拟信号输出端,用以接收单极性、双极性和差模输入信号。DB7DB0:A/D 转换器数据输出端,该输出端具有三态特性,能与微机总线相接。AGND:模拟信号地。DGND:数字信号地。CLKIN:外电路提供时钟脉冲输入端。CLKR:内部时钟发生器外接电阻端,与 CLKIN 端配合可由芯片自身产生时钟脉冲,其频率 为 1.1/RC。CS:片选信号输入端,低电平有效,一旦 CS 有效,
20、表明 A/D 转换器被选中,可启动工作。WR:写信号输入,接收微机系统或其它数字系统控制芯片的启动输入端,低电平有效, 当 CS、WR 同时为低电平时,启动转换。RD:读信号输入,低电平有效,当 CS、RD 同时为低电平时,可读取转换输出数据。INTR:转换结束输出信号,低电平有效。输出低电平表示本次转换已完成 。该信号常作为向微机系统发出的中断请求信号。在使用时应注意以下几点:1.转换时序ADC0804 控制信号的时序图如图所示,由图可见,各控制信号时序关系为:当 CS 与 WR同为低电平时,A/D 转换被启动而在 WR 上升沿后 100s 模数完成转换,转换结果存入数据锁存器,同时 INT
21、R 自动变为低电平,表示本次转换已结束。如 CS、RD 同时来低电平,则数据锁存器三态门打开,数字信号送出,而在 RD 高电平到来后三态门处于高阻状态。2.零点和满刻度调节 ADC0804 的零点无需调整。其中 Vmax 是输入电压的最大值,Vmin 是输入电压的最小值。当输入电压与 VIN+值相当时,调整 VREF/2 端电压值是输出码为 FEH 或 FFH。3.参考电压的调节在使用 A/D 转换器时,为保证其转换精度,要求输入电压满量程使用,如输入电压动态范围较小,则可调节参考电压 VREF,以保证小信号输入时 ADC0804 芯片 8 位的转换精度。4.接地模数、数模转换电路中要特别注意
22、到地线的正确连接,否则干扰很严重,以致影响转换结果的正确性。A/D、D/A 及取样-保持芯片上都提供了独立的模拟地(AGND)和数字地(DGND)的引脚。在线路设计中,必须将所有的器件的模拟地和数字地分别相连,然后将模拟地与数字地仅在一点上相连接。地线的正确连接方法。3.1.3 PT100 热敏电阻pt100 是铂热电阻,它的阻值跟温度的变化成正比。PT100 的阻值与温度变化关系为:当 PT100 温度为 0时它的阻值为 100 欧姆,在 100时它的阻值约为 138.5 欧姆。它的工业原理:当 PT100 在 0 摄氏度的时候他的阻值为 100 欧姆,它的阻值会随着温度上升而成匀速增长的。
23、金属热电阻的电阻值和温度一般可以用以下的近似关系式表示,即Rt=Rt01+(t-t0)式中,Rt 为温度 t 时的阻值;Rt0 为温度 t0(通常 t0=0)时对应电阻值; 为温度系数。 半导体热敏电阻的阻值和温度关系为Rt=AeB/t中 Rt 为温度为 t 时的阻值;A、B 取决于半导体材料的结构的常数。相比较而言,热敏电阻的温度系数更大,常温下的电阻值更高(通常在数千欧以上) ,但互换性较差,非线性严重,测温范围只有-50300左右,大量用于家电和汽车用温度检测和控制。金属热电阻一般适用于-200500范围内的温度测量,其特点是测量准确、稳定性好、性能可靠,在程控制中的应用极其广泛。从电阻
24、随温度的变化来看,大部分金属导体都有这个性质,但并不是都能用作测温热电阻,作为热电阻的金属材料一般要求:尽可能大而且稳定的温度系数、电阻率要大(在同样灵敏度下减小传感器的尺寸) 、在使用的温度范围内具有稳定的化学物理性能、材料的复制性好、电阻值随温度变化要有间值函数关系(最好呈线性关系) 。3.2 电路系统设计3.2.1 电路设计框图3.2.2 系统仿真测试确定好方案后,用 Protues 软件搭建好系统电路,将写好的程序下载进仿真图中,运行结果如图所示图 3-1 系统仿真图4 系统软件设计4.1 软件设计流程图4.2 主要程序设计#include“at89X52.h“sbit LCD_RS
25、=P20;sbit LCD_RW =P21;sbit LCD_E =P22;sbit ADC_CS =P23;sbit ADC_WR =P36;sbit ADC_RD =P37;#define LCD_DATA P0unsigned char LcdBuf110=“;unsigned char code Bmp0018=0x06,0x09,0x09,0x06,0x00,0x00,0x00,0x00,0x06,0x09,0x10,0x10,0x10,0x09,0x06,0x00;void dellay(unsigned int h)while(h-); /0.01MSvoid WriteData
26、Lcd(unsigned char wdata)LCD_DATA=wdata;LCD_RS=1;LCD_RW=0;LCD_E=0;dellay(1000);LCD_E=1;void WriteCommandLcd(unsigned char wdata)LCD_DATA=wdata;LCD_RS=0;LCD_RW=0;LCD_E=0;dellay(1000);LCD_E=1;void lcd_init(void)LCD_DATA=0;WriteCommandLcd(0x38);dellay(1000);WriteCommandLcd(0x38);dellay(1000);WriteComman
27、dLcd(0x01);WriteCommandLcd(0x0c);void display_xy(unsigned char x,unsigned char y)if(y=1)x+=0x40;x+=0x80;WriteCommandLcd(x);void display_string(unsigned char x,unsigned char y,unsigned char *s)display_xy(x,y);while(*s)WriteDataLcd(*s);s+;void Write_CGRAM(unsigned char add,unsigned char *char_num)unsi
28、gned i;add=add0;i-);void delay1s()int i,j;for(i=1000;i0;i-);for(j=110;j0;j-);void convert()unsigned long value;char i;unsigned long res;int temp,temp2;int w;P1=0xff;ADC_RD=0;for(i=0;i= 0)for(i=6;temp0;i-)LcdBuf1i=temp%10+48;temp/=10;if(temp 0;i-)LcdBuf1i=w%10+48;w/=10; if(i=0i-;LcdBuf1i = -;i-; /* i
29、f(i=5)LcdBuf15 = 0;i -;LcdBuf14 = -;i-; */for(;i=0;i-)LcdBuf1i= ;for(i=0;i5;i+)LcdBuf1i=LcdBuf1i+1;if(LcdBuf14= )LcdBuf14=0; LcdBuf15=.;LcdBuf17=1;LcdBuf18=C;WriteCommandLcd(0x84);display_string(3,0,LcdBuf1);ADC_RD=1;ADC_WR=0;for(i=0;i10;i+)ADC_WR=1;delayms();main()unsigned char i;lcd_init();for(i=0
30、;i2;i+)Write_CGRAM(i,Bmp001i);ADC_CS=0;ADC_WR=0;for(i=0;i10;i+);ADC_WR=1;while(1)convert();delay1s();5 设计总结在这次实研过程中我们根据已经掌握的理论基础,结合实践,经历几个月的努力,终于完成的单片机数字温度计的设计,该温度计已成功通过测试,运行良好。在整个设计过程中,我们发挥团队精神,分工合作,充分发挥人的主观能动性,自主学习,学到了许多没学到的知识,较好的完成了作品,达到了预期的目的。完了最初的设想。系统调试以程序为主。硬件调试比较简单,首先检查电路的连接是否正确,然后用万用表测试或通电检
31、测。软件调试可以先编写显示程序并进行硬件的正确性检验,然后分别进行主函数、DS18B20 复位函数、DS18B20 写字节函数、DS18B20 读字节函数、温度计算转换函数、显示函数的等程序的编程及调试。由于 DS18B20 与单片机采用串行数据传送,因此,对 DS18B20 进行读写编程时必须严格的保证读写时序,否则将无法读取测量结果。本程序采用单片机 C 语言编写,用 Keil4 编译器编程调试。软件调试到能显示到温度值,而且在有温度变化时(例如用手去接触) ,显示温度发生改变就基本完成。尽管我的设计还存在一定缺陷,但这不是最重要的,最重要的是我学到了很多东西,首先我对单片机的应用有了进一
32、步了解,单片机有很多系列,怎样来选者适合自己工作需要的单片机很重要。对单片机的编程是整个设计中最重要的一个部分,设计中我们使用的是 C 语言对单片机进行编程,让我们对单片机 C 语言的认识有了进一步的提高。再者,经过这次设计,让我们对思考问题的方法有了新的认识,刚刚开始做的时候我们真的比较茫然,因为当时我们都不是很清楚该做什么、怎么做,后来通过查找资料,借鉴别人的设计思路,将别人的思想融会贯通,终于实现的自己的设计方案。现在我意识到无论自己在做什么都要清楚自己的目的,清楚自己的目的后,并不一定要按照前人的思想去完成自己的任务,自己完全可以按照自己的思想去做,尽管可能到最后发现自己失败了,失败并
33、不是最可怕的,因为它总能让你认识到或学到些什么。脚踏实地,认真严谨,实事求是的学习态度,不怕困难、坚持不懈、吃苦耐劳的精神是我在这次设计中最大的收益。我想这是一次意志的磨练,是对我实际能力的一次提升,也会对我们未来的学习和工作有很大的帮助。6 参考文献1温度传感器和一线总线协议.林继鹏.传感器技术.20022单总线数字温度传感器的自动识别技术 .罗文广.电子产品世界.20023单片机基础实用教程.尹念东.中国地质大学出版社. 20054数字电路与数字电子技术. 岳怡. 西北工业大学出版社. 2004 5单片级高级语言 C51 应用程序设计. 徐爱钧.电子工业出版社. 2001项目设计评 语项目设计成 绩指导教师(签字) 年 月 日