MCU-51:初识单片机,从点亮一个灯开始

news2024/11/18 8:37:59

题目

  • 一、什么是单片机
  • 二、点亮一个LED灯
    • 2.1 LED原理和知识
    • 2.2 方法一
    • 2.3 方法二

一、什么是单片机

单片机又称单片微控制器,把一整个计算机系统集成到一个芯片上,当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。一块芯片就成了一台计算机。体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
单片机属于一种集成式电路芯片。主要包含CPU、只读存储器ROM和随机存储器RAM、时钟电路、中断系统和定时/计数器及各种输入输出IO口构成,多样化数据采集与控制系统能够让单片机完成各项复杂的运算,无论是对运算符号进行控制,还是对系统下达运算指令都能通过单片机完成。

从最基础的51单片机入门学习,可以为我们后面学习STM32、ARM微控器等其微控制器的学习奠定知识基础。

单片机基本结构如下:
在这里插入图片描述

二、点亮一个LED灯

2.1 LED原理和知识

LED即发光二极管,是一种半导体固体发光器件。具有单向导通性,两极分别为P极和N极,也有说成是阳极和阴极,如图2中阳极接电源端,只需阴极给低电平LED就会发光。
在这里插入图片描述
VCC(电源)连接LED(D1D8)的阳极,IO口P20P27进电阻(RP9、RP10)依次连接LED(D1~D8)的阴极。电阻有限流保护LED的作用。
LED(发光二极管)只有在电流方向正确时才会被点亮;也就是说要让电流从“大头”进、“小头”出(阳极接正极,阴极接负极),才能成功点亮。
那么要如何实现呢?例如:我要点亮“D2”,只需要让P21口输出一个低电平(0)、VCC(电源)输出一个高电平(1),如此就实现了LED的点亮条件。

下面介绍两个方法,点亮LED灯

2.2 方法一

sbit是定义特殊功能的寄存器的位变量。此处用法为:sbit 变量名=地址值;例如:sbit LED=P2^0 ,
说明P2^0 是 变量LED的地址值,把地址赋给变量。

#include<reg52.h>    //51或者52都可以
 
sbit LED=P2^1;       //注意P21口的写法,用keil的话,sbit要用在函数声明之前,原因很简单,自己想吧
 
void main()
{
     while(1)        //死循环结构,让主程序一直运行
     {
      LED=0//使P21口输出低电平,以此点亮D2
     }
}

2.3 方法二

同样还是点亮第二个LED。如果P2口除了P21口都是高电平(1),只有P21低电平(0),是不是可以实现同样的功能呢?代码如下:

P2=0xFD;   //二进制1111 1101的16进制是0xFD,0x表示16进制

单片机的每组IO口的电平状态都储存在一个单独的8位寄存器中,1和0就对应IO口的高低电平。P2口对应的寄存器叫做“P2寄存器”,如果P2口除了P21口都是高电平(1),只有P21低电平(0),寄存器储存的值如下表:(注意IO口的顺序!)
在这里插入图片描述
也就是1111 1101,换算成16进制就是0xFD,0x表示16进制。
如直接1111 1101的话,会被识别成十进制,所以用16进制。

#include <reg52.h>
 
void main()
{
	while(1)
	{
		P2=0xFD; 
	}
}

将以上代码烧写进单片机,恭喜你,点灯成功!

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

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

相关文章

文字语义纠错技术探索与实践-张健

背景 文本语义纠错的使用场景非常广泛&#xff0c;基本上只要涉及到写作就有文本纠错的需求。书籍面市前就有独立的校对的环节来保障出版之后不出现明显的问题。在新闻中我们也时不时看到因为文字审核没到位造成大乌龙的情况&#xff0c;包括上市公司在公开文书上把“临时…

并行计算(MPI + OpenMP)

文章目录并行计算MPI&#xff08;进程级并行&#xff09;基本结构数据类型点对点通信阻塞非阻塞非连续数据打包聚合通信Communicator & Cartisen GridOpenMP&#xff08;线程级并行&#xff09;简介基本制导语句worksharing constructSectionsSingleFor临界区 & 原子操…

React 学习笔记总结(三)

文章目录1. React( v16.8 版本) 生命周期2. React( v16.8 版本) 生命周期 更新流程2.1 三个更新流程2.2 setState()的生命周期流程(对应上图2号线)2.3 forceUpdate()的生命周期流程(对应上图3号线)2.4 父组件render()渲染的生命周期流程(对应上图1号线)2.5 React( v16.8 版本)生…

“学了一个我不感兴趣的专业,要不要转行IT?”

“这个专业太无聊了&#xff0c;我想转行……” “你想转去干什么&#xff1f;” “我对金融感兴趣&#xff0c;听说金融很赚钱&#xff0c;我想学金融……” “你感兴趣为什么课后不去钻研&#xff0c;而要选择打游戏&#xff1f;” “以后再慢慢来嘛……” “可是你已经…

报表工具-FineReport JS实现参数面板显示对应数据

1. 概述 1.1 版本 报表服务器版本 功能变更 11.0 -- 1.2 预期效果 1.3 实现思路 对照填报界面的章节&#xff0c;在参数界面也用 SQL 语句实现对应数据的展示 &#xff0c;当第一次打开模板时&#xff0c;标签不显示可以通过JS 控制实现。 2. 示例 2.1 新建模板 新建普通…

设计模式-牛刀小试01

前言 本文为datawhale2022年12月组队学习《大话设计模式》task4打卡学习&#xff0c;本次完成homework1。 【教程地址】https://github.com/datawhalechina/sweetalk-design-pattern 一、任务描述 1.1 背景 小李已经是一个工作一年的初级工程师了&#xff0c;他所在的公司是…

