久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2294|回復: 1
收起左側(cè)

51單片機 max30100程序

[復制鏈接]
ID:411446 發(fā)表于 2018-10-17 23:12 | 顯示全部樓層 |閱讀模式
# include <reg52.h>
# include <stdio.h>
# include <intrins.h>
//定義IIC接口
sbit IIC_SCL    =P3^5;     //IIC的SCL
sbit IIC_SDA    =P3^7;     //IIC的SDA
bit  IIC_ACK;              //IIC的ACK
int  rda;                  //IIC讀出
//-------------------------------------------------------------------------------------//
//函數(shù):    delayms()
//功能:    延時程序
//-------------------------------------------------------------------------------------//
void delayms(unsigned int ms)
{
unsigned char i=100,j;
for(;ms;ms--)
{
  while(--i)
  {
   j=10;
   while(--j);
  }
}
}
//-------------------------------------------------------------------------------------//
//函數(shù):    void iic_start();
//功能:    I2C總線開始
//-------------------------------------------------------------------------------------//
//   SCL   --- --- ___
//   SDA   --- ___ ___
void iic_start()
{  
IIC_SDA=1;
_nop_();
_nop_();
IIC_SCL=1;         
_nop_();
_nop_();
IIC_SDA=0;
_nop_();
_nop_();
IIC_SCL=0;
_nop_();
_nop_();
}
//-------------------------------------------------------------------------------------//
//函數(shù):    void iic_stop();
//功能:    I2C總線結(jié)束
//需定義:
//-------------------------------------------------------------------------------------//
//   SCL   ___ --- ---
//   SDA   ___ ___ ---
void iic_stop()
{  
IIC_SCL=0;
_nop_();
_nop_();
IIC_SDA=0;
_nop_();
_nop_();
IIC_SCL=1;
_nop_();
_nop_();
IIC_SDA=1;
_nop_();
_nop_();
}
//-------------------------------------------------------------------------------------//
//函數(shù):    void iic_sendbyte(unsigned char c);
//功能:    發(fā)送 8_BIT 數(shù)據(jù)
//-------------------------------------------------------------------------------------//
void iic_sendbyte(unsigned char c)
{
unsigned char bitcnt;
for(bitcnt=0;bitcnt<8;bitcnt++)
{
if((c<<bitcnt)&0x80)
IIC_SDA=1;
else
IIC_SDA=0;
_nop_();
_nop_();
IIC_SCL=1;
_nop_();
_nop_();
IIC_SCL=0;
}
_nop_();
_nop_();
IIC_SDA=1;
_nop_();
_nop_();
IIC_SCL=1;
_nop_();
_nop_();
if(IIC_SDA==0)
IIC_ACK=0;
else
IIC_ACK=1;
IIC_SCL=0;
_nop_();
_nop_();
}
//-------------------------------------------------------------------------------------//
//函數(shù):    int iic_rcvbyte_nack();
//功能:    接收 8_BIT 數(shù)據(jù)  最后ack信號
//-------------------------------------------------------------------------------------//
int iic_rcvbyte_nack()
{
unsigned char retc;
unsigned char bitcnt;
retc=0;
IIC_SDA=1;
for(bitcnt=0;bitcnt<8;bitcnt++)
{
_nop_();
_nop_();
IIC_SCL=0;
_nop_();
_nop_();
IIC_SCL=1;
_nop_();
_nop_();
retc=retc<<1;
if(IIC_SDA==1)
retc=retc+1;
_nop_();
_nop_();
}
//給出NACK信號
_nop_();
_nop_();
IIC_SCL=0;
_nop_();
_nop_();
IIC_SDA=1;
_nop_();
_nop_();
IIC_SCL=1;
_nop_();
_nop_();
IIC_SCL=0;
_nop_();
_nop_();
return(retc);
}
//-------------------------------------------------------------------------------------//
//函數(shù):    int iic_rcvbyte_ack();
//功能:    接收 8_BIT 數(shù)據(jù) 最后ack信號
//-------------------------------------------------------------------------------------//
int iic_rcvbyte_ack()
{
unsigned char retc;
unsigned char bitcnt;
retc=0;
IIC_SDA=1;
for(bitcnt=0;bitcnt<8;bitcnt++)
{
_nop_();
_nop_();
IIC_SCL=0;
_nop_();
_nop_();
IIC_SCL=1;
_nop_();
_nop_();
retc=retc<<1;
if(IIC_SDA==1)
retc=retc+1;
_nop_();
_nop_();
}
//給出ACK信號
_nop_();
_nop_();
IIC_SCL=0;
_nop_();
_nop_();
IIC_SDA=0;
_nop_();
_nop_();
IIC_SCL=1;
_nop_();
_nop_();
IIC_SCL=0;
_nop_();
_nop_();
return(retc);
}
//-------------------------------------------------------------------------------------//
//函數(shù):      wr_max30100_one_data()
//功能:      寫一位max30100數(shù)據(jù)
//address:   芯片從地址
//saddress:  寫寄存器地址
//w_data:    待寫數(shù)據(jù)
//-------------------------------------------------------------------------------------//
void wr_max30100_one_data(int address,int saddress,int w_data )
{
_nop_();
iic_start();
_nop_();
iic_sendbyte(address);
_nop_();
iic_sendbyte(saddress);
_nop_();
iic_sendbyte(w_data);
_nop_();
iic_stop();
_nop_();
}
//-------------------------------------------------------------------------------------//
//函數(shù):      rd_max30100_one_data()
//功能:      讀一位max30100數(shù)據(jù)
//address:   芯片從地址
//saddress:  讀寄存器地址
//rda:       讀出的數(shù)據(jù)
//-------------------------------------------------------------------------------------//
void rd_max30100_one_data(int address,int saddress)
{
iic_start();
_nop_();
iic_sendbyte(address);
_nop_();
iic_sendbyte(saddress);
_nop_();
address=address+1;
_nop_();
iic_start();
_nop_();
iic_sendbyte(address);
_nop_();
rda=iic_rcvbyte_nack();
_nop_();
iic_stop();
}
//-------------------------------------------------------------------------------------//
//函數(shù):      主程序
//功能:      讀max30100內(nèi)部溫度
//-------------------------------------------------------------------------------------//
main()
{
double temp,temp1,temp2;
//temp       測量溫度
//temp1      30100整數(shù)部分溫度
//temp2      30100小數(shù)部分溫度
TMOD=0x21;   
SCON=0x50;
TH1=0xFD;
TL1=0xFD;
TR1=1;      
TI=1;   
//設(shè)置51的波特率為 9600 N 8 1
//51主頻為11.0592MHz
while(1)
{
wr_max30100_one_data(0xae,0x06,0x0a);       // 0X06地址B3位TEMP_EN置1
delayms(20);                                // 等待溫度轉(zhuǎn)換完成,不等待,讀出數(shù)據(jù)有誤
rd_max30100_one_data(0xae,0x16);            // 讀出溫度信號
printf("temp1=%d\n",rda);                   // 串口顯示
temp1=rda;
rd_max30100_one_data(0xae,0x17);            // 讀出溫度小數(shù)部分數(shù)據(jù)
printf("temp2=%d\n",rda);                   // 串口顯示
temp2=rda;
temp=temp1+(temp2/100);
printf("temp=%.2f\n",temp);                 // 串口顯示
rd_max30100_one_data(0xae,0xff);            // 讀出芯片ID
printf("MAX30100 ID =%d\n",rda);            // 串口顯示
delayms(100);   
}
}


