当前位置: 首页 > article >正文

51单片机从入门到精通:理论与实践指南入门篇(二)

续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 硬件搭建步骤
  1. 选择单片机:如STC89C52或AT89S52。
  2. 晶振电路:连接晶振和两个20pF的瓷片电容到XTAL1和XTAL2引脚。
  3. 复位电路:连接一个10kΩ的上拉电阻和一个10μF的电容到RST引脚。
  4. 电源电路:连接5V电源,通过7805稳压器提供稳定的5V电压。
  5. LED指示灯:连接一个LED和一个限流电阻到P1.0引脚。
  6. 编程接口:连接ISP编程接口,用于烧写程序。

5. 单片机控制系统的开发过程
5.1 开发流程
  1. 明确任务

    • 分析需求:了解项目的总体要求,制定性能指标。
    • 考虑因素:使用环境、可靠性、可维护性、成本等。
  2. 划分软硬件功能

    • 硬件功能:选择硬件实现的功能,如数据采集、控制输出等。
    • 软件功能:选择软件实现的功能,如数据处理、用户界面管理等。
  3. 选择单片机及其他关键部件

    • 单片机:选择满足系统需求的单片机,如STC89C52。
    • 关键器件:选择A/D、D/A转换器、传感器、放大器等。
  4. 硬件设计

    • 原理图设计:使用Protel等软件设计电路原理图。
    • PCB设计:根据原理图绘制PCB图,生成生产文件。
  5. 软件设计

    • 程序结构:确定软件系统的程序结构,划分功能模块。
    • 模块设计:编写各模块的程序代码。
    • 编程语言:选择合适的编程语言,如C语言。
  6. 仿真调试

    • 软件仿真:使用Keil C51和Proteus进行系统仿真,检查程序逻辑和硬件连接。
    • 硬件调试:制作PCB板,焊接元器件,进行硬件调试。
  7. 系统调试

    • 联调:将软件和硬件结合,进行系统联调。
    • 问题排查:解决调试过程中发现的问题。
  8. 测试修改

    • 功能测试:进行全面的功能测试,确保系统正常工作。
    • 性能测试:测试系统的性能指标,如响应时间、稳定性等。
    • 修改完善:根据测试结果进行修改和完善。
  9. 用户试用

    • 用户反馈:将系统交付用户试用,收集用户反馈。
    • 最终修改:根据用户反馈进行最终修改,确保系统满足用户需求。

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 烧写程序

  • 点击“烧写”按钮:点击“烧写”按钮,将程序烧写到单片机中。
  • 检查烧写结果:烧写完成后,检查烧写结果窗口,确保程序成功写入。

http://www.kler.cn/a/411280.html

相关文章:

  • 星火一号开发板总结
  • 所有位运算 详解
  • Linux—进程概念学习-03
  • 深入了解决策树---机器学习中的经典算法
  • webrtc音频模块介绍(二) ADM
  • ARM CCA机密计算安全模型之概述
  • C语言数据结构——详细讲解《栈》
  • 【docker集群应用】Docker常用命令
  • ubuntu 连不上网 桌面 右上角没有网络图标 Ubuntu复制后虚拟网络失效问题
  • Error executing a python function in exec_func_python() autogenerated
  • C++ 二叉搜索树(Binary Search Tree, BST)深度解析与全面指南:从基础概念到高级应用、算法优化及实战案例
  • 基于DVB-T的COFDM+16QAM+LDPC图传通信系统matlab仿真,包括载波同步,定时同步,信道估计
  • Unity中动态生成贴图并保存成png图片实现
  • SAR ADC系列15:基于Vcm-Base的开关切换策略
  • 二叉树的层次遍历
  • web组态可视化编辑器
  • 网上蛋糕售卖店管理系(Java+SpringBoot+MySQL)
  • Web 表单开发全解析:从基础到高级掌握 HTML 表单设计
  • 【真实场景面试问题-2】
  • pwn——test_your_nc1——测试
  • 使用 Django 构建支持 Kubernetes API 测试连接的 POST 接口
  • 【Linux系统编程】第五十弹---构建高效单例模式线程池、详解线程安全与可重入性、解析死锁与避免策略,以及STL与智能指针的线程安全性探究
  • 使用Python和Pybind11调用C++程序(CMake编译)
  • Linux下通过DRM操作屏幕,发生行对齐 (stride)问题
  • CSRF--跨站请求伪造
  • 计算机网络八股整理(一)