蓝桥杯单片机赛点数据包模块文件使用的注意事项

目录

蓝桥杯单片机赛点数据包模块文件使用的注意事项

前言:

正文:

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

竹烟淮雨

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

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

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

打赏作者

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

抵扣说明:

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

余额充值