首页 > 其他分享 >01认识单片机

01认识单片机

时间:2023-02-03 23:11:55浏览次数:43  
标签:P2 01 引脚 认识 高电平 电平 单片机 这个

目录

一、什么是单片机

单片机是在一个单芯片上集成了一个微型计算机主要部件单元的微型计算机,在单片机中一般都继承有CPU(包括运算器、控制器、功能寄存器)、存储器、输入输出/输入接口以及其它重要的功能部件。

二、单片机可以做什么

下面是一些典型应用场合

1.工业测量控制系统

2.智能化仪器表

3.个人和家用电器设备

三、笔记中使用的单片机

在这个笔记中我使用的是普中51实验板,里面使用的芯片为STC89C52RC,因为这个板子上的元器件比较全,很适合初学者使用。

四、51单片机的特点

这个特点只有在51单片机有,其它单片机是没有的,51单片机可以对单个引脚进行操作,也可以对一组引脚进行操作。如果使用其它单片机的小伙伴们可能知道,比如要操作P2这一组中的一个引脚,就得给P2组一个数据

P2 = 0x00;

但是在51单片机中就可以不这样操作,比如说你要操作P2这个组中的第3个引脚,那么你可以单独操作这个引脚

P2_3 = 1;

这样就可以对P2组中的第3个引脚一个高电平了。

五、电平

让51单片机控制一些元器件本质上是控制给这个元器件的电平,比如说一个引脚上接着一个LED需要高电平来进行点亮,我们就给这个引脚一个高电平即可。

又比如说这个引脚上接的LED灯需要低电平来点亮,那么就给这个引脚一个低电平。

这个就是使用单片机控制一些元器件的本质,那么我们怎么样给这个引脚一个高电平或者低电平呢?

其实是使用到C语言中的赋值(不明白C语言的可以看我之前的文章),我们要让哪一个引脚为什么电平,我们就将这个电平给它赋值过去即可。

那么怎么来表示高电平和低电平呢?其实只需要使用0和1来表示即可

1表示高电平,0表示低电平

六、找到引脚

电平明白了后现在就是要给引脚电平了,那给引脚电平是不是要先找到这个引脚啊。找到了引脚之后才能给这个引脚一个电平。

那么这个引脚该如何去找呢?其实是通过地址来进行查找的,学C语言的时候了解过,所有创建出来的内容如何找到,是不是都是通过这个元素的地址来查找这个元素的,所以在这里找到单片机中的引脚的方式也是通过地址来查找。

这里可以翻看STC89C52的说明文档中的 特殊功能寄存器 这个章节去查看

img

找到了之后需要给它赋值给一个变量,毕竟你不可以拿一个地址来赋值对吧。

这里就需要创建一个变量,但创建的变量的类型是什么类型呢?

这里就要说一下C51中扩展的两个特殊类型,一个是 sbit 另一个是 sft

1.sfr是什么

sfr是特殊功能寄存器,这些引脚的地址都是存放在特殊功能寄存器中的,如果要指定这个变量为特殊功能寄存器的位置时就得使用这个关键字进行修饰,使用方法如下:

sfr a = 0xA0;

上面的意思是:创建了一个特殊功能寄存器变量a,里面存放的值为0xA0,这样我们就可以通过这个变量来访问特殊功能寄存器中地址值为0xA0位置的内容了,而这个位置又是P2引脚组的地址,所以可以使用创建出来的a变量来访问P2引脚组。

2.sbit是什么

sbit是特殊功能寄存器的位变量,之前在说51的特点的时候说过,可以直接操作一个引脚组中的一个特定引脚,比如说P2引脚组中的第2个引脚。这个细分就得使用到sbit关键字。

而使用的方法比较简单

sbit a_0 = a^0;

上面的代码得到的内容就是得到了P2组中的第0个元素的地址。这样就可以通过a_0这个变量直接来操作P2组中的第0个引脚了。

知道了引脚的定义那我们就可以对引脚进行操作了。

比如说现在要让P2引脚组中的第0个引脚一个高电平,那么代码可以这么写:

sfr P2 = 0xA0;
sbit P2_0 = P2 ^ 0;
P2_0 = 1;

