登录  | 立即注册

游客您好!登录后享受更多精彩

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[寒假笔记] 51单片机 二、循环流水灯

[复制链接]
发表于 2023-1-13 18:55:16 | 显示全部楼层 |阅读模式
学习笔记
学习科目: 51单片机
学习安排: 寒假每周至少两次
开始时间: 2023-01-12
结束时间:
本帖最后由 李嘉杰 于 2023-1-13 18:58 编辑

用51单片机实现循环流水灯


一.学习要点

      1.查看寒假资源包里的开发板原理图和数据手册,了解开发板中定时器的工作模式,

根据数据手册的相关内容来学习。

    2.根据数据手册来编写delay函数进行延时,写好相应的LED代码完成LED流水灯循环。
二.学习内容
    1.STC12C5A60S2数据手册中定时器的相关内容:

IMG_20230113_182354_edit_113071367165558.jpg



IMG_20230113_182509_edit_113148197624400.jpg

     这些内容将对我学习定时器有很大的帮助。

   结合上次点亮LED的原理图就能大致了解流水灯的工作逻辑。

    2.代码:

     这次需要在写一个delay的延时函数,目的是让LED灯能按照一定的时间规律进行点亮。

#include <STC12C5A60S2.H>

void delay(unsigned int n)

{        

        int i;

        for(i=0;i<n;i++)

      {

                TMOD &= 0xF0;               

                TMOD |= 0x01;               

                TH0 = 0xFC;                        

                TL0 = 0x66;                        

                TF0 = 0;               

                TR0 = 1;                        

                EA=0;                                

                ET0=0;                                

                while(TF0 == 0);

                TR0 = 0;                        

                  }

        }



sbit LED1 = P0^0;

sbit LED2 = P0^1;

sbit LED3 = P0^2;

sbit LED4 = P0^3;

sbit LED5 = P0^4;

sbit LED6 = P0^5;

sbit LED7 = P0^6;

sbit LED8 = P0^7;

sbit ADDR0 = P2^0;

sbit ADDR1 = P2^1;

sbit ADDR2 = P2^2;

sbit ENLED = P1^1;

void main ()

{

        ENLED = 0;

        ADDR2 = 1;

        ADDR1 = 1;

        ADDR0 = 0;

        

        LED1 = 1;

        LED2 = 1;

        LED3 = 1;

        LED4 = 1;

        LED5 = 1;

        LED6 = 1;

        LED7 = 1;

        LED8 = 1;

        delay(300);

        LED1 = 0;

        LED2 = 1;

        LED3 = 1;

        LED4 = 1;

        LED5 = 1;

        LED6 = 1;

        LED7 = 1;

        LED8 = 1;

        delay(300);

        LED1 = 0;

        LED2 = 0;

        LED3 = 1;

        LED4 = 1;

        LED5 = 1;

        LED6 = 1;

        LED7 = 1;

        LED8 = 1;

        delay(300);

        LED1 = 0;

        LED2 = 0;

        LED3 = 0;

        LED4 = 1;

        LED5 = 1;

        LED6 = 1;

        LED7 = 1;

        LED8 = 1;

        delay(300);

        LED1 = 0;

        LED2 = 0;

        LED3 = 0;

        LED4 = 0;

        LED5 = 1;

        LED6 = 1;

        LED7 = 1;

        LED8 = 1;

        delay(300);

        LED1 = 0;

        LED2 = 0;

        LED3 = 0;

        LED4 = 0;

        LED5 = 0;

        LED6 = 1;

        LED7 = 1;

        LED8 = 1;

        delay(300);

        LED1 = 0;

        LED2 = 0;

        LED3 = 0;

        LED4 = 0;

        LED5 = 0;

        LED6 = 0;

        LED7 = 1;

        LED8 = 1;

        delay(300);

        LED1 = 0;

        LED2 = 0;

        LED3 = 0;

        LED4 = 0;

        LED5 = 0;

        LED6 = 0;

        LED7 = 0;

        LED8 = 1;

        delay(300);

        LED1 = 0;

        LED2 = 0;

        LED3 = 0;

        LED4 = 0;

        LED5 = 0;

        LED6 = 0;

        LED7 = 0;

        LED8 = 0;

        delay(300);

}

代码完成没有问题后,就能烧录了。

三.实物操作


VID_20230113_173519.gif





好懒~~不想说~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表