一、入门篇
1.1基础知识
- 单片机:集成芯片(微处理器、存储器、输入/输出接口) 
  - CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;
- RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;
- ROM:用以存放程序、一些原始数据和表格;
- I/O口:四个8位并行I/O口,既可用作输入,也可用作输出;
- T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;
- 五个中断源的中断控制系统;
- 一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信;
- 片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最高振荡频率取决于单片机型号及性能。
 
- 功能实现:编程(C语言/汇编语言)
- 编程目的:控制芯片各引脚在不同时期输出不同电平(高电平/低电平),进而控制与单片机各个引脚相连接的外围电路的电气状态
- 芯片上的标号有特定意义
- 芯片封装 
  - DIP双列直插式封装
- PLCC带引线的塑料芯片封装
- QFP塑料方形扁平式封装和PFP塑料扁平组件式封装
- PGA插针网格阵列封装
- BGA球栅阵列封装
 
- 学习外围电路的设计与调试方法
1.2外部引脚介绍
- 基于8051内核的单片机,若引脚数相同或封装相同,引脚功能相通
- 常用40脚DIP封装(有20、28、32、44等不同引脚数)


- 总线:总线(BUS)是计算机各部件之间传送信息的公共通道。微机中有内部总线和外部总线两类。内部总线是CPU内部之间的连线。外部总线是指CPU与其它部件之间的连线。 外部总线有三种: 数据总线DB(Data Bus), 地址总线 AB(Address Bus)和控制总线 CBControl Bus)。
- 区分芯片引脚序号(PDIP封装为例) 
  - 小圆坑/小标记——第一引脚
- 逆时针方向数引脚1-N
- 按功能类别 
    - 电源和时钟引脚:Vcc、GND、XTAL1、XTAL2等 
      - Vcc(40脚)、GND(20脚)——电源引脚,常压+5V,低压+3.3V
- XTAL1(19脚)、XTAL2(18脚)——外接时钟引脚,分别为片内振荡电路的输入、输出端
 
- 编程控制引脚:RST、PSEN▔、ALE/PROG▔、EA▔/Vpp等
- I/O口引脚:P0、P1、P2、P3,4组8位I/O口(每个口可独立控制) 
      - P0口(39脚-32脚)——双向8位三态I/O口,无上拉电阻,为高阻状态,一般外接10KΩ的上拉电阻
- P1口(1脚-8脚)——准双向8位I/O口,内带上拉电阻,无高阻状态,输入不能锁存,该口在作为输入使用前,要先向该口进行写1操作,然后单片机内部才可正确读出外部信号
- P2口(21脚-28脚)——与P1口相似
- P3口(10脚-17脚)——准双向8位I/O口,内带上拉电阻,第一功能与P1口相似,第二功能各引脚定义如下表,P3口的每一个引脚均可独立定义为第一功能的输入/输出或第二功能
 
 
- 电源和时钟引脚:Vcc、GND、XTAL1、XTAL2等 
      
 
| 标号 | 引脚 | 第二功能 | 说明 | 
| P3.0 | 10 | RXD | 串行输入口 | 
| P3.1 | 11 | TXD | 串行输出口 | 
| P3.2 | 12 | INT0▔ | 外部中断0 | 
| P3.3 | 13 | INT1▔ | 外部中断1 | 
| P3.4 | 14 | T0 | 定时器/计数器0外部输入端 | 
| P3.5 | 15 | T1 | 定时器/计数器1外部输入端 | 
| P3.6 | 16 | WR▔ | 外部数据存储器写脉冲 | 
| P3.7 | 17 | RD▔ | 外部数据存储器读脉冲 | 
1.3电平特性
- 数字电路电平特性:高电平、低电平
- 暂且定义单片机输出与输入为TTL电平(+5V等价逻辑1,0V等价逻辑0),高电平+5V,低电平0V;计算机串口为RS-232C电平(负逻辑电平),高电平-12V,低电平 +12V
- 计算机与单片机之间通信时要加电平转换芯片
1.4二进制与十六进制
- 二进制 
  - 逢二进一,借一当二
- 后缀B
- 当二进制数转换成十进制数时,从二进制数的最后一位起往前看,每一位代表的数为2的n次幂,n表示从最后起的第几位二进制数,从0算起,2n为位权 
 
