单片机数字温度计测温报警电路课程设计报告_第1页
单片机数字温度计测温报警电路课程设计报告_第2页
单片机数字温度计测温报警电路课程设计报告_第3页
单片机数字温度计测温报警电路课程设计报告_第4页
单片机数字温度计测温报警电路课程设计报告_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、南京工程学院 通信工程学院 单片机原理及应用课程设计报告实验学生班级 实验学生姓名 实验学生学号 实 验 时 间 实 验 地 点 指 导 教 师 实验成绩评定 指导教师签字 年 月 日目录摘要3方案论证3方案一3方案二3一.芯片介绍41.1 AT89C5141.2 DS18B205二.设计目的6三.设计要求6四.设计思路64.1硬件设计64.2 软件设计64.2.1 主程序64.2.2 读温度函数74.2.3 温度转换函数74.2.4 温度显示函数8五 电路设计95.1 外部振荡源设计95.2 1602液晶显示电路95.3 数码管报警次数电路设计95.4 LED报警闪烁电路105.5 蜂鸣器电

2、路105.6 DS18B20与AT89C51连接电路105.7 报警温度改变电路11六.程序分析116.1主函数116.2 读取温度函数126.3 温度转换函数126.4 显示函数126.5软件运行时间函数146.6改变报警温度146.7报警计数15七.单片机资源配置15八. 小结15九.参考文献16附录 总电路原理图17附录 C程序18 摘要 随着国民经济的发展,人们需要对各中加热炉、热处理炉、反应炉和锅炉中温度进行监测和控制。采用单片机来对他们控制不仅具有控制方便,简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大的提高产品的质量和数量。在日常生活及工业生产过程中,经

3、常要用到温度的检测及控制,温度是生产过程和科学实验中普遍而且重要的物理参数之一。在生产过程中,为了高效地进行生产,必须对它的主要参数,如温度、压力、流量等进行有效的控制。温度控制在生产过程中占有相当大的比例。温度测量是温度控制的基础,技术已经比较成熟。传统的测温元件有热电偶和二电阻。而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,这些方法相对比较复杂,需要比较多的外部硬件支持。我们用一种相对比较简单的方式来测量。我们采用美国DALLAS半导体公司继DS18B20之后推出的一种改进型智能温度传感器DS18B20作为检测元件,温度范围为-55125 C,最高分辨率可达0.0625 C。DS

4、18B20可以直接读出北侧温度值,而且采用三线制与单片机相连,减少了外部的件电路,具有低成本和易使用的特点。本文介绍一种基于AT89C51单片机的一种温度测量及报警电路,该电路采用DS18B20作为温度监测元件,测量范围0-+100,使用LED模块显示,能设置温度报警上下限。正文着重给出了软硬件系统的各部分电路,介绍了集成温度传感器DS18B20的原理,AT89C51单片机功能和应用。该电路设计新颖、功能强大、结构简单 关键词:温度测量;DS18B20;AT89C51方案论证该系统主要由温度测量和数据采集两部分电路组成,实现的方法有很多种,下面将列出两种在日常生活中和工农业生产中经常用到的实现

5、方案。 方案一:使用热敏电阻由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。 方案二:采用数字温度芯片DS18B20 采用数字温度芯片DS18B20 测量温度,输出信号全数字化。便于单片机处理及控制,省去传统的测温方法的很多外围电路。且该芯片的物理化学性很稳定,它能用做工业测温元件,此元件线形较好。在0100 摄氏度时,最大线形偏差小于1 摄氏度。DS18B20 的最大特点之一采用了单总线的数据传输,由

6、数字温度计DS18B20和微控制器AT89c51构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。这样,测温系统的结构就比较简单,体积也不大。采用51 单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,而且体积小,硬件实现简单,安装方便。从以上两种方案,容易看出方案一的测温装置可测温度范围宽、体积小,但是线性误差较大。方案二的测温装置电路简单、精确度较高、实现方便、软件设计也比较简单,故本次设计采用了方案二。 一.芯片介绍1.1 AT89C51AT89C51 提供以下标准功能:4k 字节Flash 闪烁存储器,128字节内部RAM,32 个I/O 口线

7、,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行接口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。1.2 DS18B20性能描述:、 独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。 、测温范围 55+125,固有测温误差(注意,不是分辨率,这里之前是错误的)0.5。、支持多点组网功能,多个

8、DS18B20可以并联在唯一的三线上,最多只能并联8个,实现多点测温,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定。、工作电源: 35V/DC (可以数据线寄生电源) 、在使用中不需要任何外围元件、 测量结果以912位数字量方式串行传送 、不锈钢保护管直径 6 、适用于DN1525, DN40DN250各种介质工业管道和狭小空间设备测温、 标准安装螺纹 M10X1, M12X1.5, G1/2”任选 、PVC电缆直接出线或德式球型接线盒出线,便于与其它电器设备连接。字节序号功能0温度转换后的低字节1温度转换后的低字节2高温度触发器TH3低温度触发器TL4配置寄存器5保留6保留7

9、保留8CRC校验寄存器二.设计目的2.1掌握单总线协议的基本特点及通信过程;2.2掌握数字温度传感线DS18B20的基本特点及单总线控制协议;2.3掌握单片机IO端口模拟单总线时序控制程序的编写方法;2.4掌握LCD液晶显示器的显示驱动方法。三.设计要求3.1单片机P0.0和DS18B20的数据端相连;3.2编写单片机通过IO端口模拟单总线时序控制DS18B20的程序,读出温度;3.3在1602字符点阵液晶显示模块上显示实测温度。四.设计思路4.1硬件设计 按照系统设计功能的要求,确定系统由3个模块组成:主控制器、测温电路和显示电路。数字温度计总体电路结构框图所示:DS18B20扫描驱动显示电

10、路AT89C51 主 控 制 器4.2 软件设计本系统的软件系统主要可分为主程序,读温度函数,温度转换函数,显示函数等几个模块。 4.2.1 主程序 主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量温度值。温度测量每1S进行一次。主流程图如下: 4.2.2 读温度函数 4.2.3 温度转换函数流程图如下: 4.2.4 温度显示函数流程图如下:五 电路设计5.1 外部振荡源设计5.2 1602液晶显示电路5.3 数码管报警次数电路设计5.4 LED报警闪烁电路5.5 蜂鸣器电路5.6 DS18B20与AT89C51连接电路5.7 报警温度改变电路六.程序分析6.1主函数voi

11、d main()delay(10);flag=0;init();initds18b20();while(1)flag=0;Read_Temperature(); temperature_cov();display();6.2 读取温度函数 void Read_Temperature(void)ow_reset();write_byte(0xCC); write_byte(0x44); ow_reset();write_byte(0xCC);write_byte(0xBE); temp.c1=read_byte();temp.c0=read_byte();6.3 温度转换函数 void temp

12、erature_cov(void) cc=temp.c0*256.0+temp.c1; /将温度从两个八位数表示成一个十六位数 if (temp.c00xF8)/判断温度是正数还是负数flag=1; /温度为负数flag置1cc=cc+1; cc=cc*0.0625;xs = temp.x&0x0f;xs = xs*10;xs = xs/16; 6.4 显示函数 void display()int i;wc51r(0x80); /写入缓冲区起始地址为第一行第一列 wc51ddr(0x53); /szmwc51ddr(0x5a);wc51ddr(0x4d);wc51ddr(0x20);wc51d

13、dr(0x20);time();buzzer=1;for( i=0;ihigh) buzzer=0;for(i=0;i6;i+) wc51ddr(0x20);wc51r(0xc5); wc51ddr(0x41);wc51ddr(0x4c);wc51ddr(0x41);wc51ddr(0x52);wc51ddr(0x4d);for(i=0;i6;i+) wc51ddr(0x20); wc51ddr(0x54); wc51ddr(0x4d);if(flag = 1)wc51ddr(0x2d); /如果flag为1表示温度为负值,显示-符号,否则显示+if(cc = -10) buzzer = 0;

14、else wc51ddr(0x2b); count();wc51ddr(cc/10+0x30); /十位数转换为LCD显示模式 wc51ddr(cc%10+0x30); /个位数转换为LCD显示模式 wc51ddr(0x2e); /显示.小数点wc51ddr(xs+0x30); wc51ddr(0xdf); /显示。符号 wc51ddr(0x43); /显示C 符号wc51ddr(0x20); wc51ddr(0x41);wc51ddr(0x3a);wc51ddr(high/10+0x30);wc51ddr(high%10+0x30);s+;for( i=0;i59) s = 0;m+;if(

15、m59)m = 0;h+;if(h11)h=0;wc51ddr(h/10+0x30); wc51ddr(h%10+0x30);wc51ddr(0x3a);wc51ddr(m/10+0x30); wc51ddr(m%10+0x30);wc51ddr(0x3a);wc51ddr(s/10+0x30);wc51ddr(s%10+0x30);6.6改变报警温度 void change() delay(5); if(zeng = 0)high+;if(jian = 0)high-;delay(100); 6.7报警计数 unsigned char code CharCode=0xc0,0xf9,0xa4

