mlx90614红外测温代码剖析

上传人:今*** 文档编号:105873318 上传时间:2019-10-13 格式:DOC 页数:18 大小:63.50KB
返回 下载 相关 举报
mlx90614红外测温代码剖析_第1页
第1页 / 共18页
mlx90614红外测温代码剖析_第2页
第2页 / 共18页
mlx90614红外测温代码剖析_第3页
第3页 / 共18页
mlx90614红外测温代码剖析_第4页
第4页 / 共18页
mlx90614红外测温代码剖析_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《mlx90614红外测温代码剖析》由会员分享,可在线阅读,更多相关《mlx90614红外测温代码剖析(18页珍藏版)》请在金锄头文库上搜索。

1、1通过本实验掌握MLX90614的原理。2通过实验掌握数码管基本原理3.通过实验掌握矩阵键盘的使用4通过实验掌握1602的使用二实验内容通过MLX90614非接触式测得物体温度三实验器材1.主控屏+5V电源2.DCP-PRJ09红外测温仪四实验原理图五实验步骤1. 接上电源2.运行Keil u Vision软件,新建一个工程,新建一个工程文件。将文件添加到工程中并编译,如有错,请更改直到编译成功,如有错,请更改直到编译成功4.用编程器将生成的HEX文件烧写到单片机中,或用STC单片机专用的串口烧写软件,通过MAX232串口烧写到单片机中(只能用于STC单片机)。或用仿真器来执行程序,将程序下载

2、到仿真器中,具体方法请参考仿真器的使用一节。用编程器将生成的HEX文件烧写到单片机中。5.程序下完后可以看到液晶屏有温度显示,用手掌覆盖红外传感器上方2cm处,看到此时液晶屏温度即为手掌的表面温度。6按下1键可以看到数码管显示,用手掌覆盖红外传感器上方2cm处,看到此时数码管温度即为手掌的表面温度。此时液晶屏温度保持不变。7按下除1键其他键,此时液晶屏又重新显示温度。实验代码如下:/-/说明:显示分为2部分:数码管显示,液晶屏显示/按1键数码管显示,此时液晶屏保持静止/复位时或按除1键外其他键时,液晶屏显示,数码管熄灭/-#include#include#define uint unsigne

3、d int#define uchar unsigned char#define Nack_number 10/*端口定义*uchar flag;/LCD控制线接口sbit RS=P06;/RS端sbit RW=P07;/读写端sbit LCDE=P35;/使能端/mlx90614端口定义sbit SCK=P37;/时钟线sbit SDA=P36;/数据线sbit DPY1=P32;/温度显示第1个数码管段选sbit DPY2=P33;/温度显示第2个数码管段选sbit DPY3=P34;/温度显示第3个数码管段选sbit row1=P03;/矩阵键盘第1列sbit row2=P04;/矩阵键盘

4、第2列sbit row3=P05;/矩阵键盘第3列sbit cow1=P00;/矩阵键盘第1行sbit cow2=P01;/矩阵键盘第2行sbit cow3=P02;/矩阵键盘第3行/*数据定义*bdata uchar flag1;/可位寻址数据sbit bit_out=flag17;sbit bit_in=flag10;uchar temp H,temp L,err;void CALTEMP(uint TEMP);void Read Key(void);void init Int();void delay1(uint z);void show();uchar key_num;uchar ma

5、h5;/*数码管码值定义*/uchar code LED01= /LED显示代码,0-9共阳不带小数点的0x C0,0x F9,0x A4,0x B0,0x99,0x92,0x82,0x F8,0x80,0x90;uchar code LED02= /LED显示代码,0-9共阳带小数点的0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10;/*全局变量定义*/bit b20ms,b100ms;/定时标志位uchar c20ms,c100ms;/定时毫秒数/*LCD1602*/向LCD写入命令或数据*#define LCD_COMMAND 0/命令#

6、define LCD_DATA 1/数据#define LCD_CLEAR_SCREEN 0x01/清屏#define LCD_HOMING 0x02/光标返回原点/设置显示模式*0x08+*#define LCD_SHOW 0x04/显示开一实验目的#define LCD_HIDE 0x00/显示关#define LCD_CURSOR 0x02/显示光标#define LCD_NO_CURSOR 0x00/无光标#define LCD_FLASH 0x01/光标闪动#define LCD_NO_FLASH 0x00/光标不闪动/设置输入模式*0x04+*#define LCD_AC_UP 0

7、x02/光标右移AC+#define LCD_AC_DOWN 0x00/默认光标左移AC-#define LCD_MOVE 0x01/画面可平移#define LCD_NO_MOVE 0x00/默认画面不移动/*mlx90614*/command mode命令模式#define Ram Access 0x00/对RAM操作#define Eepom Access 0x20/对EEPRAM操作#define Mode 0x60/进入命令模式#define Exit Mode 0x61/退出命令模式#define Read Flag 0xf0/读标志#define Enter Sleep 0xff

8、/进入睡眠模式/ram address read only RAM地址(只读)#define Abmient Temp Addr 0x03/周围温度#define IR1Addr 0x04#define IR2Addr 0x05#define Line Abmient Temp Addr 0x06/环境温度/*0x0000 0x4074 16500 0.01/单元 -40 125*/ #define Line Obj1Temp Addr 0x07 /目标温度,红外温度 /*0x27ad-0x7fff 0x3559 22610 0.02/单元 -70.01-382.19 0.01 452.2*/

9、 #define Line Obj2Temp Addr 0x08/eepom address EEPROM地址#define TObj Max Addr 0x00/测量范围上限设定#define TObj Min Addr 0x01/测量范围下限设定#define PWMCtrl Addr 0x02/PWM设定#define Ta Range Addr 0x03/环境温度设定#define Ke Addr 0x04/频率修正系数#define Config Addr 0x05/配置寄存器#define SMbus Addr 0x0e/器件地址设定#define Reserverd1Addr 0

10、x0f/保留#define Reserverd2Addr 0x19/保留#define ID1Addr 0x1c/ID地址1#define ID2Addr 0x1d/ID地址2#define ID3Addr 0x1e/ID地址3#define ID4Addr 0x1f/ID地址4/*函数声明*void start();/MLX90614发起始位子程序void stop();/MLX90614发结束位子程序uchar Read Byte(void);/MLX90614接收字节子程序void send_bit(void);/MLX90614发送位子程序void Send Byte(uchar nu

11、mber);/MLX90614接收字节子程序void read_bit(void);/MLX90614接收位子程序void delay(uint N);/延时程序uint readtemp(void);/读温度数据void init1602(void);/LCD初始化子程序void busy(void);/LCD判断忙子程序void cmd_wrt(uchar cmd);/LCD写命令子程序void dat_wrt(uchar dat);/LCD写数据子程序void display(uint Tem);/显示子程序void Print(uchar*str);/字符串显示程序/*主函数*void main()uint Tem;/温度变量init Int();SCK=1;SDA=1;delay(4);SCK=0;delay(1000);SCK=1;init1602();/初始化LCDwhile(1)while(b100ms)/每100ms扫描一次键盘b100ms=0;Read Key();if(key_num=1)/按下1键时,进行数码管显示Tem=readtemp();CALTEMP(Tem);show();if(key_num!=1)/液晶屏显示Tem=readtemp();/读取温度cmd_wrt(0x01);/清屏

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

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号