嵌入式开发学习(STC51-3-点亮led)

内容

点亮第一个led;
led闪烁;
led流水灯;

led简介

led即发光二极管,它具有单向导电性,通过5mA左右电流即可发光,电流越大,其亮度越强,但若电流过大,会烧毁二极管,一般我们控制在3mA-20mA之间,通常我们会在led管脚上串联一个电阻,目的就是为了限制通过发光二极管的电流不要太大,因此这些电阻又可以称为“限流电阻”;
发光二极管正极又称阳极,负极又称阴极,电流只能从阳极流向阴极;直插式发光二极管长脚为阳极,短脚为阴极;
贴片式发光二极管正面的一端有彩色标记,通常有标记的一端为阴极;

原理图

线路连接
在这里插入图片描述
由线路连接图可知,led灯D1-8连接P20-27口,且阳极管脚接电源VCC,要让led发光,只需使对应阴极口为低电平就行;

点亮第一个led

思路

第一个led阴极对应P20口,只需要让P20口为低电平就行;

编码

main.c

/** @Description: 点亮第一个led(led2-8同理)*/
#include "reg52.h"sbit LED1 = P2 ^ 0; // 表示p2.0管脚设置为led1void main()
{LED1 = 0; // 把p2.0电位设置为0(低电位),即灯亮while (1){// 无限循环,使程序一直运行}
}

编译和结果

按F7编译,无错误,生成.hex文件,使用pz-isp将hex文件下载到单片机

结果如图
在这里插入图片描述
第一个led灯亮

led闪烁

思路

  • 要实现led闪烁,只需循环让D1指示灯先亮一会后熄灭;
  • 这里就有一个延时问题,如何来产生延时呢?因为单片机执行每条代码指令都是需要时间的,所以我们可以编写一个循环函数,让cpu不干其它事,专门在那循环运行即可实现延时功能;
  • 依据人的肉眼余晖效应,延时时间不能太短,否则就无法观察到led闪烁;

编码

main.c

