锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

蓝桥杯单片机rb2,光敏电阻电压读取

时间:2023-02-08 02:00:00 1812j电阻

#include  #include  #include   #define ui unsigned int #define uc unsigned char  ui tp;   uc code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff,0xc6}/0-9,关闭,C uc code tac[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};  void delay()///延迟函数 {  unsigned char i, j;   _nop_();  _nop_();  _nop_();  i = 11;  j = 190;  do  {   while (--j);  } while (--i); }  void hc138(ui n)/打开/138定器 {     switch(n)  {  case 0:P2=P2&0X1F;break;  case 4:P2=P2&0X1F|0x80;break;  case 5:P2=P2&0X1F|0xA0;break;     case 6:P2=P2&0X1F|0xC0;break;  case 7:P2=P2&0X1F|0xE0;break;  } }  void Output(uc add,uc dat)///输出函数 {   hc138(add);   P0=dat; }  void initimer()///初始化 {   Output(4,0xff);   Output(5,0x00);   Output(6,0x00);   Output(7,0x00);  }  void OutputSMG(uc gqb,uc yxl)///数字管输出函数 {   Output(6,(0x01<

官方驱动,自己补充完整。

/*   程序说明: IIC总线驱动程序   软件环境: Keil uVision 4.10    硬件环境: CT107单片机综合培训平台(12MHz)   日    期: 2011-8-9 */  #include "iic.h"  void IICdelay()   {  unsigned char i;  _nop_();  i = 11;  while (--i); }  ///总线启动条件 void IIC_Start(void) {  SDA = 1;  SCL = 1;  IICdelay();  SDA = 0;     IICdelay() ;  SCL = 0;  }  ///总线停止条件 void IIC_Stop(void) {  SDA = 0;  SCL = 1;  IICdelay();  SDA = 1; }  ///应答位控制 void IIC_Ack(unsigned char ackbit) {  if(ackbit)   {    SDA = 0;  }  else   {   SDA = 1;  }  IICdelay();  SCL = 1;  IICdelay();  SCL = 0;  SDA = 1;   IICdelay(); }  //等待回应 bit IIC_WaitAck(void) {  SDA = 1;  IICdelay();  SCL = 1;  IICdelay();  if(SDA)      {      SCL = 0;   IIC_Stop();   return 0;  }  else    {    SCL = 0;   return 1;  } }  //通过I2C总线发送数据 void IIC_SendByte(unsigned char byt) {  unsigned char i;  for(i=0;i<8;i  )  {      if(byt&0x80)    {     SDA = 1;   }   else    {    SDA = 0;   }   IICdelay();   SCL = 1;   byt <<= 1;   IICdelay();   SCL = 0;  } }  //从I2C在总线上接收数据 unsigned char IIC_RecByte(void) {  unsigned char da;  unsigned char i;    for(i=0;i<8;i  )  {      SCL = 1;   IICdelay();   da <<= 1;   if(SDA)    da |= 0x01;   SCL = 0;   IICdelay();  }  return da; }  ///读取函数代码 unsigned char IIC_Read(unsigned char add) {  unsigned char temp;  IIC_Start(); //启动  IIC_SendByte(0x90);//调用PCF8591,并为写作操作  IIC_WaitAck();/等待  IIC_SendByte(add); //add值决定通道0x01是光敏电阻,0x三十是滑动变阻器  IIC_WaitAck();/等待   IIC_Stop();//停止   IIC_Start();//重新启动  IIC_SendByte(0x91);  //调用PCF8591,还有阅读操作  IIC_WaitAck();/等待   temp=IIC_RecByte();///把读取的数据给temp  IIC_Stop();//停止   return temp;//返回temp  } //(写函数代码) void IIC_Write(unsigned char add,unsigned char dat) {   IIC_Start();  IIC_SendByte(0x90);  IIC_WaitAck();  IIC_SendByte(add);  IIC_WaitAck();  IIC_SendByte(dat);     IIC_WaitAck();     IIC_Stop();  }  

iic.h

#ifndef _IIC_H #define _IIC_H  #include  #include "intrins.h"  #define SlaveAddrW 0xA0 #define SlaveAddrR 0xA1  ///总线引脚定义 sbit SDA = P2^1;  /* 数据线 */ sbit SCL = P2^0;  /* 时钟线 */  //函数声明 void IIC_Start(void);  void IIC_Stop(void);   void IIC_Ack(unsigned char ackbit);  void IIC_SendByte(unsigned char byt);  bit IIC_WaitAck(void);   unsigned char IIC_RecByte(void);  unsigned char IIC_Read(unsigned char add); void IIC_Write(unsigned char add,unsigned char dat);  #endif

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章