提示:今天是学习51单片机的第二天,以下就是今天的笔记
目录
一 单片机最小系统构成
若要使系统正常运行,必须确保单片机的最小系统稳定工作。51 单片机的最 小系统由以下几部分组成:
(1)晶振电路
(2)复位电路
(3)电源电路
(4)下载电路
1.晶振电路
由于单片机正常工作需要一个时钟,因此就需要在其晶振引脚上外接晶振 (我们使用STC89CXX 单片机晶振引脚是 18 和 19 脚),至于需要多大晶振这 就取决于你所使用的单片机,由于我们使用的是 51 单片机,其时钟频率可在 0-40MHZ 上运行,一般情况下我们建议选择 12M(适合计算延时时间)或者是 11.0592M(适合串口通信)。若直接将此晶振接入单片机晶振引脚,会发现系统 工作不稳定,这是因为晶振起振的一瞬间会产生一些电感,为了消除这个电感所 带来的干扰,可以在此晶振两端分别加上一个电容,电容的选取需要无极性的, 另一端需要共地。根据选取的晶振大小决定电容值,通常电容可在 10-33PF 值范 围内选取。我们使用的是 33PF 电容。这样一来就构成了晶振电路。只有保证晶 振电路稳定,单片机才能继续工作。其电路如下所示:
2.复位电路
前面我们已经将晶振电路搭建完成,我们知道晶振犹如人的心脏,需要无时无刻给单片机提供运行周期。但即使时钟周期在不停的运行,系统也有可能会出 现崩溃或者瘫痪状态。这就需要设 计一个复位电路来实现此功能。我们知道单片机引脚当中就有一个 RST 复位引 脚,而 STC89CXX 单片机又是高电平复位,所以只需要让这个引脚保持一段时间 高电平就可以。要实现此功能通常有两种方式,一种是通过按键进行手动复位, 74 还有一种是上电复位,即电源开启后自动复位。手动复位是通过一个按键及电容 电阻所组成,利用按键的开关功能实现复位,按键按下后 VCC 直接进入到单片机 RST 引脚,松开后 VCC 断开,RST 被电阻拉为低电平。这一合一开就实现了手动 复位。而自动复位主要是利用 RC 充放电功能,电源已开启,由于电容隔直,VCC 直接进入 RST,然后电容开始慢慢充电,直到充电完成,此时 RST 被电阻拉低。 这样就起到上电复位的效果。这里我们采用手动复位。不到系统崩溃,我们几乎 不会操作复位。复位电路如下图所示: 当按下按键 RSTK1,VCC 直接连接到 RST 复位脚,VCC 是高电平所以系统复位。
3.电源电路
任何电子器件都需要有一个合适的电源进行供电, 没有电源,系统是不会工作的。STC89CXX 单片机的工作电压是 3.3-5.5V 范围, 通常我们使用 5V 直流。将电源接入到各芯片电源引脚即可。开发板电源电路如 下图所示: 51开发板上还预留了 P3(5V/3V)端子,这些端子可以很方便的给外部模块连 接电源。
4.下载电路
下载电路到最小系统中。程序要烧写到单片机内是通过上位机(PC 机)及对应的软件将编译器生成的 75 xxx.HEX 文件通过单片机串口写入进去。 我们知道现在的笔记本电脑没有 RS232 接口,所以要使用 USB 转 TTL 串口电 平芯片来建立 PC 机和单片机数据传输通路。通常使用 CH340G 或者 CH340C 芯片 来完成电平转换。CH340G 需外接 12M 晶振,而 CH340C 内部自带晶振,所以可以 不接外部 12M 晶振。开发板上使用的是 CH340C 芯片。 开发板下载电路如下图所示: 本电路是我们自主研发的一键自动下载电路,无需冷启动。主要依靠上位机 软件(PZ-ISP)控制 CH340 芯片的 RTS 和 DTR 脚输出,进而使 MOS 管 Q3 自动断 电后上电,完成冷启动工作。 从上图可以知道,USB1 接口即为程序下载接口,D-和 D+连接到 CH340 芯片 的 D-和 D+,然后 CH340 芯片的串口 TXD 和 RXD 管脚就连接到单片机的串口(P3.0、 P3.1)上,这里不是直接连接到单片机串口,而是通过 P5 端子进行转接。这样 做不仅可以让开发板 USB 接口下载程序,还可以让单片机串口不受 CH340 干扰, 这样开发板也可以当成 USB 转 TTL 模块使用,该设计也是考虑 WIFI、蓝牙等模 块与串口通信不受干扰问题。 USB1 接口不仅可以作为程序下载口,还可以作为串口通信口,因为它本身就 是实现串口下载。同时还可以作为电源供电口,可以看到 USB1 的管脚 1 就是 5V 电源脚,所以开发板的可以直接使用 USB 线来供电,如果提供的 USB 线有问题, 可以使用安卓手机数据线,接口都是兼容的。当电源开关打开后,电源指示灯 DP1 即会点亮,表明系统电源正常。
二 reg52.h 头文件介绍
头文件作用 在代码中引用头文件,其实际意义就是将这个头文件中的全部内容放到引用 头文件的位置处,免去我们每次编写同类程序都要将头文件中的语句重复编写。 在代码中加入头文件有两种书写方法,分别为#include <reg52.h>和#include "reg52.h",包含头文件时都不需要在后面加分号。两种写法的区别如下:
1.当使用<>包含头文件时,编译器先进入到软件安装文件夹处开始搜索这个 头文件,也就是 KEILC51/C51/INC 这个文件夹下,如果这个文件夹没有引用的头 文件,编译器将会报错。
2.当使用""包含头文件时,编译器先进入到当前工程所在文件夹处开始搜索 该头文件,如果当前工程所在文件夹下没有该头文件,编译器将继续回到软件安 装文件夹处搜索这个头文件,若找不到该头文件,编译器将报错。