目
录
一、选题背景及研究意义 二、总体设计
2.1 控制部分
2.2 测量部分 2.3 显示部分
2.4 报警部分
三、硬件设计 四、软件设计 五、总结与展望
精品文库
一、选题背景及研究意义
温度是一种最基本的环境参数,人民的生活与环境的温度息息相 关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度 的测量,因此研究温度的测量方法和装置具有重要的意义。
温度是一个十分重要的物理量, 对它的测量与控制有十分重要的意 义。随着现代工农业技术的发展及人们对生活环境要求的提高,人们也 迫切需要检测与控制温度:如大气及空调房中温度的高低,直接影响着 人们的身体健康;粮仓温度的检测,防止粮食发霉,最大限度地保持粮 食原有新鲜品质,达到粮食保质保鲜的目的;工业易燃品的存放。 测温技术在生产过程中,在产品质量控制和监测以及节约能源等方面发 挥了着重要作用。本实验设计实现了工业测温基本功能,同时,在设计 实验过程中,运用到单片机、模电、数电、传感器和
知识进行综合设计的能力。
C++程序设计等知
识,这既能加强我们的理论知识与实践的结合,也能够提高我们应用交 叉学科
二、总体设计
总体设计框图:
显示部分
控制部分温度米集
欢迎下载 报警部分
2
精品文库
2.1控制部分
控制部分是采用单片机STC89C52
2.1.1 STC89C52 简介
STC89C52是一种带8K字节闪烁可编程可檫除只读存储器的低电 压,高性能COMOS的微处理器,俗称单片机。该器件采用 ATMEL高密 度非易失存储器制造技
术制造,与工业标准的 脚相兼容。
单片机总控制电路如下图4— 1:
DB9
O Q
5Q 'n
MCS-51指令集和输出管
39
PP pppppp 11 11 11 di di tT 3 3 4 5 6 3s
37
2 7 4
WHPPFPPP p T ? 7 12
7 r— 1i vcc 二
---- VCC
21 PP PPPP PP 22
卅
l.OuF C1+ 15
T1 OuF
2 3 4 Il 0ul4-ni 5 v+ Cl- C3+ Cl Vcc GHD Tlaut Rlui Rlout Tlin T2in R2out 16 15 14
77
RESET
l.OuF
±nJI 7 g v- TT 10
9
12
11
INTI
RXD
TXD
RD
WR FSEN
ALSP
MAX232 2.1.2 复位操作
复位操作有上电自动复位相按键手动复位两种方式。
上电自动复位是通过外部复位电路的电容充电来实现的, 其电 路如图4-2 (a)所示。这佯,只要电源 Vcc的上升时间不超过 1ms, 就可以实现自动上电复位,即接通电源就成了系统的复位初始化。
按键手动复位有电平方式和脉冲方式两种。其中,按键电平复 位是通过使复位端经电阻与 Vcc电源接通而实现的,其电路如图 4-2 (b)所示;而按键脉冲复位则是利用 RC微分电路产生的正脉 冲来实现的,
其电路如图4-2 (c)所示:
欢迎下载 3
精品文库
sosVtE
Vfcjc
i
MEET
SCSI
RESET 帥JL 5”
C
■_4 0—1 Eoon Cj 4
T
RST*
RSTZVhj
2纸 RST/Vpr
L ikA Va
I
o (b)按键电平复位(c)按键脉冲复位
的电阻、电容参数适用于上电复位
图4-2复位电路 上述电路图中(a) 位信号高电平持续时间大于 2个机器周期
6MHz晶振,能保证复
本系统的复位电路采用图 4-2 ( b) 上电复位方式。 2.1.3 STC89C52具体介绍如下:
① 主电源引脚(2根)
VCC(Pin40):电源输入,接+ 5V电源 GND(Pin20):接地线
② 外接晶振引脚(2根)
XTAL1(Pin 19):片内振荡电路的输入端 XTAL2(Pin20):片内振荡电路的输出端 ③ 控制引脚(4根)
RST/VPP(Pin9):复位引脚,弓I脚上出现 2个机器周期的高电 平将使单片机复位。
ALE/PROG(Pin30):地址锁存允许信号 PSEN(Pin29):外部存储器读选通信号
EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部 程序存储器读指令,如果接高电平则从内部程序存储器读指令。
④ 可编程输入/输出引脚(32根)
STC89C52单片机有4组8位的可编程I/O 口,分别位 P0、P1、 P2、P3 口,每个口有 8位(8根引脚),共 32根。
POD ( Pin39 〜Pin32 ) : 8 位双向 I/O 口线,名称为P0.0〜P0.7 口P1 □(Pird 〜Pin8 ) : 8 位准双向 I/O 线,名称为P 1.0〜P1.7 I/O 口P2D(Pin21 〜Pin28 ) : 8 位准双向 线,名称为 P2.0〜
P 2.7
P3 口(Pin 10 〜Pin17 ) : 8 位准双向 I/O 口线,名称为P3.0
P 3.7
2.1.4 STC89C52主要功能,如下表所示。
欢迎下载 4
精品文库
STC89C52主要功能
主要功能特性
兼容MCS51指令系统 32个双向I/O 口 3个16位可编程定时/计数 器中8K可反复擦写Flash ROM 256x8bit 内部 RAM 时钟频率0-24MHZ 可编程UART串行通道 共6个中断源 3级加密位 软件设置睡眠和唤醒功能 断 2个串行中断 2个外部中断源 2个读写中断口线 低功耗空闲和掉电模式 22测量部分
测量部分我们采用美国 DALLAS公司生产的 DS18B20温度传感 器。
2.2.1 DS18B20 简介
DS18B20数字温度传感器,该产品采用美国 DALLAS公司生产的 DS18B20可组网数字温度传感器芯片封装而成,具有耐磨耐碰,体 积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测 温和控制领域。 2.2.2封装及接线说明:
DS18B20芯片封装结构:
DO—— 1 2 3 S __ Vcc 7 GND NC 6 HC NC 一 一 一
一 一 NC 4 so同封
特点:独特的一线接口,只需要一条口线通信 化了分布式温度传感应用 范围为3.0V至5.5V无需备用电源
+ 125 C。华氏相当于是-67
多点能力,简
无需外部元件可用数据总线供电,电压
C至
C至+85 ° C
测量温度范围为-55
F到 257华氏度-10
欢迎下载 5
精品文库
范围内精度为士 0.5 °C
2.2.3 DS18B20控制方法 DS18B20有六条控制命令: 温度转换44H:启动DS18B20进行温度转换 读暂存器BEH:读暂存器9个字节内容 写暂存器4EH :将数据写入暂存器的 TH、TL字节
复制暂存器48H :把暂存器的TH、TL字节写到E2RAM中 读电源供电方式
CPU
B4H :启动DS18B20发送电源供电方式的信号给主
2.2.4 DS18B20 的初始化 2.2.5 DS18B20 的写操作 2.2.6 DS18B20 的读操作
2.3显示部分 显
示部分是用
LCD1602液晶显示 引
2.3.1 LCD1602
脚说明
引脚号 引脚名 电平 输入#输出 作用 1 Uss 电源地 UCC 电源t+suj 3 U\" 对比调整电压 4 K5 H/1 输入 鼻 K/U H/1 输入 0 E 1 , 1 — 0 输入 Ifw使能信号,■■甲诱取信息,下降沿)晞扌旨令 T [>Ba 0/1 输入#输岀 数据总线最低位》 S I>B1 0/1 输入#输出 数据总钱15\" 9 0G2 0/1 输入/输出 数扼总銭1心吕£ 10 0/1 输入/输Lii 数据总我15£3 11 DD4 0/1 输入/輸出 数ffi 12 DQ5 0/1 输入/输出 藪ffi总线ISM -la DBA 0/-I 输入/输出 数据总 DQ7 0/-I 输入/输出 数据总^111107 (>高位> 侶 A + Ucc \"D背光电源正极 K
接地 5D背光电源负极 欢迎下载 6
精品文库
2.4报警部分
见下面报警流程图模块及程序。
三、硬件」 电路原理图如下:
ST:
K
罩4\"
iiTW
四“ J •-■二二
J
♦二*:耳
U
huT nn hj hJ h* fJA Pl? tvb 屜JVJ 上『M4 同
mt
WE
>
N f#咖 FJI J-J3 rjb. KTJ KW 7J FJl fJJ P2< TV XI 5G Rrso nr 枠 RVD Tvn TXll VkL C I
0- iL>r
Cl- Vr VCT L«
rr 苗•旷 工
AluTf Fsrv 畀 <2- *AXJ3J XI
th V- TJtAl KJ X on T7 Ti a-f fiL K R l OVT TL K T2K lUUUT nsiw
J
H
Iti
t^J
DS18B20与单片机之间用单总线传输;DS18B20的数据口与单片机的 P1^7相连;液晶LCD1602的RS、R/W和E分别于单片机的P八4、P2八5、 P2八6相
连;
四、软件设计
系统软件程序基于Keil uvsion3开发平台,采用C51语言编写。本程序 采用模块化程序方法,主要分为以下三个模块: ♦ LCD初始化显示模块
欢迎下载 7
精品文库
♦ DS18B20数据采集模块 ♦温度报警上下限设置模块 程序流程图:
欢迎下载 主程序流程图
8
欢迎下载 DS18B2 0数据采集流程
图
精品文库
9
报警模块流程图
源程序:
#in clude #defi ne uchar un sig ned char #defi ne uint un sig ned int sbit DQ=P1A7; //ds18b20 与单片机连接口 sbit RS二P 2八4; sbit RW= P2A5; 欢迎下载 精品文库 10 sbit EN=P 2八6; 欢迎下载 精品文库 11 精品文库 sbit K1= P\"。; sbit K2二P 2八1; sbit K3二P 2八2; sbit LED 二P1八0; sbit beep=P 1八5; un sig ned char code str1[]={\"te mp erature is:\un sig ned char code str2[]={\" \ uchar code LCD10[10]={\"0123456789\ uchar data disdata[16]={0x00,0x00,0x00,0x2E,0x00,0xDF,0x20, 0x48,0x3D,0x00,0x00,0x20,0x4C,0x3D,0x00,0x00}; uint tvalue; // 温度值 uchar tflag; //温度正负标志 uchar flat, upnu m,dow nnu m,te mp; /**********************LCD 显示模^块 *********************** void delay1ms( un sig ned int ms)/延时 1 毫秒 {un sig ned int i,j; for(i=0;i for(x二z;x>0;x--) for(y=110;y>0;y--); } void wr_com (un sig ned char com)// 写 指令 // { delay1ms(1); RS=0; RW=0; EN=0; P0 二 com; /* LCD数据传送口 */ delay1ms(1); EN=1; delay1ms(1); EN=0; } void wr_dat( un sig ned char dat)/写 数据 // 欢迎下载 12 精品文库 { delay1ms(1);; RS=1; RW=0; EN=0; P 0二dat; /* LCD数据传送口 */ delay1ms(1); EN=1; delay1ms(1); EN=0; } void lcd_init()// 初始化设置 II {delay1ms(15); wr_com(0x38);delay1ms(5); wr_com(0x08);delay1ms(5); wr_com(0x01);delay1ms(5); wr_com(0x06);delay1ms(5); wr_com(0x0c);delay1ms(5); }\" 一 void dis play (un sig ned char *p)//显示 // while(* p!='\\0') { wr_dat(* p); p++; delay1ms(1); } } ini t_play()//初始化显示 lcd_in it(); wr_com(0x80); dis play(strl); wr_com(0xC0); dis play(str2); } /*******************DSI8B20 测]温模^块 ********************** void delay_18B20(u nsig ned int i)//延 时 1 微秒 { while(i--); 欢迎下载 13 } void ds1820rst() { un sig ned char x=0; DQ = 1; //DQ 复位 delay_18B20(4); 〃延时 DQ = 0; //DQ 拉低 delay_18B20(100); //精确延时大于 480us DQ = 1; // 拉高 delay_18B20(40); uchar ds1820rd() { un sig ned char i=0; un sig ned char dat = 0; for (i=8;i>0;i--) { DQ = 0; //给脉冲信号DQ = 1; //给脉冲信号dat|=0x80; delay_18B20(10); retur n(dat); } void ds1820wr(uchar wdata) {un sig ned char i=0; for (i=8; i>0; i--) { DQ = 0; DQ = wdata&0x01; delay_18B20(10); DQ = 1; wdata>>=1; } } read_te mp() {uchar a,b; ds1820rst(); ds1820wr(0xcc);// ds1820wr(0x44);// 欢迎下载 dat>>=1; if(DQ) 精品文库 14 「ds1820so fva-ueAAH8- dsl820w□sagHI- va-ueHfva_ueHfva_ue*(0.625)w宀 「efu3(fva-ue)uchadisda1Hva_uef1000/100+0X30W-K4選鱼二 disdafaifaf-aguHO) e_se — wr_com(oxcoxHLCD10 〔一)一十 sdag9FLCD1supnum/s宀 宀 10+0x30y/ sdagi 50」hlcd1天〒 LCD10 〔三)oaownnumfupnum%10\"八 116=++) ok 宀sdafau4」 disdafa=〔,o 」HOX2a//mM£ 和引 m 加 disdafa〔0Hva-ue/1000+0x30y/iEM®和引珊应選 2Hva_uef 選100应、 d d d10+0x30yM\"^4^ d disdafa〔4Hva-uef 八 void dsl820disp()//M®血和引 测丹 MS fva-ue+n fva-ueHfva-ue-B ifava-uecoxoffo ff_agHO 八 e_se 「(0xcc)y/ 「ds1820w(0xbe)w 「aHds1820d()- 「bHds1820d()- fva-ueHb- 〜 精品文库 temp二tvalue/10; 〃报警温度还原 } ****************** void key(void) { if(K1==O) { //模式选择 下限设及报警模^块 ******************* 欢迎下载 delay1(5); if(K1==O) { flat++; while(!K1); if(flat==1) { wr_com(0x80+0x40+9); //上限调节 wr_com(0x0c); //光标显示闪烁 }\" if(flat==2) // 下限 { wr_com(0x80+0x40+14); }\" if(flat==3) 〃退出模式 { flat=0; wr_com(0x0c); }\" } if(K2==0) ////+++++++++++++++++++++ { delay1(5); if(K2==0) { while(!K2); if(flat==1) { upnu m++; 16} if(flat!=0) { 精品文库 if(upnu m==65) // 最高温度值 + upnum=35; wr_com(0x80+0x40+9); if(flat==2) { dow nnu m++; if(dow nnum==20) dow nnum=3; 〃最底温度值- wr_com(0x80+0x40+14); } } } if(K3==0) { //// delay1(5); if(K3==0) while(!K3); if(flat==1) { upnu m--; if(upnu m==35) //最高温度值 upnum=65; wr_com(0x80+0x40+9); if(flat==2) { dow nnu m--; if(downnum==3) //最底温度值- dow nnum=20; wr_com(0x80+0x40+14); 欢迎下载 17 精品文库 void comp are(void) { if(te mp>=upnu m||te mp< 二dow nnum) { bee p=0; LED=0; } else { beep=1; LED=1; } } /************************ main void mai n() { ini t_play();//初始化显示 flat=0; upnum=30; dow nnum=9; while(1) { read_te mp ();/读取温度 ds1820dis p();/湿示 key(); comp are(); 欢迎下载 *************************/ 18函 精品文库 五、总结与展望 单片机是一门应用性与实践性很强的学科,如何学习单片机? 学单片机不仅要学习理论知识,实践操作同样重要。学过单片机的 人都有这样的经历。就是把自己写的程序烧录到单片机里面的时候会发 现与自己想要的结果又很大的不同。这就是因为缺少实践操作的原因。 设计本系统的过程中我们遇到了两大问题: 一是软件问题。在编写 DS18B20的测量程序的过程中遇到了很多 问题,刚开始总是得不到测量数据,后来仔细读 发现写时序的DS18B20说明资料, 时候出了点问题,然后我们又按照着 序和接收时序将DS18B20的通讯时 程序一条条重写,经过调试后,用 P roteus仿真软件可 以仿真出正确的结果。但软件仿真与硬件还是有点区 别,等我们把电路 板做出来的时候,把程序烧录进去,发现出错!经过再三检查,不断的 思考,最后我发现软件仿真是在硬件理想状态下运行的。因此,我对应 的将软件程序进行了一些最后可以在我们做的硬件电路板中 细节修改。 进行正确的测量与显示。 二是硬件问题。刚开始画 PCB 做第时,没有联系到做实际板的问题。 一块板的时候遇到了如下问题: 一致;画封装与元器件的实际封装大小不 过孔的设置太小;导线设置太小;封装 画反了等。因为第一块板 子的功能还不能顺利的实现,所以我们很认真的检查了电路板,通过电 路检测,发现板子的电路有些封装画反了。通过检查和检查板子出现的 情况,我们PCB的错误一点点的改正。后来,我们就是这样一点点的 检查板子的来完成我们的作品。 本系统具有较强的实用性,我对 DS18B20及一些测量温度的传感 器进行了比较,DS18B20不仅测量精度高,稳定性好,体积小巧,而且 价格也比较便宜。另外,本系统还具有较高的扩展性,可以制作时钟, 计算器,温度测量于一体,具有较强的实用价值。 欢迎下载 19 因篇幅问题不能全部显示,请点此查看更多更全内容