藍橋杯單片機筆記—各個驅動使用

/*

//向E2prom寫入

void AT24c02wirte(unsigned char addr,unsigned char dat)
{
	IIC_Start();
	IIC_SendByte(0xa0);
	IIC_WaitAck();
	IIC_SendByte(addr);
	IIC_WaitAck();
	IIC_SendByte(dat);
	IIC_WaitAck();
	IIC_Stop();
}

//向E2prom讀出

unsigned char AT24c02read(unsigned char addr)
{
	unsigned char num;
	IIC_Start();
	IIC_SendByte(0xa0);			//發送器件地址
	IIC_WaitAck();
	IIC_SendByte(addr);			//發送存儲地址
	IIC_WaitAck();
	IIC_Stop();
	
	IIC_Start();
	IIC_SendByte(0xa1);			//發送讀操作
	IIC_WaitAck();
	num=IIC_RecByte();			//讀一字節
	IIC_Ack(0);
	IIC_Stop();
	
	return num;
}

//電位器使用驅動

unsigned char Read_AIN()
{	
	unsigned char temp;

	IIC_Start();
	IIC_SendByte(0x90);       //地址+寫
	IIC_WaitAck();
	IIC_SendByte(0x03);      //選擇電位器RB2
	IIC_WaitAck();
	IIC_Stop();
	
	IIC_Start();
	IIC_SendByte(0x91);      //地址+讀
	IIC_WaitAck();
	temp = IIC_RecByte();
	IIC_Ack(1);                     //高電平回覆
	IIC_Stop();
	
	return temp;
}

//光敏電阻

unsigned char read_AIN()
{
	unsigned char temp;
	

	IIC_Start();
	IIC_SendByte(0x90);            //地址+寫
	IIC_WaitAck();
	IIC_SendByte(0x01);        //選擇光敏電阻
	IIC_WaitAck();
	IIC_Stop();
	IIC_Start();
	IIC_SendByte(0x91);         //地址+讀
	IIC_WaitAck();
	temp = IIC_RecByte();
	IIC_Ack(0);                      //低電平回覆
	IIC_Stop();
	
	return temp;
}

*/

//蜂鳴器buzz是 P06控制
//繼電器relay是 P04控制
//I/O代碼
/

/P2=((P2&0x1f)|0xA0)
//P06=1;                 //打開蜂鳴器
//P2 &= 0x1f;

//P2=((P2&0x1f)|0xA0)
//P04=1;                 //打開繼電器
//P2 &= 0x1f;

//DS18B20溫度採集程序:整數
unsigned char rd_temperature(void)

{
    unsigned char low,high;
  	char temp;
  
  	init_ds18b20();
  	Write_DS18B20(0xCC);
  	Write_DS18B20(0x44); //啓動溫度轉換
  	Delay_OneWire(200);

  	init_ds18b20();
  	Write_DS18B20(0xCC);
  	Write_DS18B20(0xBE); //讀取寄存器

  	low = Read_DS18B20(); //低字節
  	high = Read_DS18B20(); //高字節
  
  	temp = high<<4;
  	temp |= (low>>4);
  
  	return temp;
}

//ds1302初始化

void init_time()
{
	unsigned char i;
	Write_Ds1302(0x8E,1);               //關閉寫保護
	for(i=0;i<7;i++)
	{
		Write_Ds1302(write_add[i],time[i]);    //地址, 初始化時間
	}
	Write_Ds1302(0x8E,0);                //打開寫保護
	
	Hour=Read_Ds1302(0x85);
	Minute=Read_Ds1302(0x83);
	Second=Read_Ds1302(0x81);
}

//BCD碼->十進制

unsigned char BCD_Ten(uchar dat)
{
	return  ((dat>>4)*10 + (dat&0x0f));
}

//十進制->BCD碼

unsigned char Ten_BCD(uchar dat)
{
    return  (((dat/10)<<4) + (dat%10));
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章