甘肃省山丹培黎学校.doc

上传人:飞****2 文档编号:61359935 上传时间:2022-11-21 格式:DOC 页数:14 大小:309KB
返回 下载 相关 举报
甘肃省山丹培黎学校.doc_第1页
第1页 / 共14页
甘肃省山丹培黎学校.doc_第2页
第2页 / 共14页
点击查看更多>>
资源描述

《甘肃省山丹培黎学校.doc》由会员分享,可在线阅读,更多相关《甘肃省山丹培黎学校.doc(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、甘肃省山丹培黎学校SHANDAN BAILIE SCHOOL OF GANSU PROVINCE论文题目:基于PIC单片机的多路温度监控巡回系统专业班级:09秋大专计信班 联系电话: 电气工程及其自动化 班级: 姓 名: 王志吉 身份证号: 指导教师: 王文珍 摘要:本文介绍了一种基于PIC16F877A单片机,利用DS18B20对多路温度采集,并进行温度的控制与检测,并通过12864液晶显示出来。系统中通过控制按钮实现了实时各路的报警温度,并且实现多路与任一单路温度显示切换,从而既可以进行多路的检测又可以进行任一单路的监控,而且还有数字跟图形两种显示方式更为直观。在温度超过设定温度时温度跟时

2、间通过24C02存储起来,以便查看,同时可以通过固定电话远程报警,还能将温度上传至PC机,进行后续处理。关键词:温度检测;单片机;串行通讯;DS18B20;基于PIC单片机的多路温度监控巡回系统1 系统设计在工业生产和日常生活中,经常要对温度进行测量与控制,并且有时是对多个点进行温度测量,比如冷库温度监控、环境温度监测、农业温室监控、粮库温度监控等。在这种情况下,多点温度检测系统应运而生。多点温度检测系统通常能够对多个工作点的温度进行检测,显示当前温度,并能够对温度进行存储和报警,还能将温度上传至PC机,进行后续处理。传统的测温元件有热电偶和热电阻,需很多硬件支持并且电路复杂。本文将设计一款由

3、新型的数字温度传感器DS18B20配合单片机,具有温度检测、显示、存储、自动统计分析及跟电脑通讯连接还利用固定电话远程报警等功能的多点温度监控系统。2 主芯片:PIC16F877A单片机简介2.1 PIC单片机的优越之处:(1)哈佛总线结构:MCS-51单片机的总线结构是冯-诺依曼型,计算机 在同一个存储空间取指令和数据,两者不能同时进行;而PIC单片机的总线结构是哈佛结构,指令和数据空间是完全分开的,一个用于指令,一个用于数据,由于 可以对程序和数据同时进行访问,所以提高了数据吞吐率。正因为在 PIC单片机中采用了哈佛双总线结构,所以与常见的微控制器不同的一点是:程序和数据总线可以采用不同的

4、宽度。数据总线都是8位的,但指令总线位数分别位 12、14、16位。 (2)流水线结构:MCS-51单片机的取指和执行采用单指令流水线结构,即取一条指令,执行完后再取下一条指令;而PIC的取指和执行采用双指令流水线结构,当一条指令被执行时,允许下一条指令同时被取出,这样就实现了单周期指令。 (3)寄存器组:PIC单片机的所有寄存器,包括I/O口,定时器和程序计数器等都采用RAM结构形式,而且都只需要一个指令周期就可以完成访问和操作;而MCS-51单片机需要两个或两个以上的周期才能改变寄存器的内容。 (4)运行速度高:由于采用了哈佛总线结构,以及指令的读取和执行才用了流水作业方式,使得运行速度大

5、大提高。 (5)功耗低:PIC单片机的功率消耗极低,是目前世界上最低的单片机品种之一。在4MHz时钟下工作时耗电不超过2mA,在睡眠模式下耗电可以低到1uA以下。 (6)驱动能力强:I/O端口驱动负载的能力较强,每个I/O引脚吸入和输出电流的最大值可分别达到25mA和20mA,能够直接驱动发光二极管LED、光电耦合器或者轻微继电器等。 (7)外接电路简洁PIC单片机片内集成了上电复位电路、I/O引脚上拉电路、看门狗定时器等,可以最大程度减少或免用外接器件,以便实现“纯单片机”应用。这样,不仅方便于开发,而且还可节省用户的电路空间和制作成本。 (8)程序保密性强目前,尚无办法对其直接进行解密拷贝

6、,可以最大限度的保护用户的程序版权。2.2 PIC16F877A引脚图及主要性能 主要性能参数如下所示:l 具有高性能RISC CPUl 仅有35条单字指令l 次擦写周期l 除程序分支指令为两个周期外,其余均为单周期指令l 运行速度: DC20MHZ始终输入 DC200ns 指令周期l 8K * 14个 FLASH程序存储器368 * 8 个数据存储器(RAM)字节256 * 8 EEPRM 数据存储器字节l 提供14个中断源l 功耗低在5V, 4MHZ 时钟运行时电流小于 2mA在3V, 32KHZ 时钟运行时电流小于20Ual 支持在线串行编程(ICSP)l 运行电压范围广,2.0V到5.

7、5Vl 输入及输出电流可达到25mAl Timer0:带有预分频器的8位定时器/计数器l Timer1:带有预分频器的16位定时器/计数器,在使用外部晶振震荡时钟时,在睡眠期间仍能工作l Timer2:带有8位周期寄存器,预分频器和后分频器的8位定时器/计数器。l 2个捕捉器,比较器,PWM模块其中: 捕捉器是16位,最大分辨率是12.5ns 比较器是16位,最大分辨率是200ns PWM最大分辨率是10位l 10位多通道模数转换器2.3 最小系统 2.3.1复位功能PIC16F877A的复位功能设计得比较完善,实现复位或引起复位的条件和原因可以归纳成4类:人工复位、上电复位、看门狗复位、欠压

8、复位。这里简单介绍一下人工复位人工复位:无论是单片机在正常运行程序,还是处在睡眠状态或出现死机状态,只要在人工复位端MCLR加入低点平信号,就令其复位。本次设计的电路图如图2.31所示。 图 2.31 PIC最小系统电路图 图2.32 最小系统实物图 2.3.2 系统时钟 数字电路的工作离不开时钟信号,每一步细微动作都是在一个共同的时间基准信号协调下完成的。作为时基发生器的时钟震荡电路,为整个单片机芯片的工作提供系统时钟信号,也为单片机与其他外接芯片之间的通讯提供可靠的同步时钟信号。PIC16F877A的时钟电路是由片内的一个反相器和一个反馈电阻,与外接的1个石英晶体和2个电容,共同构成的一个

9、自激多谐振荡器。电路如图2.31 所示。2.4 设计心得总结 PIC16F877A的最小系统跟51相似,较为简单。芯片自身增加了很多功能,如:自带8路AD转换、增加SPI总线,引脚复位功能多等。芯片自身功能的增加给设计带来了很多灵活性,同时也是学习的难点。3 LCD12864液晶原理介绍及接口实现3.1 液晶显示模块概述12864A-1汉字图形点阵液晶显示模块,可显示汉字及图形,内置8192个中文汉字(16X16点阵)、128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM)。主要技术参数和显示特性:电源:VDD 3.3V+5V(内置升压电路,无需负压);显示内容:128列 64

