目录
单片机的概念:
单片机(Single-Chip Microcomputer),也被称为单片微控制器(Microcontroller Unit,MCU),是一种集成电路芯片。它采用超大规模集成电路技术,将具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上,构成一个小而完善的微型计算机系统。
单片机的特点如下:
- 结构:单片机将计算机系统集成到一块芯片上,包含了计算机的主要部分,如CPU、RAM、ROM等,但与计算机相比,单片机只缺少了I/O设备。
- 发展历程:从上世纪80年代的4位、8位单片机,发展到现在的300M的高速单片机,单片机的性能得到了极大的提升。
- 应用领域:单片机在工业控制领域得到广泛应用,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。
- 主要特点:
- 系统结构简单,使用方便,实现模块化。
- 可靠性高,可工作到106 ~ 107小时无故障。
- 处理功能强,速度快。
- 低电压,低功耗,便于生产便携式产品。
- 控制功能强。
- 环境适应能力强。
STC89C52RC
STC89C52RC是一款基于8051架构的单片机芯片,由中国的STC公司生产。
命名规则:
用什么写代码?
C语言写代码,环境是keil软件。
用什么把代码放进单片机里面?
STC-ISP 是一款 单片机下载编程 烧录软件,是针对 STC系列单片机而设计的,可下载STC89系列、 12C2052系列和12C5410等系列的STC单片机,使用简便。 单片机通过type-C数据线和电脑连接(如果不识别,安装ch340驱动) 选择单片机型号STC89C52RC 选择生成的执行程序文件template.hex 点击”下载/编程“按钮 单片机开关拨动重新上电 自动检测并下载了程序,看到灯亮。如果失败,仔细对照 以上每一步内容。
基于IO口的控制:
89C52有5组这样的输入输出口,分别为P0,P1,P2,P3每组对应8个针脚,P4是RC系列才有,7个 针脚
怎么编程找到IO口呢:
sfr“指令”: 用来直接描述硬件地址,小白先理解成“一组IO口”的起始地址中数据 sfr P0 = 0x80;将SFR别名P0
定义为地址0x80;
P0 = 0;将P0
端口的所有8个位都设置为0。把地址0x80
处的8位寄存器的所有位都清零。
怎么找到IO口的具体一个引脚呢:
sbit“指令”:对应可位寻址空间的一个位,小白先理解成“一个IO口/针脚”的地址中数据 sbit led2 = P3^6;定义led2为P3寄存器的第6位。
89C52比较简单粗暴,关于引脚输入还是输出的功能不需要配置:
亮灯实验:
简单的串联电路,D4,D5,D6板子上有标记,D5一端通过电阻接5v,另外一端接着"LED1标志的线",我 们发现在89C52RC的电路图中也有LED1的标志,是在P3的IO口组中,在P3.7引脚,所以编程让P3.7出 低电平(0)就让D5灯完成一个串联电路,所以亮。
也就是说,给LED1对应标号的P3^7一个低电平,就能点亮灯。
怎么做才会闪烁:
使用STC-ISP自带延时函数。
按键控制灯:
查询法按键控制灯:
怎么知道sw1按键被按下?
KEY1位置和GND接通,表现为低电平,值为0。
怎么知道sw1按键没有被按下?
KEY1位置通过上拉电阻到5V,表现为高电平,值为1.
KEY1接到STC89C52RC的P2.1口,我们只要不断检测P2.1口的值(0-按下,1-松开)就知道按键是 否被按下
两个按键控制灯:
添加消抖的原因主要体现在以下几个方面:
- 抖动现象的解释:
- 当机械开关(如按键)进行切换时,由于开关的物理接触特性和机械弹性等因素,会在短时间内产生多次的通断现象,即所谓的“抖动”。这种抖动对于人眼来说可能是难以察觉的,但对于高速运行的单片机来说却是非常明显的。
- 抖动时间的长短由按键的机械特性决定,一般为5ms~10ms。这段时间内,单片机会接收到多次不稳定的信号。
- 抖动对单片机的影响:
- 不稳定的信号对单片机等微处理器来说,可能会引发误操作或系统不稳定。例如,在按键控制LED灯的程序中,如果单片机检测到抖动信号,可能会错误地认为按键被多次按下,导致LED灯闪烁或者出现其他不期望的行为。
- 消抖处理的目的:
- 为了确保CPU对键的一次闭合仅作一次处理,需要在程序中添加消抖处理。这样可以确保在按键稳定闭合或释放时读取键的状态,避免由于抖动而引发的误操作。
- 消抖处理的方法:
- 消抖处理主要有两种方法:软件消抖和硬件消抖。
- 软件消抖:通过在程序中设置一定的延时,忽略短时间内的信号变化。例如,检测到按键按下后,执行一个5ms~10ms的延时程序,然后再次检测按键状态。如果按键仍保持按下状态,则确认这是一次有效的按键操作。
- 消抖处理主要有两种方法:软件消抖和硬件消抖。
按键控制灯,SW1开,SW2关,案例中只在SW1添加软件消抖:
按键按下一次,灯状态改变:
状态位控制LED:
- 在单片机编程中,LED灯通常通过单片机的I/O(输入/输出)口进行控制。
- 单片机内部有一系列的寄存器,用于存储数据、状态和配置信息。
- 状态位是寄存器中的一位或多位,用于表示某种状态或条件。
- 通过编程,可以读取或修改这些状态位,并根据其值来控制LED灯的亮灭。
- 如果
key1
被按下(检测到低电平),则经过50毫秒的延时去抖动后,再次检测以确保按键确实被按下。如果确实被按下,则设置ledMark
为ON_STATUS
,表示LED应该被点亮。然后等待按键释放。 - 如果
key2
被按下(检测到低电平),则经过50毫秒的延时去抖动后,再次检测以确保按键确实被按下。如果确实被按下,则设置ledMark
为OFF_STATUS
,表示LED应该被熄灭。然后等待按键释放。 - 根据
ledMark
的值来控制LED的亮灭。