蓝桥杯单片机之模块代码《AT24C02》

过往历程

历程1:秒表

历程2:按键显示时钟

历程3:列矩阵按键显示时钟

历程4:行矩阵按键显示时钟

历程5:新DS1302

历程6:小数点精确后两位ds18b20

历程7:35定时器测量频率


文章目录

  • 过往历程
  • AT24C02介绍
  • 前期准备
  • 驱动处理
    • AD转换/DA转换
    • 官方提供的程序
    • 自己需要更改的地方
  • 本期代码
  • 省赛代码传送门


AT24C02介绍

AT24C02是一种可以实现掉电不丢失的存储器,可用于保存单片机运行时想要永久保存的数据信息

  • 存储介质:E2PROM
  • 通讯接口:I2C总线
  • 容量:256字节
    在这里插入图片描述

在蓝桥杯中,他的电路图是这样的
在这里插入图片描述

前期准备

1:本文使用的头文件是由stc生成
在这里插入图片描述
点击保存文件之后,保存至自己文件目录下方即可
在这里插入图片描述
2:本文使用的都是官方提供的底层驱动代码
在这里插入图片描述

驱动处理

AD转换/DA转换

官方提供的程序

//c文件
#include "iic.h"#define DELAY_TIME 5//I2C总线内部延时函数
void IIC_Delay(unsigned char i)
{do{_nop_();}while(i--);        
}//I2C总线启动信号
void IIC_Start(void)
{SDA = 1;SCL = 1;IIC_Delay(DELAY_TIME);SDA = 0;IIC_Delay(DELAY_TIME);SCL = 0;	
}//I2C总线停止信号
void IIC_Stop(void)
{SDA = 0;SCL = 1;IIC_Delay(DELAY_TIME);SDA = 1;IIC_Delay(DELAY_TIME);
}//发送应答或非应答信号
void IIC_SendAck(bit ackbit)
{SCL = 0;SDA = ackbit;  					IIC_Delay(DELAY_TIME);SCL = 1;IIC_Delay(DELAY_TIME);SCL = 0; SDA = 1;IIC_Delay(DELAY_TIME);
}//等待应答
bit IIC_WaitAck(void)
{bit ackbit;SCL  = 1;IIC_Delay(DELAY_TIME);ackbit = SDA;SCL = 0;IIC_Delay(DELAY_TIME);return ackbit;
}//I2C总线发送一个字节数据
void IIC_SendByte(unsigned char byt)
{unsigned char i;for(i=0; i<8; i++){SCL  = 0;IIC_Delay(DELAY_TIME);if(byt & 0x80) SDA  = 1;else SDA  = 0;IIC_Delay(DELAY_TIME);SCL = 1;byt <<= 1;IIC_Delay(DELAY_TIME);}SCL  = 0;  
}//I2C总线接收一个字节数据
unsigned char IIC_RecByte(void)
{unsigned char i, da;for(i=0; i<8; i++){   SCL = 1;IIC_Delay(DELAY_TIME);da <<= 1;if(SDA) da |= 1;SCL = 0;IIC_Delay(DELAY_TIME);}return da;    
}
//头文件
#ifndef _IIC_H
#define _IIC_H#include "reg52.h"
#include "intrins.h"sbit SDA = P2^1;
sbit SCL = P2^0;void IIC_Start(void); 
void IIC_Stop(void);  
bit IIC_WaitAck(void);  
void IIC_SendAck(bit ackbit); 
void IIC_SendByte(unsigned char byt); 
unsigned char IIC_RecByte(void); #endif

自己需要更改的地方

1:同样这个是与ds1302一样,只需要添加上中断即可