10、行显示颜色:黄绿显示角度:6:00钟直视LCD类型:STN与MCU接口:8位或4位并行/3位串行配置LED背光多种软件功能:光标显示、画面移位、自定义字符、睡眠模式等3.2 液晶引脚说明引脚号引脚名称方向功能说明1VSS-模块的电源地2VDD-模块的电源正端3V0-LCD驱动电压输入端4RS(CS)H/L并行的指令/数据选择信号;串行的片选信号5R/W(SID)H/L并行的读写选择信号;串行的数据口6E(CLK)H/L并行的使能信号;串行的同步时钟7DB0H/L数据08DB1H/L数据19DB2H/L数据210DB3H/L数据311DB4H/L数据412DB5H/L数据513DB6H/L数据6

11、14DB7H/L数据715PSBH/L并/串行接口选择:H-并行;L-串行16NC空脚17/RETH/L复位 低电平有效18NC空脚19LED_A-背光源正极(LED+5V)20LED_K-背光源负极(LED-OV)逻辑工作电压(VDD):4.55.5V电源地(GND):0V工作温度(Ta):060(常温) / -2075(宽温)3.3 接口时序模块有并行和串行两种连接方法,本文采用并行接法(时序如下):8位并行连接时序图MPU写资料到模块程序实现如下:/* 名 称:send_i() * 功 能:写一个字节命令到LCD* 入口参数:unsigned char x 字符*/void send_i

12、(unsigned char x)chk_busy(); /检测LCD是否工作繁忙rs = 0; /设置该字节数据为控制命令rw = 0; /设置此次操作为写PORTD = x; /送数据口PORTDe = 1; /使能nop();nop();nop();e = 0; /禁止MPU从模块读出资料程序实现如下:/* 读数据*/unsigned char u8_Lcd12864ReadByte_f( void ) unsigned char byReturnValue ; chk_busy() ; /检测LCD是否工作繁忙TRISD=0XFF; /设置PD口为输入状态 PORTD = 0xff ;