这样就可以让P2组中的第0个引脚一个高电平了,当然也可以直接对组进行操作,操作方式如下:

sfr P2 = 0xA0;
P2 = 0x01;

这样也可以,那这种方法的操作是什么操作呢?

3.引脚组的排序

一个引脚组有8个引脚,这个是规定好的,可以查看原理图,我们在前面知道给一个引脚电平要么是1或者0,那么一个引脚组给的电平是不是可以为:

11110000或者其它的写法,只要保证给的电平是1和0即可,但是如果就按照上面的11110000的写法是不可以的,因为在C语言中只能表示十进制、八进制、十六进制的数,二进制的数是没有办法表示的,所以这里需要将二进制的数改变为十六进制数,那11110000表示为十六进制为0xF0。

当然上面的方法还是比较复杂,毕竟每次使用引脚就得去翻手册,这个时候该怎么办呢?

其实C51这个编译器已经将这些引脚的定义写好了,我们只需要调用它写好的库即可使用,这里可以使用的是

#include <at89x51.h>

当然还有一个

#include <REGX51.h>

上面两个库按你喜欢的来进行调用,调用一个即可。

调用完库后直接就可以使用

#include <at89x51.h>
int main(){
    P2 = 0x80;
    return 1;
}

标签:P2,01,引脚,认识,高电平,电平,单片机,这个
From: https://www.cnblogs.com/Lavender-edgar/p/17090674.html

相关文章

  • 【2018网鼎杯】fakebook
    Info信息:题目来源:网鼎杯2018标签:PHP、源码泄露、SSRF、反序列化、SQL解题过程:首先进行目录扫描,发现以下目录:user.php.baklogin.phpflag.phpuser.phprobots.txt......
  • 01-绪论
    绪论电信号什么是电信号信号是反应消息的物理量,比如温度、压力、流量、声音等,信号是消息的表现形式。电信号比较容易传输、处理和控制,因此人们将非电物理量通过各种传......
  • day01-SpringMVC基本介绍-01
    SpringMVC介绍-011.离线文档解压spring-5.3.8-dist.zip文件。位置:spring-framework-5.3.8/docs/reference/html/web.html#spring-web2.SpringMVC基本介绍2.1SpringM......
  • P4024 [CTSC2012]统计学家
    P4024[CTSC2012]统计学家洛谷:P4024[CTSC2012]统计学家Solution首先考虑离散化。rev1&rev2发现要么\(n=1\),要么\(m=1\),相当于对于一个一维数列求区间逆序对......
  • 01背包
    01背包有\(N\)件物品和一个容量是\(V\)的背包。每件物品只能使用一次。第\(i\)件物品的体积是\(v_i\),价值是\(w_i\)。求解将哪些物品装入背包,可使这些物品的总......
  • Intent 显示与隐式了解认识
    显示Intent用于精确匹配,指定跳转目标1.在intent构造函数中调用Intentintent=newIntent(this,XX.class);2.调用意图对象的setClassIntentintent=newIntent();i......
  • CSP201612-3权限查询
            多年后再回头看这道题觉得很简单,写起来还是很复杂,我的书写习惯不好,找bug找了很久。特别注意在构建角色时,一个角色可能会有多个权限,取最大值,又......
  • 智慧自贸,2012亚洲物流信息化国际峰会成功举办
    版权声明:本文章由“上海美华系统有限公司”编辑组汇编而成,未经授权和许可,任何个人或媒体不得对本网站的文章及其他信息资料予以复制、转载、抄袭、改编。上海美华系统有限......
  • Day 01
    Markdown学习二级标题三级标题四级标题字体Hello,Word!左右俩**变粗体Hello,Word!左右*变斜体Hello,Word!左右3个***变斜粗Hello,Word!左右俩~~变删除引用......
  • 亚马逊关于攀岩绳的政策是什么呢?BS EN 892:2012+A2:2021报告如何提交报告呢?
    亚马逊关于攀岩绳的政策是什么呢?攀岩绳又称主绳,是攀登的象征,它为攀登者与保护者之间建立起了一种可靠的远程连接,为操作者提供了一个安全的平衡过渡。亚马逊政策适用的攀岩绳......