基于PIC单片机的多路温度巡回检测系统毕业设计论文.docx
- 文档编号:6471297
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:46
- 大小:2.42MB
基于PIC单片机的多路温度巡回检测系统毕业设计论文.docx
《基于PIC单片机的多路温度巡回检测系统毕业设计论文.docx》由会员分享,可在线阅读,更多相关《基于PIC单片机的多路温度巡回检测系统毕业设计论文.docx(46页珍藏版)》请在冰豆网上搜索。
基于PIC单片机的多路温度巡回检测系统毕业设计论文
毕业设计(论文)
题目基于PIC单片机的多路温度巡回检测系统
毕业论文(设计)原创性声明
本人所呈交的毕业论文(设计)是我在导师的指导下进行的研究工作及取得的研究成果。
据我所知,除文中已经注明引用的内容外,本论文(设计)不包含其他个人已经发表或撰写过的研究成果。
对本论文(设计)的研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示谢意。
作者签名:
日期:
毕业论文(设计)授权使用说明
本论文(设计)作者完全了解**学院有关保留、使用毕业论文(设计)的规定,学校有权保留论文(设计)并向相关部门送交论文(设计)的电子版和纸质版。
有权将论文(设计)用于非赢利目的的少量复制并允许论文(设计)进入学校图书馆被查阅。
学校可以公布论文(设计)的全部或部分内容。
保密的论文(设计)在解密后适用本规定。
作者签名:
指导教师签名:
日期:
日期:
注意事项
1.设计(论文)的内容包括:
1)封面(按教务处制定的标准封面格式制作)
2)原创性声明
3)中文摘要(300字左右)、关键词
4)外文摘要、关键词
5)目次页(附件不统一编入)
6)论文主体部分:
引言(或绪论)、正文、结论
7)参考文献
8)致谢
9)附录(对论文支持必要时)
2.论文字数要求:
理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。
3.附件包括:
任务书、开题报告、外文译文、译文原文(复印件)。
4.文字、图表要求:
1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写
2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。
图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画
3)毕业论文须用A4单面打印,论文50页以上的双面打印
4)图表应绘制于无格子的页面上
5)软件工程类课题应有程序清单,并提供电子文档
5.装订顺序
1)设计(论文)
2)附件:
按照任务书、开题报告、外文译文、译文原文(复印件)次序装订
3)其它
摘要:
本文介绍了一种基于PIC16F877A单片机,利用DS18B20对多路温度采集,并进行温度的控制与检测,并通过12864液晶显示出来。
系统中通过控制按钮实现了实时各路的报警温度,并且实现多路与任一单路温度显示切换,从而既可以进行多路的检测又可以进行任一单路的监控,而且还有数字跟图形两种显示方式更为直观。
在温度超过设定温度时温度跟时间通过24C02存储起来,以便查看,同时可以通过固定电话远程报警,还能将温度上传至PC机,进行后续处理。
关键词:
温度检测;单片机;串行通讯;DS18B20;
基于PIC单片机的多路温度监控巡回系统
1系统设计
在工业生产和日常生活中,经常要对温度进行测量与控制,并且有时是对多个点进行温度测量,比如冷库温度监控、环境温度监测、农业温室监控、粮库温度监控等。
在这种情况下,多点温度检测系统应运而生。
多点温度检测系统通常能够对多个工作点的温度进行检测,显示当前温度,并能够对温度进行存储和报警,还能将温度上传至PC机,进行后续处理。
传统的测温元件有热电偶和热电阻,需很多硬件支持并且电路复杂。
本文将设计一款由新型的数字温度传感器DS18B20配合单片机,具有温度检测、显示、存储、自动统计分析及跟电脑通讯连接还利用固定电话远程报警等功能的多点温度监控系统。
图1.1多路温度监控系统模拟应用
温度监控主系统构架框图如图1.2所示:
图1.2多路温度监控系统构架框图
图1.3手工焊接实物图
主要技术参数
A温度检测范围:
-55℃~+125℃
B测量精度:
0.0625℃
C显示方式:
LCD12864显示
D报警方式:
固话报警
2主芯片:
PIC16F877A单片机简介
2.1PIC单片机的优越之处:
(1)哈佛总线结构:
MCS-51单片机的总线结构是冯-诺依曼型,计算机在同一个存储空间取指令和数据,两者不能同时进行;而PIC单片机的总线结构是哈佛结构,指令和数据空间是完全分开的,一个用于指令,一个用于数据,由于可以对程序和数据同时进行访问,所以提高了数据吞吐率。
正因为在PIC单片机中采用了哈佛双总线结构,所以与常见的微控制器不同的一点是:
程序和数据总线可以采用不同的宽度。
数据总线都是8位的,但指令总线位数分别位12、14、16位。
(2)流水线结构:
MCS-51单片机的取指和执行采用单指令流水线结构,即取一条指令,执行完后再取下一条指令;而PIC的取指和执行采用双指令流水线结构,当一条指令被执行时,允许下一条指令同时被取出,这样就实现了单周期指令。
(3)寄存器组:
PIC单片机的所有寄存器,包括I/O口,定时器和程序计数器等都采用RAM结构形式,而且都只需要一个指令周期就可以完成访问和操作;而MCS-51单片机需要两个或两个以上的周期才能改变寄存器的内容。
(4)运行速度高:
由于采用了哈佛总线结构,以及指令的读取和执行才用了流水作业方式,使得运行速度大大提高。
(5)功耗低:
PIC单片机的功率消耗极低,是目前世界上最低的单片机品种之一。
在4MHz时钟下工作时耗电不超过2mA,在睡眠模式下耗电可以低到1uA以下。
(6)驱动能力强:
I/O端口驱动负载的能力较强,每个I/O引脚吸入和输出电流的最大值可分别达到25mA和20mA,能够直接驱动发光二极管LED、光电耦合器或者轻微继电器等。
(7)外接电路简洁
PIC单片机片内集成了上电复位电路、I/O引脚上拉电路、看门狗定时器等,可以最大程度减少或免用外接器件,以便实现“纯单片机”应用。
这样,不仅方便于开发,而且还可节省用户的电路空间和制作成本。
(8)程序保密性强
目前,尚无办法对其直接进行解密拷贝,可以最大限度的保护用户的程序版权。
2.2PIC16F877A引脚图及主要性能
PIC16F877A的详细引脚如图2.2-1所示。
图2.2-1PIC16F877A引脚图图2.2-2PIC16F877A实物图
主要性能参数如下所示:
●具有高性能RISCCPU
●仅有35条单字指令
●100000次擦写周期
●除程序分支指令为两个周期外,其余均为单周期指令
●运行速度:
DC—20MHZ始终输入
DC—200ns指令周期
●8K*14个FLASH程序存储器
368*8个数据存储器(RAM)字节
256*8EEPRM数据存储器字节
●提供14个中断源
●功耗低
在5V,4MHZ时钟运行时电流小于2mA
在3V,32KHZ时钟运行时电流小于20Ua
●支持在线串行编程(ICSP)
●运行电压范围广,2.0V到5.5V
●输入及输出电流可达到25mA
●Timer0:
带有预分频器的8位定时器/计数器
●Timer1:
带有预分频器的16位定时器/计数器,在使用外部晶振震荡时钟时,在睡眠期间仍能工作
●Timer2:
带有8位周期寄存器,预分频器和后分频器的8位定时器/计数器。
●2个捕捉器,比较器,PWM模块
其中:
捕捉器是16位,最大分辨率是12.5ns
比较器是16位,最大分辨率是200ns
PWM最大分辨率是10位
●10位多通道模数转换器
2.3最小系统
2.3.1复位功能
PIC16F877A的复位功能设计得比较完善,实现复位或引起复位的条件和原因可以归纳成4类:
人工复位、上电复位、看门狗复位、欠压复位。
这里简单介绍一下人工复位
人工复位:
无论是单片机在正常运行程序,还是处在睡眠状态或出现死机状态,只要在人工复位端MCLR加入低点平信号,就令其复位。
本次设计的电路图如图2.3-1所示。
图2.3—1PIC最小系统电路图图2.3—2最小系统实物图
2.3.2系统时钟
数字电路的工作离不开时钟信号,每一步细微动作都是在一个共同的时间基准信号协调下完成的。
作为时基发生器的时钟震荡电路,为整个单片机芯片的工作提供系统时钟信号,也为单片机与其他外接芯片之间的通讯提供可靠的同步时钟信号。
PIC16F877A的时钟电路是由片内的一个反相器和一个反馈电阻,与外接的1个石英晶体和2个电容,共同构成的一个自激多谐振荡器。
电路如图2.3-1所示。
2.4设计心得总结
PIC16F877A的最小系统跟51相似,较为简单。
芯片自身增加了很多功能,如:
自带8路AD转换、增加SPI总线,引脚复位功能多等。
芯片自身功能的增加给设计带来了很多灵活性,同时也是学习的难点。
3LCD12864液晶原理介绍及接口实现
3.1液晶显示模块概述
12864A-1汉字图形点阵液晶显示模块,可显示汉字及图形,内置8192个中文汉字(16X16点阵)、128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM)。
主要技术参数和显示特性:
电源:
VDD3.3V~+5V(内置升压电路,无需负压);
显示内容:
128列×64行
显示颜色:
黄绿
显示角度:
6:
00钟直视
LCD类型:
STN
与MCU接口:
8位或4位并行/3位串行
配置LED背光
多种软件功能:
光标显示、画面移位、自定义字符、睡眠模式等
3.2液晶引脚说明
引脚号
引脚名称
方向
功能说明
1
VSS
-
模块的电源地
2
VDD
-
模块的电源正端
3
V0
-
LCD驱动电压输入端
4
RS(CS)
H/L
并行的指令/数据选择信号;串行的片选信号
5
R/W(SID)
H/L
并行的读写选择信号;串行的数据口
6
E(CLK)
H/L
并行的使能信号;串行的同步时钟
7
DB0
H/L
数据0
8
DB1
H/L
数据1
9
DB2
H/L
数据2
10
DB3
H/L
数据3
11
DB4
H/L
数据4
12
DB5
H/L
数据5
13
DB6
H/L
数据6
14
DB7
H/L
数据7
15
PSB
H/L
并/串行接口选择:
H-并行;L-串行
16
NC
空脚
17
/RET
H/L
复位低电平有效
18
NC
空脚
19
LED_A
-
背光源正极(LED+5V)
20
LED_K
-
背光源负极(LED-OV)
逻辑工作电压(VDD):
4.5~5.5V
电源地(GND):
0V
工作温度(Ta):
0~60℃(常温)/-20~75℃(宽温)
3.3接口时序
模块有并行和串行两种连接方法,本文采用并行接法(时序如下):
8位并行连接时序图
MPU写资料到模块
程序实现如下:
/********************************************************************
*名称:
send_i()
*功能:
写一个字节命令到LCD
*入口参数:
unsignedcharx字符
*******************************************************************/
voidsend_i(unsignedcharx)
{
chk_busy();//检测LCD是否工作繁忙
rs=0;//设置该字节数据为控制命令
rw=0;//设置此次操作为写
PORTD=x;//送数据口PORTD
e=1;//使能
nop();
nop();
nop();
e=0;//禁止
}
MPU从模块读出资料
程序实现如下:
/*************************************************
读数据
**************************************************/
unsignedcharu8_Lcd12864ReadByte_f(void)
{
unsignedcharbyReturnValue;
chk_busy();//检测LCD是否工作繁忙
TRISD=0XFF;//设置PD口为输入状态
PORTD=0xff;//PD初始化为高电平
rs=1;//读置高
rw=1;//写置高
e=0;//使能置低
e=1;//使能置高
byReturnValue=PORTD;//读数据
e=0;//关使能
TRISD=0X00;//恢复PD口为输出
returnbyReturnValue;//返回读到的数据
}
3.4具体指令介绍
1、清除显示
CODE:
RWRSDB7DB6DB5DB4DB3DB2DB1DB0
L
L
L
L
L
L
L
L
L
H
功能:
清除显示屏幕,把DDRAM位址计数器调整为“00H”
2、位址归位
CODE:
RWRSDB7DB6DB5DB4DB3DB2DB1DB0
L
L
L
L
L
L
L
L
H
X
功能:
把DDRAM位址计数器调整为“00H”,游标回原点,该功能不影响显示DDRAM
3、位址归位
CODE:
RWRSDB7DB6DB5DB4DB3DB2DB1DB0
L
L
L
L
L
L
L
H
I/D
S
功能:
把DDRAM位址计数器调整为“00H”,游标回原点,该功能不影响显示DDRAM功能:
执行该命令后,所设置的行将显示在屏幕的第一行。
显示起始行是由Z地址计数器控制的,该命令自动将A0-A5位地址送入Z地址计数器,起始地址可以是0-63范围内任意一行。
Z地址计数器具有循环计数功能,用于显示行扫描同步,当扫描完一行后自动加一。
4、显示状态开/关
CODE:
RWRSDB7DB6DB5DB4DB3DB2DB1DB0
L
L
L
L
L
L
H
D
C
B
功能:
D=1;整体显示ONC=1;游标ONB=1;游标位置ON
5、游标或显示移位控制
CODE:
RWRSDB7DB6DB5DB4DB3DB2DB1DB0
L
L
L
L
L
H
S/C
R/L
X
X
功能:
设定游标的移动与显示的移位控制位:
这个指令并不改变DDRAM的内容
6、功能设定
CODE:
RWRSDB7DB6DB5DB4DB3DB2DB1DB0
L
L
L
L
H
DL
X
0RE
X
X
功能:
DL=1(必须设为1)RE=1;扩充指令集动作RE=0:
基本指令集动作
7、设定CGRAM位址
CODE:
RWRSDB7DB6DB5DB4DB3DB2DB1DB0
L
L
L
H
AC5
AC4
AC3
AC2
AC1
AC0
功能:
设定CGRAM位址到位址计数器(AC)
8、设定DDRAM位址
CODE:
RWRSDB7DB6DB5DB4DB3DB2DB1DB0
L
L
H
AC6
AC5
AC4
AC3
AC2
AC1
AC0
功能:
设定DDRAM位址到位址计数器(AC)
9、读取忙碌状态(BF)和位址
CODE:
RWRSDB7DB6DB5DB4DB3DB2DB1DB0
L
H
BF
AC6
AC5
AC4
AC3
AC2
AC1
AC0
功能:
读取忙碌状态(BF)可以确认内部动作是否完成,同时可以读出位址计数器(AC)的值
10、写资料到RAM
CODE:
RWRSDB7DB6DB5DB4DB3DB2DB1DB0
H
L
D7
D6
D5
D4
D3
D2
D1
D0
功能:
写入资料到内部的RAM(DDRAM/CGRAM/TRAM/GDRAM)
11、读出RAM的值
CODE:
RWRSDB7DB6DB5DB4DB3DB2DB1DB0
H
H
D7
D6
D5
D4
D3
D2
D1
D0
功能:
从内部RAM读取资料(DDRAM/CGRAM/TRAM/GDRAM)
12、待命模式(12H)
CODE:
RWRSDB7DB6DB5DB4DB3DB2DB1DB0
L
L
L
L
L
L
L
L
L
H
功能:
进入待命模式,执行其他命令都可终止待命模式
13、卷动位址或IRAM位址选择(13H)
CODE:
RWRSDB7DB6DB5DB4DB3DB2DB1DB0
L
L
L
L
L
L
L
L
H
SR
功能:
SR=1;允许输入卷动位址SR=0;允许输入IRAM位址
14、反白选择(14H)
CODE:
RWRSDB7DB6DB5DB4DB3DB2DB1DB0
L
L
L
L
L
L
L
H
R1
R0
功能:
选择4行中的任一行作反白显示,并可决定反白的与否
15、睡眠模式(015H)
CODE:
RWRSDB7DB6DB5DB4DB3DB2DB1DB0
L
L
L
L
L
L
H
SL
X
X
功能:
SL=1;脱离睡眠模式SL=0;进入睡眠模式
16、扩充功能设定(016H)
CODE:
RWRSDB7DB6DB5DB4DB3DB2DB1DB0
L
L
L
L
H
H
X
1RE
G
L
功能:
RE=1;扩充指令集动作RE=0;基本指令集动作G=1;绘图显示ONG=0;绘图显示OFF
17、设定IRAM位址或卷动位址(017H)
CODE:
RWRSDB7DB6DB5DB4DB3DB2DB1DB0
L
L
L
H
AC5
AC4
AC3
AC2
AC1
AC0
功能:
SR=1;AC5~AC0为垂直卷动位址SR=0;AC3~AC0写ICONRAM位址
18、设定绘图RAM位址(018H)
CODE:
RWRSDB7DB6DB5DB4DB3DB2DB1DB0
L
L
H
AC6
AC5
AC4
AC3
AC2
AC1
AC0
功能:
设定GDRAM位址到位址计数器(AC)
备注、
1、当模块在接受指令前,微处理顺必须先确认模块内部处于非忙碌状态,即读取BF标志时BF需为0,方可接受新的指令;如果在送出一个指令前并不检查BF标志,那么在前一个指令和这个指令中间必须延迟一段较长的时间,即是等待前一个指令确实执行完成,指令执行的时间请参考指令表中的个别指令说明。
2、“RE”为基本指令集与扩充指令集的选择控制位元,当变更“RE”位元后,往后的指令集将维持在最后的状态,除非再次变更“RE”位元,否则使用相同指令集时,不需每次重设“RE”位元。
本次设计液晶初始化如下:
voidlcd_init()
{
rst=0;//复位LCD
delay
(1);//保证复位所需要的时间(1ms)
rst=1;//恢复LCD正常工作
//nop();
//psb=1;//设置LCD为8位并口通信
send_i(0x30);//基本指令操作
send_i(0x01);//清除显示
send_i(0x06);//指定在写入或读取时,光标的移动方向
send_i(0x0c);//开显示,关光标,不闪烁
}
3.5显示坐标关系
3.5.1、图形显示坐标
水平方向X—以字节单位
垂直方向Y—以位为单位
/*******************************************
函数名称:
Draw_PM
功能:
在整个液晶屏幕上画图
参数:
无
返回值:
无
********************************************/
voidDraw_PM(constuchar*ptr)
{
uchari,j,k;
send_i(0x34);//打开扩展指令集
i=0x80;
for(j=0;j<32;j++)
{
send_i(i++);
send_i(0x80);
for(k=0;k<16;k++)
{
send_d(*ptr++);
}
}
i=0x80;
for(j=0;j<32;j++)
{
send_i(i++);
send_i(0x88);
for(k=0;k<16;k++)
{
send_d(*ptr++);
}
}
send_i(0x36);//打开绘图显示
send_i(0x30);//回到基本指令集
}
3.5.2汉字显示坐标
X坐标
Line1
80H
81H
82H
83H
84H
85H
86H
87H
Line2
90H
91H
92H
93H
94H
95H
96H
97H
Line3
88H
89H
8AH
8BH
8CH
8DH
8EH
8FH
Line4
98H
99H
9AH
9BH
9CH
9DH
9EH
9FH
/****************************************************************
*名称:
writelcd()
*功能:
在LCD上显示字符串
*入口参数:
constunsignedchar*pt字符串的首地址
*********************************************************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 PIC 单片机 温度 巡回 检测 系统 毕业设计 论文