单片机课程设计-基于PIC单片机室内温度检测
引言
在工业控制中,PIC单片机应用广泛,它最大的特点是不搞单纯的功能堆积,而是从实际出发,重视产品的性能与价格比,靠发展多种型号来满足不同层次的应用要求。就实际而言,不同的应用对单片机功能和资源的需求也是不同的。比如,一个摩托车的点火器需要一个I/O较少、RAM及程序存储空间不大、可靠性较高的小型单片机,若采用40脚且功能强大的单片机,投资大不说,使用起来也不方便。PIC单片机型号16F628A,通过温度传感器18b20来检测温度,并通过MAX485芯片进行传输,在读取温度方面可以用过一个RS485和RS232电平转换器,传输到PC机上来查看。
1.问题分析及解决方案
1.1 题目要求
本课程设计为一个实际应用系统的温度检测控制部分,在温度检测系统中,对功能的要求如下:
1.需要通过温度传感器18b20把实时的温度采集出来。
2.当PIC单片机程序跑飞,或受到干扰是有软件自动复位的功能。
3.给PIC单片机一个地址,通过上位机来寻找此地址来查询温度,且可以修改地址。
4.当PIC单片机断电和复位后,修改后的地址保持不变。
5.需要通过458总线进行传输。
1.2 解决方案
针对题目所提供的要求,逐步提出以下解决方案:
1.温度传感器18b20的温度采集主要的采集原理中的问题就是时序的问题,它之中的读,写,复位时序弄清楚,再对相应的寄存器进行设置。18b20就可以开始采集温度。
2.对第二个要求,在PIC16F628A单片机刚好存在有看门狗功能,即当看门狗使能时,一段时间没有喂狗,单片机就会自动复位,刚好解决了第二个问题。
3.在第三个和第四个要求中,可以利用PIC16F628A中的EEPROM来解决,EEPROM的主要功能就是的那个单片机断电后里面存在的数据不会丢失,在改变此检测系统的地址时,只需要把地址写到单片机的EEPROM中即可。
4.要通过485传输,我们选择了集成芯片MAX485,它满足了485传输协议,利用差分传输,抗干扰能力强,通过对MAX485芯片的控制就达到了485传输的功能。
2. 单片机选型及硬件配置
2.1 单片机及扩展模块选择
在此室内温度检测上,我们在单片机的选择上进行了综合的考虑,最终选择了工业级单片机PIC16F628A。它的主要特点:性价比高,体积小。它内部的结构完全可以满足室内温度检测所需要的要求,例如它内部有看门狗功能,有128字节的EEPROM,还有内部晶振,低功耗功能,16个IO口,欠压复位功能。基于此,我们选择它作为此系统的核心控制单元。
在扩展模块中,我们需要温度传感和485传输。现在市场上用于温度检测主要就是18b20,它的优点也是性价比高,单线传输数据,可以节约单片机的IO口,所以我们也选择了18b20.MAX485是基于485协议的485传输接口芯片,采用半双工传输方式。性价比高,优质,采用它的主要原因。
2.2 I/O
在此系统中我们用到的IO口不多,引脚主要有指示灯一个,温度传感器一个,控制MAX485一个和外接晶振两个引脚,串行发送和接受两个引脚。具体引脚图如图1所示,IO地址分配如表1所示:
图1 PIC16F628A引脚图
表1 IO地址分配表
IO地址功能RA3指示灯RB418B20温度传输线RB1数据接收RB2数据发送RB5MAX485控制线2.3 系统硬件原理图
利用PROTEL绘制的系统控制电路原理图如图2所示。
图2 电路原理图
3.软件实现
3.1 控制流程图
为了清楚地表明动作的顺序和条件,绘制室PIC单片机检测温度主程序流程图如图3所示。
图3 主程序流程图
温度传感器18B20的工作流程图如图4所示。
图4 温度传感器18b20工作流程图
中断服务工作和EEPROM读写流程图如图5所示。
图5 中断服务程序及EEPROM写流程图
3.2 软件代码
利用C语言在MPLAB编译器里编写的程序如下所示:
//PIC单片机配置位0xde45
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define DQ RB4
#define DQ_HIGH() TRISB4=1;DQ=1 //为输入
#define DQ_LOW() TRISB4=0;DQ=0
uint temper;
uchar a1,a2,a3,a4,addr,flag=0,flag1=0;
void delay(uint x);
void delayus(uint x);
void init();
void reset();
void write_byte(uchar date);
ucha