[经验] 求个msp430f5529的与光敏或雨水传感器传感器相关的程序啊

fish001   2018-10-21 19:11 楼主
/*******************************************************
文件名:iic.c
编写者:czhang
描述:iic总线的子程序。
版本:2003年10月11日   1.0

*****************************************************************************************************/
#include  
#include "BH1750.h"
#include "iic.h"
#include "general.h"
/***************************************************************************
初始化IIC
***************************************************************************/

void InitIIC()
{
    IIC_DIR |= IIC_SCL;  //SCL管脚为输出
    IIC_DIR &= ~IIC_SDA; //SDA管脚为输入
    C_SCL;
    Stop();
}

/***************************************************************************
进行短暂的延时,原因是MSP430的速度比较快。使用者可以根据时钟频率自行调节延时长短
***************************************************************************/
void delay()
{
    unsigned char q0;
    for(q0=0;q0<20;q0++)
    {
        _NOP();
    }
}

/***************************************************************************
启动IIC总线
***************************************************************************/
void Start()
{
    SDA_OUT;
    S_SDA;
    delay();
    S_SCL;
    delay();
    C_SDA;
    delay();
    C_SCL;
    delay();
}

/***************************************************************************
停止操作,释放IIC总线
***************************************************************************/
void Stop()
{
    SDA_OUT;
    C_SCL;
    delay();
    C_SDA;
    delay();
    S_SCL;
    delay();
    S_SDA;
    delay();
}

/***************************************************************************
IIC总线应答
***************************************************************************/
void Ack()
{
    SDA_OUT;
    C_SDA;
    delay();
    S_SCL;
    delay();
    C_SCL;
    delay();
    S_SDA;
}

/***************************************************************************
IIC总线无应答
***************************************************************************/
void NoAck()
{
    SDA_OUT;
    S_SDA;
    delay();
    S_SCL;
    delay();
    C_SCL;
    delay();
}

/***************************************************************************
IIC总线检验应答
返回值:IIC应答位的值0:应答   1:无应答
***************************************************************************/
unsigned char TestAck()
{
    unsigned char ack;

    S_SCL;
    delay();
    SDA_IN;
    delay();
    ack=READ_SDA;
    delay();
    C_SCL;
    delay();
    return(ack);
}

/***************************************************************************
IIC总线写8位数据
input:要写的8位数据
***************************************************************************/
void Write8Bit(unsigned int input)
{
    unsigned char temp,q0;
    SDA_OUT;
    for(temp=8;temp!=0;temp--)
    {
        q0=input&0x80;
        if(q0==0x80)
            S_SDA;
        else
            C_SDA;
      delay();
        S_SCL;
        delay();
        C_SCL;
        delay();
        input=input<<1;
    }
}

/***************************************************************************
IIC总线读8位数据
返回值:读出的8位数据
***************************************************************************/
unsigned char Read8Bit()
{
    unsigned char temp,q0,rbyte=0;
    SDA_IN;
    for(temp=8;temp!=0;temp--)
    {
        S_SCL;
        delay();
        rbyte=rbyte<<1;
        SDA_IN;
        q0=READ_SDA;
        if(q0==IIC_SDA)
            rbyte=rbyte|0x1;
        delay();
        C_SCL;
        delay();
    }
    return(rbyte);
}

以前用过的,感受一下~?

回复评论 (5)

光敏传感器不就是一个ADC吗采样吗?外部用分压电阻。
雨水的如果是电容类型的可以找找TI用MSP430比较器做的张池震荡电路测量电容量
虾扯蛋,蛋扯虾,虾扯蛋扯虾
点赞  2018-11-29 17:59
littleshrimp说的挺对的,按他说的放手去做吧。
点赞  2018-11-30 09:43
还是自己写吧。
点赞  2018-11-30 09:46
IIC总线读的程序好像有问题
点赞  2018-11-30 10:05
是程序有问题?还是不会用光敏、雨敏传感器?
点赞  2018-12-7 18:37
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复