- 十六进制 
  - 逢十六进一,借一当十六
- 后缀H
 

1.5二进制的逻辑运算
- 与 
  - 必须都有,否则就没有
- C语言中运算符为&
- 运算规则 
    - 0&0=0
- 0&1=1&0=0
- 1&1=1
 
- 运算符号
- C语言中&表示“按位与”,变量之间按二进制位数对应关系一一进行与运算
 
- 或 
  - 只要其中之一有就有
- C语言中运算符为|
- 运算规则 
    - 0|0=0
- 0|1=1|0=1
- 1|1=1
 
- 运算符号
- C语言中|表示“按位或”,变量之间按二进制位数对应关系一一进行或运算
 
- 非 
  - 求反
- C语言中运算符为!
- 运算规则 
    - !0=1
- !1=0
 
- 运算符号
- C语言中~表示“按位取反”,如~01010101=(10101010);!表示对单一位进行运算
 
- 运算符号

- 同或 
  - 必须相同,否则就没有
- 逻辑运算符为⊙
 
- 异或 
  - 必须不同,否则就没有
- 逻辑运算符为⊕
- C语言中有“按位异或”运算”^“
 
1.6单片机的C51基础知识介绍
- 基本数据类型
| 数据类型 | 关键字 | 所占位数 | 表示数的范围 | 
| 无符号字符型 | Unsigned char | 8 | 0~255 | 
| 有符号字符型 | Char | 8 | -128~127 | 
| 无符号整型 | Unsigned int | 16 | 0~65535 | 
| 有符号整型 | Int | 16 | -32768~32767 | 
| 无符号长整型 | Unsigned long | 32 | 0~232−1 | 
| 有符号长整型 | Long | 32 | -231~231−1 | 
| 单精度实型 | float | 32 | 3.4e-38~3.4e38 | 
| 双精度实型 | double | 64 | 1.7e-308~1.7e308 .. | 
| 位类型 | bit | 1 | 0~1 | 
- 数据类型扩充定义 
  - 单片机内部有很多特殊功能寄存器,每个寄存器在单片机内部都分配有唯一的地址,一般我们会根据寄存器功能的不同给寄存器赋予各自的名称,当我们需要在程序中操作这些特殊功能寄存器时,必须要在程序的最前面将这些名称加以声明,声明的过程实际就是将这个寄存器在内存中的地址编号赋给这个名称
- 特殊功能寄存器声明头文件 reg51.h
 - Sfr——特殊功能寄存器的数据声明,声明一个8位的寄存器
- Sfr16——16位特殊功能寄存器的数据声明
- Sbit——特殊功能位声明,也就是声明某一个特殊功能寄存器中的某一位
- Bit——位变量声明,当定义一个位变量时可使用此符号
 
- 常用头文件 
  - Reg51.h,reg52.h,math.h
 
- 运算符 
  - 算术运算符
 
| 算术运算符 | 含义 | 
| + | 加法 | 
| - | 减法 | 
| * | 乘法 | 
| / | 除法(或求模运算) | 
| ++ | 自加 | 
| -- | 自减 | 
| % | 求余运算 | 
- 关系(逻辑)运算符
| 关系(逻辑)运算符 | 含义 | 
| > | 大于 | 
| >= | 大于等于 | 
| < | 小于 | 
| <= | 小于等于 | 
| == | 测试相等 | 
| != | 测试不等 | 
| && | 与 | 
| || | 或 | 
| ! | 非 | 
- 位运算符
| 位运算符 | 含义 | 
| & | 按位与 | 
| | | 按位或 | 
| ^ | 异或 | 
| ~ | 取反 | 
| >> | 右移 | 
| << | 左移 | 
- 基础语句
| 语句 | 类型 | 
| if | 选择语句 | 
| while | 循环语句 | 
| for | 循环语句 | 
| switch/case | 多分支选择语句 | 
| do-wnile | 循环语句 | 
- 应该掌握的主要内容 
  - 最小系统运行的必要条件 
    - 电源
- 晶振
- 复位电路
 
 - 对单片机任意I/O口的操作 
    - 输出控制电平高低
- 输入检测电平高低
 
- 定时器 
    - 重点掌握最常用的方式2
 
- 中断 
    - 外部中断
- 定时器中断
- 串口中断
 
- 串口通信
 
- 最小系统运行的必要条件 
    












