【51单片机】LED的三个基本项目(LED点亮&LED闪烁&LED流水灯)(3)

前言

大家好吖,欢迎来到 YY 滴单片机系列 ,热烈欢迎! 本章主要内容面向接触过单片机的老铁
主要内容含:
在这里插入图片描述

欢迎订阅 YY滴C++专栏!更多干货持续更新!以下是传送门!

  • YY的《C++》专栏
  • YY的《C++11》专栏
  • YY的《Linux》专栏
  • YY的《数据结构》专栏
  • YY的《C语言基础》专栏
  • YY的《初学者易错点》专栏
  • YY的《小小知识点》专栏
  • YY的《单片机期末速过》专栏
  • YY的《C++期末速过》专栏
  • YY的《单片机》专栏
  • YY的《数据库》专栏
  • YY的《数据库原理》专栏

目录

  • 一.点亮LED灯
    • 1.新建一个工程&存放工程的文件夹
    • 2.熟悉编译和建立文件项目的操作
    • 3.LED发光二极管介绍
    • 4.开发板图查询(LED对应独立按键和MCU的原理图,找对应接口)
    • 5.单片机的进制转换问题
    • 6.单片机控制硬件(单片机)的原理+(1位控制,8位控制的区别)
    • 7.添加头文件让编译器识别寄存器P2
    • 8.将代码下载到单片机中
  • 二.LED闪烁(1s为周期)
    • 1.用循环让二极管能够反复接收到信号
    • 2.利用STC-ISP的软件延时计算器
    • 3.完整代码(重复第二大点中,写入开发板的过程)
  • 三.LED流水灯

一.点亮LED灯

1.新建一个工程&存放工程的文件夹

  • 打开软件Keil
  • 如图所示设置一个KeilProject文件夹,shift+ctrl+n新建三个文件夹,对应我们这次要做的三个实验(LED点亮&LED闪烁&LED流水灯)
    在这里插入图片描述
  • 如下图所示步骤操作
    在这里插入图片描述
    在这里插入图片描述
  • 点击保存后,会出现【单片机器件选择界面】
  • 黄框里面是各种公司的名字,由于我们是STC,所以软件中没有出现,但我们可以选用Atmel公司的AT89c52,功能都相同
  • 找到AT89C52后,点击OK
    在这里插入图片描述
  • 随后它会询问我们是否添加启动文件,我们一般是不需要改动启动文件的,这里选择否
    在这里插入图片描述
  • 工程建立完毕
    在这里插入图片描述
  • 添加C语言文件
    在这里插入图片描述
  • 一般用C语言,C++语言效率会慢一些,汇编语言更加底层
  • 命名一个main文件
    在这里插入图片描述
  • 创建文件成功,右边是程序编辑框

2.熟悉编译和建立文件项目的操作

  • 在左上角有三个选项,分别代表【编译】,【建立工程】,【所有工程编译建立】
  • 一般选择第二个即可
    在这里插入图片描述
  • 点击【建立工程后】
    在这里插入图片描述

3.LED发光二极管介绍

  • 发光二极管:只有正极接正极,负极接负极才有电流通过在这里插入图片描述

如何区分LED的正负极?

  • 电极:小的是正极,大的是负极;
  • 引脚:长的是正极,短的是负极(长正短负)
    在这里插入图片描述
    在这里插入图片描述

4.开发板图查询(LED对应独立按键和MCU的原理图,找对应接口)

  • 可以进入该传送门,下载对应资料:传送门
    在这里插入图片描述
  • 下载解压后得到文件如下图所示
    在这里插入图片描述
    在这里插入图片描述
  • 找到对应的LED模块
    在这里插入图片描述
  • 根据对应端口,找到MCU中与其链接的口,发现控制LED的是P2寄存器
    在这里插入图片描述

在这里插入图片描述

5.单片机的进制转换问题

  • 在单片机中: 一般都是把 二进制 转换成 十六进制
  • 原因:比较好看出来,十六进制事实上是二进制的一种简写
  • 0x是一个前缀,代表后面的是十六进制数
    在这里插入图片描述

6.单片机控制硬件(单片机)的原理+(1位控制,8位控制的区别)

  • CPU通过配置控制的寄存器P2(0/1)来控制硬件电路(高低电平),(PS:该过程还要经过驱动器驱动)
  • 如下图所示:我们给P20置0,对应低电平,LED低接低高接高,第一个D1LED灯亮,其余不亮
    在这里插入图片描述

