51单片机快速入门教程——51核心开发板(STC89C52RC)
51单片机快速入门教程——51核心开发板(STC89C52RC)
本文是一篇关于51单片机(以STC89C52RC为核心)的入门教程,内容涵盖了单片机的基本概念、STC89C52RC的引脚功能与存储结构、开发板的硬件介绍以及开发环境的搭建。文章还详细介绍了C51编程的基础知识,包括代码组成、数据类型、命名规范等。文章内容详实,结构清晰,适合初学者学习。
第一章 STC89C52RC开发平台和工具
1.1初识单片机
单片机(Single-Chip Microcomputer)是一种 集成电路芯片 ,是采用超大规模集成电路技术把具有数据处理能力的 中央处理器 CPU、随机存储器 RAM 、 只读存储器 ROM、多种I/O口和中断系统、 定时器 / 计数器 等功能(可能还包括显示 驱动电路 、脉宽调制电路、模拟 多路转换器 、 A/D转换器 等电路)集成到一块硅片上构成的一个小而完善的 微型计算机系统 ,在工业控制领域广泛应用。
单片机相对独立,只需要外接晶振和电源即可在软件控制下工作。一些新型号的单片机带有内置晶振,只需要接上电源便可以工作。
根据一次操作能够处理的数据宽度,单片机可以分为4位、8位、16位和32位单片机。一般而言,位数越高的单片机性能越强,片内资源更丰富,能够胜任更多的工作。
以STC公司为例,51单片机的命名规则如下:
STC89C52RC芯片内部的结构框架:(如果对概念不熟悉可以去搜索或者等后期的文章出现进行了解)
1.2引脚功能与存储结构
引脚功能:
1.电源和时钟引脚
VCC:通常需要接入5V电源
GND:接地
XTAL1/XTAL2:内部时钟电路反相放大器的输入端和输出端,接入晶振和微调电阻形成自激震荡器,或仅在XTAL1引脚接入时钟信号。
*2.硬件控制引脚
RST:复位引脚,当输入的高电平信号持续2个机器周期以上时,单片机进行复位初始化操作。
EA:内外程序存储器选择引脚。
PSEN:外部程序存储器使能信号输出引脚。
ALE:地址锁存允许信号输出引脚。
3.通用输入输出(I/O)引脚
输入输出引脚又称I/O引脚(Input/Output),在51核心板上的STC89C52RC芯片具有P0P4共4组I/O引脚。除P4组仅有P4.04.6共7个引脚外,P0~P3组均有8个引脚。
组别 名称 序号 复用功能 复用功能说明
P1 P1.0 40 T2 定时器2外部输入引脚
P1.1 41 T2EX 定时器2捕捉/重装方式控制
P3 P3.0 5 RXD 串口数据接收引脚
P3.1 7 TXD 串口数据发送引脚
P3.2 8 INT0 外部中断0触发引脚
P3.3 9 INT1 外部中断1触发引脚
P3.4 10 T0 定时器0外部输入引脚
P3.5 11 T1 定时器1外部输入引脚
P3.6 12 WR 外部存储器写脉冲
P3.7 13 RD 外部存储器读脉冲
P4 P4.2 39 INT3 外部中断3触发引脚
P4.3 6 INT2 外部中断2触发引脚
P4.4 26 PSEN 外部程序存储器使能信号输出引脚
P4.5 27 ALE 地址锁存允许信号输出引脚
P4.6 29 EA 内外程序存储器选择引脚
存储结构:
1.3开发板介绍:
这里使用的开发板是乐育科技出品的51单片机核心板。
1.电源电路
USB1为Type-C接口座,通过Vbus引脚引出5V电源至USB_IN网络。
SS14为肖特基二极管,用于反极性保护。
ESD1为瞬态抑制二极管,防止静电对元器件造成损害。
PowerKey为自锁式双刀双掷电源开关,两路开关并联能为后级电路提供更大的电流。
PLED为电源指示灯。
电容C1与C8用于稳定电压。 容值较小的C9为滤波电容,用于滤除高频信号干扰。
2.时钟电路
经典的51单片机系统中常用的晶振频率有12MHz、11.0592MHz以及6MHz等。
电容C13和C14有助于晶振起振并且稳定震荡频率,R34用于使晶振工作更加稳定。
3.复位电路
51核心板上电瞬间,电容C12充电,此时C12可以看作一根导线,上下两端都为5V,此时RST引脚为高电平状态。随着充电电流逐渐减小,并且在下拉电阻R25的作用下,RST引脚的电平状态由高电平变为低电平,此时单片机结束复位状态,开始运行程序。
1.4搭建开发环境(keil4与STC—ISP)
开发工具:
Keil C51安装程序,STC-ISP软件,CH340驱动(最后一个记得执行驱动安装操作)
原理图(建议搞个pdf版的原理图):
如何搭建环境,新建工程并且进行编译:参考视频:
【51核心开发板——开发工具和平台搭建,如何新建工程(keil4)】 https://www.bilibili.com/video/BV1vp421U73K/?share_source=copy_web&vd_source=a85f5cd1c8dc38fdd970302da00bd865
up账号:一一一一一一一谷
第二章:
2.1C51代码的组成
大部分知识内容和c语言差不多,但也有一些微小的差别。因此,应该先去学习c语言,主要的学习内容是运算符(特别是位运算),程序结构(顺序,选择,循环),函数,数组,指针。
比如变量的命名规则。
程序的注释:/* */ or // 增加代码的可读性
注意每行语句末尾的分号;
2.2数据类型:
注意:浮点型一般用于存放带小数点的数字。在C语言中还有double类型表示双精度的浮点型数据,但在C51中,float类型与double类型精度一致,均为单精度浮点型。
在实际编程中,遵循尽量减少占用存储空间的原则。能够使用char类型表示一个数据,则不采用int类型,以节省存储空间,提高单片机运行效率。另外,在不需要表示负数的场合,也应尽量使用无符号型变量。
扩展数据类型:
2.3命名规范:
变量命名采用第一个单词首字母小写,后续单词的首字母大写,其余字母小写的命名方式,
例如:timerStatus、tickVal、restTime。
静态变量的命名方式为:s_+变量类型(小写)+变量名(首字母大写)。变量类型包括i(字符型或整型)、f(浮点型)、arr(数组类型)、struct(结构体类型)、b(布尔型)、p(指针类型)。例如:s_iCounter,s_arrNum[10]。
定义的存储器类型:
函数的命名可采用“动词+名词”的形式, 关键信息建议采用完整的单词, 其他信息可采用缩写, 缩写应符合英文的规范, 每个单词的首字母大写。 例如:InitInterrupt、DelayNms、ReadByte
数组的命名:局部变量命名规范也适用于函数内的非静态数组命名:第一个单词首字母小写,后续单词的首字母大写,其余字母小写格式。但本书建议数组名前要加arr前缀,以区别于其他变量。 例如:arrSendData、arrRestTime、arrTempData。