day02 51单片机

news2025/2/28 17:03:11

51单片机学习

1闪烁LED

1.1 需求描述

这个案例,我们要让P00引脚对应的LED按照1秒闪烁1次。

1.2 硬件设计

在这里插入图片描述

1.1 软件设计

1)LED闪烁的代码

想让LED闪烁,就需要P00的值不断在0和1之间循环变化。实现这一功能的代码也很简单:

#include <STC89C5xRC.H> //包含STC89C52的头文件
#include <INTRINS.H>

sbit g_led = P0 ^ 0;

void Delay_1MS(unsigned int count);

void main()
{
    // 让led变为低电位
    g_led = 0;

    // 死循环卡住单片机,让它不要继续往下执行
    while (1)
    {
        // 对led不断取反,取反就是亮灭转换
        g_led = ~g_led;

        // 延时500ms
        Delay_1MS(500);
    }
}

void Delay_1MS(unsigned int count) //@11.0592MHz
{
    unsigned char data i, j;

    while (count > 0)
    {
        _nop_();
        i = 2;
        j = 199;
        do
        {
            while (--j)
                ;
        } while (--i);

        count--;
    }
}

2)代码解读

(1)延时函数说明

这段代码中,LED闪烁的部分其实相当简单,就是对LED变量不断取反。亮灭的节奏主要取决于延时函数的实现。那我们如何实现一个1ms的延时函数呢?这里,我们可以使用STC-ISP自带的软件延时计算器。打开STC-ISP,选择软件延时计算器标签,指定时长1ms,指令集选择STC-Y1(说明:STC89/STC90单片机都是Y1指令集),即可得到1ms的延时代码。

在这里插入图片描述

(2)延时的原理

由于执行每条指令都需要时间,那么可以通过不断的执行指令以达到延迟的效果。具体执行一条指令需要多长时间,我们来计算一下。

时钟周期=1/晶振频率=1/11.0592MHz≈0.09us

机器周期=12时钟周期(约等于1.08us)。

指令周期=1条指令完成所需要的时钟周期(一般12/24/48)。

在这里插入图片描述

2 流水灯

2.1 需求描述

本案例我们会让P00到P07的LED依次亮起,间隔100ms,不断循环。

2.2 硬件设计

2.2.1 硬件原理图

在这里插入图片描述

2.3 软件设计

#include <STC89C5xRC.H> //包含STC89C52的头文件
#include <INTRINS.H>

// 增加自定义类型,简化代码编写
typedef unsigned char u8;
typedef unsigned int u16;

// 声名延时函数
void Delay_1MS(u16 count);