根据以上原理我们知道:

  • 我们 既可以8位方式直接控制P2寄存器 ,来控制8盏LED灯
  • 可以通过1位方式 ,如下图所示,通过控制该引脚高低电平来单独控制某一盏LED
    在这里插入图片描述
  • 相对应的代码设置会出现如下,于是我们要利用进制转换来解决这个问题
    在这里插入图片描述
  • 经过进制转换后,代码变化如下:
    在这里插入图片描述

7.添加头文件让编译器识别寄存器P2

  • 针对如下代码,编译后会报错
    在这里插入图片描述
    在这里插入图片描述
  • 我们只要包含头文件就可以解决这个问题,右键编辑栏即可
    在这里插入图片描述
  • 包含头文件成功
    在这里插入图片描述
  • 头文件展开后我们可以发现,头文件中定义了P2寄存器的地址
    在这里插入图片描述

8.将代码下载到单片机中

  • 因为Keil默认不生成程序下载的文件,所以需要我们点击下图所示图标生成
    在这里插入图片描述
  • 再次点击编译则生成下载程序文件
  • 打开软件STC-SIP
  • 选择单片机型号
    在这里插入图片描述
  • 插上单片机后,串口号会出现带USB的字样,直接选择就行
    在这里插入图片描述
  • 点击“打开程序文件”,选择文件夹中的下载程序文件
    在这里插入图片描述
  • 程序打开完毕后,点击“下载”
    在这里插入图片描述
  • 重新打开单片机开关
    在这里插入图片描述
  • 再次点击开关,点亮成功
    在这里插入图片描述

二.LED闪烁(1s为周期)

1.用循环让二极管能够反复接收到信号

  • 在明白点亮LED灯的操作后,我们引入“循环”的概念;每一次while循环,二极管都会接到一次信号;
  • 我们如下所示设计代码,会发现由于循环发生的频率太快,人眼无法捕捉到亮灭,只能一直看到微弱灯光;形成一种视觉暂停效应
    在这里插入图片描述
  • 解决方法:我们要让他每次执行后,都要有一定的延时;

2.利用STC-ISP的软件延时计算器

  • 如下图所示得到延时子程序
    在这里插入图片描述
  • 复制粘贴到程序中
    在这里插入图片描述
  • 添加_nop函数的头文件
    在这里插入图片描述

3.完整代码(重复第二大点中,写入开发板的过程)

  • 写入过程参考第二大点所示,略
    在这里插入图片描述

三.LED流水灯

  • 大体操作和第四步的LED闪烁项目一致,主要区别是代码区别
  • 先写出二进制下的状态,再转换成十六进制
  • 代码:
    在这里插入图片描述

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

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

相关文章

将xyz格式的GRACE数据转成geotiff格式

我们需要将xyz格式的文件转成geotiff便于成图,或者geotiff转成xyz用于数据运算,下面介绍如何实现这一操作,采用GMT和matlab两种方法。 1.GMT转换 我们先准备一个xyz文件,这里是一个降水文件。在gmt中采用以下的语句实现xyz转grd…

代码随想录二刷——栈与队列day12

文章目录 前言栈与队列知识点 一、 239. 滑动窗口最大值二、347. 前 K 个高频元素总结 前言 一个本硕双非的小菜鸡,备战24年秋招,计划二刷完卡子哥的刷题计划,加油! 二刷决定精刷了,于是参加了卡子哥的刷题班&#xf…

java synchronized浅析

介绍synchronized synchronized 是Java编程语言中的一个关键字,用于实现线程间的同步。在多线程环境下,它确保了共享资源在同一时刻只能被一个线程访问或修改,从而避免了因多个线程并发操作同一数据而导致的数据不一致和竞态条件。 synchroni…

070:vue+cesium: 利用canvas设置径向渐变色材质

相关API参考: https://cesium.com/learn/cesiumjs/ref-doc/ColorMaterialProperty.html 第070个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中设置线性渐变色的材质,这里使用canvas的辅助方法。 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果. …

阴阳家邹衍的五行相生相克,比星座更火爆

古天乐主演的《寻秦记》,有一个老头叫“邹夫子”,他就是战国的邹衍。 邹衍年轻时,去齐国的稷下学宫,学习儒家。了解到天有五种德行,分别是仁、义、礼、智、信。 《尚书洪范》记载:“五行:一曰水…

springboot155基于JAVA语言的在线考试与学习交流网页平台

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

2024最新版Sublime Text 4安装使用指南

2024最新版Sublime Text 4安装使用指南 Installation and Usage Guide to the Latest Sublime Text 4 in 2024 By JacksonML 0. Sublime Text是什么? Sublime Text 由自定义组件构建,支持Python, Java, C/C等多种编程语言,并为用户提供无与…

