DS18B20温度测控.docx
- 文档编号:7495373
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:19
- 大小:258.27KB
DS18B20温度测控.docx
《DS18B20温度测控.docx》由会员分享,可在线阅读,更多相关《DS18B20温度测控.docx(19页珍藏版)》请在冰豆网上搜索。
DS18B20温度测控
《多点温度测控自动报警器》
设计报告
设计时间:
2012/12/18
班级:
应电11
(1)
姓名:
林伟涛
报告页数:
广东工业大学课程设计报告
设计题目__多点温度测控自动报警器_________
学院_信工_专业__应电___班级__11
(1)___
学号__3111002554__姓名__林伟涛__(合作者____号____)
成绩评定_______
教师签名_______
一,设计任务与要求
设计一个日常温度数字温度计,产品指标及技术要求:
①温度显示范围:
0℃~50℃;
②数字显示分辨率:
0.1℃;
③精度误差≤0.5℃;
④电路工作电源可在5~9V范围内工作.
二,设计方案及比较(设计可行性分析)
方案一:
通过一个单片机89C51控制两个温度传感器DS18B20,对两个温度传感器的数据进行分析处理,然后用液晶屏1602进行显示,然后单片机通过控制其他的外部设备进行温度报警显示。
如下面的框图说明:
方案二:
用LM35作为传感器,通过ICL7101对传感器得到的模拟信号转化为数字信号,因为7107芯片中已经有译码器,只需要对应端口接到共阳极的数码管上即可得到温度数值。
对比两个方案,我们可以看出有各自的优缺点,方案二相对方便简易,只需要对ICL7101的调节基准电压,便可以得到准确的温度。
方案一,虽说复杂,但是我们不难可以看出其具有明显的优势,首先多点测控,可以保证温度的可靠性,然后是自动报警功能,因而更加智能,更具有实用性。
因而选择了方案一。
三,系统设计的整体思路
应用的器件的清单如下:
89c51单片机
1块
1000μF电容
1个
1602液晶显示屏
1块
10μF电容
2个
晶振
1个
30pF电容
2个
DS18B20温度传感器
2个
10K欧姆电阻
3个
7805三端稳压管
1个
5K欧姆电阻
2个
2K欧姆可调电位器
1个
200欧姆电阻
1个
LED灯
2个
10K排阻
1个
PCB板
1块
插槽
若干
主要器件介绍:
89C51:
是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器,89C2051是它的一种精简版本。
89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
单片机的端口介绍:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管口第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
口管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
7805:
三端稳压IC来组成稳压电源所需的外围元件极少,电路内部还有过流、过热及调整管的保护电路,使用起来可靠、方便,而且价格便宜。
该系列集成稳压IC型号中的78或79后面的数字代表该三端集成稳压电路的输出电压,如7806表示输出电压为正6V,7909表示输出电压为负9V。
因为三端固定集成稳压电路的使用方便,电子制作中经常采用。
7805的常用应用电路为:
1602液晶显示器:
1602是眼下比较常用的液晶显示工具,应用并行传输,因而具有明显的显示速度的优势。
操控也比较方便,控制各个端口的脉冲控制液晶的显示,具体端口如下:
引脚
符号
功能说明
1
VSS
一般接地
2
VDD
接电源(+5V)
3
V0
液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
4
RS
RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
5
R/W
R/W为读写信号线,高电平
(1)时进行读操作,低电平(0)时进行写操作。
6
E
E(或EN)端为使能(enable)端,
写操作时,下降沿使能。
读操作时,E高电平有效
7
DB0
低4位三态、双向数据总线0位(最低位)
8
DB1
低4位三态、双向数据总线1位
9
DB2
低4位三态、双向数据总线2位
10
DB3
低4位三态、双向数据总线3位
11
DB4
高4位三态、双向数据总线4位
12
DB5
高4位三态、双向数据总线5位
13
DB6
高4位三态、双向数据总线6位
14
DB7
高4位三态、双向数据总线7位(最高位)(也是busyflag)
15
BLA
背光电源正极
16
BLK
背光电源负极
1,电源部分
本设计是通过一个变压器对220V的交流电转化为16V的直流电压引入电路系统中,因为电路中主要用到的是5V的电压值,因而我们还需要对其进行处理。
图中C1是一个1000U的滤波电容,C2是一个10U的高频滤波电容,应用三端稳压管7805将电压转化为5V然后进行输出滤波和指示灯的供电。
SW是自锁式开关。
2,传感器电路部分
原理图如下所示:
3,控制部分
4,显示部分
四,工作原理分析
传感器DS18B20是一个数字芯片,初始化后通过传感器的ROM操作命令,可以让传感器执行各种命令,如下图所示
我们控制18B20的端口,写入读ROM,传感器便会输出温度数据,数据的格式如下:
数据分两个字节输出,高位的前五位是符号位,S是1表示温度为负值,为0表示温度是正值,单片机收到数据后进行处理,除了符号位的数值我们乘以0.0625便可得到相应的温度。
我们要精确到小数电后一位,因而定义温度数据类型为浮点型,对数值乘以10加上0.5可以对小数点后两位进行四舍五入,这时候的数值是实际温度的100倍,因为显示的时候,原十位的数值是对一百求商,个位是对对一百求余后对十求商,而个位是对一百求余在对十求余,最后对十求余。
写程序对两个点所求的温度进行平均值计算,再用IF语句判断温度范围,报警形式如:
温度范围
1602液晶显示
警示灯
低于20摄氏度
显示:
“cold
亮
在20~27摄氏度
显示:
“good
不亮
高于27摄氏度
显示:
“warm
亮
另外单片机还设了一个外部中断,当按键按下时,液晶屏便会显示如下:
“Thetempertureisquitecold/good/warm”这样使温度显示更加的人性化了,
五,系统电路设计及参数计算,主要元器件介绍及选择以及数据指标的测量
温度显示精确正常。
六,PCB的原理图和PCB图
PCB的原理图
1,用ALTIUMDESIGNER画电路图,然后画新的封装,编译成PCB图,PCB图为如下所示:
2,将图导出后打印在热转印纸上,热转印在覆铜板上
3.,用氯化铁溶液进行腐蚀,没有被墨覆盖的铜便会被腐蚀
4,用天那水洗去表面的墨即可得到
5,用小电钻在覆铜板上打孔,插器件,焊接
6,调试电路,即可。
七,程序调试
延时语句:
voidDelay_1ms(uinti)
{
ucharx,j;
for(j=0;j
for(x=0;x<=148;x++);
}
voiddelay(uintN)
{
inti;
for(i=0;i } 1602的控制语句: voidenable(uchardel) { P0=del; RS=0; RW=0; E=0; delay1(); E=1; delay1(); } voidwrite(uchardel) { P0=del; RS=1; RW=0; E=0; delay1(); E=1; delay1(); } voidL1602_init(void) { enable(0x02); enable(0x38); enable(0x0c); enable(0x06); enable(0xd0); } 温度传感器18B20控制语句 ucharReset(ucharDQX) { uchardeceive_ready; DQX=0; delay(29); DQX=1; delay(3); deceive_ready=DQX; delay(25); return(deceive_ready); } ucharread_bit(ucharDQX) { uchari; DQX=0; DQX=1; for(i=0;i<3;i++); return(DQX); } voidwrite_bit(ucharbit) { DQ=0;if(bit==1) DQ=1; delay(5); DQ=1; } ucharread_byte(void) { uchari,m,receive_data1; m=1; receive_data1=0; for(i=0;i<8;i++) { if(read_bit()) { receive_data=receive_data+(m< } delay(6); } return(receive_data); } voidwrite_byte(ucharval) { uchari,temp; for(i=0;i<8;i++) { temp=val>>i; temp=temp&0x01; write_bit(temp); delay(5); } } 外部中断按键语句 voidkeycan() { if(key==0) { Delay_1ms(10); if(key==0) { enable(0x80); for(j=0;j<16;j++) { write(table33[j]); } enable(0xc0); for(j=0;j<10;j++) { write(table44[j]); } com=1000;while(com>0)com--; enable(0x80); for(j=0;j<16;j++) { write(table55[j]); } enable(0xc0); for(j=0;j<16;j++) { write(table55[j]); } while(! key); } } } 温度获取语句 voidtime0()interrupt1 { TH0=(65536-45872)/256; TL0=(65536-45872)%256; u++; if(u>=20) { u=0; Reset(); write_byte(0xcc); write_byte(0x44); Reset(); write_byte(0xcc); write_byte(0x33); TMPL1=read_byte(); TMPH1=read_byte(); ttemp=TMPL1/16+TMPH1/16; } 主函数 voidmain() { while (1) { TMOD=0X01; TH0=(65536-45872)/256; TL0=(65536-45872)%256; EA=1; ET0=1; TR0=1; bb=ttemp1; cc=ttemp2; aa=(bb+cc)/2; temp1=ttemp1*10+0.5; temp2=ttemp2*10+0.5; temp3=(temp1+temp2)*0.5; pangbian(); L1602_init(); enable(0x82); write(table[temp1/100]); enable(0x83); write(table[temp1%100/10]); enable(0x85); write(table[temp1%100%10]); enable(0x8c); write(table[temp2/100]); enable(0x8d); write(table[temp2%100/10]); enable(0x8f); write(table[temp2%100%10]); enable(0xc3); write(table[temp3/100]); enable(0xc4); write(table[temp3%100/10]); enable(0xc6); write(table[temp3%100%10]); keycan(); if((aa>=27)|(aa<=20)) { D1=0; if(aa>=27) { enable(0xcb); for(j=0;j<4;j++) { write(table22[j]); } } if(aa<=20) { enable(0xcb); for(j=0;j<4;j++) { write(table00[j]); } } } else { D1=1; enable(0xcb); for(j=0;j<4;j++) { write(table11[j]); } } } } } 八,结论 通过这个课程设计我学到了很多的东西,把我以前学到的东西很多应用了出来,特别是单片机的控制这一块我收获颇丰,比如写程序的习惯,比如温度的获取应用定时器,每一秒进入一次中断获取一次温度这样所得到的温度显示就会更加灵敏,还有就是在设计电子的整个流程方面也学到了很多东西,知道了一个设计的完成的步骤,如何完成方案,如何写报告,如何完成设计的参数检测,这些都有了进一步的了解,现在在学STM8这一块,希望多点进步。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DS18B20 温度 测控