靶机练习——vulnstack1

下载地址&#xff1a;http://vulnstack.qiyuanxuetang.net/vuln/detail/2/ 注意事项 密码一定要设置为不同的 部署环境 根据红日安全出具的wp&#xff0c;我们只需要设置两个C段即可&#xff0c;分别是外网的72和内网的52&#xff0c;这里直接添加新的网络以及子网地址即可&…

十三、DockerFile构建增强版本centos7

1、概述 在Docker 常用命令篇中&#xff0c;我们已经知道了2中构建镜像的方式 export\import 和 commit方式。这两种方式都需要先运行并创建容器&#xff0c;然后在容器中安装vim、ifconfig等命令&#xff0c;然后再重新构建加强版的镜像&#xff0c;比较麻烦。Dockerfile通过…

2022CTF培训(九)MIPS PWN环境搭建MIPS PWN入门

附件下载链接 环境搭建 在 ARM PWN 环境搭建 的基础上&#xff0c;首先安装具备MIPS交叉编译gcc与MIPS程序动态链接库&#xff1a; sudo apt-get install gcc-mips-linux-gnu sudo apt-get install gcc-mipsel-linux-gnu sudo apt-get install gcc-mips64-linux-gnuabi64 su…

【CANN训练营第三季】Ascend平台体验Pytorch笔记

模型迁移 手册地址&#xff1a;https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/600alpha002/ptmoddevg/ptmigr/ptmigr_000009.html 主要修改&#xff1a; 导入相关库 import torch import torch_npu #1.8.1及以上需要指定NPU设备 通过device()指定 …

JDBC编程步骤、JDBC API详解和数据库连接池

前言&#xff1a; JDBC 就是使用Java语言操作关系型数据库的一套API &#xff0c;全称&#xff1a;( Java DataBase Connectivity ) Java 数据库连接。官方&#xff08;sun公司&#xff09;定义的一套操作所有关系型数据库的规则&#xff0c;即 接口各个数据库厂商去实现这套…

工具及方法 - Process Explorer以及类似工具,用来获取系统运行的进程信息

下载Process explorer&#xff1a; Process Explorer - Sysinternals | Microsoft Learn Process explorer简介 有没有想过哪个程序打开了一个特定的文件或目录&#xff1f;现在你可以找到了。Process Explorer向你显示关于进程打开或加载的句柄和DLL的信息。 Process Explore…

[Python图像处理] 使用 HSV 色彩空间检测病毒对象

使用 HSV 色彩空间检测病毒对象前言检测病毒对象相关链接前言 在本节中&#xff0c;我们将学习如何使用 OpenCV 在 HSV 色彩空间中使用特定颜色检测感兴趣对象。我们需要通过指定颜色值范围识别和提取感兴趣的对象&#xff0c;使用具有病毒的血细胞图像&#xff0c;我们的目标…

Python 自动化测试(五): Pytest 结合 Allure 生成测试报告

本文节选自霍格沃玆测试学院测试开发内部教材&#xff0c;进阶学习文末加群&#xff01; 测试报告在项目中是至关重要的角色&#xff0c;一个好的测试报告&#xff1a; 可以体现测试人员的工作量&#xff1b; 开发人员可以从测试报告中了解缺陷的情况&#xff1b; 测试经理可…

7.Linux实用操作(2)

文章目录零、学习目标一、进程管理1、概念2、查看进程3、查看指定进程4、关闭进程二、主机状态1、查看系统资源占用2、top命令内容详解3、top命令选项4、top交互式选项5、磁盘信息监控三、上传、下载1、上传、下载2、rz、sz命令四、压缩、解压1、压缩格式3、tar命令4、tar 命令…

后端开发浅学react

博客笔记来自于学习 柴柴老师在b站分享的react学习视频&#xff0c;仅供学习参考&#xff0c;学习视频是来自于b站的&#xff1a;柴柴_前端教书匠&#xff0c;视频链接&#xff1a;React入门到实战(2022全网最新&#xff09;_哔哩哔哩_bilibili 和 react官网 开始 – React …

谁会嫌钱多啊,最适合学生党的Python兼职攻略以及接私活经验

大家好&#xff0c;我是小八 这次我想谈谈一个非常热门的话题&#xff0c;就是如何在学习python的同时去赚钱。在这篇文章中&#xff0c;你会学习到如何通过学习python来赚取副业收入。 相信大家都对钱感兴趣吧&#xff0c;如果你和马云爸爸对钱不敢兴趣的话&#xff0c;那这…

Lambda表达式从用到底层原理

文章目录前言一、lambda函数基本使用参数列表返回类型函数体捕获列表值捕获引用捕获隐式捕获混合方式捕获修改值捕获变量的值异常说明二、lambda表达式使用的注意事项避免默认捕获模式三、lambda表达式底层实现原理采用值捕获采用引用捕获前言 lambda式作为一种创建函数对象的…

Python tkinter -- 第18章 画布控件之多边形

18.2.19 create_polygon(coords, **options) 根据 coords 给定的坐标&#xff0c;在画布上绘制一个多边形。 &#xff08;1&#xff09;coords&#xff1a;给定多边形的坐标 &#xff08;2&#xff09;options&#xff1a;选项的具体含义&#xff1a; 选项含义activedash当鼠标…

JavaEE- JVM八股文(JVM垃圾回收机制GC)

JVM垃圾回收的目标&#xff1a;主要针对内存中的堆空间进行垃圾回收。 Java中&#xff0c;大量的内存都在堆中。 程序计数器&#xff1a;固定大小&#xff0c;不涉及释放 栈&#xff1a;函数执行完毕&#xff0c;对应栈的空间就自动释放了&#xff0c;不需要垃圾回收 方法区&…