13、 /PD初始化为高电平 rs=1; / 读置高 rw=1; / 写置高 e=0; / 使能置低 e=1; / 使能置高 byReturnValue = PORTD ; / 读数据 e=0; / 关使能TRISD=0X00; / 恢复PD口为输出 return byReturnValue ; / 返回读到的数据3.4 显示坐标关系3.4.1、图形显示坐标水平方向X以字节单位 垂直方向Y以位为单位函数名称:Draw_PM功 能:在整个液晶屏幕上画图参 数:无返回值 :无*/void Draw_PM(const uchar *ptr) uchar i,j,k; send_i(0x34); /打开扩展

14、指令集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.4.2 汉字显示坐标 X坐标Line180H81H82H83H84H85H86H87HLine290H91H92H93H94H95H96H97HLi

15、ne388H89H8AH8BH8CH8DH8EH8FHLine498H99H9AH9BH9CH9DH9EH9FH/* 名 称: writelcd()* 功 能: 在LCD上显示字符串* 入口参数:const unsigned char *pt 字符串的首地址*/void writelcd(const unsigned char *pt) while(*pt)/检测是否达到了字符串最后 send_d(*pt+); /发送数据给lcd/ 应用如下const uchar table1 = 基PIC 单片机;const uchar table2 = 多路温度; const uchar table3 =

16、 巡回检测系统; const uchar table4 =2009年12月01日;send_i(0x80); / 定位在第一行writelcd(table1); / 写:基PIC 单片机send_i(0x90); / 定位在第二行writelcd(table2); / 写:多路温度send_i(0x88); / 定位在第三行writelcd(table3); / 写:巡回检测系统send_i(0x98); / 定位在第四行writelcd(table4); / 写:2009年12月013.5设计心得总结LCD12864与1602相比需要较大的电流驱动,如果出现图片模糊不清晰或者灰暗,除了检查背

17、光灯外应考虑电源问题。最好采用大于5V的电源,经7805稳压管稳压驱动,以保证电流。基本驱动跟1602相似难度不大。中文及图像显示是12864最大的特点也是难点,主要是指令较多,还有就是图像驱动需要了解液晶内部原理。整屏画图可以使用PCtoLCD2002把图片转换成16进制数,局部画曲线、直线、圆等需要一些算法,比较复杂。5 实时时钟DS1302简单介绍及接口实现5.1 DS1302简介DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信

18、,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。5.2 DS1302结构及工作原理DS1302的引脚排列如图2.1所示,其中Vcc1为后备电源,Vcc2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc10.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是

19、振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc2.5V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向), SCLK始终是输入端。图6.1DS1302引脚图 DS1302 的

20、控制字如图2.2所示。控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。 图6.2 DS1302控制字DS1302的数据输入输出方式(I/O) ,在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。 DS1302一共有1

21、2个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见图2.3。图6.3DS1302日历、时间寄存器此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发(Burst)方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、F

22、FH(读)。5.3 DS1302的接口实现DS1302的初始化过程非常简单,在DS1302上电之后先关闭DS1302的写保护,接着依据不同的寄存器地址分别写入年份、月份、日期,以及需要设定的时间,然后启动DS1302的时钟振荡,打开写保护,这样DS1302就能正常走时了,并且不会因为误操作而干扰到DS1302。当DS1302上电后,为了防止系统掉电后重新上电,接着调用DS1302初始化程序造成时间丢失,我们在初始化DS1302的时候先把DS1302当前的秒走时读出,放如临时变量,接着判断时间的正确性,如果时间正确,则把秒走时回送DS1302,重新启动时钟振荡后关闭保护;如果时间不正确,则重新调

23、用时间设置程序。关闭写保护读出秒数据时间正确?YN回送秒数据打开写保护芯片上电结束调用时间设置打开写保护结束图6.4 DS1302初始化此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发(Burst)方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。DS1302与单片机的连接电路图如图6.5所示: 图 6.5 DS1302硬件连接图备用电池可用来断电保护,当主电源断开之后,备用电池开始工作,起到备用作用,继续保持时钟的准确性参考文献1 陈洪财. 单片机C语言和汇编语言实用开发技术M哈尔滨工业出版社 .2008.52 刘和平等. PIC16F877X单片机实用软件与接口技术-C语言及其应用M. 北京航空航天大学出版社, 2003-1-13 李学海. PIC单片机实用教程基础篇M. 北京航空航海大学出版社, 2007-02 2010年11月9日

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