初识单片机(以STC89C52RC小项目来讲解)

目录

单片机的概念:

亮灯实验:

怎么做才会闪烁:

按键控制灯:

两个按键控制灯:

添加消抖的原因主要体现在以下几个方面:

按键按下一次,灯状态改变:

状态位控制LED:


单片机的概念:

单片机(Single-Chip Microcomputer),也被称为单片微控制器(Microcontroller Unit,MCU),是一种集成电路芯片。它采用超大规模集成电路技术,将具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上,构成一个小而完善的微型计算机系统。

单片机的特点如下:

  1. 结构:单片机将计算机系统集成到一块芯片上,包含了计算机的主要部分,如CPU、RAM、ROM等,但与计算机相比,单片机只缺少了I/O设备。
  2. 发展历程:从上世纪80年代的4位、8位单片机,发展到现在的300M的高速单片机,单片机的性能得到了极大的提升。
  3. 应用领域:单片机在工业控制领域得到广泛应用,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。
  4. 主要特点:
    • 系统结构简单,使用方便,实现模块化。
    • 可靠性高,可工作到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-松开)就知道按键是 否被按下

两个按键控制灯:

添加消抖的原因主要体现在以下几个方面:

  1. 抖动现象的解释
    • 当机械开关(如按键)进行切换时,由于开关的物理接触特性和机械弹性等因素,会在短时间内产生多次的通断现象,即所谓的“抖动”。这种抖动对于人眼来说可能是难以察觉的,但对于高速运行的单片机来说却是非常明显的。
    • 抖动时间的长短由按键的机械特性决定,一般为5ms~10ms。这段时间内,单片机会接收到多次不稳定的信号。
  2. 抖动对单片机的影响
    • 不稳定的信号对单片机等微处理器来说,可能会引发误操作或系统不稳定。例如,在按键控制LED灯的程序中,如果单片机检测到抖动信号,可能会错误地认为按键被多次按下,导致LED灯闪烁或者出现其他不期望的行为。
  3. 消抖处理的目的
    • 为了确保CPU对键的一次闭合仅作一次处理,需要在程序中添加消抖处理。这样可以确保在按键稳定闭合或释放时读取键的状态,避免由于抖动而引发的误操作。
  4. 消抖处理的方法
    • 消抖处理主要有两种方法:软件消抖和硬件消抖。
      • 软件消抖:通过在程序中设置一定的延时,忽略短时间内的信号变化。例如,检测到按键按下后,执行一个5ms~10ms的延时程序,然后再次检测按键状态。如果按键仍保持按下状态,则确认这是一次有效的按键操作。

按键控制灯,SW1开,SW2关,案例中只在SW1添加软件消抖:

按键按下一次,灯状态改变:

状态位控制LED:

  • 在单片机编程中,LED灯通常通过单片机的I/O(输入/输出)口进行控制。
  • 单片机内部有一系列的寄存器,用于存储数据、状态和配置信息。
  • 状态位是寄存器中的一位或多位,用于表示某种状态或条件。
  • 通过编程,可以读取或修改这些状态位,并根据其值来控制LED灯的亮灭。

  • 如果key1被按下(检测到低电平),则经过50毫秒的延时去抖动后,再次检测以确保按键确实被按下。如果确实被按下,则设置ledMarkON_STATUS,表示LED应该被点亮。然后等待按键释放。
  • 如果key2被按下(检测到低电平),则经过50毫秒的延时去抖动后,再次检测以确保按键确实被按下。如果确实被按下,则设置ledMarkOFF_STATUS,表示LED应该被熄灭。然后等待按键释放。
  • 根据ledMark的值来控制LED的亮灭。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值