亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標題:
mlx90614跟我的單片機一直不能通訊,下面是程序,求各位大佬幫助
[打印本頁]
作者:
zfd
時間:
2018-4-3 19:01
標題:
mlx90614跟我的單片機一直不能通訊,下面是程序,求各位大佬幫助
各位大佬,我的單片機一直不能跟MLX90614t通訊,希望大家可以幫忙解決,有點急,麻煩各位了。
#include"HT66F2390.h"
#include"oled.h"(這是oled的程序文件,不在下面)
#ifndef HW_H
#define HW_H
#define uchar unsigned char
#define Nack 10
//*******端口定義***********
//mlx90614
#define SDA _pf4
#define SCL _pg0
#define RamAccess 0x00
#define AbmientTempAddr 0x03 //周圍溫度
#define IR1Addr 0x04
#define IR2Addr 0x05
#define LineAbmientTempAddr 0x06 //環境溫度
#define LineObj1TempAddr 0x07 //目標溫度,紅外溫度
#define EepomAccess 0x20
#define Mode 0x60
#define ExitMode 0x61
#define ReadFlag 0xf0
#define LineObj2TempAddr 0x08 //eepom address EEPROM地址
int out=0, in=0;
//*******函數聲明**********
void start_bit(); //MLX90614 發起始位子程序
void stop_bit(); //MLX90614 發結束位子程序
uchar rx_byte(void); //MLX90614 接收字節子程序
void send_bit(void); //MLX90614 發送位子程序
void tx_byte(uchar dat_byte); //MLX90614 接收字節子程序
void jieshou(); //MLX90614 接收位子程序 //延時程序
void delay_h(unsigned int k); //延時
unsigned int memread(void); //讀溫度數據
void display_h(unsigned int Tem);
//*********輸入轉換并顯示*********
void display_h(unsigned int Tem)
{
unsigned int T,a,b;
uchar c;
T=Tem*2;
if(T>=27315)
{
T=T-27315;
a=T/100;
b=T-a*100;
if(a>=100)
{
c=a/100;
write_wx1(c,1,6);//oled 顯示程序函數
a=a%100;
c=a/10;
write_wx1(c,7,6) ;
c=a%10;
write_wx1(c,13,6) ;
}
else if(a>=10)
{
c=a/10;
write_wx1(11,1,6);
write_wx1(c,7,6) ;
c=a%10;
write_wx1(c,13,6) ;
}
else
{
write_wx1(11,1,6);
write_wx1(11,7,6) ;
c=a%10;
write_wx1(c,13,6) ;
}
write_wx1(2,19,6) ;
//分隔開
if(b>=10)
{
b=b/10;
write_wx1(b,25,6);
}
else
{
write_wx1(0,25,6) ;
}
}
else
{
T=27315-T;
a=T/100;
b=T-a*100;
if(a>=10)
{
c=a/10;
write_wx1(c,7,6) ;
c=a%10;
write_wx1(c,13,6) ;
}
else
{
c=a%10;
write_wx1(c,7,6) ;
}
write_wx1(2,19,6) ;
//分隔開
if(b>=10)
{
c=b/10;
write_wx1(c,25,6) ;
}
else
{
write_wx1(c,25,6) ;
}
}
}
void delay_h(unsigned int k)
{
while(k--);
}
//*********開始觸發*******
void start_bit(void)
{
SDA=1;
delay(5);
SCL=1;
delay(5);
SDA=0;
delay(5);
SCL=0;
delay(5);
}
//*********結束*******
void stop_bit(void)
{
SCL=0;
delay(5);
SDA=0;
delay(5);
SCL=1;
delay(5);
SDA=1;
}
//---------發送一個字節---------
void tx_byte(uchar dat_byte)
{
uchar i,n,dat;
n=Nack;
TX_again:
dat=dat_byte;
for(i=0;i<8;i++)
{
if(dat&0x80)
out=1;
else
{
out=0;
}
send_bit();
dat=dat<<1;
}
jieshou();//
if(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(out==1)
SDA=1;
else
{
SDA=0;
}
delay(5);
SCL=1;
delay(8);
SCL=0;
delay(8);
}
//----------接收一個字節--------
uchar rx_byte(void)
{
uchar i,dat;
dat=0;
for(i=0;i<8;i++)
{
dat=dat<<1;
jieshou();//
if(in==1)
dat=dat+1;
}
SDA=0;
send_bit();//?
return dat;
}
//----------接收一個位----------
void jieshou()
{
SDA=1;
in=1;
SCL=1;
delay(8);
in=SDA;
delay(1);
SCL=0;
delay(8);
}
//-----------讀溫度--------------
unsigned int memread(void)
{
uchar DataH,DataL,Pecreg;
start_bit();
tx_byte(0x00); //Send SlaveAddress
tx_byte(0x07); //Send Command
start_bit();
tx_byte(0x1);
out=0;
DataL=rx_byte();
out=0;
DataH=rx_byte();
out=1;//
Pecreg=rx_byte();
stop_bit();
return(DataH*256+DataL);
}
#endif
主函數:
#include "HT66F2390.h"
#include"hw.h"
#include"oled.h"
void main()
{
unsigned int tem;
_wdtc = 0xa8;
_pec = 0x00;
_scc = 0x00;
_pfc = 0x00;
_hirc0 =0;
_hirc1 =0;
Init();
qp();
write_x(5,10);
SCL=1;
SDA=1;
delay(4);
SCL=0;
delay(1000);
SCL=1;
while(1)
{
tem =memread();
display_h(tem);
delay(20);
}
復制代碼
作者:
18387385089
時間:
2020-4-21 14:55
樓主請問Oled.h的代碼是什么
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1