基于IIC总线的单片机排队系统接口设计

时间:2013-11-04来源:网络

  参数存储器(E2PROM)[6]使用较低功耗的CMOS串行IIC电路,通过片内存储空间,记录柜台操作和储户排队等信息。其操作控制完全遵循IIC协议。

  3 系统总线软件模拟的实现方法

  排队系统原理图如图4所示,由P3.4、P3.3模拟串行总线的SDA端及SCL输出端,构成模拟的IIC串行总线系统。总线功能的实现除了简单硬件连接,大部分功能通过软件模拟来实现,下面给出部分总线常用子程序,这些子程序通用性较好,基本适用于大部分IIC总线接口的芯片[2-3].

  

  3.1 总线启动、停止函数

  void IIC_Start(void)

  {

  IIC_SCL=1;

  IIC_Delay();

  IIC_SDA=1;

  IIC_Delay();

  IIC_SDA=0;

  IIC_Delay();

  IIC_SCL=0;

  IIC_Delay();

  }

  void IIC_Stop(void)

  {

  IIC_SDA=0;

  IIC_Delay();

  IIC_SCL=1;

  IIC_Delay();

  IIC_SDA=1;

  IIC_Delay();

  IIC_SCL=1;

  IIC_Delay();

  }

  3.2 从IIC器件指定位置读若干字节

  bit RetBit;

  unsigned char i;

  IIC_Start(); /*启动总线*/

  RetBit=IIC_Write_Byte(Device_Addr);

  /*发送器件从地址*/ if(RetBit==0)

  return(0);

  RetBit=IIC_Write_Byte(Mem_Addr);

  /*发送器件子地址*/ if(RetBit==0)

  return(0);

  IIC_Stop(); /*结束总线*/ IIC_Start(); /*重新启动总线*/

  RetBit=IIC_Write_Byte(Device_Addr+1);

  if(RetBit==0)

  return(0);

  for(i=0;iNum-1;i++)

  {

  *DataPointer=IIC_Read_Byte(); /*接收数据*/

  IIC_Ack(0); /*发送应答位*/

  DataPointer++;

  }

  *DataPointer=IIC_Read_Byte(); /*接收数据*/

  IIC_Ack(1);

  IIC_Stop(); /*结束总线*/

  return(1);

1 2 3

关键词: IIC总线 单片机排队系统 keil

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版