单片机复(预)习
(主要是单片机的一些概念,里边没有硬核内容和大量代码
(我也写不出来( ゚∀。)
A. 导论
A.1. 8051单片机有哪些硬件资源?
-
中央处理器(CPU)
-
程序存储器(只读存储器,ROM)
-
数据存储器(随机存取存储器,RAM)
-
定时/计数器
-
并行、串行接口
-
中断系统
-
总线(三条)
- 数据总线
- 地址总线
- 控制总线
A.1.1 CPU
-
主要是做什么的?
- CPU主要完成**取指令、翻译指令、执行指令等工作,同时负责控制、指挥和调度整个单元系统协调工作,完成运算和控制输入输出功能**等操作。
-
8051是8位数据宽度的处理器,能处理8位二进制数据或代码
A.1.2 RAM
- 256个8位数据单元,分为128个8位用户数据存储单元和128个专用寄存器单元
A.1.4 ROM
- 4kb,可扩展至64kb。用于存放用户程序、原始数据或表格
A.1.5 定时/计数器
- 两个16位、可编程的定时器(即
T0,T1
)
A.1.6 中断
5个中断,分别是:
- 外部中断(两个)
INT0,INT1
- 定时器中断 2个
- 串口中断 1个
51单片机有两个优先级。
A.2 进制转换
A.2.1 BIN to HEX
直接上暴力解法,一个一个推
BIN / BCD code | HEX, DEC |
---|---|
0000 |
0 |
0001 |
1 |
0010 |
2 |
0011 |
3 |
0100 |
4 |
0101 |
5 |
0110 |
6 |
0111 |
7 |
1000 |
8 |
1001 |
9 |
1010 |
A (10) |
1011 |
B (11) |
1100 |
C (12) |
1101 |
D (13) |
1110 |
E (14) |
1111 |
F (15) |
A.2.2 DEC to HEX
使用短除法求16进制数。
A.3 C语言的位运算
位运算符和位运算表达式就是指针对某一个变量或数值对其所在内存中的bit位进行运算。
位运算操作符:
- and & 按位与运算
- or | 按位或运算
- not ~ 按位取反
- << 左移一位
- >> 右移一位
可以将它们用等号组合起来:
(这里只讨论在单片机应用最多的几个复合按位运算符)
复合按位运算符
-
|= 先进行按位或运算再赋值。
-
作用:不改变参与运算的变量的值。
-
如:
unsigned int x = 0011 0010; unsigned int y = 1010 1010; x |= y; //输出:x == 1011 1010 //x被赋值后仍然保留了原来每个位的值(1值不变),不信自己一位一位的对照 //y的值也保留了
-
-
=~ 先取反再赋值
A.4 C51
c51有一些特有的关键字可以使用。
一些关键字的解释:
- code: 把数据写入ROM(程序存储器)
- data: 写入数据RAM(数据存储器)
A.5 引脚
-
AT89C51有40个管口,32个IO口。
-
靠缺口侧是第一个(P1.0);第一个引脚是P1.0,最后一个引脚是VCC,P0.0是第39个(倒数第二个)
-
引脚内部上拉电阻的作用:
对相应的引脚写1时,上拉电阻变为高电平,将该引脚作为输入口使用。
A.6 LED
原理:电子与空穴复合时能辐射出可见光。
电压特性 | 电压参数 | 电流特性 | 电流参数 |
---|---|---|---|
开启电压 | 2V | 正向电流 | 10-20mA |
反向击穿电压 | 5V | 亮度与电流成正比时 | 3-10mA |
工作电压 | 3V | 最大电流 | 30mA |
超过30mA时,会导致LED烧坏,这也是串联一个电阻的原因。(限流)
B. 数码管
B.1 共阴共阳
按LED单元连接方式可分为共阳极数码管和共阴极数码管。
- 共阳极:
- 阳极全接在一起(VCC);各个阴极分开,有独自的线,最终连着单片机管脚,因此低电平有效
- 阳极VCC,阴极分开接,低电平有效
- 共阴极:
- 阴极GND,阳极分开接,高电平有效
B.2 通过芯片控制数码管
-
可以通过74HC245来控制显示内容
-
可以通过74HC138(38译码器)进行位选(即控制哪组LED发亮)
-
数码管的动态显示:
- 原理:数码管不断轮流显示,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。(移位套循环)
C. 按键
C.1 按键消抖
分为两种:
- 软件消抖
- 消抖程序(直接delay)
- 硬件消抖
- 使用电阻/电容
- 使用触发器
C.2 矩阵键盘
D. 中断
D.1 概念
D.1.1 什么是中断?
中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行
D.1.2 中断源
引起中断的事件(外部,定时/计数器,串口收发),有5个
D.1.3 中断嵌套
对中断优先级的相应处理。哪个中断的优先级高先做哪个
D.1.4 中断的响应与处理
有中断发生时,CPU会保存下一条指令执行的地址,转而到不同中断源的地址执行中断的程序,等中断的程序完成后再回来继续执行