2019-09-24单片机控制第一个外设-LED灯

1.单片机编程的一般步骤

1.1、目标分析

我们的目标是点亮开发板上的LED灯

1.2、原理图分析

(1)目标器件(LED)工作原理
(2)相关模块电路连接
(3)控制线路分析:相关IO端口是哪些?

1.3、代码编写

1.4、下载与调试

2.原理图与控制方法分析

2.1、原理图概况浏览

(1)目的1:把原理图相关部分摘录出来重点看
(2)目的2:把相关部分的原理图关键部分重点看

2.2、74HC573芯片介绍

(1)要知道这个芯片怎么工作,就要看他的数据手册
(2)第一步:找到它的数据手册


74HC573芯片

(3)OE(output enable),LE(latch enable)
(4)74HC573芯片是一个锁存器,简单来说就是由输入引脚Dx来控制输出引脚Qx(x等于0-7)。OE和LE影响Dx控制Qx的结果。
(5)当OE为L,LE为L时,74HC573工作在锁存模式,此时Qx的输出被锁存(进入锁存状态之前是高就一直是高,是低就一直是低,这就叫锁存)。这就是锁存器的作用。
(6)当OE为L,LE为H时74HC573工作在跟随模式,此时Qx的输出跟随Dx的输入变化而变化。此时逻辑上可以认为74HC573是透明的。

2.3、硬件原理图分析结论

(1)原理图及开发板默认跳线帽方式为:OE=L,LE=H,此时74HC573工作在跟随模式下,相当于是透明的。当我们接线(接线方式为P0端口和J12用杜邦线连接起来,当然其实也可以和P1或者其他端口连接起来)后,其实相当于P0端口和LED的正极直接相连了,而LED的负极接地。
(2)结论:P0端口的8个引脚输出高电平时,则LED亮,输出低电平时则LED灭。

3.第一个实验:点亮LED

3.1、创建工程与文件

(1)创建空工程
(2)创建led.c并关联到工程
(3)模式书写:头文件包含和main函数外壳

3.2、如何用C语言进行IO端口控制

(1)P0这个符号在C语言代码中的特殊含义
(2)十六进制数
(3)位、字节、IO端口、IO口(即IO端口的每一个)
(4)硬件接线方式对编程的影响

3.3、点亮LED

(1)点亮8颗LED灯
(2)点亮4颗LED灯
(3)隔一颗亮隔一颗灭
(4)全灭

#include <reg51.h>

void main(void)
{
    // 点亮8颗LED灯
    // p0 = 0xff;                     // P0端口的8个引脚都输出高电平
    // 点亮4颗LED灯
    // p0 = 0xf0;
    // p0 = 0x0f;
   // 隔一颗亮隔一颗灭
  // p0 = 0xAA;
  // 全灭
  p0 = 0x0;
}

4.如何让LED闪烁

4.1、闪烁的本质含义:亮-延时-灭-延时

(1)由于人的眼睛有视觉暂留,所以亮和灭之间的延时时间选择非常重要。
(2)如果延时时间太短(比如20ms),这时候上一次灭眼睛还没反应过来就到了下一次亮。此时你会觉得灯是一直亮着的。和一直亮着的区别是亮度低一点。但是是看不到闪烁的。
(3)延时时间逐渐增大慢慢就能看到闪烁的,大到一定程度就能看到明显的一亮一灭了。

4.2、单片机如何实现延时

(1)单片机执行每一条指令需要一定的时间
(2)单片机开机后不能休息
(3)单片机可以“空转”或“浪费时间”

4.3、C语言实现延时

使用C语言循环语句实现延时

#include <reg51.h>

void delay(void)
{
    unsigned char i = 100;
    unsigned char i = 100;
    while (i--)
    {
        while (j--);
    }
}

void main(void)
{
    p0 = 0xff;
    delay();
    p0 = 0x0;
    delay();
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容