void main()
{
   
    // 声名临时变量
    u8 temp = 1;
    // temp是8个bit,对应8个led,1代表亮,正好和P0相反
    // 之后我们只要对temp做左位移,即可实现流水灯
    while (1)
    {
   
        // P0 是temp取反;0000 0001 取反 1111 1110
        P0 = ~temp;

        // 左移依次为:0000 0001,0000 0010,0000 0100,0000 1000,… 1000 0000
        temp <<= 1;

        // temp是char类型8位,如果等于1000 0000,再左移一位就变成0000 0000,所以如果temp等于0时,需要将temp再设置为1
        if (temp == 0)
        {
   
            temp = 1;
        }

        // 延时100ms

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

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

相关文章

在线预约小程序怎么做

在快节奏的现代生活中&#xff0c;无论是预约理发、还是预定餐厅&#xff0c;亦或是挂号就医&#xff0c;我们都希望有一个更加便捷、高效的方式来完成这些任务。而今&#xff0c;随着科技的发展&#xff0c;一款全新的在线预约小程序应运而生&#xff0c;为我们的生活带来了前…

SOCKS代理是如何增强网络隐私?

在数字化时代&#x1f310;&#xff0c;网络隐私的重要性日益凸显。个人和组织都在寻找有效的方法来保护自己的网络活动不受侵犯。SOCKS代理作为一种流行的网络协议&#xff0c;提供了一种有效的手段来增强网络隐私。本文将详细介绍SOCKS代理是如何工作的&#xff0c;以及它是如…

【随笔】Git 高级篇 -- 本地栈式提交 rebase | cherry-pick(十七)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

不允许在constexpr函数中进行声明

这是我用pycharm在windows系统下复现sfm深度学习网络(Deep Two-View Structure-from-Motion Revisited&#xff09;遇见的问题&#xff0c;复现时有段代码pytorch扩展cuda/c&#xff0c;pycharm中出现C标准相关的报错如下&#xff1a; 在网上查找很久无果&#xff0c;后面通过…

局域网tcp通信实验

两台windows系统计算机简单TCP通信测试_两台计算机tcp通信-CSDN博客 使用这篇文章的小工具。 环境&#xff1a; 我和同学的两台笔记本电脑。 使用我的手机开热点&#xff0c;两台电脑连接热点。 我的&#xff1a; IPv4 地址 . . . . . . . . . . . . : 192.168.92.79 子…

码农必看:常见源代码混淆技术详解

背景 一、项目组代码部署存在的问题 在项目组中&#xff0c;核心代码模块被部署于用户服务器上。然而&#xff0c;另一家公司获取了该服务器的root密码&#xff0c;这就存在着潜在的数据泄露和代码泄露的风险。传统的解决方法是通过配置环境变量来进行数据库加密处理&#xf…

全国项目管理标准化技术委员会副秘书长肖杨先生受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 全国项目管理标准化技术委员会副秘书长、微薄之力&#xff08;北京&#xff09;管理咨询有限公司董事长肖杨先生受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾&#xff0c;演讲议题为“数字化时代下&#xff0c;由职能型组织向高度适应性组织转…

免费的GPT-3.5 API服务aurora

什么是 aurora &#xff1f; aurora 是利用免登录 ChatGPT Web 提供的无限制免费 GPT-3.5-Turbo API 的服务&#xff0c;支持使用 3.5 的 access 调用。 【注意】&#xff1a;仅 IP 属地支持免登录使用 ChatGPT的才可以使用&#xff08;也可以自定义 Baseurl 来绕过限制&#x…

03-JAVA设计模式-装饰模式

装饰模式 什么装饰模式 装饰器模式&#xff08;Decorator Pattern&#xff09;也叫包装器模式&#xff0c;是一种结构型设计模式&#xff0c;允许用户在不改变对象的情况下&#xff0c;动态地给对象增加一些额外的职责&#xff08;功能&#xff09;。装饰器模式相比生成子类更…

【重磅福利】智慧餐饮互联网餐饮行业分析数字化报告大合集共40份(免费下载)

【1】关注本公众号 【2】私信发送 智慧餐饮报告合集 【3】获取本方案合集的下载链接&#xff0c;直接下载即可。

前端学习<四>JavaScript基础——15-内置对象 String:字符串的常见方法

内置对象简介 JavaScript 中的对象分为3种&#xff1a;自定义对象、内置对象、浏览器对象。 前面两种对象&#xff1a;是JS的基础内容&#xff0c;属于 ECMAScript&#xff1b; 第三个浏览器对象&#xff1a;属于JS独有&#xff0c;即 JS 内置的API。 内置对象&#xff1a;就是…

为什么大模型训练都需要GPU?现在都有哪些合适的GPU适合训练大模型?价格如何?

大家有没有这样的疑问&#xff0c;为什么大模型训练需要的是GPU&#xff0c;而不是CPU&#xff0c;而现在市面上&#xff0c;有哪些适合训练的GPU型号&#xff0c;价格如何&#xff1f;下面让我来一一给大家进行介绍。 为什么大模型训练需要GPU&#xff0c;而非CPU&#xff1f;…

设计模式——责任链模式13

责任链模式 每个流程或事物处理 像一个链表结构处理。场景由 多层部门审批&#xff0c;问题分级处理等。下面体现的是 不同难度的问题由不同人进行解决。 设计模式&#xff0c;一定要敲代码理解 传递问题实体 /*** author ggbond* date 2024年04月10日 07:48*/ public class…

Proteus与Multisim哪款更适合51单片机仿真?

选择使用Proteus或Multisim进行51单片机仿真&#xff0c;取决于用户的具体需求、个人偏好以及软件的特点。以下是关于这两款软件的对比分析&#xff1a; 功能和特性 Proteus是一款功能强大的电路设计和仿真软件&#xff0c;它支持多种单片机和微控制器的仿真&#xff0c;包括51…

最新小红书店铺开店带货教程,新手也能跑通全流程(6节课+爆款公式)

爆款标题公式 一、0粉丝个人开店适合哪些赛道,mp4 二、小红书起号爆款逻辑,mp4 三、如何找爆款选题蹭热点.mp4 四、抖音一件代发怎么操作,mp4 五、1688一件代发怎么操作,mp4 六、顾客退货怎么办,mp4 网盘自动获取 链接&#xff1a;https://pan.baidu.com/s/1lpzKPim76qe…

基于java+springboot+vue实现的售楼管理系统(文末源码+Lw)23-255

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本售楼管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息&a…

未提交事务直接返回,导致连接池资源耗尽

错误分析&#xff1a; 我所撰写的代码如下&#xff0c;在使用编程式事务的时候&#xff0c;我未提交或回滚事务就直接返回&#xff0c;因为连接池默认连接数的大小是10&#xff0c;所以到第十一次的时候连接池就会使用完&#xff0c;导致任务无法进行。 Autowired private Ns…

海山数据库(He3DB)原理剖析:浅析OLAP数据库计算引擎中的统计信息

背景&#xff1a; 统计信息在计算引擎的优化器模块中经常被提及&#xff0c;尤其是在基于成本成本优化&#xff08;CBO&#xff09;框架中统计信息发挥着至关重要的作用。CBO旨在通过评估执行查询的可能方法&#xff0c;并选择最有效的执行计划来提高查询性能。而统计信息则提…

Qt for MCUs 2.7正式发布

本文翻译自&#xff1a;Qt for MCUs 2.7 released 原文作者&#xff1a;Qt Group高级产品经理Yoann Lopes 翻译&#xff1a;Macsen Wang Qt for MCUs的新版本已发布&#xff0c;为Qt Quick Ultralite引擎带来了新功能&#xff0c;增加了更多MCU平台的支持&#xff0c;并且我们…

全光谱台灯哪个牌子好,2024全光谱护眼台灯推荐

近年来&#xff0c;全光谱台灯悄然跻身于家庭必备品之列&#xff0c;赢得了众多消费者的好评。它们以减轻眼睛疲劳的功效而受到推崇&#xff0c;尽管也有声音质疑其实际效用&#xff0c;认为所谓的益处不过是一种心理安慰。面对这些相互矛盾的观点&#xff0c;许多消费者感到困…