MLX90614非接触式红外体温计的单片机驱动程序

发布者:sdlg668最新更新时间:2020-09-02 来源: 51hei关键字:MLX90614  非接触式  红外体温计  单片机驱动 手机看文章 扫描二维码
随时随地手机看文章

单片机源程序如下:

#include

#include"MLX906.h"

#include"LCD1602.h"

#include"EEPROM.h"

#include"I2C.h"

#include"WT558D.h"

#include"USART.h"

sbit red =P3^3;

sbit green =P3^4;

sbit blue =P3^5;

sbit key =P3^6;

uchar tab[] ="Temp:";

int main()

{        

        uchar i;

        uint wendu;                  //存储读取的值

        uint xiaoshu,zhengshu;        //存储小数和整数

        uchar ge,shi,bai,fyi,fer; //存储个,十,百,分数的第一位,分数的第二位

        double num;

        UsartInit();

        Lcd_init();

        for(i=0;i<5;i++)

        {

                write_data(tab[i]);

        }

        bai = EEPROM_read_data(0);

        shi = EEPROM_read_data(1);

        ge = EEPROM_read_data(2);

        fyi = EEPROM_read_data(3);

        fer = EEPROM_read_data(4);

        if(bai!=0)

        {

                write_data(bai+0x30);

        }

        write_data(shi+0x30);        

        write_data(ge+0x30);        

        write_data(0x2e);        

        write_data(fyi+0x30);        

        write_data(fer+0x30);

        write_data(0xdf);

        write_data('C');

        write_com(0x85);

        key=1;

        while(1)

        {

                if(key==0)

                {

                        delay(10);

                        if(key==0)

                        {        

                                wendu=read_temp();

                                wendu=wendu*2;

                                if(wendu>=27315)

                                {

                                         wendu=wendu-27315+530;         //530是进行温度补偿

                                         zhengshu=wendu/100;           //整数部分

                                         xiaoshu=wendu-zhengshu*100; //小数部分

                                         bai = zhengshu/100;

                                         shi = zhengshu%100/10;

                                         ge = zhengshu%10;

                                         fyi = xiaoshu/10;

                                         fer = xiaoshu%10;


                                         num = wendu*1.0/100;

                                         EEPROM_write_data(0,bai);

                                         delay(20);

                                         EEPROM_write_data(1,shi);

                                         delay(20);

                                         EEPROM_write_data(2,ge);

                                         delay(20);

                                         EEPROM_write_data(3,fyi);

                                         delay(20);

                                         EEPROM_write_data(4,fer);

                                         delay(20);

                                }

                                if(bai!=0)

                                {

                                        write_data(bai+0x30);

                                }

                                write_data(shi+0x30);        

                                write_data(ge+0x30);        

                                write_data(0x2e);        

                                write_data(fyi+0x30);        

                                write_data(fer+0x30);

                                write_data(0xdf);



                                //write_data('C');               

                        }while(!key);

                        write_com(0x85);

                        if(num<36.0)

                        {

                                blue = 0;

                                red = 1;

                                green = 1;

                        }

                        else if(num>=36.0&&num<=38.0)

                        {

                                green = 0;

                                red = 1;

                                blue = 1;

                        }

                        else if(num>38.0)

                        {

                                red = 0;

                                green =1;

                                blue = 1;

                        }

[1] [2] [3]
关键字:MLX90614  非接触式  红外体温计  单片机驱动 引用地址:MLX90614非接触式红外体温计的单片机驱动程序

上一篇:基于单片机的IC卡智能水表控制系统设计
下一篇:单片机主机通过DS18B20测温,从机接收并且实时显示温度

推荐阅读最新更新时间:2024-11-12 11:43

新唐单片机keil驱动问题
1:新唐单片机keil编译工具,资料都可以在新唐官网下载。keil驱动软件要安装在keil安装的目录下,今天安装了很久,一直提示不成功,就是因为驱动Nu-link driver 没有安装到keil安装目录下。 2:刚开始项目选用M0518LC2AE单片机(36K FLASH),后来因程序存储区不够,又选用M0518LD2AE单片机(68K FLASH)。但keil编译时提示选用芯片的容量不够,keil重启无效,最后keil卸载后重装可以。
[单片机]
STM32F103单片机使用ULN2003驱动步进电机
最近整理东西,突然发现以前买的一个步进电机模块,以前使用5V单片机驱动的。突然想试试能不能用STM32F103单片机的3.3V直接驱动ULN2003这个芯片。 试了一下ULN2003可以用3.3V电压直接驱动。下面分享下电机驱动的过程。 先看看实物图 单片机使用的是STM32F103C8T6最小系统。电机和驱动板是网上买的整套模块。 驱动板的原理图如下 步进电机使用的是5线4相直流减速步进电机 直径:28mm 电压:5V 步进角度:5.625 x 1/64 减速比:1/64 步距角:5.625 / 64 = 0.087度 (也就是说理论上,你给一个脉冲,电机外部轴转动0.087度)也就是说一个脉冲内部转子
[单片机]
STM32F103<font color='red'>单片机</font>使用ULN2003<font color='red'>驱动</font>步进电机
PIC单片机驱动LCD段驱动器的设计
4×4小键盘的典型数字接口使用8个数字I/O引脚。但使用8个引脚作为数字I/O会占用可用于连接LCD的段驱动器引脚的数量。 通过使用2个数字I/O引脚和2个模拟输入引脚,可以向PIC单片机添加一个4×4小键盘,而无需牺牲它的任何LCD段驱动器引脚。 下图中显示了小键盘连接示意图。示例中使用的是PIC18F8490,但该技术可以用于任意LCDPIC MCU。 图中使用的两个数字I/O引脚是RBO和RB5,也可以使用任意两个其他的数字I/O引脚。所使用的两个模拟引脚是ANO和AN1。 要读取小键盘,请遵循以下步骤: 1.首先,将RBO设计为输出高电平,将RB5设为输入(呈高阻抗)。 2.执行两次连续的A/D转换,先转换
[单片机]
PIC<font color='red'>单片机</font><font color='red'>驱动</font>LCD段<font color='red'>驱动</font>器的设计
51单片机驱动伺服电机程序
51单片机除了几款加强版的带pwm,很多都不带,所以要用51控制伺服电机很多时候就要软件模拟pwm。看了些代码有的是通过延时来输出pwm波,有的也用了定时器但是那些代码要驱动多路伺服电路就显得比较麻烦。下面的代码是通过定时器0产生每0.5ms一次的提醒,程序在大循环中通过调用DJ()函数可以返还值给伺服电机信号引脚,DJ()函数可以定旋转的角度,但是因为定时器设置是0.5ms的中断这就决定了旋转呢角度只能是-45,-90,0,45,90。如果要提高精度就要通过设置定时器的初值,改变函数的num值来达成。 #include reg52.h unsigned int num=0; //舵机 sbit DJ1=P3^6; sbit DJ
[单片机]
基于89C51单片机串行A/D驱动程序的设计
  串行A/D转换器转换后的结果是以串行方式输出,数字量以串行方式输出可简化系统的连线,缩小电路板的面积,节省系统的资源。下面以TLC2543为例,介绍串行A/D驱动程序的设计。      89C51单片机与TLC2543芯片的接口电路图如下图所示。TLC2543的3个控制输入端CS(的反)、I/OCLOCK、DATAINPUT和一个数据输出端DATAOUT分别与单片机的P1.4、Pl.l、P1.2和P1.3引脚相连,单片机采用的晶振频率为12MHz。      电路设计时,我们将TLC2543有两个基准电压输入REF+、REF-分别与电源(VCC)、GND相连,这样连接可保证数字输出的满度和零点,但在高精度的测量要求中,如果VC
[单片机]
基于89C51<font color='red'>单片机</font>串行A/D<font color='red'>驱动</font>程序的设计
最后算是搞定12232单片机驱动
还是那个89C52和12232的组合。但是这个12232没有Datasheet。最后我还是靠自己的分析能力和对卖家资料那么一点点的信任(现在看来是错误的)搞定(?)了这个的驱动。 现在我一直找不到方法让这个玩意显示下半屏。现在上半屏显示什么,下半屏就跟着显示。我晕 不过至少靠前面两个程序的帮助显示出了可以辨认的字符。 不过说道这个倒让我说一下,我的P0口上的上拉电阻貌似挂掉了,结果导致我显示汉字老是掉笔画,很奇怪,尝试了用NE555/4046产生的时钟信号驱动CLK端均未成功。结果加上上拉电阻就好了。 这个是上次的驱动 http://www.51hei.com/mcu/1560.html 效果好像更好些了 上显示效果图:
[单片机]
最后算是搞定12232<font color='red'>单片机</font><font color='red'>驱动</font>了
单片机驱动点阵向上流动显示I Love U -Love漂亮的心形
原理图可以从 http://www.51hei.com/f/ks51.pdf 这里下载,单片机型号是stc89c51 /** *功能:点阵向上流动显示I Love U -Love是漂亮的心形 *时间:2014年3月10日16:19:14 *作者:寒竹子 *备注:动画显示原理:动画由32张图片形成,每一毫秒刷新一帧图片,每250ms变化一帧,共32帧。 **/ #include reg52.h typedef unsigned int uint; typedef unsigned char uchar; //74HC138 sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P
[单片机]
51单片机实现在主函数while循环中驱动数码管的动态扫描程序
一、使用proteus绘制简单的电路图,用于后续仿真 二、编写程序 /******************************************************************************************************************** ---- @Project: LED-74HC595 ---- @File: main.c ---- @Edit: ZHQ ---- @Version: V1.0 ---- @CreationTime: 20200604 ---- @ModifiedTime: 20200604
[单片机]
51<font color='red'>单片机</font>实现在主函数while循环中<font color='red'>驱动</font>数码管的动态扫描程序
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved