当前位置: 首页 > article >正文

STC89C52单片机学习——第28节: [12-2] AT24C02数据存储秒表(定时器扫描按键数码管)

写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难,但我还是想去做!

本文写于:2025.03.20

51单片机学习——第28节: [12-2] AT24C02数据存储&秒表(定时器扫描按键数码管)

  • 前言
  • 开发板说明
  • 引用
  • 解答和科普
  • 一、编写I2C时序
  • 二、加入延迟函数实现LED闪烁
  • 问题
  • 总结

前言

   本次笔记是用来记录我的学习过程,同时把我需要的困难和思考记下来,有助于我的学习,同时也作为一种习惯,可以督促我学习,是一个激励自己的过程,让我们开始51单片机的学习之路。
   欢迎大家给我提意见,能给我的嵌入式之旅提供方向和路线,现在作为小白,我就先学习51单片机了,就跟着B站上的江协科技开始学习了.
   在这里会记录下江协科技51单片机开发板的配套视频教程所作的实验和学习笔记内容,因为我之前有一个开发板,我大概率会用我的板子模仿着来做.让我们一起加油!
   另外为了增强我的学习效果:每次笔记把我不知道或者问题在后面提出来,再下一篇开头作为解答!

开发板说明

   本人采用的是慧净的开发板,因为这个板子是我N年前就买的板子,索性就拿来用了。不再另外购买视频中的普中开发板了。
   原理图如下
在这里插入图片描述
视频中的都用这个开发板来实现,如果有资源就利用起来。
仔细看了看:开发板的晶振为:11.0592Mhz;12Mhz晶振是用来给CH340G芯片外置晶振;

下图是实物图
在这里插入图片描述

引用

51单片机入门教程-2020版 程序全程纯手打 从零开始入门
还参考了下图中的书籍:
手把手教你学51单片机(C语言版)
在这里插入图片描述
STC89C52手册
在这里插入图片描述

解答和科普

一、编写I2C时序

在main函数中调出来,AT.C就不用调出来I2C了。
在这里插入图片描述
在这里插入图片描述

声明位:

sbit I2C_SCL =P1^7;
sbit I2C_SDA=P1^2;

1.1起始拼图
在这里插入图片描述

void I2C_Start(void)
{
	 I2C_SDA=1;
	 I2C_SCL=1;

	I2C_SDA=0;
	I2C_SCL=0;
	
}

1.2终止拼图
在这里插入图片描述

void I2C_Stop(void)
{
	I2C_SDA=0;
	I2C_SCL=1;
	I2C_SDA=1;
}

1.3发送一个字节
在这里插入图片描述

void I2C_SendByte(unsigned char Byte)	
{
	unsigned char i;
	for(i=0;i<8;i++)
	{
	I2C_SDA=Byte&(0x80>>i);		//把数据放在线上
	I2C_SCL=1;
	I2C_SCL=0;			//看时序是否满足能够承受的时间是多少
	}
}

1.4接受一个字节

在这里插入图片描述

unsigned char I2C_ReceiveByte(void)	
{
	unsigned char i,Byte=0x00;
	I2C_SDA=1;					//释放总线
	for(i=0;i<8;i++)
	{
	I2C_SCL=1;
	if(I2C_SDA){Byte|=(0x80>>i);}
	I2C_SCL=0;
	
	}
	return Byte;
}

1.5主机的发送应答
在这里插入图片描述
这里相当于主机写:

void I2C_SendAck(unsigned char AckBit)
{
	I2C_SDA=AckBit;
	I2C_SCL=1;
	I2C_SCL=0;
}

1.6 从机的接收应答
这里是从机写,反过来就是主机读
在这里插入图片描述

unsigned char I2C_ReceiveAck(void)
{
	unsigned char AckBit=0;
	I2C_SDA=1;
	I2C_SCL=1;
	AckBit=I2C_SDA;			//高电平读取
	I2C_SCL=0;
	return AckBit;
}

二、加入延迟函数实现LED闪烁

1.代码
1.1main.c

1.2 LCD1602.C和LCD1602.H

1.4Delay.C和Delay.H

实验现象:

问题

总结

本节课主要学了了LED闪烁,通过延迟函数的延迟,实现了LED闪烁。


http://www.kler.cn/a/593764.html

相关文章:

  • 外星人入侵-Python-三
  • C++学习之nginx+fastDFS
  • 深入解析 Redis 原理:架构、数据结构与高效存储
  • 基于开源模型的微调训练及瘦身打造随身扫描仪方案__用AI把手机变成文字识别小能手
  • 【Vue3】01-vue3的基础 + ref reactive
  • Pygame实现记忆拼图游戏14
  • 实时数仓和离线数仓
  • subprocess执行系统命令简明用法
  • 「低延迟+快速集成:Amazon IVS如何重塑实时互动视频体验?」
  • Linux与HTTP中的Cookie和Session
  • 头歌实训--数据预处理Pandas--共三关
  • 黄金屋 #2 我应该将产品开源吗?
  • 雅可比行列式
  • fontTools工具的使用介绍
  • [DeepRetrieval] 用DeepSeek-R1-Zero的思路教会模型怎么用搜索引擎找文本
  • Python数据可视化实战:从基础图表到高级分析
  • 在使用mybatis时遇到枚举的相关问题和解决
  • The method precision() is undefined for the type BigInteger
  • 二分查找------查找区间
  • AI全天候智能助手,为您构建私人数据库