红外体温计的设计 - 图文(5)

2019-08-29 19:11

江苏理工学院毕业设计说明书(论文)

第4章 软件模块设计

本次设计的是基于单片机的非接触式体温计,秉承的是从局部到整体的设计方案,将复杂的问题简单化,将复杂的问题分别一一解决。本次设计采用KELL软件编程,接通电源单片机自动复位,程序进行工作,红外传感器进行红外测温,将测得的温度在液晶显示屏上显示采集到的数据。当采集到的温度大于所设置的温度值的时候则进行温度报警,LED显示灯亮则表示温度报警。主程序流程图如图4-1所示。

图4-1主程序流程图

第 17 页 共 61 页

江苏理工学院毕业设计说明书(论文)

4.1红外测温模块

4.1.1红外测温模块分析

MLX90615红外传感器的默认的地址为5BH,单片机能够通过从地址来访问MLX90615。MLX90615传感器的发送与接收数据都是以字节为单位,每当发送一个字节,系统做出判断,判断是否有回应,要是有回应则进行下一个字节,若是没有回应,重复的发送这个字节,一直到接收为止。MLX90615红外传感器与单片机通过SMBus协议进行数据传输。此时单片机为设备,MLX90615为从设备,主设备向从设备进行数据传输。MLX90615中有16个字长为16的存储单元,地址为0H~FH,6H和7H中分别储存了环境的温度和物体的温度,物体的温度可以通过T0=RAM×0.02-273.15来得出。 4.1.2软件程序

图4-3测温流程图。

图4-3 红外测温流程图

第 18 页 共 61 页

江苏理工学院毕业设计说明书(论文)

程序:

#include \#include \#include \#include \

#define _NOP() _nop_() // 5us

void delay_Tbuf() { }

void delay_Thd() { }

void MLX90615_init(void) {

mSDA_OUT; // Set SDA as Output mSCL_OUT; // Set SCL as Output mSDA_HIGH(); // bus free mSCL_HIGH(); }

第 19 页 共 61 页

//_nop_(); unsigned char a,b; for(b=1;b>0;b--)

for(a=1;a>0;a--);

江苏理工学院毕业设计说明书(论文)

void START_bit(void) {

mSDA_OUT; mSDA_HIGH(); delay_Tbuf();

// Set SDA line

// Wait a few microseconds

// Set SCL line

mSCL_HIGH(); delay_Tbuf();

// Generate bus free time between Stop

// and Start condition (Tbuf=4.7us min)

// Clear SDA line

mSDA_LOW(); delay_Tbuf();

// Hold time after (Repeated) Start

// Condition. After this period, the first clock is

generated. }

void STOP_bit(void) { }

unsigned char TX_byte(unsigned char Tx_buffer)

第 20 页 共 61 页

mSDA_OUT; mSCL_LOW(); delay_Tbuf();

// Clear SCL line

//(Thd:sta=4.0us min)

// Clear SCL line

mSCL_LOW(); delay_Tbuf();

// Wait a few microseconds

// Wait a few microseconds

// Clear SDA line

mSDA_LOW(); delay_Tbuf();

// Wait a few microseconds

// Set SCL line

mSCL_HIGH(); delay_Tbuf();

// Stop condition setup time(Tsu:sto=4.0us min)

// Set SDA line

mSDA_HIGH();

江苏理工学院毕业设计说明书(论文)

{

for(Bit_counter=8; Bit_counter; Bit_counter--) { }

Ack_bit=Receive_bit();

// Get acknowledgment bit

if(Tx_buffer&0x80)

bit_out=1; // If the current bit of Tx_buffer is 1 set bit_out

unsigned char unsigned char unsigned char

Bit_counter; Ack_bit; bit_out;

else

bit_out=0; // else clear bit_out

send_bit(bit_out); Tx_buffer<<=1;

// Send the current bit on SDA // Get next bit for checking

return Ack_bit;

}// End of TX_bite()

unsigned char RX_byte(unsigned char ack_nack) {

unsigned char RX_buffer; unsigned char

for(Bit_Counter=8; Bit_Counter; Bit_Counter--) {

if(Receive_bit()) {

第 21 页 共 61 页

// Get a bit from the SDA line

Bit_Counter;


红外体温计的设计 - 图文(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:新:接收预备党员及转正党员票决汇总单及会议程序

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: