一、入门篇
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.3VXTAL1(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口的每一个引脚均可独立定义为第一功能的输入/输出或第二功能
标号 | 引脚 | 第二功能 | 说明 |
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=00&1=1&0=01&1=1运算符号C语言中&表示“按位与”,变量之间按二进制位数对应关系一一进行与运算或 只要其中之一有就有C语言中运算符为|运算规则 0|0=00|1=1|0=11|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 |
算术运算符 | 含义 |
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 除法(或求模运算) |
++ | 自加 |
-- | 自减 |
% | 求余运算 |
关系(逻辑)运算符 | 含义 |
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
== | 测试相等 |
!= | 测试不等 |
&& | 与 |
|| | 或 |
! | 非 |
位运算符 | 含义 |
& | 按位与 |
| | 按位或 |
^ | 异或 |
~ | 取反 |
>> | 右移 |
<< | 左移 |
语句 | 类型 |
if | 选择语句 |
while | 循环语句 |
for | 循环语句 |
switch/case | 多分支选择语句 |
do-wnile | 循环语句 |