(指南者)(一)51单片机学习系列文章


这个系列里面的代码是基于 STC12C5A60S2型号的芯片写的,这个系列的文章的目的是带领小白们入门51单片机。

关于51单片机

在学51单片机之前,我们总要先知道什么是51单片机?为什么要学它?学了能做什么?

什么是51单片机

其实我们可以将51单片机看作是一台特别特别古老的电脑现在的电脑动轧16G内存,1T外部储存,单片机就只有256Byte RAM(内存)和1024KB FLASH(外部储存)。

为什么要学51单片机

为什么大多数学电子的人都要选择 51 单片机作为入门的呢?我们可以使用 ESP32 或者 ESP8266 来入门,存在大量的库,只需要简单的调用函数就可以实现一些相对复杂的功能,也可以使用 STM32 单片机来入门,相比较 51 单片机它具有更强的功能,初学也更加了解底层,找工作也比学 51 单片机更容易找,但是我还是推荐小白以 51 单片机作为入门是最好的选择。
51 单片机对于电子小白来说我认为最好的选择,对 51 单片机的操作不会难度太大,各种概念也不会像 STM32 单片机那样难以理解,却又不像 ESP32 那样简单的调用函数,在可以提高自己对单片机理解的同时又不会因为过高的难度而放弃学习。

学了能做什么

51 单片机它本身其实并不具有太强的功能,不过用它做个小车,自动门锁,心形灯等还是能够满足的。

如何使用51单片机

在这里插入图片描述

图中,我们可以看到一张 STC12C5A60S2 这个型号的 51 单片机的引脚图,可以看到每个引脚有个数字,称之为引脚序号,这个和实际芯片上的引脚顺序是一样的,除此之外,我们还可以看到每个引脚都有其对应的名称,所以再实际中,引脚的序号和功能是严格对应的,这个是在芯片生产就规定了的。

VCC和GND:电源引脚(给芯片提供电)
RST	:复位引脚(将芯片内部程序重新运行,理解为重启)
XTAL1/2:晶振接入引脚
P0/P1/P2/P3:普通的用户IO口,我们可以直接控制,后面会讲到控制方法

我们可以通过编写程序的方式来控制单片机,但是从我们编写程序到单片机运行是一个怎样的过程呢?

首先我们要有一个认知,就是我们是在使用 C 语言这种人能看懂的编程语言来实现变成。
但单片机是看不懂编程语言的,它只看得懂由 0 和 1 组成的机械语言,所以这个时候往往需要一个编译器来实现将我们写的编程语言转变成机械语言,我们可以使用 keil 等编译器。
编译器将我们写的代码打包成 hex 后缀的文件,在通过串口(之后的文章会讲都一种通信方式)将 hex 文件发送给单片机。
单片机会把程序储存在内部的储存空间中,在上电的时候就会运行程序,内部完成运算并且操作 IO 口实现具体的操作(例如点灯或者通信)。

控制IO输出

#include "STC12C5A60S2"	//这个我们平常包含的头文件不一样,平常我们在写C语言的程序的时候,总是需要包含一个头文件,例如:#include<stdio.h>,这是因为我们常常用到的printf这种函数在这个头文件里面。
						//写51单片机的时候也一样,不过不同的是,我们并不常常使用printf这种函数,我们需要对51单片机内部的寄存器进行操作(什么是寄存器,寄存器的概率在这个系列文章下一篇会说到),这个寄存器的定义就是在现在所看到的STC12C5A60S2.H这个头文件里面,不同的芯片所使用的头文件也不相同。
//我们怎么去控制IO口输出呢?其实很简单,直接对IO口的赋值就行。
P01 = 1;		//这就让P01这个口输出高电平。
//其实除了上面的写法,有些还有其他的赋值方法。
P0^1 = 1;
P0_1 = 1;
//这三种方法一般情况下是通用的,可能由于不同的头文件的限制,有个别在某些头文件下不能使用,可以三种写法都尝试一下,以便分清我们目前使用的单片机的头文件支持哪种写法。

//上面是单独对P0^1这个IO口进行操作,我们还可以看到,其实所有引脚分了不同的类,例如P0^0到P0^7是属于P0的,那我们可不可以直接一句话操作P0的所有IO口呢?
P0 = 0x12;	//可以看到,我们直接对P0赋值了,这样就可以直接改变P0的8个IO口,0x代表16进制的含义,将P0的8个IO口赋成00010010,其中最低位代表了P00,最高位代表了P07,这样就很清晰每个IO口的状态了。

P0M0 = 0xff;	
  • 10
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值