续51单片机从入门到精通:理论与实践指南(一)https://blog.csdn.net/speaking_me/article/details/144067372
第一篇总体给大家在(全局)总体上讲解了一下51单片机,那么接下来几天结束详细讲解,从理论到实践。
那么开始我们的入门篇(二)吧
单片机的基本知识
1. 单片机的基本结构
1.1 中央处理器(CPU)
- 功能:执行指令,进行数据处理。
- 组成:运算器(ALU)、控制器、寄存器等。
- 特点:是单片机的核心部分,负责指令的执行和数据的运算。
1.2 存储器
- 内部RAM:
- 容量:128字节。
- 功能:存储数据变量。
- 地址范围:00H-7FH。
- 外部RAM:
- 扩展方式:通过P0和P2端口扩展。
- 最大容量:64KB。
- 地址范围:0000H-FFFFH。
- 程序存储器:
- 类型:Flash存储器。
- 容量:通常为4KB或8KB。
- 功能:存储程序代码。
- 地址范围:0000H-FFFFH。
1.3 输入/输出(I/O)端口
- 数量:4个8位双向I/O端口(P0、P1、P2、P3)。
- 功能:与外部设备进行数据交换。
- 特点:每个端口都可以配置为输入或输出。
- P0端口:8位双向I/O端口,也可作为地址/数据总线使用。
- P1端口:8位双向I/O端口。
- P2端口:8位双向I/O端口,也可作为地址总线的高8位使用。
- P3端口:8位双向I/O端口,每个引脚都有第二功能(如串行通信、中断等)。
1.4 定时/计数器
- 数量:2个16位定时/计数器(Timer0和Timer1)。
- 功能:产生定时中断或计数外部脉冲。
- 模式:多种工作模式(模式0-3)。
1.5 中断系统
- 中断源:定时器溢出中断、外部中断、串行通信中断等。
- 优先级:高低优先级。
- 功能:处理外部事件,提高系统的实时性。
1.6 串行通信接口
- 类型:UART(通用异步收发传输器)。
- 功能:实现串行通信。
- 波特率:可配置,常见波特率为9600、115200等。
2. 单片机的封装案例
2.1 DIP(双列直插式封装)
- 特点:引脚从封装的两侧引出,垂直于PCB表面。
- 引脚数量:常见的有8、14、20、40等。
- 应用:适合手动焊接和实验板使用,常用于学习和开发初期。
2.2 SOP(小外形封装)
- 特点:引脚从封装两侧引出,呈L形。
- 引脚数量:常见的有8、14、20等。
- 应用:适合自动化生产和小型化设计。
2.3 QFP(四方扁平封装)
- 特点:引脚从封装的四个侧面引出,呈海鸥翼形。
- 引脚数量:常见的有32、44、64等。
- 应用:适用于大规模集成电路和高性能应用。
2.4 BGA(球栅阵列封装)
- 特点:引脚位于封装底部,呈球形。
- 引脚数量:常见的有64、100、200等。
- 应用:适用于高密度、高性能应用,如高性能处理器和高端单片机。
3. 单片机的应用场合
3.1 家电控制
- 应用:微波炉、洗衣机、空调等。
- 功能:控制设备的启停、定时及工作状态,提升家电的智能化程度。
3.2 工业自动化
- 应用:自动化生产线、机器人和仪器仪表。
- 功能:控制电机、传感器及其他设备,实现自动化控制和数据采集。
3.3 消费电子
- 应用:手机、平板电脑、智能手表等。
- 功能:负责用户界面的管理、数据处理及传感器接口。
3.4 嵌入式系统
- 应用:智能家居、车载系统、医疗设备等。
- 功能:提供智能控制及数据处理。
3.5 物联网(IoT)
- 应用:智能城市、智能农业等。
- 功能:通过网络连接实现远程监控和控制,推动智能城市发展。
3.6 教育与实验
- 应用:学校、实验室和个人项目。
- 功能:帮助学生和爱好者理解嵌入式系统和编程的基本概念。
4. 单片机控制系统的硬件搭建方法
4.1 单片机控制系统的基本结构
- 单片机:核心控制单元。
- 传感器:用于采集外部数据,如温度传感器、光敏传感器等。
- 执行器:用于执行控制动作,如电机、继电器等。
- 电源:为整个系统供电,通常为5V。
- 外围电路:如稳压电路、滤波电路等。
- 通信接口:如串口、SPI、I2C等,用于与其他设备通信。
4.2 硬件搭建步骤
- 选择单片机:如STC89C52或AT89S52。
- 晶振电路:连接晶振和两个20pF的瓷片电容到XTAL1和XTAL2引脚。
- 复位电路:连接一个10kΩ的上拉电阻和一个10μF的电容到RST引脚。
- 电源电路:连接5V电源,通过7805稳压器提供稳定的5V电压。
- LED指示灯:连接一个LED和一个限流电阻到P1.0引脚。
- 编程接口:连接ISP编程接口,用于烧写程序。
5. 单片机控制系统的开发过程
5.1 开发流程
-
明确任务
- 分析需求:了解项目的总体要求,制定性能指标。
- 考虑因素:使用环境、可靠性、可维护性、成本等。
-
划分软硬件功能
- 硬件功能:选择硬件实现的功能,如数据采集、控制输出等。
- 软件功能:选择软件实现的功能,如数据处理、用户界面管理等。
-
选择单片机及其他关键部件
- 单片机:选择满足系统需求的单片机,如STC89C52。
- 关键器件:选择A/D、D/A转换器、传感器、放大器等。
-
硬件设计
- 原理图设计:使用Protel等软件设计电路原理图。
- PCB设计:根据原理图绘制PCB图,生成生产文件。
-
软件设计
- 程序结构:确定软件系统的程序结构,划分功能模块。
- 模块设计:编写各模块的程序代码。
- 编程语言:选择合适的编程语言,如C语言。
-
仿真调试
- 软件仿真:使用Keil C51和Proteus进行系统仿真,检查程序逻辑和硬件连接。
- 硬件调试:制作PCB板,焊接元器件,进行硬件调试。
-
系统调试
- 联调:将软件和硬件结合,进行系统联调。
- 问题排查:解决调试过程中发现的问题。
-
测试修改
- 功能测试:进行全面的功能测试,确保系统正常工作。
- 性能测试:测试系统的性能指标,如响应时间、稳定性等。
- 修改完善:根据测试结果进行修改和完善。
-
用户试用
- 用户反馈:将系统交付用户试用,收集用户反馈。
- 最终修改:根据用户反馈进行最终修改,确保系统满足用户需求。
51单片机的引脚
51系列单片机是一种广泛使用的8位微控制器,其典型代表是AT89S51和AT89S52。51系列单片机通常采用40引脚的双列直插式封装(DIP),这些引脚根据功能可以分为电源引脚、复位引脚、时钟引脚、I/O引脚和控制引脚。
1. 基本工作条件引脚
-
电源引脚:
- VCC (Pin40):正电源端,通常接5.0V电压。
- GND (Pin20):接地端,通常接0V。
-
复位引脚:
- RST/VPD (Pin9):复位信号输入端。单片机内部CPU的复位信号输入端。在单片机的振荡器启动后,该引脚置两个机器周期以上高电平,便可以实现复位。此外,该引脚还具有掉电保持功能,可以在掉电时保持RAM中的数据不丢失。
-
时钟引脚:
- XTAL1 (Pin19):时钟XTAL1脚,片内振荡电路的输入端。
- XTAL2 (Pin18):时钟XTAL2脚,片内振荡电路的输出端。
- 工作方式:单片机的时钟振荡器有两种工作方式。一种是片内时钟振荡方式,在18和19脚外接石英晶体和振荡电容,振荡电容的值一般取10~30pF。另一种是外部时钟方式,由外部直接提供时钟源。
2. 输入/输出(I/O)引脚
-
P0端口 (Pin39~Pin32):
- 功能:8位准双向I/O口,也可用于8位并行I/O口或分时复用为地址和数据总线。
- 特点:需外接上拉电阻,在程序中向该端口写入1后,成为高阻抗输入口。P0口作为输出口时,每个引脚可以负载8个TTL。
-
P1端口 (Pin1~Pin8):
- 功能:8位准双向并行I/O口。
- 特点:内部已经具有上拉电阻,为8位准双向I/O口,能负载4个TTL;在Flash编程和校验时,定义为低8位地址线。
-
P2端口 (Pin21~Pin28):
- 功能:8位准双向并行I/O口。
- 特点:内部已经具有上拉电阻,为8位准双向I/O口,能负载4个TTL;当访问外部存储器时,定义为高8位地址线。
-
P3端口 (Pin10~Pin17):
- 功能:8位准双向并行I/O口。
- 特点:内部已经具有上拉电阻,为8位准双向I/O口,能负载4个TTL。P3口每个引脚都具有第二功能:
- P3.0 (RXD):串行数据接收端。
- P3.1 (TXD):串行数据发送端。
- P3.2 (INT0):外部中断0请求信号输入端。
- P3.3 (INT1):外部中断1请求信号输入端。
- P3.4 (T0):定时器/计数器T0的外部计数输入端。
- P3.5 (T1):定时器/计数器T1的外部计数输入端。
- P3.6 (WR):外部数据写选通信号。
- P3.7 (RD):外部数据读选通信号。
3. 控制引脚
-
ALE/ (Pin30):
- 功能:地址锁存使能端和编程脉冲输入端。
- 特点:当访问外部程序存储器时,ALE引脚的负跳变将低8位地址打入锁存;而非访问内部程序存储器时,ALE引脚将有一个1/6振荡频率的正脉冲信号,该信号可以用于外部计数或时钟信号。当访问外部数据存储器(执行MOVX类指令)时,ALE引脚会跳过一个脉冲。对8EH单元的特殊功能寄存器的D0位置1,可禁止ALE输出,只有在执行MOVX或MOVC类指令时,ALE才被激活,仍输出锁存有效。在执行片外程序代码时,该设定禁止ALE位无效。
-
** (Pin29)**:
- 功能:访问外部程序存储器的读选通信号。
- 特点:当单片机访问外部程序存储器,读取指令码时,每个机器周期产生2次有效信号,即此脚输出2个负脉冲选通信号;在执行片内程序存储器以及读写外部数据时,不产生 脉冲信号。
-
EA/VPP (Pin31):
- 功能:访问内部或外部程序存储器选择信号。
- 特点:当8051 CPU访问外部程序存储器时,则 必须保持低电平;当 保持高电平时,则8051 CPU先从片内0000H单元开始,执行内部程序存储器程序;如果外部还有扩展程序存储器,则8051 CPU在执行完内部程序存储器程序后,自动转向执行外部程序存储器中的程序。
TTL电平和COMS电平的概念
1. TTL电平
TTL(Transistor-Transistor Logic)电平是一种数字逻辑电平标准,广泛应用于数字电子系统和通信领域。TTL电平的特点如下:
- 逻辑高电平:通常定义为2.4V至5V之间的电压范围,其中5V被认为是最常见的高电平表示。
- 逻辑低电平:通常定义为0V至0.8V之间的电压范围,其中0V被认为是最常见的低电平表示。
- 噪声容忍度:TTL电平对于噪声的容忍度较低,因此在使用时需要注意信号的稳定性和干扰抑制。
- 功耗:TTL电路的功耗相对较高,但具有较快的开关速度。
- 输入特性:TTL电路的输入端开路时,默认为高电平。
2. CMOS电平
CMOS(Complementary Metal-Oxide-Semiconductor)电平是另一种常见的数字电路电平标准。CMOS电平的特点如下:
- 逻辑高电平:通常定义为电源电压VDD的0.9倍以上,接近电源电压。
- 逻辑低电平:通常定义为电源电压VSS的0.1倍以下,接近0V。
- 噪声容忍度:CMOS电平对噪声的容忍度较高,具有较宽的噪声容限。
- 功耗:CMOS电路的功耗相对较低,主要因为CMOS门电路中的晶体管只有在切换时才会消耗能量。
- 速度:CMOS电平的切换速度相对较慢,适用于低功耗、低速的数字电路。
- 供电电压:CMOS电路的供电电压范围较广,通常在+5V至+15V之间均能正常工作。
3. TTL电平和CMOS电平的比较
-
电流控制 vs 电压控制:
- TTL电路:是电流控制器件,输入端需要一定的电流才能正确识别电平。
- CMOS电路:是电压控制器件,输入端几乎不需要电流。
-
功耗:
- TTL电路:功耗较大,因为其内部的晶体管在导通时会有较大的电流。
- CMOS电路:功耗较小,因为其内部的晶体管只有在切换时才会消耗能量。
-
噪声容忍度:
- TTL电路:噪声容忍度较低,容易受到噪声干扰。
- CMOS电路:噪声容忍度较高,具有较宽的噪声容限。
-
速度:
- TTL电路:开关速度较快,适用于高速应用。
- CMOS电路:开关速度较慢,适用于低速应用。
-
兼容性:
- TTL电路:输出电平可以驱动CMOS电路,但CMOS电路的输出电平可能无法直接驱动TTL电路,需要进行电平转换。
- CMOS电路:具有较宽的工作电压范围,适用于多种应用场景。
理解STC89C52(AT89S52)单片机的最小系统
1 最小系统组件
1 单片机
- 型号:STC89C52或AT89S52。
- 功能:核心控制单元。
2 晶振电路
- 元件:11.0592MHz或12MHz的晶振,两个20pF的瓷片电容。
- 连接:晶振连接到XTAL1和XTAL2引脚,电容连接到XTAL1和XTAL2引脚到地。
- 功能:提供稳定的时钟信号。
3 复位电路
- 元件:10kΩ的上拉电阻,10μF的电容。
- 连接:上拉电阻连接到RST引脚和VCC,电容连接到RST引脚和地。
- 功能:用于复位单片机。
4 电源电路
- 元件:5V电源,7805稳压器。
- 连接:5V电源通过7805稳压器提供稳定的5V电压。
- 功能:为整个系统供电。
5 LED指示灯
- 元件:LED,限流电阻。
- 连接:LED的阳极通过限流电阻连接到P1.0引脚,阴极接地。
- 功能:指示系统工作状态。
6 编程接口
- 元件:ISP编程接口。
- 连接:连接到单片机的编程引脚(如P3.0-P3.3)。
- 功能:用于烧写程序。
2 最小系统电路图
+5V -----> VCC | R1 (10kΩ) | RST | C1 (10μF) | GND XTAL1 -----> X1 (11.0592MHz) | C2 (20pF) | GND XTAL2 -----> X2 (11.0592MHz) | C3 (20pF) | GND P1.0 -----> R2 (330Ω) | LED | GND
掌握二进制、十六进制、十进制数之间的转换方法
1 二进制(Binary)
- 基数:2
- 位数:0或1
- 示例:
1010
(二进制)
2 十六进制(Hexadecimal)
- 基数:16
- 位数:0-9或A-F
- 示例:
0xA
(十六进制)
3 十进制(Decimal)
- 基数:10
- 位数:0-9
- 示例:
10
(十进制)
4 转换方法
1 二进制转十进制
- 方法:按位权展开法。
- 示例:
1010
(二进制)=1*2^3 + 0*2^2 + 1*2^1 + 0*2^0
=8 + 0 + 2 + 0
=10
(十进制)
2 十六进制转十进制
- 方法:按位权展开法。
- 示例:
0xA
(十六进制)=10*16^0
=10
(十进制)
3 二进制转十六进制
- 方法:每4位一组转换。
- 示例:
1010
(二进制)=0xA
(十六进制)
4 十六进制转二进制
- 方法:每一位转换为4位二进制。
- 示例:
0xA
(十六进制)=1010
(二进制)
了解单片机控制系统的硬件搭建方法
1 硬件搭建步骤
1 选择单片机
- 型号:STC89C52或AT89S52。
- 功能:核心控制单元。
2 晶振电路
- 元件:11.0592MHz或12MHz的晶振,两个20pF的瓷片电容。
- 连接:晶振连接到XTAL1和XTAL2引脚,电容连接到XTAL1和XTAL2引脚到地。
- 功能:提供稳定的时钟信号。
3 复位电路
- 元件:10kΩ的上拉电阻,10μF的电容。
- 连接:上拉电阻连接到RST引脚和VCC,电容连接到RST引脚和地。
- 功能:用于复位单片机。
4 电源电路
- 元件:5V电源,7805稳压器。
- 连接:5V电源通过7805稳压器提供稳定的5V电压。
- 功能:为整个系统供电。
5 LED指示灯
- 元件:LED,限流电阻。
- 连接:LED的阳极通过限流电阻连接到P1.0引脚,阴极接地。
- 功能:指示系统工作状态。
6 编程接口
- 元件:ISP编程接口。
- 连接:连接到单片机的编程引脚(如P3.0-P3.3)。
- 功能:用于烧写程序。
掌握Keil uVision软件的安装方法
1 安装步骤
1 下载Keil uVision
- 网站:访问Keil官网(https://www.keil.com/)。
- 下载:点击“Download”按钮,选择适合操作系统的版本进行下载。
2 运行安装程序
- 双击安装包:下载完成后,双击安装包启动安装程序。
- 阅读许可协议:阅读并接受许可协议。
- 选择安装路径:选择安装路径,默认路径通常为
C:\Keil_v5
。 - 选择组件:选择需要安装的组件,如µVision IDE、ARM Compiler等。
- 开始安装:点击“Next”按钮开始安装。
3 注册和激活
- 序列号:安装完成后,需要输入有效的序列号进行注册。
- 激活码:输入激活码完成激活。
- 注册方法:在Keil uVision中选择“Help” -> “Register” -> “Enter License Key”,输入序列号和激活码。
4 配置环境
- 启动Keil uVision:安装完成后,启动Keil uVision。
- 配置工作环境:选择“Project” -> “New µVision Project”,创建新的工程。
掌握单片机编程环境的建立方法
1 建立编程环境步骤
1 新建工程
- 启动Keil uVision:打开Keil uVision软件。
- 新建工程:选择“Project” -> “New µVision Project”。
- 选择保存路径:选择保存工程的目录,输入工程名称。
- 选择目标芯片:在弹出的对话框中选择目标芯片,如STC89C52或AT89S52。
2 添加源文件
- 右键点击“Source Group 1”:在工程管理器中右键点击“Source Group 1”。
- 选择“Add New Item to Group”:选择“Add New Item to Group”。
- 选择文件类型:选择文件类型,如C文件,输入文件名。
- 保存文件:点击“Save”按钮保存文件。
3 配置工程
- 选择“Project” -> “Options for Target ‘Target 1’”:在菜单栏中选择“Project” -> “Options for Target ‘Target 1’”。
- 配置输出:在“Output”选项卡中,选择生成的文件类型,如HEX文件。
- 配置编译器:在“C/C++”选项卡中,配置编译器选项,如优化级别、预处理器宏等。
- 配置目标:在“Target”选项卡中,配置目标芯片的参数,如晶振频率。
掌握单片机程序代码的编译、下载(烧写方法)
1 编译工程
1 编译步骤
- 选择“Project” -> “Rebuild All Target Files”:在菜单栏中选择“Project” -> “Rebuild All Target Files”。
- 查看编译结果:编译完成后,查看编译结果窗口,确保没有错误。
2 下载程序
1 连接ISP编程器
- 连接编程器:将ISP编程器连接到单片机的编程接口。
- 连接电脑:将ISP编程器的USB接口连接到电脑。
2 打开ISP编程软件
- 选择软件:使用STC-ISP或其他编程软件。
- 选择COM口:在软件中选择正确的COM口。
- 选择芯片型号:选择目标芯片型号,如STC89C52。
3 打开HEX文件
- 点击“打开HEX文件”:在编程软件中点击“打开HEX文件”,选择编译生成的HEX文件。
4 烧写程序
- 点击“烧写”按钮:点击“烧写”按钮,将程序烧写到单片机中。
- 检查烧写结果:烧写完成后,检查烧写结果窗口,确保程序成功写入。