单片机
控制类单片机
MCU(Micro Controller Unit)--- 微控制器
MPU(Micro Process Unit)--- 微处理器
计算机构成:
输入设备、输出设备、控制器(CPU)、存储器、运算器 --- 内存、外存
这些全部放到一个芯片中,集成到一个芯片 --- 单片机
RAM(内存)
SRAM、DRAM、DDR3、DDR4、DDR5、LPDDR6....
ROM(只读存储器)
ROM、EPROM(点可擦除)、EEPROM
现在的单片机:
主流:STM32、51......
8051单片机
STC89C51 宏晶公司生产的 单片机
8051单片机内部的资源
其内部资源如下:
·8 位 CPU
·4kbytes 程序存储器(ROM) (52 为 8K)
·128bytes 的数据存储器(RAM) (52 有 256bytes 的 RAM)
·32 条 I/O 口线
·111 条指令,大部分为单字节指令
·21 个专用寄存器
·2 个可编程定时/计数器
·5 个中断源,2 个优先级(52 有 6 个)
·一个全双工串行通信口
·外部数据存储器寻址空间为 64kB
·外部程序存储器寻址空间为 64kB
·逻辑操作位寻址功能
·双列直插 40PinDIP 封装
·单一+5V 电源供电
51单片机内部
程序 --- 代码
数据 --- 数据 分开存储 ---- 哈佛架构
C语言 ---- 冯诺依曼体系架构 --- 程序和数据统一遍地
51单片机:
最小系统:
(1)晶振电路 相当于单片机的心跳
(2)复位电路 让单片机硬件可以重新开始
(3)电源电路 负责给单片机供电
(4)下载电路 负责给单片机中下载程序
单片机开发:
1.电路原理图
VCC电源 相当于正极
GND地 相当于负极
电容 储能、滤波
电阻
2.芯片数据手册 --- 寄存器
控制硬件
程序 ---> 最终烧录到单片机的存储器中(flash)---> 可以控制影响对应引脚的寄存器 ---> 寄存器关联到引脚上
51单片机中 TTL电平
高电平 --- 3.3v~5v
低电平 --- 0v
不同的电气标准
单片机
想要工作 最小系统 + 外围电路 => 开发板
灯闪烁:
加入延时
亮 延时 灭 延时
两种延时方式:
软件延时:通过代码消耗时间
硬件延时:借助定时器(单片机内部自带)
数码管:
共阴极数码管:将所有段的阳极(正极)连接到一起
共阳极数码管:将所有段的阴极(负极)连接到一起
控制数码管:
1.控制段
P0^(0~7) 控制对应abcdefg dp段
2.控制位
P2.2 P2.3 P2.4控制位
A0、A1、A2输入相当于3位2进制数,A0是低位,A1是次高位,A2是高位,而Y0~7具体哪一个输出有效电平,就看二进制对应的十进制数值
| A2 | A1 | A0 | |
| 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 |
| 0 | 1 | 0 | 2 |
| 0 | 1 | 1 | 3 |
| 1 | 0 | 0 | 4 |
| 1 | 0 | 1 | 5 |
| 1 | 1 | 0 | 6 |
| 1 | 1 | 1 | 7 |
原理:
1.通过原理图
P31 可以给初始值(高电平)
2.当按键按下时
P31接地,电势差改变,P31变为低电平
3.检测P31是否为低电平判断是否有按键按下
轮询:
while { if(k1) { }else { } }不断检测按键是否按下
按键去抖:
软件去抖
if(k1 == 0) { delay(); //抵消抖动时间 if(k1 == 0) { } }中断
中断处理过程
1.中断源发出中断请求
2.判断处理器是否允许中断和该中断是否被屏蔽
3.判断中断的优先级
4.将当前的指令执行完毕,保护现场
5.执行中断处理函数
6.恢复现场
处理函数需要程序员编写,其余CPU自己完成
需要初始化的: