① 多個紅外溫度感測器單片機i2c程序
你好!最多要接多少個感測器呢?
② mlx90614能用stc89s52單片機嗎
可以,寫好驅動就可以實現溫度的讀取
③ PIC單片機:怎樣用PIC16F1937讀取MLX90614的溫度我是打算用IIC傳進來然後顯示在單片機的LCD上。求指導
建議自己看晶元資料,以後的做產品的模式都是這樣,直接看代碼沒用。晶元手冊有標准代碼,但是要你自己根據實際情況該,這樣是最接近實際的學習方法。
程序的編寫需要你搞懂硬體連接後,按照時序圖中去編程,這樣對你有幫助!
④ 單片機開發,麥克風感測器的替換問題
加一個放大器吧,我用吳鑒鷹單片機開發板做過音響,這個原理差不多的。
於醫用數字紅外感測器MLX90615 的紅外耳溫計設計。基於紅外測溫原理,耳溫計主要由數字紅外感測器、低功耗CPU、液晶顯示屏和其他外圍電路組成。CPU 通過I2C 匯流排讀取MLX90615採集的紅外輻射信號,將其轉換為對應的人體耳腔溫度值並顯示在液晶屏上。實驗結果表示,該耳溫計解析度達到了0.02℃,准確度達到了0.1℃,實現了耳溫的准確、快速測量。
⑤ mlx90614紅外感測溫度計可以用stc89s52單片機嗎
當然可以用stc89s52單片機來讀取溫度了,但是,mlx90614採用的是SMbus 匯流排協議,你要用單片機引腳來模擬匯流排,並要寫出讀取溫度的程序,要根據SMbus 匯流排協議來寫呀,能寫嗎?
與單片機只需要兩個腳連接就行了,類似於I2C匯流排的連接方式,但是通信協議可不同的。如下圖
⑥ 51單片機程序編寫
/*這是用LCD顯示所測溫度的代碼,你參考一下,如果沒問題的話,其他的功能你再添加就好了,不難*/
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define Nack_number 10
//**************埠定義**************************************************
uchar flag; //LCD控制線介面
sbit RS=P1^0; //RS端
sbit RW=P1^1; //讀寫端
sbit LCDE=P2^5; //使能端
//mlx90614埠定義
sbit SCK=P2^1; //時鍾線
sbit SDA=P2^2; //數據線
//************數據定義****************************************************
bdata uchar flag1; //可位定址數據
sbit bit_out=flag1^7;
sbit bit_in=flag1^0;
uchar tempH,tempL,err;
//************************** LCD1602 ***********************************
//向LCD寫入命令或數據*****************************************************
#define LCD_COMMAND 0 //命令
#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 0x02 //游標右移 AC+
#define LCD_AC_DOWN 0x00 //默認 游標左移 AC-
#define LCD_MOVE 0x01 //畫面可平移
#define LCD_NO_MOVE 0x00 //默認 畫面不移動
//************************** mlx90614 ***********************************
//command mode 命令模式
#define RamAccess 0x00 //對RAM操作
#define EepomAccess 0x20 //對EEPRAM操作
#define Mode 0x60 //進入命令模式
#define ExitMode 0x61 //退出命令模式
#define ReadFlag 0xf0 //讀標志
#define EnterSleep 0xff //進入睡眠模式
//ram address read only RAM地址(只讀)
#define AbmientTempAddr 0x03 //周圍溫度
#define IR1Addr 0x04
#define IR2Addr 0x05
#define LineAbmientTempAddr 0x06 //環境溫度
/*0x0000 0x4074 16500 0.01/單元
-40 125*/
#define LineObj1TempAddr 0x07 //目標溫度,紅外溫度
/*0x27ad-0x7fff 0x3559 22610 0.02/單元
-70.01-382.19 0.01 452.2*/
#define LineObj2TempAddr 0x08
//eepom address EEPROM地址
#define TObjMaxAddr 0x00 //測量范圍上限設定
#define TObjMinAddr 0x01 //測量范圍下限設定
#define PWMCtrlAddr 0x02 //PWM設定
#define TaRangeAddr 0x03 //環境溫度設定
#define KeAddr 0x04 //頻率修正系數
#define ConfigAddr 0x05 //配置寄存器
#define SMbusAddr 0x0e //器件地址設定
#define Reserverd1Addr 0x0f //保留
#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 ReadByte(void); //MLX90614接收位元組子程序
void send_bit(void); //MLX90614發送位子程序
void SendByte(uchar number); //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; //溫度變數
SCK=1;
SDA=1;
delay(4);
SCK=0;
delay(1000);
SCK=1;
init1602(); //初始化LCD
while(1)
{
Tem=readtemp(); //讀取溫度
cmd_wrt(0x01); //清屏
Print(" Temperature: "); //顯示字元串 Temperature: 且換行
display(Tem); //顯示溫度
Print(" ^C"); //顯示攝氏度
delay(10000); //延時再讀取溫度顯示
}
}
void Print(uchar *str) //字元串顯示程序
{
while(*str!='