/** @Description: led闪烁*/
#include "reg52.h"typedef unsigned int u16; // 对系统默认数据类型进行重定义
typedef unsigned char u8;sbit LED1 = P2 ^ 0; // 表示p2.0管脚设置为led1/*** @description: 延时函数(循环一次大约10us)* @param {u16} ten_us* @return {*}*/
void delay_10us(u16 ten_us)
{while (ten_us--);
}void main()
{while (1){LED1 = 0;		   // 点亮delay_10us(50000); // 大约延时450msLED1 = 1;		   // 熄灭delay_10us(50000);}
}

编译和结果

按F7编译,无错误,生成.hex文件,使用pz-isp将hex文件下载到单片机

结果:
第一个led灯持续闪烁

led流水灯

思路

  • 实现led流水灯,只需循环让D1-D8指示灯逐个点亮即可;
  • 点亮D1(其他不亮),延时一段时间后再点亮D2,延时一段时间后再点亮D3,如此循环,就可以很简单的实现LED流水灯的效果;
  • 我们只需通过移位,使变量LED循环代表P20-27管脚,即可依次点亮led灯;

编码

main.c

/** @Description: led流水灯*/
#include "reg52.h"
#include "intrins.h" //_crol_或_cror_函数依赖typedef unsigned int u16; // 对系统默认数据类型进行重定义
typedef unsigned char u8;#define LED_PORT P2 // 使用宏定义P2端口/*** @description: 延时函数(循环一次大约10us)* @param {u16} ten_us* @return {*}*/
void delay_10us(u16 ten_us)
{while (ten_us--);
}void main()
{u8 i = 0;LED_PORT = ~0x01; // 0x01即p20,对其取反即置低电平,点亮leddelay_10us(50000);while (1){// 方法1:使用移位+循环实现流水灯for (i = 0; i < 8; i++){LED_PORT = ~(0x01 << i); // 将1右移i位,然后取反将结果赋值到LED_PORTdelay_10us(50000);}// 方法2:使用循环+_crol_或_cror_函数实现流水灯// for (i = 0; i < 7; i++) // 左移一位// {// 	LED_PORT = _crol_(LED_PORT, 1);// 	delay_10us(50000);// }// for (i = 0; i < 7; i++) // 右移一位// {// 	LED_PORT = _cror_(LED_PORT, 1);// 	delay_10us(50000);// }}
}

编译和结果

按F7编译,无错误,生成.hex文件,使用pz-isp将hex文件下载到单片机

结果:
led灯依次点亮,关闭

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【云原生】k8s组件架构介绍与K8s最新版部署

个人主页&#xff1a;征服bug-CSDN博客 kubernetes专栏&#xff1a;kubernetes_征服bug的博客-CSDN博客 目录 1 集群组件 1.1 控制平面组件&#xff08;Control Plane Components&#xff09; 1.2 Node 组件 1.3 插件 (Addons) 2 集群架构详细 3 集群搭建[重点] 3.1 mi…

快速压缩PDF文件的方法:这两种方法一定要学会!

随着PDF文件的增加&#xff0c;文件大小也会逐渐增大&#xff0c;给共享和存储带来了一定的挑战。为了解决这个问题&#xff0c;本文将介绍几个简单而有效的方法&#xff0c;即压缩PDF文件&#xff0c;以减小文件大小&#xff0c;提高共享和存储的效率。 使用在线压缩工具 在…

Dockerfile定制Tomcat镜像

Dockerfile中的打包命令 FROM &#xff1a; 以某个基础镜像作为此镜像的基础 RUN &#xff1a; RUN后面跟着linux常用命令&#xff0c;如RUN echo xxx >> xxx,注意&#xff0c;RUN 不能用于执行命令&#xff0c;因为每个RUN都是独立运行的&#xff0c;RUN 的cd对镜像中的…

我的128创作纪念日

机缘 写CSDN博客的时候&#xff0c;应该纯属一个巧合&#xff0c;还记得当初是和一个班上的同学一起记录学习笔记&#xff0c;最初是在博客园的平台上记录笔记&#xff0c;可以在以后复习时使用&#xff0c;后来我的同学开始推荐使用CSDN平台&#xff0c;于是我们两就转战CSDN…

第十二届金博奖启动,促进大小企业优势互联

8月3日&#xff0c;由博士科技联合深圳证券交易所、广东博士创新发展促进会共同举办的“走进深交所之国家级专精特新‘小巨人’企业融资路演暨第二十届金博奖启动仪式”成功举办。 华南理工大学教授&#xff0c;俄罗斯工程院外籍院士&#xff0c;广东博士创新发展促进会会长、国…

回归预测 | MATLAB实现基于SVM-RFE-BP支持向量机递归特征消除特征选择算法结合BP神经网络的多输入单输出回归预测

回归预测 | MATLAB实现基于SVM-RFE-BP支持向量机递归特征消除特征选择算法结合BP神经网络的多输入单输出回归预测 目录 回归预测 | MATLAB实现基于SVM-RFE-BP支持向量机递归特征消除特征选择算法结合BP神经网络的多输入单输出回归预测预测效果基本介绍研究内容程序设计参考资料…

Last-Mile Embodied Visual Navigation 论文阅读

论文阅读 题目&#xff1a;Last-Mile Embodied Visual Navigation 作者&#xff1a;JustinWasserman, Karmesh Yadav 来源&#xff1a;CoRL 时间&#xff1a;2023 代码地址&#xff1a;https://jbwasse2.github.io/portfolio/SLING Abstract 现实的长期任务&#xff08;例如…

9.物联网操作系统之软件定时器

一。软件定时器概念及应用 1.软件定时器定义 就是软件实现定时器。 2.FreeRTOS软件定时器介绍 如上图所示&#xff0c;Times的左边为设置定时器时间&#xff0c;设置方式可以为任务设置或者中断设置&#xff1b;Times的右边为定时器的定时相应&#xff0c;使用CalBack相应。 …

2023年华数杯数学建模C题思路代码分析 - 母亲身心健康对婴儿成长的影响

# 1 赛题 C 题 母亲身心健康对婴儿成长的影响 母亲是婴儿生命中最重要的人之一&#xff0c;她不仅为婴儿提供营养物质和身体保护&#xff0c; 还为婴儿提供情感支持和安全感。母亲心理健康状态的不良状况&#xff0c;如抑郁、焦虑、 压力等&#xff0c;可能会对婴儿的认知、情…

为Stable Diffusion web UI开发自己的插件实战

最近&#xff0c;Stable Diffusion AI绘画受到了广泛的关注和热捧。它的Web UI提供了了一系列强大的功能&#xff0c;其中特别值得一提的是对插件的支持&#xff0c;尤其是Controlnet插件的加持&#xff0c;让它的受欢迎程度不断攀升。那么&#xff0c;如果你有出色的创意&…

数学建模-元胞自动机

clc clear n 300; % 定义表示森林的矩阵大小 Plight 5e-6; Pgrowth 1e-2; % 定义闪电和生长的概率 UL [n,1:n-1]; DR [2:n,1]; % 定义上左&#xff0c;下右邻居 vegzeros(n,n); % 初始化表示森林的矩阵 imh ima…

【代码源每日一题div2 】简单的异或问题

简单的异或问题 - 题目 - Daimayuan Online Judge 题意&#xff1a; 思路&#xff1a; 首先这有一个结论&#xff1a;0~2^m-1的所有数进行XOR运算后&#xff0c;得到的结果是0。我们来证明一下这个结论&#xff1a; 比如m3时&#xff0c;一共是0 1 2 3 4 5 6 7&#xff0c;八…

【iOS RunLoop】

文章目录 前言-什么是RunLoop&#xff1f;默认情况下主线程的RunLoop原理 1. RunLoop对象RunLoop对象的获取 CFRunLoopRef源码部分&#xff08;引入线程相关&#xff09; 2. RunLoop和线程3. RunLoop相关的类RunLoop相关类的实现CFRunLoopModeRef五种运行模式CommonModes CFRun…

网站无法访问的常见原因

有多种问题可能会阻止用户访问您的网站。本文将解决无法访问网站&#xff0c;且没有错误消息指示确切问题的情况&#xff0c;希望对您有所帮助。 无法访问网站的常见原因有&#xff1a; (1)DNS 设置不正确。 (2)域名已过期。 (3)空白或没有索引文件。 (4)网络连接问题。 DNS 设…

Qt开发,编译报错:error: C2001: 常量中有换行符

一、问题描述 Qt开发&#xff0c;编译报错&#xff1a;error: C2001: 常量中有换行符 E:\work\xxx.cpp:1: warning: C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 E:\work\xxx.cpp:66: error: C2001: 常量中有换行符 E…

中国信通院发布《高质量数字化转型产品及服务全景图(2023)》

2023年7月27日&#xff0c;由中国信息通信研究院主办的2023数字生态发展大会暨中国信通院铸基计划年中会议在北京成功召开。 本次大会发布了中国信通院《高质量数字化转型产品及服务全景图&#xff08;2023&#xff09;》&#xff0c;中新赛克海睿思受邀出席本次大会并成功入选…

一文了解JavaScript 与 TypeScript的区别

TypeScript 和 JavaScript 是两种互补的技术&#xff0c;共同推动前端和后端开发。在本文中&#xff0c;我们将带您快速了解JavaScript 与 TypeScript的区别。 一、TypeScript 和 JavaScript 之间的区别 JavaScript 和 TypeScript 看起来非常相似&#xff0c;但有一个重要的区…

14-5_Qt 5.9 C++开发指南_基于HTTP 协议的网络应用程序

文章目录 1. 实现高层网络操作的类2. 基于HTTP协议的网络文件下载3.源码3.1 可是化UI设计3.2 mainwindow.h3.3 mainwindow.cpp 1. 实现高层网络操作的类 Qt 网络模块提供一些类实现 OSI 7 层网络模型中高层的网络协议&#xff0c;如 HTTP、FTP、SNMP等&#xff0c;这些类主要是…

AI技术快讯:清华开源ChatGLM2双语对话语言模型

ChatGLM2-6B是一个开源项目&#xff0c;提供了ChatGLM2-6B模型的代码和资源。根据提供的搜索结果&#xff0c;以下是对该项目的介绍&#xff1a; 论文&#xff1a;https://arxiv.org/pdf/2103.10360.pdf ChatGLM2-6B是一个开源的双语对话语言模型&#xff0c;是ChatGLM-6B模…

ICCV 2023 | 半监督三维目标检测新SOTA:密集匹配和量化补偿

论文链接&#xff1a;https://arxiv.org/abs/2304.13031 开源代码仓库地址&#xff1a;https://github.com/AIR-DISCOVER/DQS3D 方法效果对比图&#xff1a;有效在半监督情况下处理临近小物体 01. 简介 本文旨在解决三维室内场景中高昂的标注成本问题&#xff0c;特别关注半监…