蓝桥杯之单片机学习(二十三)——对于官方驱动的函数调用,包装程序

一些整理

IIC

1. PCF8591

1.1 通道一:光敏电阻
//Light_read(0X01)

uchar Light_read(uchar add)
{
	uchar temp;
	IIC_Start();
	IIC_SendByte(0X90);
	IIC_WaitAck();
	IIC_SendByte(add);
	IIC_WaitAck();
	IIC_Stop();
	
	IIC_Start();
	IIC_SendByte(0X91);
	IIC_WaitAck();
	temp = IIC_RecByte();
	IIC_Stop();
	return temp;
}
1.2 通道三:A/D转换(Rb2)
//Light_read(0X03)

uchar AD_read(uchar add)
{
	uchar temp;
	IIC_Start();
	IIC_SendByte(0X90);
	IIC_WaitAck();
	IIC_SendByte(add);
	IIC_WaitAck();
	IIC_Stop();
	
	IIC_Start();
	IIC_SendByte(0X91);
	IIC_WaitAck();
	temp = IIC_RecByte();
	IIC_Stop();
	return temp;
}

2. AT24C02

EEPROM(寄存器)
/*
EEPROM_write(0X01, 126);
delayms(5) //延时5ms
EEPROM_read(0X01)
*/

//读取
uchar EEPROM_read(uchar add)
{
	uchar temp;
	IIC_Start();
	IIC_SendByte(0XA0);
	IIC_WaitAck();
	IIC_SendByte(add);
	IIC_WaitAck();
	IIC_Stop();
	
	IIC_Start();
	IIC_SendByte(0XA1);
	IIC_WaitAck();
	temp = IIC_RecByte();
	IIC_Stop();
	return temp;
}


//写入
void EEPROM_write(uchar add, uchar dat)
{
	unsigned char temp;
	IIC_Start();
	IIC_SendByte(0XA0);
	IIC_WaitAck();
	IIC_SendByte(add);
	IIC_WaitAck();
	IIC_SendByte(dat);
	IIC_WaitAck();
	IIC_Stop();
}

DS1302(时钟)

//Init_DS1302()就是初始化
//uchar shijian[] = {0, 30, 8, 0, 0, 0, 0};
//Read_DS1302()while里写

void Init_DS1302()
{
	uchar i, add;
	add = 0X80;  //写
	Write_Ds1302(0X8e, 0X00);
	for(i = 0; i < 7; i++)
	{
		Write_Ds1302(add, shijian[i]);
		add = add + 2;
	}
	Write_Ds1302(0X8e, 0X80);
}

void Read_DS1302()
{
	uchar i, add;
	add = 0X81;  //读
	Write_Ds1302(0X8e, 0X00);
	for(i = 0; i < 7; i++)
	{
		shijian[i] = Read_Ds1302(add);
		add = add + 2;
	}
	Write_Ds1302(0X8e, 0X80);
}

onewire

以后更新

杂记

  1. 蜂鸣器和继电器的P0对应 (蜂鸣器:0X40,继电器:0X10,全关0X00)

  2. 数码管的对应图在这里插入图片描述

  3. NE555是Rb3,短接SIGNAL和P34

  4. 通道一(0X01)和通道三(0X03)是写入决定的

  5. DS1302的驱动,不用翻8-12倍

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周末不下雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值