久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
單片機MLX90614測溫代碼
[打印本頁]
作者:
821174733
時間:
2021-10-27 16:56
標題:
單片機MLX90614測溫代碼
#include<reg52.h> //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義
#include<stdio.h>
#include<intrins.h>
#include "delay.h"
#include "1602.h"
#include "mlx90614.h"
sbit buzzer=P1^0; //引腳定義
sbit key1=P2^0;
sbit key2=P2^1;
unsigned long time_20ms; //定時計數
char dis0[16]; //液晶數組顯示暫存
char dis1[16];
unsigned int setNum = 37; //設置值
//---------------------------------------
//Name: CALTEMP
//Temperature data is T=(Data)*0.02-273.15
//---------------------------------------
bit rekey =0;//防止按鍵重復按下
bit disFlag =0;//更新顯示標志
unsigned int Tem; //溫度
float objTemp,envTemp; //物體溫度和環境溫度
void Init_Timer0(void); //函數聲明
void main (void)
{
Init_Timer0(); //定時器0初始化
LCD_Init(); //初始化液晶
DelayMs(20); //延時有助于穩定
LCD_Clear();
while (1) //主循環
{
if(disFlag==1) //顯示標志
{
Tem=ReadObjectTemp(); //讀取實物溫度
objTemp=(float)(Tem)*0.02-273.15;
Tem=ReadEnvironTemp(); //讀取環境溫度
envTemp=(float)(Tem)*0.02-273.15;
sprintf(dis0,"E: %4.1f'C ",envTemp);//打印溫度值
LCD_Write_String(0,0,dis0);//顯示
sprintf(dis1,"O:%5.1f'C %3d ",objTemp,setNum);//打印溫度設置值
LCD_Write_String(0,1,dis1);//顯示
if(objTemp>setNum)
{buzzer =0; } //溫度高蜂鳴器鳴叫
else
{buzzer=1;} //溫度低 停止
disFlag = 0;
}
if((key1 == 0)||(key2 == 0)) //有按鍵按下
{
if(rekey == 0)
{
DelayMs(10);
if(key1 == 0) //按鍵1按下
{
rekey =1; //防止重復按下
if(setNum<200) setNum++; //++
}
else if((key2 == 0))//按鍵2按下
{
rekey =1; //防止重復按下
if(setNum>0) setNum--; //--
}
}
}
else
{
rekey = 0; //防止重復按下
}
}
}
void Init_Timer0(void)
{
TMOD |= 0x01; //使用模式1,16位定時器,使用"|"符號可以在使用多個定時器時不受影響
TH0=(65536-20000)/256; //重新賦值 20ms
TL0=(65536-20000)%256;
EA=1; //總中斷打開
ET0=1; //定時器中斷打開
TR0=1; //定時器開關打開
}
void Timer0_isr(void) interrupt 1
{
TH0=(65536-20000)/256; //重新賦值 20ms
TL0=(65536-20000)%256;
time_20ms++;
if(time_20ms%20==0) //定時更新顯示
{disFlag = 1;}
}
復制代碼
#include "mlx90614.h"
#define Nack_counter 10
//************數據定義****************
unsigned char bit_out=1;
unsigned char bit_in=1;
unsigned char DataH,DataL,Pecreg;
void start_bit(void)
{
SDA=1;
_nop_();_nop_();_nop_();_nop_();_nop_();
SCL=1;
_nop_();_nop_();_nop_();_nop_();_nop_();
SDA=0;
_nop_();_nop_();_nop_();_nop_();_nop_();
SCL=0;
_nop_();_nop_();_nop_();_nop_();_nop_();
}
void stop_bit(void)
{
SCL=0;
_nop_();_nop_();_nop_();_nop_();_nop_();
SDA=0;
_nop_();_nop_();_nop_();_nop_();_nop_();
SCL=1;
_nop_();_nop_();_nop_();_nop_();_nop_();
SDA=1;
}
//---------發送一個字節---------
void tx_byte(unsigned char dat_byte)
{
char i,n,dat;
n=Nack_counter;
dat=dat_byte;
for(i=0;i<8;i++)
{
if(dat&0x80)
bit_out=1;
else
bit_out=0;
send_bit();
dat=dat<<1;
}
receive_bit();
if(bit_in==1)
{
stop_bit();
if(n!=0)
{n--;}
else
return;
}
else
return;
start_bit();
tx_byte(dat_byte); //函數自身回調
}
////---------發送一個字節---------
//void tx_byte(unsigned char dat_byte)
//{
// char i,n,dat;
// n=Nack_counter;
// TX_again:
// dat=dat_byte;
// for(i=0;i<8;i++)
// {
// if(dat&0x80)
// bit_out=1;
// else
// bit_out=0;
// send_bit();
// dat=dat<<1;
// }
// receive_bit();
// if(bit_in==1)
// {
// stop_bit();
// if(n!=0)
// {n--;goto Repeat;}
// else
// goto exit;
// }
// else
// goto exit;
// Repeat:
// start_bit();
// goto TX_again;
// exit: ;
//}
//-----------發送一個位---------
void send_bit(void)
{
if(bit_out==0)
SDA=0;
else
SDA=1;
_nop_();
SCL=1;
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
SCL=0;
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
}
//----------接收一個字節--------
unsigned char rx_byte(void)
{
unsigned char i,dat;
dat=0;
for(i=0;i<8;i++)
{
dat=dat<<1;
receive_bit();
if(bit_in==1)
dat=dat+1;
}
send_bit();
return dat;
}
//----------接收一個位----------
void receive_bit(void)
{
SDA=1;bit_in=1;
SCL=1;
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
bit_in=SDA;
_nop_();
SCL=0;
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
}
//------------------------------
unsigned int ReadObjectTemp(void)
{
start_bit();
tx_byte(0x00); //Send SlaveAddress
tx_byte(0x07); //Send Command
start_bit();
tx_byte(0x01);
bit_out=0;
DataL=rx_byte();
bit_out=0;
DataH=rx_byte();
bit_out=1;
Pecreg=rx_byte();
stop_bit();
return(DataH*256+DataL);
}
unsigned int ReadEnvironTemp(void)
{
start_bit();
tx_byte(0x00); //Send SlaveAddress
tx_byte(0x06); //Send Command
start_bit();
tx_byte(0x01);
bit_out=0;
DataL=rx_byte();
bit_out=0;
DataH=rx_byte();
bit_out=1;
Pecreg=rx_byte();
stop_bit();
return(DataH*256+DataL);
}
//---------------------------------------
//Name: CALTEMP
//Temperature data is T=(Data)*0.02-273.15
//Tem=ReadObjectTemp();
//objTemp=(float)(Tem)*0.02-273.15;
//sprintf(tab_up,"O:%5.2f %05d ",objTemp,Tem);//打印溫度值
//LCD_Write_String(0,0,tab_up);//顯示第一行
//
//Tem=ReadEnvironTemp();
//envTemp=(float)(Tem)*0.02-273.15;
//sprintf(tab_dw,"E:%5.2f %05d ",envTemp,Tem);//打印溫度值
//LCD_Write_String(0,1,tab_dw);//顯示第一行
//
//DelayMs(200);
復制代碼
1.png
(51.1 KB, 下載次數: 59)
下載附件
2021-10-27 17:15 上傳
代碼下載:
精準測溫MLX90614.zip
(79.45 KB, 下載次數: 47)
2021-10-27 16:55 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
小林子51
時間:
2023-4-19 17:33
這個是包含溫度補償的嗎
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
欧美日韩久久
|
婷婷色在线播放
|
一级黄色毛片
|
中文字幕不卡一区
|
日本粉嫩一区二区三区视频
|
日韩欧美手机在线
|
天天爽夜夜爽精品视频婷婷
|
日本中文字幕在线视频
|
久久人人爽人人爽
|
日韩精品福利
|
久久久99国产精品免费
|
毛片站
|
亚洲激情在线观看
|
欧美一级艳情片免费观看
|
欧美成人精品一区二区男人看
|
欧美高清视频一区
|
亚洲一区二区三区免费观看
|
欧美99
|
岛国午夜
|
自拍偷拍视频网
|
国产日韩欧美另类
|
国产精品成人一区二区
|
成人在线黄色
|
一区二区在线不卡
|
欧美区日韩区
|
色婷婷婷婷色
|
人人操日日干
|
中文字幕在线看
|
2019精品手机国产品在线
|
欧美成人激情视频
|
午夜视频一区二区
|
国产良家自拍
|
中文字幕日韩欧美一区二区三区
|
少妇诱惑av
|
日韩欧美亚洲
|
97精品国产
|
久久精品日产第一区二区三区
|
国产精品成人一区二区三区
|
久草视频在线播放
|
成人av一区
|
91精品国产乱码久久久久久久久
|