基于msp430的温度采集报警系统的毕业设计内容摘要:

单片机电路作为整个系统的核心控制部分,主要是完成与其他电路的接口,从而获得数据进行处理,将处理的结果采用某种方式表示出来,比如显示或报警。 从单片机最小系统电路可以看出,单片机的接口电路非常简单,分别采用单片机的一般 I/O 口实现与其他电路的连口,在单片机的时钟设计上与其他单片机有一定的区别, MSP430F149 单片机采用两个时钟输入,一个 32kHz 的时钟信号,一个 8MHz 的时钟信号。 该系统的时钟部分都是采用晶体振荡器实现的 [7]。 考虑到电源的输入纹波对单片机的影响,在电源的管脚增加一个 的电容来实现滤波,以减小输入端受到的干扰。 另外单片机还有模拟电源的输入端,因此在这里需要考虑干扰问题,在该系统中的干扰比较小,因此模拟地和数字地共地,模拟电源输入端增加一个滤波电容以减小干扰。 单片机最小系统电路如图 31 所示。 毕业设计(论文) 11 图 31 单片机最小系统电路 167。 电源及复位模块 电压电路: 由于 MSP430F149 单片机的工作电压一般是 ~ ,并且功耗极低。 为了方便起见,本系统采用电池(如 2 节普通 5 号电池)供电,因此输出电压为 3V。 而整个系统采用 供电,考虑到硬件系统对电源要求具有稳压功能和纹波小等特点,另外也考虑到硬件系统的低功耗等特点,因此该硬件系统的电源部分采用 TI 公司的 TPS76033 芯片实现,该芯片能很好满足该硬件系统的要求,另外该芯片具有很小的封装,因此能有效节约 PCB 板的 面积 [8]。 为了使输出电源的纹波小,在输出部分用了一个 和 的电容,另外在芯片的输入端也放置一个 的滤 波毕业设计(论文) 12 电容,减小输入端受到的干扰。 电源电路具体如图 32 所示。 图32 电源电路 复位电路: 在单片机系统里,单片机需要复位电路,复位电路可以采用 RC 复位电路,也可以采用复位芯片实现的复位电路, RC 复位电路具有经济性,但可靠性不高,用复位芯片实现的复位电路具有很高的可靠性,因此为了保证复位电路的可靠性,该系统采用 复位芯片实现的复位电路,该系统采用 MAX809 芯片 [1]。 为了减小电源的干扰,还需要在复位芯片的电源输入腿加一个 的电容来实现滤波,以减小输入端受到的干扰。 复位电路如图 33 所示。 图 33 复位电路 毕业设计(论文) 13 167。 采集模块 该系统采用美国 DALLAS 公司生产的单线数字温度传感器 DS18B20来采集温度数据 ,作为单片机 MSP430149 的温度传感器,该芯片很多优点,可把温度信号直接转换成串行数字信号供微机处理。 由于每片 DS18B20含有唯一的硅串行数,从 DS18B20 读出的信息或写入 DS18B20 的信息,仅需要一根口线(单线接口)。 由于该系统采用 DS18B20 作为温度采集传感器,这部分电路就比较简单了,图 34 为温度采集电路 [1]。 图 34 温度采集电路 通过 图 34 可以看出该集成电路具有简单、实用等特点。 I/O 口可以与 MSP430F149 的 口直接相连,来完成数据的 传送。 167。 键盘输入模块 键盘输入电路主要是用来输入数据,从而实现人机交互。 该系统的键毕业设计(论文) 14 盘设计是采用扫描方式实现的矩阵键盘。 键盘电路图 如 图 35 所示。 图 35 键盘输入电路 该矩阵扫描键盘由行线和列线组成, 、 、 和 构成键盘的行线, 、 、 和 构成键盘的列线。 键盘的行线作为键盘的控制输出端,键盘的列线作为键盘的输入端。 在设计时为了程序设计的方便性,键盘的列线采用的是 、 、 和 ,这样可 以利用该管脚的中断功能。 这样在没有按键按下的情况下,该四个管脚的电平为高电平,如果有按键按下时,则相应的列线管脚为低电平,这时通过设置 、 、 和 为低电平触发中断方式,低电平就触发中断而进入中断服务程序,从而获得输入的数据 [9]。 键盘的工作原理具体如下:首先将 、 、 和 设置为输出,将 、 、 和 设置为输入,并将 、 、 和 设置为低电平触发中断方式;将 设置为低电平,如果该行上 有按键按下的话,则 、 、 或者 上为低电平,就会触发中断,进入中断服务程序,获得输入的数据。 如果没有按键按下的话,则 、 和 上为高电平,不会进入中断服务程序。 依次将 、 、毕业设计(论文) 15 和 设置为低电平来判断该行是否有输入,如果没有输入的话,、 、 和 均为高电平,如果有输入的话, 、 、 或者 上为低电平 [10],就会触发中断,进入中断服务程序,获得输入数据。 键盘的扫描时间很短,仅仅几微妙的时间,然而按键的时 间一次至少需要几十毫秒,所以只要有按键按下的话是都可以被扫描到的。 另外还要考虑键盘的抖动处理。 167。 显示模块 系统的显示电路采用 LCD1602 液晶显示器显示 ,这样的方式能满足该系统的要求,也可很容易的完成。 图 36 为该系统的显示电路。 图 36 显示电路 通过 图 35 可以看出,该显示电路直接与单片机的数据 I/O 口进行连接,由于 MSP430149 具有丰富的 I/O 口资源,这样采用并行的接口方式非常容易,减小系统设计的复杂度,也可以增加系统的可靠性。 ~ 毕业设计(论文) 16 是用来显 示数据, 、 和 是用来控制数码管的选通状态。 167。 报警模块 该部分电路主要是驱动一个蜂鸣器,这样只需要将蜂鸣器的一端接地,另一端以单片机进行相接就可以了,由于 MSP430F149 的驱动能力不是很够,需要加一个放大电路。 该电路具有简单、实用等特点。 为了减少电源的输入纹波对放大电路的影响,在电源的管脚增加一个 的电容来实现滤波,以减小输入端受到的干扰。 报警电路图如图 37 所示。 图 37 报警电路 有图 37 可知 LM386 的 IN+( 3)端口与 MSP430F149 的 端口通过一个 100 欧姆的电阻相连接,来完成相应的控制。 毕业设计(论文) 17 第四章 系统的软件设计 经过前面对系统硬件的了解,这一节介绍系统的软件设计。 系统的软件主要包括采集模块、键盘输入模块、显示模块、报警模块和主处理模块。 下面就具体介绍各个模块的软件设计 [1]。 167。 最小系统设计 主处理模块主要是将各个模块进行协调处理和实现数据交互。 主处理模块首先完成初始化工作,初始化后进入循环处理,在循环过程中主处理获得采集模块的数据,并将数据进行处理,根据处理后的结果来进行显示或 者报警。 由于报警的上限和下限需要设置,另外考虑到对数据的保存,因此主程序先检查门限是否在 FLASH 里面有,如果没有则进行等待设置数据,设置完成后才进入下一步处理,也就是程序必须在有设置数据的情况下才能正常运行 [11]。 下面给出主处理的流程图,如图 41 所示。 程 序 初 始 化打 开 中 断读 F L A S H 的 内 容 有 设 置 数 据。 等 待 设 置 数 据启 动 定 时 器数 据 处 理 数 据 正 常。 报警数 据 显 示YN 图 41 主处理器 流程图 毕业设计(论文) 18 考虑到需要对设置数据进行读写,这样需要对 FLASH 进行操作,下面给出 FLASH 操作的 函数。 该函数的功能是将一个 WOED 类型的数据写入到 FLASH 里面。 void FLASH_ww(int *pData int nValue) { PCTL3 = 0xA500。 //LOCK = 0。 PCTL1 = 0xA540。 // WRT = 1。 *pData = nValue。 } 该函数的功能是将一个 BYTE 类型的数据写入到 FLASH 里面。 void FLASH_wb(char *pData char nValue) { PCTL3 = 0xA500。 //LOCK = 0。 PCTL1 = 0xA540。 // WRT = 1。 *pData = nValue。 } 该函数的功能是将 FLASH 里面的内容擦除掉。 void FLASH_clr( int *pData ) { PCTL1 = 0xA502。 //ERASE = 1。 PCTL3 = 0xA500。 // LCOK = 0。 *pData = 0。 } 根据上面流程图给出简单的程序,下面的程序是简单化的处理,只是将得到的结果除以 100 获得整数部分 ,该程序忽略小数部分的处理,该程序也是假定上下限在 0~ 100 之间。 以下为具体的程序 [12]。 见附录 1 毕业设计(论文) 19 167。 采集模块 采集模块重要是 通过 DS18B20 温度传感器获得 数据, 并 对采集来的数据进行处理 后 送给 MSP430F149。 CPU 对 DS18B20 的访问流程是:先对DS18B20 初始化,再进行 ROM 操作命令,最后才能对存储器操作,数据操作。 DS18B20 每一步操作都要遵循严格的工作时序和通信协议。 如主机控制 DS18B20 完成温度转换这一过程,根据 DS18B20 的通讯协议,须经三个步骤:每一次读写之前 都要对 DS18B20 进行复位,复位成功后发送一条 ROM 指令,最后发送 RAM 指令,这样才能对 DS18B20 进行预定的操作 [13]。 图 42 为该模块的程序流程图。 跳 过 R O M温 度 采 集 与 转 换7 5 0 m s 处 理 完 毕开 始读 取 温 度 值初 始 化 D S 1 8 B 2 0发 送 数 据还 回 图 42 采集模块程序流程图 毕业设计(论文) 20 167。 键盘输入模块 键盘输入电路主要是用来输入数据,从而实现人机交互。 该系统的键盘设计是采用扫描方式实现的矩阵键盘。 该矩阵扫描键盘由行线和列线组成, 、 、 和 构成键盘的行线, 、 、 和 构成键 盘的列线。 键盘的行线作为键盘的控制输出端,键盘的列线作为键盘的输入端。 在设计时为了程序设计的方便性,键盘的列线采用的是 、 和 ,这样可以利用该管脚的中断功能。 这样在没有按键按下的情况下,该四个管脚的电平为高电平,如果有按键按下时,则相应的列线管脚为低电平,这时通过设置 、 、 和 为低电平触发中断方式,低电平就触发中断而进入中断服务程序,从而获得输入的数据[1]。 键盘的工作原理具体如下:首先将 、 、 和 设置为输出,将 、 、 和 设置为输入,并将 、 、 和 设置为低电平触发中断方式;将 设置为低电平,如果该行上有按键按下的话,则 、 、 或者 上为低电平,就会触发中断,进入中断服务程序,获得输入的数据。 如果没有按键按下的话,则 、 和 上为高电平,不会进入中断服务程序。 依次将 、 、 和 设置为低电平来判断该行是否有输入,如果没有输入的话,、 、 和 均为高电平,如果有输 入的话, 、 、 或者 上为低电平,就会触发中断,进入中断服务程序,获得输入数据。 键盘的扫描时间很短,仅仅几微妙的时间,然而按键的时间一次至少需要几十毫秒,所以只要有按键按下的话是都可以被扫描到的。 另外还要考虑键盘的抖动处理 [13]。 为了防止键盘的扫描而影响其他部分的处理,这里采用了定时器 B 来检察是否有按键按下。 图 43 为该部分的程序流程图。 毕业设计(论文) 21 定 时 器 B 中 断 到 来计 数 器 加 1设 置 行 线 输 出端 口 中 断 服 务 程 序 图 43 输入模块流程图 该模块主要包括对定时器 B 和端口中断的处理初始化部分 :该部分主要完成端口的初始化和定时器 B 的初始化。 该部分端口的初始化程序。 void Int_INPUTPort(void) { //将管脚在初始化的时候设置为输入方式 PIDIR = 0。 //将所以的管脚设置为一般 I/O 口 PISEL = 0。 //将 、 、 和 设置为输入方向 PIDIR amp。 =~( BIT4)。 PIDIR amp。 =。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。