重要的内容写在前面:
- 该系列是以up主江协科技的51单片机视频教程为基础写下去的,大部分内容都参考了老师的课件,对于一些个人认为比较难懂且重要而课件写得并不是很清晰的地方,笔者都在正文尽量用文字详细地描述了一遍(正文没有的话就是在代码的注释里)。
- 文中的图片基本都来源于老师的课件以及开发板和芯片的手册,粘贴过来是为了方便阅读。
- 个人把这个教程学完之后,整体感觉是很好的,如果有条件的可以先学习一些相关课程再来看51单片机的教程,学起来会更加轻松(零基础开始直接学51单片机也可以,老师讲得很清晰),相关课程有数字电路(强烈推荐先学数电,不然可能会有很多地方理解起来很困难)、模拟电路、计算机组成原理(像寄存器、存储器、中断等在这门课里有很详细的介绍)、计算机网络、微机原理等。
- 文章的原创部分很多都是笔者个人的理解,如有错漏欢迎指出。
视频链接:
[1-1] 课程简介
一、51单片机基础知识
1、单片机,英文Micro Controller Unit,简称MCU。
2、内部集成了CPU、RAM、ROM、定时器、中断系统、通讯接口等一系列电脑的常用硬件功能。
3、单片机的任务是信息采集(依靠传感器)、处理(依靠CPU)和硬件设备(例如电机,LED等)的控制。
4、单片机跟计算机相比,单片机算是一个袖珍版计算机,一个芯片就能构成完整的计算机系统。但在性能上,与计算机相差甚远,但单片机成本低、体积小、结构简单,在生活和工业控制领域大有所用。
5、单片机命名规则:如下图所示。
6、进制转换:
7、Keil(C51)中的数据类型:(数组、字符串、结构体以及函数等这里不再赘述)
8、Keil(C51)中的数据运算:
9、Keil(C51)中的基本语句:
10、C51的sfr、sbit:(有点像宏定义/引用但又不完全是)
(1)sfr(special function register):特殊功能寄存器声明
例:sfr P0 = 0x80; //声明P0寄存器,物理地址为0x80
(2)sbit(special bit):特殊位声明(使用频率较高)
例:sbit P0_1 = 0x81; //或 sbit P0_1 = P0^1; 声明P0寄存器的第1位
11、可位寻址/不可位寻址:在单片机系统中,操作任意寄存器或者某一位的数据时,必须给出其物理地址,又因为一个寄存器里有8位,所以位的数量是寄存器数量的8倍,单片机无法对所有位进行编码,故每8个寄存器中,只有一个是可以位寻址的。对不可位寻址的寄存器,若要只操作其中一位而不影响其它位时,可用“&=”、“|=”、“^=”的方法进行位操作。
二、新建一个项目的流程
1、打开Keil5后,在“Project”一栏找到“New μVision Project”,点击它。
2、建议在桌面单独为51单片机建一个新文件夹,在该文件夹中存放不同的51单片机项目,每个项目再独自命名一个文件夹,生成的项目文件放在这个文件夹中(项目文件命名建议命为“project”)。
3、单击“保存”后,会弹出如下对话框供我们选择型号,按照下图所示选择即可。
4、单击“OK”后,会弹出另一个对话框,建议选择否(选择是也没关系),然后就完成了工程的创建。
5、右键选择“Source Group 1”文件夹,在这里创建编写代码的源文件(头文件也是在这里创建)。
在Keil(C51)中可以使用c语言、C++和汇编语言,一般都是选择c语言,也就是创建.c文件,第一个.c文件通常命名为main。
下图所示选项则是将文件夹中已有的代码文件导入项目中。
6、有了代码文件后可以进行编译(点击下图橙框的按钮即可进行编译)。