• 大小: 535KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-11-09
  • 语言: 其他
  • 标签: 51单片机  IIC  

资源简介

51单片机:蓝桥杯省赛自动售水机分析与完整设计,含有完整的注释和思路,时序什么的测试都没有问题!

资源截图

代码片段和文件信息

/*
  程序说明: IIC总线驱动程序
  软件环境: Keil uVision 4.10 
  硬件环境: CT107单片机综合实训平台 8051,12MHz
  日    期: 2011-8-9
*/

#include “reg52.h“
#include “iic.h“
#include “intrins.h“

#define DELAY_TIME 5

#define SlaveAddrW 0xA0
#define SlaveAddrR 0xA1

//总线引脚定义
sbit SDA = P2^1;  /* 数据线 */
sbit SCL = P2^0;  /* 时钟线 */

void IIC_Delay(unsigned char i)
{
    do{_nop_();}
    while(i--);        
}
//总线启动条件
void IIC_Start(void)
{
    SDA = 1;
    SCL = 1;
    IIC_Delay(DELAY_TIME);
    SDA = 0;
    IIC_Delay(DELAY_TIME);
    SCL = 0;
}

//总线停止条件
void IIC_Stop(void)
{
    SDA = 0;
    SCL = 1;
    IIC_Delay(DELAY_TIME);
    SDA = 1;
    IIC_Delay(DELAY_TIME);
}

//发送应答
void IIC_SendAck(bit ackbit)
{
    SCL = 0;
    SDA = ackbit;   // 0:应答,1:非应答
    IIC_Delay(DELAY_TIME);
    SCL = 1;
    IIC_Delay(DELAY_TIME);
    SCL = 0; 
    SDA = 1;
    IIC_Delay(DELAY_TIME);
}

//等待应答
bit IIC_WaitAck(void)
{
    bit ackbit;

    SCL  = 1;
    IIC_Delay(DELAY_TIME);
    ackbit = SDA;
    SCL = 0;
    IIC_Delay(DELAY_TIME);
    return ackbit;
}

//通过I2C总线发送数据
void IIC_SendByte(unsigned char byt)
{
    unsigned char i;

    for(i=0; i<8; i++)
    {
        SCL  = 0;
        IIC_Delay(DELAY_TIME);
        if(byt & 0x80) SDA  = 1;
        else SDA  = 0;
        IIC_Delay(DELAY_TIME);
        SCL = 1;
        byt <<= 1;
        IIC_Delay(DELAY_TIME);
    }
    SCL  = 0;  
}

//从I2C总线上接收数据
unsigned char IIC_RecByte(void)
{
    unsigned char i da;
    for(i=0; i<8; i++)
    {   
     SCL = 1;
IIC_Delay(DELAY_TIME);
da <<= 1;
if(SDA) da |= 1;
SCL = 0;
IIC_Delay(DELAY_TIME);
    }
    return da;    
}


uchar read_24c02(uchar add)
{
uchar temp;
EA=0;
IIC_Start();
IIC_SendByte(0xa0);
IIC_WaitAck();
IIC_SendByte(add);
IIC_WaitAck();
IIC_Start();
IIC_SendByte(0xa1);
IIC_WaitAck();
temp=IIC_RecByte();
IIC_WaitAck();
IIC_Stop();
EA=1;
return temp;
}

void write_24c02(uchar adduchar date)
{
EA=0;
IIC_Start();
IIC_SendByte(0xa0);
IIC_WaitAck();
IIC_SendByte(add);
IIC_WaitAck();
IIC_SendByte(date);
IIC_WaitAck();
IIC_Stop();
EA=1;
}

uchar read_adc(uchar add)
{
uchar temp; 
EA=0;
IIC_Start();
IIC_SendByte(0x90);
IIC_WaitAck();
IIC_SendByte(add);
IIC_WaitAck();
IIC_Start();
IIC_SendByte(0x91);
IIC_WaitAck();
temp=IIC_RecByte();
IIC_WaitAck();
IIC_Stop();
EA=1;
return temp;
}

void write_adc(uchar add)
{
IIC_Start();
IIC_SendByte(0x90);
IIC_WaitAck();
IIC_SendByte(add);
IIC_WaitAck();
IIC_Stop();
}

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

     文件     547003  2019-09-08 21:14  自动售水机2012.pdf

     文件       2700  2019-03-22 21:50  project\iic.c

     文件        382  2019-03-22 22:00  project\iic.h

     文件       6555  2019-09-09 23:09  project\iic.LST

     文件       9696  2019-09-09 23:09  project\iic.OBJ

     文件       5002  2019-09-10 00:53  project\main.c

     文件      12011  2019-09-09 23:09  project\main.LST

     文件      14908  2019-09-09 23:09  project\main.OBJ

     文件      21635  2019-09-09 23:09  project\project

     文件       4979  2019-09-09 23:09  project\project.hex

     文件         71  2019-09-09 23:09  project\project.lnp

     文件      24054  2019-09-09 23:09  project\project.M51

     文件       3339  2019-09-09 23:10  project\project.plg

    .......     56857  2019-09-10 00:53  project\project.uvopt

    .......     13593  2019-09-08 14:22  project\project.uvproj

    .......     56860  2019-09-10 00:53  project\project_uvopt.bak

    .......     13433  2019-09-08 13:23  project\project_uvproj.bak

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

     文件      14048  2019-09-09 23:09  project\STARTUP.LST

     文件        749  2019-09-09 23:09  project\STARTUP.OBJ

     目录          0  2019-09-10 00:53  project

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

               814251                    21


评论

共有 条评论