美文网首页嵌入式 Linux C ARM
2019-09-24单片机控制第一个外设-LED灯

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

作者: 嵌入式Linux小白 | 来源:发表于2019-09-26 15:13 被阅读0次

    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();
    }
    

    相关文章

      网友评论

        本文标题:2019-09-24单片机控制第一个外设-LED灯

        本文链接:https://www.haomeiwen.com/subject/uzbbuctx.html