蓝桥杯之单片机学习(二十三)——对于官方驱动的函数调用,包装程序
一些整理
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
以后更新
杂记
-
蜂鸣器和继电器的P0对应 (蜂鸣器:0X40,继电器:0X10,全关0X00)
-
数码管的对应图
-
NE555是Rb3,短接SIGNAL和P34
-
通道一(0X01)和通道三(0X03)是写入决定的
-
DS1302的驱动,不用翻8-12倍
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理