• 大小: 44KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-02
  • 语言: 其他
  • 标签: C51  PCF8591  

资源简介

设计的一款声控LED智能灯,该灯含有8个灯珠,采用一个按键统一控制灯的开与关,也可以通过声音控制开灯,开灯后根据环境光亮度,点亮多个灯珠(最暗时点亮8个灯珠,最亮时点亮1个灯珠)

资源截图

代码片段和文件信息

#include 

sbit scl=P2^0;       //I2C  时钟 
sbit sda=P2^1;       //I2C  数据 
bit ack;             //应答标志位

/*******************************************************************
                     起动总线函数               
函数原型: void  Start_I2c();  
功能:     启动I2C总线即发送I2C起始条件.  
********************************************************************/
void Start_I2c()
{
  sda=1;         /*发送起始条件的数据信号*/
  _nop_();
  scl=1;
  _nop_();        /*起始条件建立时间大于4.7us延时*/
  _nop_();
  _nop_();
  _nop_();
  _nop_();    
  sda=0;         /*发送起始信号*/
  _nop_();        /* 起始条件锁定时间大于4μs*/
  _nop_();
  _nop_();
  _nop_();
  _nop_();       
  scl=0;       /*钳住I2C总线,准备发送或接收数据 */
  _nop_();
  _nop_();
}

/*******************************************************************
                      结束总线函数               
函数原型: void  Stop_I2c();  
功能:     结束I2C总线即发送I2C结束条件.  
********************************************************************/
void Stop_I2c()
{
  sda=0;      /*发送结束条件的数据信号*/
  _nop_();       /*发送结束条件的时钟信号*/
  scl=1;      /*结束条件建立时间大于4μs*/
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  sda=1;      /*发送I2C总线结束信号*/
  _nop_();
  _nop_();
  _nop_();
  _nop_();
}

/*******************************************************************
                 字节数据发送函数               
函数原型: void  I2C_SendByte(u8 c);
功能:     将数据c发送出去可以是地址也可以是数据发完后等待应答并对
          此状态位进行操作.(不应答或非应答都使ack=0)     
           发送数据正常,ack=1; ack=0表示被控器无应答或损坏。
********************************************************************/
void  I2C_SendByte(u8  c)
{
 u8  i;
 
 for(i=0;i<8;i++)  /*要传送的数据长度为8位*/
    {
     if((c<       else  sda=0;                
     _nop_();
     scl=1;               /*置时钟线为高,通知被控器开始接收数据位*/
      _nop_(); 
      _nop_();             /*保证时钟高电平周期大于4μs*/
      _nop_();
      _nop_();
      _nop_();         
     scl=0; 
    }
    
    _nop_();
    _nop_();
    sda=1;                /*8位发送完后释放数据线,准备接收应答位*/
    _nop_();
    _nop_();   
    scl=1;
    _nop_();
    _nop_();
    _nop_();
    if(sda==1)ack=0;     
       else ack=1;        /*判断是否接收到应答信号*/
    scl=0;
    _nop_();
    _nop_();
}

/*******************************************************************
                 字节数据接收函数               
函数原型: u8  I2C_RcvByte();
功能:        用来接收从器件传来的数据并判断总线错误(不发应答信号),
          发完后请用应答函数应答从机。  
********************************************************************/    
u8   I2C_RcvByte()
{
  u8  retc=0i; 
  sda=1;                     /*置数据线为输入方式*/
  for(i=0;i<8;i++)
      {
        _nop_();           
        scl=0;                  /*置时钟线为低,准备接收数据位*/
        _nop_();
        _nop_();                 /*时钟低电平周期大于4.7μs*/
        _nop_();
        _nop_();
        _nop_();
        scl=1;                  /*置时钟线为高使数据线上数据有效*/
        _nop_();
        _nop_();
        retc=retc<<1;
        if(sda==1)retc=retc+1;  /*读数据位接收的数据位放入retc中 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        269  2018-11-12 22:41  project\config.h

     文件       6025  2018-11-12 22:52  project\pcf8591.c

     文件        215  2018-11-12 22:52  project\pcf8591.h

     文件      10045  2018-11-26 17:45  project\pcf8591.LST

     文件      10314  2018-11-26 17:45  project\pcf8591.OBJ

     文件       6376  2009-05-07 14:37  project\STARTUP.A51

     文件      14050  2018-11-26 17:45  project\STARTUP.LST

     文件        749  2018-11-26 17:45  project\STARTUP.OBJ

     文件      20442  2018-11-26 17:45  project\test

     文件       1542  2018-11-26 17:45  project\test.c

     文件       5617  2018-11-26 17:45  project\test.hex

     文件         70  2018-11-26 17:45  project\test.lnp

     文件       4090  2018-11-26 17:45  project\test.LST

     文件      20953  2018-11-26 17:45  project\test.M51

     文件       7204  2018-11-26 17:45  project\test.OBJ

     文件        180  2018-11-26 23:42  project\test.plg

     文件      56704  2018-11-26 23:42  project\test.uvopt

     文件      13725  2018-11-12 22:58  project\test.uvproj

     文件      56696  2018-11-26 17:54  project\test_uvopt.bak

     文件      13557  2018-11-12 15:18  project\test_uvproj.bak

     文件        281  2018-11-12 21:22  project\uart.c

     文件        152  2018-11-06 21:21  project\uart.h

     文件       1297  2018-11-26 17:45  project\uart.LST

     文件       3159  2018-11-26 17:45  project\uart.OBJ

     目录          0  2018-12-03 18:23  project

----------- ---------  ---------- -----  ----

               253712                    25


评论

共有 条评论