/*
//向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));
}