回復

使用道具 舉報

ID:1 發(fā)表于 2018-10-17 23:15 | 顯示全部樓層
補全原理圖或者詳細說明一下電路連接即可獲得100+黑幣
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜寂寞影院列表 | 做a的各种视频 | 欧美一区二区三区在线视频 | 在线免费激情视频 | 亚洲一区在线播放 | 成人精品国产一区二区4080 | 一区二区三区小视频 | 亚洲视频免费在线看 | 狠狠干天天干 | 国产精品久久久久久久久久久免费看 | 黄色网址免费在线观看 | 一区二区国产精品 | 欧美日本在线观看 | caoporn国产精品免费公开 | 国产综合久久 | 综合国产第二页 | 午夜精品久久久久久不卡欧美一级 | www久久99| 精品国产乱码久久久久久影片 | 7777在线视频免费播放 | 美女精品一区 | 国产一区久久 | 国产精品日韩欧美一区二区三区 | 免费看日韩视频 | 久久黄视频 | 神马影院一区二区三区 | 欧美日韩久久精品 | 国产精品久久久久久久久久久久 | 99精品久久 | 日韩不卡一二区 | 亚洲精品欧美一区二区三区 | 美国a级毛片免费视频 | 国产视频精品免费 | 中文字幕一区二区三区四区五区 | 国产成人精品一区二区三区网站观看 | 久久久国产亚洲精品 | 日韩欧美三级在线 | 天天天操 | 成人超碰 | 日韩成人中文字幕 | 国产一区不卡 |