#include "iic.h"#define DELAY_TIME 5//I2C总线内部延时函数
void IIC_Delay(unsigned char i)
{do{_nop_();}while(i--);        
}//I2C总线启动信号
void IIC_Start(void)
{SDA = 1;SCL = 1;IIC_Delay(DELAY_TIME);SDA = 0;IIC_Delay(DELAY_TIME);SCL = 0;	
}//I2C总线停止信号
void IIC_Stop(void)
{SDA = 0;SCL = 1;IIC_Delay(DELAY_TIME);SDA = 1;IIC_Delay(DELAY_TIME);
}//发送应答或非应答信号
void IIC_SendAck(bit ackbit)
{SCL = 0;SDA = ackbit;  					IIC_Delay(DELAY_TIME);SCL = 1;IIC_Delay(DELAY_TIME);SCL = 0; SDA = 1;IIC_Delay(DELAY_TIME);
}//等待应答
bit IIC_WaitAck(void)
{bit ackbit;SCL  = 1;IIC_Delay(DELAY_TIME);ackbit = SDA;SCL = 0;IIC_Delay(DELAY_TIME);return ackbit;
}//I2C总线发送一个字节数据
void IIC_SendByte(unsigned char byt)
{unsigned char i;for(i=0; i<8; i++){EA=0;							//关闭中断SCL  = 0;IIC_Delay(DELAY_TIME);if(byt & 0x80) SDA  = 1;else SDA  = 0;IIC_Delay(DELAY_TIME);SCL = 1;byt <<= 1;IIC_Delay(DELAY_TIME);EA=1;					//开启中断}SCL  = 0;  
}//I2C总线接收一个字节数据
unsigned char IIC_RecByte(void)
{unsigned char i, da;for(i=0; i<8; i++){   EA=0;			//关闭中断SCL = 1;	IIC_Delay(DELAY_TIME);da <<= 1;if(SDA) da |= 1;SCL = 0;IIC_Delay(DELAY_TIME);EA=1;		//开启中断}return da;    
}

本期代码

#include<stc15f2k.h>
#include<iic.h>char dula[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};
char disdula[]={0,0,0,0,0,0,0,0};
int diswela,date=123,ms;
bit flag; void buzz()
{P2=((P2&0x1f)|0xa0);P0=0x00;P2&=0x1f;P2=((P2&0x1f)|0x80);P0=0xff;P2&=0x1f;
}void din()
{TMOD=0X10;TH1=(65536-11059/12)/256;TL1=(65536-11059/12)%256;EA=1;ET1=1;TR1=1;
}void display()
{P2=((P2&0x1f)|0xe0);P0=0xff;P2&=0x1f;P2=((P2&0x1f)|0xc0);P0=1<<diswela;P2&=0x1f;P2=((P2&0x1f)|0xe0);P0=dula[disdula[diswela]];P2&=0x1f;if(++diswela>=8)diswela=0;
}void display_1(int date)
{disdula[0]=date/100%10;disdula[1]=date/10%10;disdula[2]=date/1%10;disdula[3]=11;disdula[4]=11;disdula[5]=11;disdula[6]=11;disdula[7]=11;
}void write(int add,int date)
{IIC_Start(); IIC_SendByte(0xa0);IIC_WaitAck();IIC_SendByte(add);IIC_WaitAck();IIC_SendByte(date);IIC_WaitAck();IIC_Stop();
}char read(int add)
{int date;IIC_Start();IIC_SendByte(0xa0);IIC_WaitAck();IIC_SendByte(add);IIC_WaitAck();IIC_Start();IIC_SendByte(0xa1);IIC_WaitAck();date=IIC_RecByte();IIC_SendByte(1);return date;
}void main()
{din();buzz();write(0x01,date);while(1){if(flag==1){flag=0;date=read(0x01);display_1(date);}
}
}void qa() interrupt 3
{	TH1=(65536-11059/12)/256;TL1=(65536-11059/12)%256;ms++;if(!(ms%100))flag=1;if(ms==1000)ms=0;display();
}

省赛代码传送门

第三届蓝桥杯单片机省赛
第四届蓝桥杯单片机省赛
第五届蓝桥杯单片机省赛
第六届蓝桥杯单片机省赛
第七届蓝桥杯单片机省赛
第八届蓝桥杯单片机省赛
第九届蓝桥杯单片机省赛
第十届蓝桥杯单片机省赛
第十一届蓝桥杯单片机省赛

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3018389.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

CSS引用

CSS定义 层叠样式表&#xff1a;&#xff08;Cascading Style Sheets,缩写为css&#xff09;,是一种样式表语言&#xff0c;用来描述HTML文档的呈现&#xff08;美化内容&#xff09; 书写位置&#xff1a;title标签下方添加style双标签&#xff0c;style标签里写入CSS代码 在s…

【1小时掌握速通深度学习面试11】元学习

目录 ​编辑 52.元学习适合哪些学习场景?可解决什么样的学习问题? 55.元学习与有监督学习/强化学习具体有哪些区别? 1、迁移学习&#xff08;Transfer Learning&#xff09; 2、元学习&#xff08;Meta Learning) 3、小样本学习&#xff08;Few-Shot Learning&#xf…

YOLOv8的训练、验证、预测及导出[目标检测实践篇]

这一部分内容主要介绍如何使用YOLOv8训练自己的数据集&#xff0c;并进行验证、预测及导出&#xff0c;采用代码和指令的两种方式&#xff0c;参考自官方文档&#xff1a;Detect - Ultralytics YOLOv8 Docs。实践篇不需要关注原理&#xff0c;只需要把流程跑通就行&#xff0c;…

24年审计师报名时间汇总所需材料提前准备

2024审计师报名本周开始&#xff08;5月10日起&#xff09;&#xff0c;各地报名时间不一&#xff0c;报名指南整理好了&#xff01; ✅全国报名时间汇总报名费用资格审核&#xff1a;P1~P2。 ✅2024年审计师考试科目&#xff1a; 《审计相关基础知识》和《审计理论与实务》 ✅…

json-server的安装和使用

json-server介绍 json-server是可以把本地当做服务器&#xff0c;然后axios向本地区发送请求&#xff0c;并且不会出现跨域的问题&#xff0c;若是等不及后端数据&#xff0c;可以用这个模拟假数据 json-server安装及使用 【json-server网址】https://www.npmjs.com/package/…

Stack数据结构设计模板

第三章 栈、队列、数组 1.栈 1.1 顺序栈 #define MaxSize 20 typedef int ElemType; //顺序栈的定义 typedef struct {ElemType data[MaxSize];int top; }SqStack; // 初始化顺序栈 void InitSqStack(SqStack &S){S.top -1; }; // 入栈(增) bool Push(SqStack &S,El…

UTONMOS:真正的“游戏元宇宙”还有多遥远?

元宇宙来源于科幻小说的概念&#xff0c;已成为真实世界中的流行语。围绕这一新兴概念&#xff0c;一场产、学、研的实践正在展开。 数字化转型中&#xff0c;元宇宙能否担当大任&#xff1f;这些新概念在中国语境下如何落地&#xff1f;本文将深入挖掘国内元宇宙游戏产业的发…

分布式架构|打造高效、稳定、灵活的现代IT基石

分布式架构&#xff1a;打造高效、稳定、灵活的现代IT基石 一、独立扩展&#xff1a;应对业务增长与用户激增二、高可用性&#xff1a;确保系统稳定运行三、可维护性&#xff1a;降低系统复杂性四、技术选型灵活性&#xff1a;充分利用各种技术优势五、数据隔离与安全性 随着信…

给网站网页PHP页面设置密码访问代码

将MkEncrypt.php文件上传至你网站根目录下或者同级目录下。 MkEncrypt.php里面添加代码&#xff0c;再将调用代码添加到你需要加密的页进行调用 MkEncrypt(‘123456’);括号里面123456修改成你需要设置的密码。 密码正确才能进去页面&#xff0c;进入后会存下cookies值&…

鸿蒙开发核心技术都有哪些【都是从零开始】

鸿蒙开发核心技术都有哪些&#xff1f;&#xff1a;【持续1年的时间公关鸿蒙技术】 我们能做哪些呢&#xff1f; 还是从UI业务开始吧 面试题1&#xff1a; 基于STAGE模型项目重构等问题 代理设计模式&#xff0c;业务与架构隔离 中介者模式&#xff0c;和代理设计模式的区别…

解决Gitlab集成Jira时报SSL证书问题

1. 问题描述 在gitlab中集成jira的时候&#xff0c;由于jira是企业内部网址&#xff0c;并使用自己签名的SSL证书&#xff0c;一直会报证书验证不过的问题&#xff0c;报错信息如下&#xff1a; Connection failed. Check your integration settings. SSL_connect returned1 …

【k8s多集群管理平台开发实践】八、client-go实现service读取列表、创建service、读取yaml配置并更新

文章目录 简介 一.k8s的service列表1.1.controllers控制器代码1.2.models模型代码 二.创建service2.1.controllers控制器代码2.2.models模分代码 三.读取和更新service的yaml配置3.1.controllers控制器代码3.2.models模型代码 四.路由设置4.1.路由设置 五.前端代码5.1.列表部分…

【RT-DETR有效改进】 主干篇 | 2024.5全新的移动端网络MobileNetV4改进RT-DETR(含MobileNetV4全部版本改进)

&#x1f451;欢迎大家订阅本专栏&#xff0c;一起学习RT-DETR&#x1f451; 一、本文介绍 本文给大家带来的改进机制是MobileNetV4&#xff0c;其发布时间是2024.5月。MobileNetV4是一种高度优化的神经网络架构&#xff0c;专为移动设备设计。它最新的改动总结主要有两点&…

flutter报错

组件相关 type ‘List’ is not a subtype of type ‘List’ children: CardList.map((item) > Container( 加上 *** < Widget>*** 正常 type ‘(dynamic, dynamic) > Container’ is not a subtype of type ‘(CardType) > Widget’ of ‘f’ children: CardL…

【管理篇】如何提升管理中的沟通效率?

目录标题 管理沟通那些事如何提升沟通效率?&#x1f525;如何提升沟通技能&#xff1f; 向上沟通、员工激励和团队凝聚力提升 是管理沟通上比较难得问题 管理沟通那些事 管理沟通让技术管理者们痛苦的主因是确定性和规则性的减弱&#xff0c;不确定性的大幅度上升&#xff0c…

革新品质检测,质构科技重塑肉类行业新篇章

革新品质检测&#xff0c;质构科技重塑肉类行业新篇章 在现代社会&#xff0c;消费者对食品安全和品质的要求日益提升&#xff0c;特别是在肉类行业。为了满足这一市场需求&#xff0c;质构科技凭借其精准、高效的优势&#xff0c;正逐渐成为肉类品质检测的新星。今天&#xf…

前端传递list(数组)类型参数,后端接收失败

一顿报错,我之前遇到的list都是Long类型 貌似用GET也是可以的,但是很奇怪一直报错 就是不可以 后来去百度 查询到可以用两种方法解决这个问题 1、拆开 传 以GET方式&#xff0c;后端GetMappingRequestParam接收。 2、以Post方式传&#xff0c;后端创建dto PostMappingReques…

【spring】Bean的生命周期回调函数和Bean的循环依赖

目录 1、Bean的生命周期 2、Bean的生命周期回调函数 2.1、初始化的生命周期回调 2.2、销毁的生命周期回调 3、Bean的循环依赖 1、Bean的生命周期 spring的bean的生命周期主要是创建bean的过程&#xff0c;一个bean的生命周期主要是4个步骤&#xff1a;实例化&#xff0c;…

AI时代的就业转型与个人发展

AI时代的就业转型与个人发展&#xff1a;机遇与挑战并存 AI出现的背景&#xff1a;技术革命的浪潮 随着21世纪信息技术的突飞猛进&#xff0c;人工智能&#xff08;Artificial Intelligence, AI&#xff09;作为一场技术革命的产物&#xff0c;正逐渐从科幻小说走向现实世界的…

Pycharm链接远程服务器GPU跑深度学习模型

我们在学习深度学习时&#xff0c;常常会遇到自己笔记本电脑性能不够&#xff0c;显卡性能低&#xff0c;在运行深度学习项目的时候很浪费时间。如果实验室有可用于深度学习的服务器的话&#xff0c;会大大减少代码执行时间&#xff0c;服务器上的GPU算力一般都很高。 本文主要…