【单片机】51单片机学习笔记

【单片机】51单片机学习笔记

    • 第1、2章:概述
      • [1. 单片机的概述(位数和内核)](#1. 单片机的概述(位数和内核))
      • [2. 单片机命名规则](#2. 单片机命名规则)
      • [3. 单片机的各引脚功能](#3. 单片机的各引脚功能)
      • [4. 硬件结构](#4. 硬件结构)
      • [5. 存储器](#5. 存储器)
      • [6. 时钟(机器周期的计算)](#6. 时钟(机器周期的计算))
      • [7. 复位](#7. 复位)
    • [第3章 :基础](#第3章 :基础)
      • [1. keil目标文件后缀名](#1. keil目标文件后缀名)
      • [2. proteus中元器件的名称](#2. proteus中元器件的名称)
      • [3. 基本进制之间转换](#3. 基本进制之间转换)
      • [4. 数据类型](#4. 数据类型)
      • [5. 运算符](#5. 运算符)
      • [6. 基本控制语句](#6. 基本控制语句)
      • [7. 变量及存储方式](#7. 变量及存储方式)
    • 第4章:IO口
      • [1. IO口结构](#1. IO口结构)
      • [2. 功能和特点](#2. 功能和特点)
    • 第5章:数码管和键盘
      • [1. 数码管分类和显示方法](#1. 数码管分类和显示方法)
      • [2. 矩阵键盘的分类](#2. 矩阵键盘的分类)
      • [3. 去机械抖动方法](#3. 去机械抖动方法)
      • [4. 控制线的根数](#4. 控制线的根数)
    • 第6章:中断
      • [1. 51单片机中断源个数](#1. 51单片机中断源个数)
      • [2. 各中断对应引脚](#2. 各中断对应引脚)
      • [3. 中断嵌套](#3. 中断嵌套)
      • [4. 中断请求](#4. 中断请求)
      • [5. 中断响应](#5. 中断响应)
      • [6. 中断优先级处理原则](#6. 中断优先级处理原则)
      • [7. 中断相关寄存器(TCON、IE、IP)](#7. 中断相关寄存器(TCON、IE、IP))
      • [8. 中断入口地址](#8. 中断入口地址)
      • [9. 外部中断触发方式](#9. 外部中断触发方式)
    • 第7章:定时/计数器
      • [1. 定时器/计数器核心部件](#1. 定时器/计数器核心部件)
      • [2. 实质](#2. 实质)
      • [3. 不同功能脉冲来源](#3. 不同功能脉冲来源)
      • [4. 定时器相关寄存器(TMOD)](#4. 定时器相关寄存器(TMOD))
      • [5. 计数时所对应的引脚编号](#5. 计数时所对应的引脚编号)
      • [6. 总结](#6. 总结)
    • 第八章:串口
      • [1. 51单片机串口概述](#1. 51单片机串口概述)
      • [2. 相关寄存器](#2. 相关寄存器)
      • [3. 工作方式](#3. 工作方式)
      • [4. 接收发送完成后判断条件](#4. 接收发送完成后判断条件)
    • 第九章:数模转换
      • [1. LCD1602显示内容多少](#1. LCD1602显示内容多少)
      • [2. 每行的起始地址](#2. 每行的起始地址)
      • [3. ADC和DAC的功能](#3. ADC和DAC的功能)
      • [4. DAC0832](#4. DAC0832)
      • [5. 10位ADC分辨率的计算](#5. 10位ADC分辨率的计算)

第1、2章:概述

1. 单片机的概述(位数和内核)

  • 8位、内核8051

2. 单片机命名规则

  • 前缀:表示是哪家公司的产品
  • 型号:9代表内部含 FLASH,C代表 CMOS 产品,LV 代表低电压,S 代表可串行下载。XXXX代表型号数字,如 51、52
  • 后缀 :4个参数,分别是速度(单位 MHz)、封装、温度范围、处理工艺
    例如 AT89C51-12PI:
    • AT:该单片机是 ATMEL 公司
    • 9:含 FLASH 存储器单片机
    • C:CMOS 产品
    • 51:型号
    • 12:12MHz
    • P:塑料双列直插 DIP 封装
    • I:是工业用产品,温度范围为 -40~+125℃
    • 按标准处理工艺生产

3. 单片机的各引脚功能

  • 40个引脚,可分为4类:电源(2个)、时钟(2个)、控制(4个)、IO口(32个)
  • 电源:VCC、GND
    • GND:20号引脚,接地
    • VCC:40号引脚,+5V 电压
  • 时钟:XTAL(External Crystal Oscillator,外部晶振)
    • XTAL1:19号引脚,接外部晶体和微调电容的一端。在芯片内部是振荡电路反相放大器的输入端。
    • XTAL2:18号引脚,接外部晶体和微雕电容的另一端。在芯片内部是振荡电路反相放大器的输出端。
  • 控制:RST、EA、ALE、PSEN
    • RST(Reset):9号引脚,复位,是单片机和系统中的其他部件处于某种确定的初始状态。复位后程序从 0000H 开始执行。复位有上电复位和开关复位。
      • 复位后内部寄存器:SP 为 07H、P0~P3 为 FFH
    • EA/VPP:31号引脚,内部和外部程序存储器选择信号。当 EA 为高电平时,CPU 从片内程序存储器取指令执行,地址超过 0FFFH 后自动转向片外程序存储器。当 EA 为低电平时,CPU 只从片外程序存储器取指令,对片内 EPROM 编程时,该脚接 21V 编程电压 VPP。
    • ALE(Address Latch Enable):30号引脚,地址锁存信号。与PROG(编程脉冲输入端)共用一个引脚。在访问外部存储器时,自动输出信号锁存 P0 地址。在非访问外部存储器时,ALE 引脚会以时钟频率的六分之一输出脉冲,可用作系统中其他芯片的时钟源。
    • PSEN(Program Store Enable):29号引脚,低电平时有效,访问外部存储器的选通信号。当 AT89C51 由外部程序存储器取指令(或数据)时,每个机器周期两次 PSEN 有效,即输出两个脉冲。在执行片内程序指令和访问外部数据时不产生信号。
  • IO口:四个双向的8位并行IO端口,P0、P1、P2、P3

4. 硬件结构

  • 内部结构框图:1个 8 为CPU、4KB FLASH ROM、128B RAM、2个16位定时器/计数器、4个8位并行IO端口、1个串行口、中断系统以及特殊功能寄存器(SFR)
  • CPU:
    • 运算器:
      • 算数 / 逻辑部件 ALU
      • 累加器 ACC
      • 程序状态字寄存器 PSW
      • 暂存寄存器
      • 寄存器 B
    • 控制器
      • 程序计数器 PC
      • 指令寄存器 IR
      • 指令译码器 ID
      • 定时控制与条件
      • 转移逻辑电路

5. 存储器

  • 物理结构:分为四个物理独立存储空间,即 片内、片外数据存储器,片内、片外程序存储器。
  • 存储器结构:
    • 程序存储区(ROM),也成为 CODE 区,常用来存放可执行代码。
      • 片内 ROM:根据单片机的型号不同,片内 ROM 的大小有所不同。片内 4KB。
      • 片外 ROM:可通过扩展的方式(在外部扩展)。可扩展 64 KB。
    • 数据存储器(RAM),存放单片机运行时的数据,断电数据即清空。低128字节为真正的RAM区,高128字节为特殊功能寄存器。

6. 时钟(机器周期的计算)

  • 时钟周期:也称振荡周期,即振荡器的振荡频率的倒数。 例如 晶振为 f_osc=12MHz,

    则时钟周期为 1 / 12000000 s = 1 / 12000 ms = 1 / 12 μs

  • 机器周期:执行一条指令的过程可分为若干个阶段,每一阶段完成一规定的操作,完成一个规定操作所需要的时间称为一个机器周期。
    • 1 机器周期 = 12 时钟周期 = 1 μs
  • 指令周期:执行一条指令所用的时间。
    • 指令周期通常为 1-4 个机器周期。

7. 复位

  • 当外界给 RST(9号引脚)一小段高电平,单片机就会复位。
  • 复位有两种:上电复位和开关复位。

第3章 :基础

1. keil目标文件后缀名

  • .c(C文件)
  • .hex(执行文件)
  • .uvproj(工程文件)
  • .asm(汇编文件)

2. proteus中元器件的名称

  • 晶振:crystal
  • 电容:capacitor
  • 电阻:resistor
  • 按键:button
  • 灯:led
  • 电源:power
  • 接地:ground

3. 基本进制之间转换

十进制 二进制 八进制 十六进制
0 0000 0 0
1 0001 1 1
2 0010 2 2
3 0011 3 3
4 0100 4 4
5 0101 5 5
6 0110 6 6
7 0111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F

4. 数据类型

  • bit 位标量:是 C51 编译器的扩充数据类型。
  • sfr 特殊功能寄存器,占 1个内存单元。
  • sfr16 16位特殊功能寄存器,占 2个内存单元。
  • sbit 可录址位,利用它能访问芯片内部RAM中的可寻址位或特殊功能寄存器中的可寻址位。
数据类型 长度 值域
unsigned char 单字节 0~255
signed char 单字节 -128~+127
unsigned int 双字节 0~65536
signed int 双字节 -32768~+32767
unsigned long 四字节 0~4294967295
signed long 四字节 -2147483648~+2147483647
float 四字节 1.175494E-38~3.402823E38
double 四字节 1.175494E-38~3.402823E38
* 1~3字节 对象的地址
bit 0或1
sfr 单字节 0~255
sfr16 双字节 0~65535
sbit 0或1

5. 运算符

  1. 算术运算符:用于各类数值运算。包括 +、-、*、/、%、++、--
  2. ++关系运算符: >、<、==、 >=、<= 、!=++
  3. ++逻辑运算符: &&、||、!++
  4. ++位操作运算符: &、|、~、^、<<、>>++
  5. 赋值运算符: =、+=、-=、*=、/=、%=、&=、|=、^=、>>=、<<=
  6. 条件运算符:?:
  7. 逗号运算符: ,
  8. 指针运算符: *、&
  9. 求字节数运算符:sizeof
  10. 特殊运算符:()、[]、→、.

6. 基本控制语句

  • 条件判断语句:if 语句、switch语句;
  • 循环控制语句:do while语句、while语句、for语句;
  • 转向语句:break语句、continue语句、return语句。

7. 变量及存储方式

  • 数组:int a[3] = {0, 1, 2};
  • 字符:char a = 'A';
  • 指针:int * i_pointer;
  • 常用变量类型,其中 1和2 可以快速存取数据,常用来存放临时性的传递变量或使用频率较高的变量:
    1. data:片内 RAM 的低 128 字节。
    2. bdata:可寻址位的片内 RAM。
    3. idata:整个片内 RAM。
    4. xdata:片外存储区(64KB)。
    5. pdata:属于 xdata 类型。由于它的高字节保存在 P2 口中,只能寻址 256 字节。
    6. code:ROM 内,数据不会丢失。
  • 存储模式:
    1. SMALL 模式:如果不做特别说明,参数及局部变量默认为 data 型,放在片内 RAM 128字节内,访问迅速。
    2. COMPACT 模式:不做特别说明,参数及局部变量默认为 pdata ,栈空间在内部 RAM。
    3. LARGE 模式:参数及局部变量默认为 xdata,使用 DPTR(Data Pointer,数据指针寄存器) 寻址,访问效率低。

第4章:IO口

1. IO口结构

  • 共有 4 个 8 位并行端口,分别命名为 P0、P1、P2、P3,共 32 根 IO 线。每个IO端口都由 1 个 8 位数据锁存器(用于输出)和 1 个 8 位数据缓冲器(用于输入)组成,属于 21 个特殊功能寄存器中的 4 个,对应内部 RAM 地址分别为 80H、90H、A0H、B0H。
  1. P0 口(80H):
    • P0 口是双向8位三态(高电平、低电平、高阻态) IO 口,单位地址为 80H,位地址范围是 80H - 87H。
    • 组成:1个数据输出锁存器、2个三态数据输入缓冲器、1个多路转换开关MUX、数据输出驱动、控制电路。
    • P0 口是真正的双向 IO 口,具有较大的负载能力。
    • 51 单片机 P0 口内部没有上拉电阻,为高阻状态,因此该组 IO 口在使用时必须外接上拉电阻。
  2. P1 口(90H):
    • P1 口是一个准双向口,字节地址为 90H,位地址范围是 90H - 97H。
    • 组成:1个数据输出锁存器、2个数据输入缓冲器、输出驱动电路。
    • 对于通常的 51 内核单片机而言,P1 口是单功能端口,只能作为通用的 IO 端口。
    • 作为通用 IO 口使用,它能读引脚和读锁存器,也可用于 "读 - 修改 - 写"。输入时,先写入 "FF"。
  3. P2 口(A0H):
    • P2 口是双功能口,字节地址为 A0H,位地址为 A0H - A7H。
    • 组成:1个数据输出锁存器、2个三态数据输入缓冲器、1个多路转接开关 MUX、输出驱动电路。
    • 8位 IO 口每个口可独立控制,内带上拉电阻,与 P1 口相似。
  4. P3 口(B0H):
    • P3 口是多用途准双向口,字节地址为 B0H,位地址为 B0H - B7H。
    • 组件:1个数据输出锁存器、3个三态数据输入缓冲器、输出驱动电路由 "与非门"、场效应管(FET)和内部上拉电阻。
    • 每个口可独立工作,内带上拉电阻,该口作为输入使用前,要先进行写 1 操作,使 FET 截止。

2. 功能和特点

  1. P0 口:
    • 功能:
      1. P0 口可以作为通用 IO 接口使用,P0.0 - P0.7 用于传送输入 / 输出数据。输出数据时,可以得到锁存,不需外接专用锁存器;输入数据可以得到缓冲。
      2. P0.0 - P0.7 在 CPU 访问片外存储器时用于传送片外存储器的低 8 位地址,然后传送 CPU 对片外存储器的读写数据。
    • 特点:
      1. P0 口为双功能口 ------ 地址 / 数据复用口和通用 IO 口。
      2. 当 P0 口作为地址 / 数据复用口时,是一个真正的双向口,用作外扩存储器,输出低 8 位地址和输入 / 输出 8 位数据。
      3. 当 P0 口用作通用 IO 口时,由于需要在片外接上拉电阻,端口不存在高阻抗(悬浮)状态,因此是一个准双向口。
      4. 为保证引脚信号正确读入,应首先向锁存器写 "1";当 P0 口由原来的输出状态转变为输入状态时,应首先置锁存器为 "1"。
      5. P0 口作为地址 / 数据复用口时,就不能再作为通用 IO 口使用。
  2. P1 口:
    • 只能作为通用 IO 口使用,无特别功能。
  3. P2 口:
    • 功能:
      1. 作为通用 IO 使用,为准双向口,无需上拉电阻。
        • 输出 1:Q 输出 1,场效应管截止,上拉输出高电平。
        • 输出 0:Q 输出 0,场效管导通,输出低电平。
        • 输入时,该口在作为输入使用前,要先进行写 1 操作,使 FET(Field-Effect Transistor,场效应晶体管) 截止。
      2. 作为地址总线,与 P0 口引脚的第二功能配合,用于输出片外存储器的高 8 位地址。
  4. P3 口:
    • 功能:
      1. 作为普通 IO 口使用,其功能和原理与 P1 口相同。
      2. 作为控制和特殊功能口使用。P3 口每一个引脚的第二功能如下: P3.0---RXD 串行数据接收口

        P3.1---TXD 串行数据发送口

        P3.2---INT0 外部中断0输入

        P3.3---INT1 外部中断1输入

        P3.4---T0 计数器0计数输入

        P3.5---T1 计数器1计数输入

        P3.6---WR 外部RAM写选通信号

        P3.7---RD 外部RAM读选通信号

第5章:数码管和键盘

1. 数码管分类和显示方法

  • 分类:按内部结构分为:共阳极数码管(0亮1灭)、共阴极数码管(1亮0灭)

  • 显示方法:

    • 静态显示:
      • 数码管显示某一字符时,相应的发光二极管恒定导通或恒定截止,公共端恒定接地(共阴极)或接电源(共阳极)。
      • 优点:显示控制程序简单,显示亮度大,节约单片机工作时间。
      • 缺点:在显示位数较多时,静态显示占用的 IO 口线较多,或者需要增加额外的硬件电路,硬件成本较高。
    • 动态显示:
      • 一位一位地轮流点亮各位数码管的显示方式,每个数码管点亮时间大概是 1ms。
      • 优点:可以大大简化硬件线路。
      • 缺点:要循环执行显示程序,对各个数码管动态扫描,消耗单片机较多的运行时间;在显示器位数较多或刷新间隔较大时,有一定的闪烁现象,显示亮度较暗。
  • 数码管显示排列

  • 八段共阴数码管显示数据表

    字型 dp g f e d c b a 段码
    0 0 0 1 1 1 1 1 1 0X3f
    1 0 0 0 0 0 1 1 0 0X06
    2 0 1 0 1 1 0 1 1 0X5b
    3 0 1 0 0 1 1 1 1 0X4f
    4 0 1 1 0 0 1 1 0 0X66
    5 0 1 1 0 1 1 0 1 0X6d
    6 0 1 1 1 1 1 0 1 0X7d
    7 0 0 0 0 0 1 1 1 0X07
    8 0 1 1 1 1 1 1 1 0X7f
    9 0 1 1 0 1 1 1 1 0X6f

2. 矩阵键盘的分类

  • 键盘分为编码键盘和非编码键盘(靠软件编程来识别的键盘)。
  • 按键包括独立按键和矩阵按键。
    • 独立键盘分类:直插式弹性小按键、贴片式小按键、自锁式小案件。

3. 去机械抖动方法

  • 软件延时消抖(常用)

    c 复制代码
    // 检测按键是否按下
    if (key == 0) {		// 当检测到按键按下(key为低电平)时执行以下代码
        delay(10);		// 软件延时消抖
        
        // 再次检测按键状态,确认是否为有效按下(避免抖动导致的误触发)
        if (key == 0) {     
            // 此处省略号表示按键按下后的具体执行逻辑(例如控制某个设备、切换状态等)
            ...
            
            // 等待按键释放:循环检测直到key变为非0(即按键松开)
            while (!key);   // 阻塞式等待按键释放,确保一次按键操作只处理一次
        }
    }
  • 硬件消抖

4. 控制线的根数

  • 已知 M 行 * N 列,计算方式为:M + N

    4×4 矩阵键盘需要 4+4=8 根控制线

    3×5 矩阵键盘需要 3+5=8 根控制线

  • 已知 n 个按键,计算方式为:2√n

    16 个按键需要 2 × √16 = 8 根控制线(相当于4×4矩阵)

第6章:中断

1. 51单片机中断源个数

  • 5个中断源,分别是 2 个外部、2 个定时器、1 个串口

2. 各中断对应引脚

中断号 中断名称 触发来源 描述 对应引脚
0 INT0(外部中断 0) 外部信号 外设通过引脚触发中断 P3.2
1 定时器 0 Timer0 溢出 Timer0 溢出触发中断 P3.4
2 INT1(外部中断 1) 外部信号 另一路外部中断 P3.3
3 定时器 1 Timer1 溢出 Timer1 溢出触发中断 P3.5
4 TX/RX 串口接收/发送完成 收发完成触发中断 3.0/3.1

3. 中断嵌套

  • 中断优先级高的中断请求可以中断 CPU 正在处理的优先级更低的中断服务,待处理完中断优先级高的服务程序之后再继续执行被打断的优先级的中断服务程序。

  • 默认情况下,8051 不支持中断嵌套。

4. 中断请求

  • 要求中断处理发出的标志信号称为中断请求。

5. 中断响应

  • 是 CPU 对中断源中断请求的响应,包括保护断点和将程序转向中断响应后的入口地址。

  • 中断响应条件:

    1. 中断源有中断请求。
    2. 中断总允许位 EA = 1。
    3. 发出中断请求的中断源的中断允许控制位为 1。
  • 中断响应过程:

    • 包括保护断点和将程序转向中断服务程序的入口地址。

    • 入口地址由硬件事先设定(中断源对应 TCON、SCON):

      中断号 中断源 中断名称 入口地址(中断矢量地址) 中断级别
      0 IE0 外部中断 0 0003H 最高优先级
      1 TF0 定时/计数器 0 中断 000BH
      2 IE1 外部中断 1 0013H
      3 TF1 定时/计数器 1 中断 001BH
      4 RI、TI 串行口中断 0023H 最低优先级

6. 中断优先级处理原则

  1. 低优先级中断源可被高优先级中断源中断,而高优先级中断源不能被任何中断源所中断。
  2. 一种中断源一旦得到响应,与它同级的中断源不能再中断它。
  3. 当同时收到同一优先级的中断时,响应哪一个中断源取决于同级自然优先顺序。
  4. 中断优先级由上表所示。

7. 中断相关寄存器(TCON、IE、IP)

  • 四个中断寄存器:2个中断请求标志寄存器(TCON 、SCON)、1个中断允许控制寄存器(IE )、1个中断优先级控制寄存器(IP

  • 定时器/计数器控制寄存器 TCON(88H)

    • 同时锁存 T0、T1 溢出中断源标志、外部中断请求标志。

    • TCON 是中断 "触发方式" 和 "是否发送" 的控制面板

    • IT0 / IT1 表示触发方式,可以选择 0 / 1(低电平触发 / 下降沿触发)

    • IE0 / IE1 表示是否发生中断

      位序号 TCON 位地址 描述
      D0 IT0 88H 选择外部中断请求 0 为边沿触发或电平触发方式的控制位。
      D1 IE0 89H 外部中断 0 的中断申请标志。
      D2 IT1 8AH 选择外部中断请求 1 为边沿触发或电平触发方式的控制位。
      D3 IE1 8BH 外部中断 1 的中断申请标志。
      D4 TR0 ---
      D5 TF0 8DH 片内定时器/计数器 0 溢出中断申请标志。
      D6 TR1 ---
      D7 TF1 8FH 片内定时器/计数器 1 溢出中断申请标志。
  • 串行口控制寄存器 SCON

    • SCON 的低 2 位锁存串行口的接收中断和发送中断标志。

      位序号 SCON 描述
      D0 RI 串行口的发送中断标志。
      D1 TI 串行口的接收中断标志。
      D2 --- ---
      D3 --- ---
      D4 --- ---
      D5 --- ---
      D6 --- ---
      D7 --- ---
  • 中断允许寄存器 IE(A8H)

    • 51 单片机对中断的开放或屏蔽,是由片内的中断允许寄存器 IE 控制的。

    • 各位 0 为禁止,1 为开放。

      位序号 IE 位地址 描述
      D0 EX0 A8H 允许或禁止外部中断 0 (INT0)中断。
      D1 ET0 A9H 允许或禁止定时器 / 计数器 0 溢出中断。
      D2 EX1 AAH 允许或禁止外部中断 1 (INT1)中断。
      D3 ET1 ABH 允许或禁止定时器 / 计数器 1 溢出中断。
      D4 ES ACH 允许或禁止串行口中断。
      D5 ET2 ADH ---
      D6 --- --- ---
      D7 EA AFH CPU 的中断开放 / 禁止总控制位。
  • 中断优先级寄存器 IP(B8H)

    • 51 单片机设有两级优先级,即高优先级中断(1)和低优先级中断(0)。

      位序号 IP 位地址 描述
      D0 PX0 B8H 外部中断 0 中断优先级控制位。
      D1 PT0 B9H 定时器 / 计数器 T0 中断优先级控制位。
      D2 PX1 BAH 外部中断 1 中断优先级控制位。
      D3 PT1 BBH 定时器 / 计数器 T1 中断优先级控制位。
      D4 PS BCH 串行口中断优先级控制位。
      D5 --- --- ---
      D6 --- --- ---
      D7 --- --- ---

8. 中断入口地址

见本章第5节中断响应。

9. 外部中断触发方式

  1. 电平触发:TCON 中 IT0 / IT1 值为 0,低电平触发
  2. 下降沿触发:TCON 中 IT0 / IT1 值为 1,脉冲有效

第7章:定时/计数器

1. 定时器/计数器核心部件

  • 片内有 2 个 16 位可编程的定时器 / 计数器,简称 T0 和 T1。它们都是二进制加法计数器,当计数器计满归 0 是,能自动产生溢出中断请求,表示定时时间已到或计数终止。
  • ++核心部件是二进制加 1 计数器(TH0、TL0 或 TH1、TL1)++
  • 特殊功能寄存器 TMOD 是工作方式寄存器,用于选择 T0、T1 的工作模式和工作方式。
  • 特殊功能寄存器 TCON 是控制寄存器,用于控制 T0、T1 的启动和停止计数,同时包含 T0、T1 的状态。

2. 实质

  • 实质是二进制加 1 计数器(16位),由高 8 位(THX)和低 8 位(TLX)两个寄存器组成。
  • 通过技术脉冲来累加计数值,直到溢出,从而产生中断信号或执行特定任务。
    • 定时:由系统的时钟振荡器输出脉冲经12分频后送来。
    • 计数:由 T0 或 T1 引脚输入的外部脉冲源。

3. 不同功能脉冲来源

模式 脉冲来源 说明 对应引脚
定时器 内部时钟脉冲(机器周期脉冲) 对周期性的定时脉冲进行计数 ---
计数器 相应的外部输入引脚 负跳变(下降沿)有效,供计数器进行加法计数。 T0 为 P3.4 T1 为 P3.5

4. 定时器相关寄存器(TMOD)

  • TMOD 用于控制定时器 / 计数器的工作模式及工作方式,其字节地址为 89H。

  • 低 4 位决定 T0 的工作方式,高 4 位决定 T1 的工作方式。

    • GATE:门控位。

      • 0:以 TRx 来启动定时器 / 计数器运行。
      • 1:用外部中断引脚上的高电平和 TRx 来启动定时器 / 计数器运行。
    • C/T:定时器模式和计数器模式选择位。

      • 0:定时工作方式。
      • 1:计数工作方式。
    • M1、M0:工作方式选择位,确定所选工作方式。共有 4 种工作方式。

      M1 M0 工作方式 备注 最大计数值
      0 0 方式0 13 位计数器,使用了 TLX(低5位)和 THX(8位)。 M = 2¹³ = 8192
      0 1 方式1 16 位计数器,使用了TLX( 8位)和 THX(8位)。 M = 2¹⁶ =65536
      1 0 方式2 8 位自动装载计数器,TL 溢出时自动装载成 TH 的值 M = 2⁸ = 256
      1 1 方式3 T0 为 2 个 8 位计数器,T1 停止工作。 M = 2⁸ = 256

5. 计数时所对应的引脚编号

见本章第三节。

6. 总结

可以把定时器/计数器想象成一个自动计数的电子闹钟。

  • TMOD 告诉它是用秒表模式。
  • THx/TLx 设定起始时间值。
  • TRx(见中断中的TCON)是开始按钮。
  • TFx(见中断中的TCON)是 "滴------响了" 的提示。
  • TCON 是总控开关板。

第八章:串口

1. 51单片机串口概述

  • 51单片机的串行口是一个 全双工 的 **异步串行通信 **接口,可以同时发送和接收数据。

2. 相关寄存器

  • SCON(Serial Port Control Register):串口控制寄存器,地址位 98H。

    位序号 SCON 位地址 描述
    0 RI 98H 接收中断标志,为 1 表示接收到数据。必须手动清 0。
    1 TI 99H 发送中断标志,为 1 表示发送完毕。必须手动清 0。
    2 RB8 9AH 接受的第 9 个数据位。
    3 TB8 9BH 发送的第 9 个数据位。
    4 REN 9CH 允许串行接收位。1 为允许,0 为不允许。
    5 SM2 9DH 多机通信控制位。
    6 SM1 9EH 串口工作方式低位,配合 SM0 设置串口模式。
    7 SM0 9FH 串口工作方式高位,配合 SM1 设置串口模式。
  • SBUF(Serial Buffer):串口数据缓冲器,发送时写入数据,接收时读取数据。

3. 工作方式

  • SM0、SM1:串行口的4种工作方式选择位。

    SM0 SM1 工作方式 功 能 波 特 率
    0 0 0 同步移位寄存器 fosc/12
    0 1 1 10位异步收发(8位数据)常用 可变,由定时器控制
    1 0 2 11位异步收发(9位数据) fose/64或fose/32
    1 1 3 11位异步收发(9位数据) 可变,由定时器控制

4. 接收发送完成后判断条件

  • 发送完成:TI 为 1,表示发送完成,可以发送下一字节,需手动清 0。
  • 接收完成:RI 为 1,表示接收到数据,需手动清 0。

第九章:数模转换

1. LCD1602显示内容多少

  • 显示 2 行,每行 16 个字符,共 32 个字符。

2. 每行的起始地址

  • 第一行起始地址:0x00;地址范围:0x00 ~ 0x0F(共 16 个地址)
  • 第二行起始地址:0x40;地址范围:0x40 ~ 0x4F(共 16 个地址)

3. ADC和DAC的功能

  • ADC:模数转换器,将模拟信号(如电压)转为数字信号。
  • DAC:数模转换器,将数字信号转为模拟信号。

4. DAC0832

  • DAC0832 是一个 8 位 D/A 转换器芯片,单电源供电。
  • 输入范围:0 ~ 255。
  • 输出:对应的模拟电压,比例线性变化。

5. 10位ADC分辨率的计算

已知电压变化范围(5V,10V,2V到8V等),位数 n 为10位。求分辨率。

分辨率 = 参考电压 2 n 分辨率 = \frac {参考电压}{2^n} 分辨率=2n参考电压

如果电压为 5V,则

分辨率 = 5 V 2 10 = 5 V 1024 ≈ 4.88 m V 分辨率 = \frac{5V}{2^{10}}=\frac{5V}{1024}≈4.88mV 分辨率=2105V=10245V≈4.88mV

即最小可区分 4.88 mV 的电压差。

相关推荐
叶子爱分享1 小时前
如何高效的学习算法与数据结构
学习
Peter_Deng.1 小时前
单片机 - STM32F407 ADC 模式详解:单次转换、连续转换、扫描模式、非扫描模式
stm32·单片机·嵌入式硬件
iFulling2 小时前
【单片机】51单片机练习代码
单片机·嵌入式硬件·51单片机
m0_719817113 小时前
Linux运维新人自用笔记(用虚拟机Ubuntu部署lamp环境,搭建WordPress博客)
linux·学习
华普微HOPERF4 小时前
让温度“说话”,数字温度传感器如何智能感知温度?
科技·单片机·嵌入式硬件·物联网·智能家居
iCxhust4 小时前
PC16550 UART接收中断处理完整示例代码
c语言·开发语言·stm32·单片机·嵌入式硬件
NEWEVA__zzera224 小时前
记录存储的使用
经验分享·单片机
小馒头君君5 小时前
近期GitHub热榜推荐
开发语言·windows·python·学习·github
YONYON-R&D6 小时前
STM32L431中,低功耗模式下的仿真调试功能受到限制
单片机·嵌入式硬件