蓝桥杯单片机 驱动代码总结
1. DS1302驱动
在官方提供的DS1302驱动代码下,写入以下代码:
unsigned char Write_ADDR[7]={
0x80,0x82,0x84,0x86,0x88,0x8a,0x8c}; //DS1302写地址
unsigned char Read_ADDR[7]={
0x81,0x83,0x85,0x87,0x89,0x8b,0x8d}; //DS1302读地址
unsigned char Timer[7]={
0x50,0x59,0x23,0x10,0x04,0x06,0x21}; //自定义时间输入,输入顺序为秒-分-时-日-月-星期-年
void Ds1302_Init()
{
unsigned char i;
Write_Ds1302_Byte(0x8e,0x00); //关闭写保护
for(i=0;i<7;i++)
{
Write_Ds1302_Byte(Write_ADDR[i], Timer[i])
}
Write_Ds1302_Byte(0x8e,0x80); //打开写保护
}
void Read_Ds1302()
{
unsigned char i;
for(i=0;i<7;i++)
{
Timer[i]=Read_Ds1302_Byte(Read_ADDR[i]);
}
}
2. DS18B20驱动
无小数的DS18B20驱动代码
先对官方提供的底层驱动代码延时全部扩大十倍,然后写入以下代码:
unsigned int temp=0;
void Read_Temp()
{
unsigned char MSB,LSB;
init_ds18b20();
Write_DS18B20(0xcc);
Write_DS18B20(0x44);
Delay_OneWire(1);
init_ds18b20();
Write_DS18B20(0xcc);
Write_DS18B20(0xbe);
LSB= Read_DS18B20(); //两者不可调换,先写LSB,再写MSB。
MSB= Read_DS18B20();
temp=(MSB<<8)|LSB;
temp=temp>>4;
}
有小数的DS18B20驱动代码
先对官方提供的底层驱动代码延时全部扩大十倍,然后写入以