vue2.0+使用md-edit编辑器

前言:小刘开发过程中,如果是博客项目一般是会用到富文本。众多富文本中,小刘选择了markdown,并记录分享了下来。 # 使用 npm npm i kangc/v-md-editor -Smain.js基本配置import VueMarkdownEditor from kangc/v-md-editor; import…

极狐GitLab 与 Datadog 的集成配置

Datadog 集成 引入于 14.1 版本。 此集成使您能够将 CI/CD 流水线和作业信息发送到 Datadog。Datadog 的 CI Visibility产品可帮助您监控作业失败和性能问题,然后对其进行故障排除。它基于 Webhook,只需要在极狐GitLab 上进行配置。 配置集成 具有 管理…

数模.matlab画图

一、mesh函数 上图是平常用到的方式 例题: 上图的meshgrid函数相当于上上图的前三个指令(temp,x,y) mash函数: mashc函数: mashz函数: 上图subplot函数的作用是将下标为index的图片放到对应的x&…

第一篇:数据库相关概念

相关概念: 数据库 英文名称:DataBase(DB) 简介:(有组织地、按一定数据结构地、而非胡塞乱放地)存储数据的仓库 说明:这是一个抽象的概念,所谓的“仓库”无非是一台专门用于存放数据的计算机 数…

十年炒股心得

蒙在股里 天朝老李 十年炒股两茫茫,先亏车,再赔房。 千古跌停无处话凄凉。 纵有涨停应不识,人跌傻,本赔光。 牛市幽梦难还乡,睡不着,吃不香。 望盘无言,惟有泪千行。 料得年年断肠处&…

基于Springboot开发的物品捎带系统[附源码]

基于Springboot开发的物品捎带系统[附源码] 🍅 作者主页 央顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 🍅 查看下方微信号获取联系方式 承接各种定制系统 &#x1f…

安卓Termux+Hexo博客框架快速搭建本地网站并实现公网访问

文章目录 前言 1.安装 Hexo2.安装cpolar3.远程访问4.固定公网地址 前言 Hexo 是一个用 Nodejs 编写的快速、简洁且高效的博客框架。Hexo 使用 Markdown 解析文章,在几秒内,即可利用靓丽的主题生成静态网页。 下面介绍在Termux中安装个人hexo博客并结合…

计算机网络原理基础

目录 前言: 1.网络发展史 2.网络通信基础 2.1IP地址 2.1.1定义 2.1.2格式 2.2端口号 2.2.1定义 2.2.2格式 2.3协议 2.3.1定义 2.3.2作用 2.3.3分层 2.4五元组 2.4.1定义 2.4.2组成 3.TCP/IP五层网络模型 3.1模型概念 3.2模型构成 3.3网络分层对应…

SpringBoot 过滤器Filter的过滤链 多个过滤器优先级

SpringBoot 过滤器Filter 拦截请求 生命周期 什么是过滤链? 指的是有多个过滤器形成的过滤链,一个项目中可以存在多个过滤器。 优先级 根据字母排序,如XFilter和AFilter,那么按照顺序应该先到AFilter过滤器当中

一般系统的请求认证授权思路【gateway网关+jwt+redis+请求头httpheader】

gateway:网关,我们都知道网关的作用就是对系统的所有请求,网关都会进行拦截,然后做一些操作(例如:设置每个请求的请求头httpHeader,身份认证等等)此时一般会使用到网关过滤器&#x…

pinctrl子系统与gpio子系统实验-解决申请IO失败问题

一. 简介 前面一篇文章对Led 驱动代码进行了测试,测试后驱动出现错误提示,提示 申请IO失败。文章地址如下: pinctrl子系统与gpio子系统实验-对驱动进行测试-CSDN博客 本文来解决驱动代码中申请IO失败的问题。 二. Led驱动申请IO失败的解…

C++ —— 智能指针:std::unique_ptr

简介 智能指针是一种特殊的指针类型,它能够自动管理内存资源,避免常见的内存泄漏和多次释放等。在C 11标准中出现了新的智能指针unique_ptr、 shared_ptr、weak_ptr等。 std::unique_ptr 用于管理动态分配的内存资源,它提供了自动释放内存的功…

CVE-2024-23897:Jenkins文件读取漏洞复现分析 [附POC]

文章目录 CVE-2024-23897 Jenkins文件读取漏洞复现分析 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境搭建0x05 漏洞复现1.访问漏洞环境2.执行POC3.复现0x06 漏洞分析1.获取源码2.解压并使用IDEA打开0x07 修复建议0x08 总结