目录
蓝桥杯单片机赛点数据包模块文件使用的注意事项
前言:
正文:
DS1302
IIC
onewire
2023年赛点资源包数据包下载地址:https://download.csdn.net/download/qq_25218501/87965408?spm=1001.2014.3001.5503
蓝桥杯单片机赛点数据包模块文件使用的注意事项
前言:
在2023年第十四届蓝桥杯单片机的竞赛中,蓝桥杯组委会官方将赛点资源包的iic、onewire和ds1302模块驱动文件做了更改,缺失了引脚定义和头文件包含。本期是我总结出来的新的驱动程序使用方法。
正文:
2023新的赛点数据包除了去除了底层驱动代码中的.h⽂件外,还在.c⽂件中的⼀些地⽅做了调整
我们可以将它们改成⾃⼰熟悉的往年驱动程序。
DS1302
ds1302.c
#include <reg52.h>
#include <intrins.h> //头⽂件可以通过在keil中添加.c⽂件展开得到
sbit SCK=P1^7;
sbit SDA=P2^3;
sbit RST = P1^3; // DS1302复位
//引脚忘了可以看芯⽚⼿册
通过直接添加.c⽂件,可以查看到所需要的头⽂件
引脚定义可以直接参照原理图
ds1302.h
由于没给.h⽂件,所以需要⾃⼰写
#ifndef __DS1302_H
#define __DS1302_H
void Write_Ds1302(unsigned char temp);
void Write_Ds1302_Byte( unsigned char address,unsigned char dat );
unsigned char Read_Ds1302_Byte( unsigned char address );
//将⾃⼰写的函数名加⼊
void setTime(char Time[]);
void getTime(char Time[]);
#endif
IIC
iic.c
.c⽂件开头需要加的
#include <reg52.h>
#include <intrins.h>
#define DELAY_TIME 5
//总线引脚定义 这⾥注意是⼩写,以前的数据包都是⼤写,可以看下⾯具体函数是⼤写⼩写
sbit sda = P2^1; /* 数据线 */
sbit scl = P2^0; /* 时钟线 */
引脚定义可以直接参照原理图
delay函数有差异,可以选择不改
2023年数据包iic延时函数:
static void I2C_Delay(unsigned char n)
{
do
{
_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();
}
while(n--);
}
2022年数据包iic延时函数:
//I2C总线内部延时函数
void IIC_Delay(unsigned char i)
{
do{_nop_();}
while(i--);
}
需要注意的是,iic.c⽂件中的系统函数命名都发⽣了变化,因此在写函数时需要留意⼀下。
iic.h
同样需要写.h⽂件
#ifndef _IIC_H
#define _IIC_H
void I2CStart(void);
void I2CStop(void);
bit I2CWaitAck(void);
void I2CSendAck(bit ackbit);
void I2CSendByte(unsigned char byt);
unsigned char I2CReceiveByte(void);
//⾃定义函数
void dac_out(unsigned char dat);
unsigned char ad_get(unsigned char add);
#endif
onewire
onewire.c
#include <reg52.h>
sbit DQ = P1^4; //单总线接⼝
引脚定义可以直接参照原理图
同样,单总线内部的延时函数也有⼀些区别,以前我们需要在⾥⾯写 t*=10 ,2023版的数据包我们可以选择不动。
2023年:
void Delay_OneWire(unsigned int t)
{
unsigned char i;
while(t--){
for(i=0;i<12;i++);
}
}
2022年:
//单总线内部延时函数
void Delay_OneWire(unsigned int t)
{
while(t--);
}
onewire.h
同样需要写.h⽂件
#ifndef __ONEWIRE_H
#define __ONEWIRE_H
//2022数据包中⾃带的函数声明, 可以不⽤写
unsigned char rd_temperature(void);
//写⾃定义函数名,⽐如
int get_temperature(void);
#endif