51单片机快速入门教程——51核心开发板(STC89C52RC)
51单片机快速入门教程——51核心开发板(STC89C52RC)
51单片机是初学者学习嵌入式系统开发的首选平台之一。本文将带你从零开始,逐步掌握STC89C52RC单片机的开发基础,包括开发环境搭建、硬件结构、引脚功能和存储结构等内容。
第一章 STC89C52RC开发平台和工具
1.1初识单片机
单片机(Single-Chip Microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。
单片机相对独立,只需要外接晶振和电源即可在软件控制下工作。一些新型号的单片机带有内置晶振,只需要接上电源便可以工作。
根据一次操作能够处理的数据宽度,单片机可以分为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。
扩展阅读
如果你对51单片机感兴趣,可以进一步学习以下内容:
- 51单片机的中断系统和定时器/计数器的使用方法
- 单片机的串口通信和SPI/I2C总线通信
- 常用外设的驱动开发,如LCD显示屏、按键矩阵、传感器等
- 实际项目的开发流程和调试技巧
通过不断学习和实践,你将能够掌握51单片机的开发技能,为今后的嵌入式系统开发打下坚实的基础。