认识单片机

简介: 认识一下单片机

[TOC]

一、什么是单片机

单片机是在一个单芯片上集成了一个微型计算机主要部件单元的微型计算机,在单片机中一般都继承有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;
}
目录
相关文章
|
5月前
4-3 51单片机蜂鸣器
4-3 51单片机蜂鸣器
43 2
|
5月前
|
数据处理
单片机的码制
单片机的码制
50 0
|
5月前
|
IDE 编译器 程序员
单片机 (2)
单片机 (2)
54 0
|
5月前
|
传感器 物联网 C语言
单片机
单片机
44 0
|
5月前
|
传感器 5G 人机交互
|
5月前
|
存储 传感器 芯片
【51单片机】开发板和单片机的介绍(2)
【51单片机】开发板和单片机的介绍(2)
|
5月前
1-1 单片机介绍
1-1 单片机介绍
22 0
|
小程序 芯片
基于51单片机的超声波测距(待改进)
基于51单片机的超声波测距(待改进)
113 0
|
12月前
|
传感器 监控 C语言
什么是单片机?
一、单片机是什么 单片机(Microcontroller)是一种集成电路芯片,它集成了中央处理器(CPU)、内存、输入输出设备和定时器等功能模块。与通用计算机相比,单片机具有体积小、功耗低、成本低等特点。 单片机通常用于控制和执行特定的任务,例如家电控制、汽车电子系统、工业自动化等。它可以通过编程来实现各种功能,如读取传感器数据、控制执行器、处理输入输出信号等。 单片机的编程语言通常使用汇编语言或高级语言(如C语言)进行编写。编写好的程序可以通过烧录到单片机的内存中,从而实现特定的功能。 单片机的应用非常广泛,可以说几乎涉及到所有需要控制和处理信号的领域。它在电子产品、通信设备、医疗设备、交通
712 0