16、,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;void count()if(buzzer = 0)c+;if(c15) c=0;P0 = CharCodec;七.单片机资源配置引脚名称用途P24DS18B20温度传感器P20RS1602数据命令选择端P21E1602使能端P22LEDP27蜂鸣器报警P25加1按键温度报警上限调整P26减1按键温度报警上限调整P3LED灯报警闪烁灯P2数码管报警次数P1D0D71602数据线八. 小结通过一周的课程设计,我对课上的知识理解的更加透彻,对c语言的编程也更加熟练,在

17、收获知识的同时,还收获了阅历,收获了成熟,在此过程中,我们通过查找大量资料,请教老师,以及不懈的努力,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在课上,我们学会了很多学习的方法,而这是日后最实用的,真的是受益匪浅。九.参考文献1. 单片机原理与应用及C51程序设计(第2版)【谢维成 杨加国 主编】2. 单片机原理与应用实验与课程设计指导书 【岳俊生 宗慧 编】附录 总电路原理图附录 C程序#include #include #define uchar unsigned char#define uint unsigned intvoid fbusy();voi

18、d init();void wc51r(uchar cmd) ;void wc51ddr(uchar dat);uchar ow_reset(void);void initds18b20(void);uchar read_byte(void);void write_byte(uchar val);void temperature_cov(void);void display();void delay(uint i);void time();void change();void count();sbit DQ =P24; /DS18B20端口sbit RS=P20;/LCD端口sbit RW=P

19、21;sbit E=P22;sbit buzzer=P27; /定义蜂鸣器端口sbit zeng = P26;/定义报警温度增减端口sbit jian = P25;unionuchar c2;uint x; temp; /联合体uchar flag; /定义温度正负值标志变量,正为0,负为1int cc,xs,h,m,s,high,c;h=0;m=0;s=0,c=0;high=29;unsigned char code CharCode=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e

20、;/*/*延时函数 */*/void delay(uint i)for(;i0;i-);/*/*复位函数 */*/uchar ow_reset(void)uchar reset;DQ=0;delay(50);DQ=1;delay(3);reset=DQ;delay(25);return(reset);/*/*初始化DS18B20 */*/void initds18b20(void) ow_reset();write_byte(0xCC);write_byte(0x4E);write_byte(0x00);write_byte(0x00);write_byte(0x7F);/*/*从单总线读取一

21、个字节 */*/uchar read_byte(void)uchar i;uchar value=0;for (i=8;i0;i-)value=1;DQ=0;DQ=1;delay(1);if(DQ)value|=0x80;delay(6);return(value);/*/*向单总线上写一个字节 */*/void write_byte(uchar val)uchar i;for(i=8;i0;i-)DQ=0;DQ=val&0x01;delay(5);DQ=1;val=val/2;delay(5);/*/*读取温度 */*/ void Read_Temperature(void)ow_reset

22、();write_byte(0xCC); write_byte(0x44); ow_reset();write_byte(0xCC);write_byte(0xBE); temp.c1=read_byte();temp.c0=read_byte();/*/*温度转换 */*/void temperature_cov(void) cc=temp.c0*256.0+temp.c1; /将温度从两个八位数表示成一个十六位数 if (temp.c00xF8)/判断温度是正数还是负数flag=1; /温度为负数flag置1cc=cc+1; cc=cc*0.0625;xs = temp.x&0x0f;xs

23、 = xs*10;xs = xs/16; /*/*显示 */*/void display()int i;wc51r(0x80); /写入缓冲区起始地址为第一行第一列 wc51ddr(0x53); /szmwc51ddr(0x5a);wc51ddr(0x4d);wc51ddr(0x20);wc51ddr(0x20);time();buzzer=1;for( i=0;ihigh) buzzer=0;for(i=0;i6;i+) wc51ddr(0x20);wc51r(0xc5); wc51ddr(0x41);wc51ddr(0x4c);wc51ddr(0x41);wc51ddr(0x52);wc51ddr(0x4d);for(i=0;i6;i+) wc51ddr(0x20); wc51ddr(0x54); wc51ddr(0x4d);if(flag = 1)wc51ddr(0x2d); /如果flag为1表示温度为负值,显示-符号,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论