点灯合集

    • 一、点亮LED
      • 简介:
      • LED闪烁:
        • Proteus仿真图:
        • 视频展示:
        • 代码:
    • 二、流水灯
      • Proteus仿真图:
      • 代码:
        • 代码一:
        • 代码二(优化):
    • 三、行列扫描原理
    • 四、8x8点阵
      • 简介:
      • 显示大写字母 G :
        • Proteus仿真图:
        • 效果:
        • 代码:
    • 五、点阵拓展
      • 4个8x8点阵组合
      • 实验一:显示 ×
        • 效果展示:
        • 代码:
      • 实验二:显示爱心
        • 效果展示:
        • 代码:

    一、点亮LED

    简介:

    发光二极管简称:LED

    是一种常用发光器件。

    有正、负两极,一般接限流电阻,电阻值根据实际需要选择。

    点亮LED,只需在正极加高电平,负极加低电平。

    LED闪烁:

    Proteus仿真图:

    视频展示:

    51单片机——LED闪烁

    代码:

    #include<reg51.h>sbit led = P3^7;void delay(unsigned int xms){  //延时函数unsigned int i, j;for(i=0; i<xms; ++i)for(j=0; j<110; ++j);
    }void main(){while(1){led = ~led;   //对 led 不断取反delay(1000);  //延时一段时间,闪烁效果}
    }
    

    二、流水灯

    把多个LED并连起来,一端共阳。

    另一端与单片机 P0端口相连。

    Proteus仿真图:

    代码:

    代码一:

    #include<reg51.h>void delay(unsigned int xms){  //延时函数unsigned int i, j;for(i=0; i<xms; ++i)for(j=0; j<110; ++j);
    }void main(){while(1){P0 = 0xFE;delay(500);P0 = 0xFD;delay(500);P0 = 0xFB;delay(500);P0 = 0xF7;delay(500);P0 = 0xEF;delay(500);P0 = 0xDF;delay(500);P0 = 0xBF;delay(500);P0 = 0x7F;delay(500);}
    }
    

    代码二(优化):

    #include<reg51.h>void delay(unsigned int xms){  //延时函数unsigned int i, j;for(i=0; i<xms; ++i)for(j=0; j<110; ++j);
    }void main(){unsigned int i, j;while(1){j = 0xFE;  //十六进制:1111 1110for(i=0; i<8; i++){P0 = j;  //对 P0 口操作j = (j<<1)|0x01;  //j 逐位左移,与0x01逐位或运算delay(500);}}
    }
    

    三、行列扫描原理

    对行列扫描原理不理解的话可以参考:
    按键(独立按键、矩阵键盘)——附带程序

    四、8x8点阵

    简介:

    了解了流水灯之后,点阵就非常容易掌握,可以看作是8条流水灯又并联在一起,构成8x8点阵。

    实物图:

    Proteus器件图:

    内部连线:有两种连法。

    显示大写字母 G :

    Proteus仿真图:

    效果:

    代码:

    /*
    利用扫描原理进行显示:
    先选通一列,对该列的每一行操作,
    接着再选通下一列,对下一列对应的行进行操作
    以此类推,逐次扫描列和行① table_1 是列扫描数组。例:当 i=1 时,P2 口值为 0x02(十六进制为:0000 0010),所以 P2 口,除 P2^1=1 是高电平外,P2   口其它管脚都为低电平,所以选通第二列② table_2 是行扫描数组,储存将要显示的字符字码,与 table_1 列扫描配合显示。例:当 i=1 时,选通第二列,此时 P0 口值为 0x83(十六进制为:1000 0011),因为行扫描是低电平有效,即第 3、4、5、6、7 行亮,为字母 G 的第一列③其他以此类推
    */
    #include<reg51.h>unsigned char code table_1[] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};  //列扫描
    unsigned char code table_2[] = {0xff, 0x83, 0x7d, 0x6d, 0x6d, 0x6d, 0x9b, 0xff};  //行扫描void delay(unsigned int xms){  //延时函数unsigned int i, j;for(i=0; i<xms; ++i)for(j=0; j<110; ++j);
    }void main(){while(1){unsigned char i;for(i=0; i<8; ++i){P2 = table_1[i];  //先列扫描P0 = table_2[i];  //再行扫描delay(5);}}
    }
    

    想要实现显示其他图形或字符,可以使用文字取模软件

    五、点阵拓展

    4个8x8点阵组合


    把四个组合在一起,显示更加美观,如下图:

    实验一:显示 ×

    效果展示:

    代码:

    老师要求的实验,代码不怎么美观!见谅,见谅!

    日后有时间再优化程序。

    /*
    原理和 8x8 点阵一样,利用行列扫描显示 先对 P2 口进行操作,即 0 ~ 7列,每列的 16 行由 P0 口(第0 ~ 7行)和 P1 口(第8 ~ 15行)组成
    当选通一列时,需要对 P0 和 P1 口同时进行操作
    接着再选通下一列,对下一列对应的 P0 和 P1 口操作
    以此类推!注意一定要在 P2 口 和 P3 口操作完后进行消影,否则影响显示效果
    */
    #include<reg51.h>void delay(unsigned int xms){  //延时函数unsigned int i, j;for(i=0; i<xms; ++i)for(j=0; j<110; ++j);
    }void main(){while(1){  //行列扫描P2 = 0x01;  //P2 口控制低 8 列, l0~l7P0 = 0Xfe;P1 = 0x7f;delay(1);P2 = 0x02;P0 = 0Xfd;P1 = 0xbf;delay(1);P2 = 0x04;P0 = 0Xfb;P1 = 0xdf;delay(1);P2 = 0x08;P0 = 0Xf7;P1 = 0xef;delay(1);P2 = 0x10;P0 = 0Xef;P1 = 0xf7;delay(1);P2 = 0x20;P0 = 0Xdf;P1 = 0xfb;delay(1);P2 = 0x40;P0 = 0Xbf;P1 = 0xfd;delay(1);P2 = 0x80;P0 = 0X7f;P1 = 0xfe;delay(1);P2 = 0x00;  //消影P3 = 0x01;  //P3 口控制高 8 列,l8 ~l15P0 = 0X7f;P1 = 0xfe;delay(1);P3 = 0x02;P0 = 0Xbf;P1 = 0xfd;delay(1);P3 = 0x04;P0 = 0Xdf;P1 = 0xfb;delay(1);P3 = 0x08;P0 = 0Xef;P1 = 0xf7;delay(1);P3 = 0x10;P0 = 0Xf7;P1 = 0xef;delay(1);P3 = 0x20;P0 = 0Xfb;P1 = 0xdf;delay(1);P3 = 0x40;P0 = 0Xfd;P1 = 0xbf;delay(1);P3 = 0x80;P0 = 0Xfe;P1 = 0x7f;delay(1);P3 = 0X00;  //消影}
    }
    

    实验二:显示爱心

    效果展示:

    代码:

    老师要求的实验,代码不怎么美观!见谅,见谅!

    日后有时间再优化程序。

    #include<reg51.h>void delay(unsigned int xms){  //延时函数unsigned int i, j;for(i=0; i<xms; ++i)for(j=0; j<110; ++j);
    }void main(){while(1){  //行列扫描P2 = 0x01;  //P2 口控制低 8 列, l0~l7P0 = 0x0f;P1 = 0xff;delay(1);P2 = 0x02;P0 = 0x07;P1 = 0xfe;delay(1);P2 = 0x04;P0 = 0x03;P1 = 0xfc;delay(1);P2 = 0x08;P0 = 0x01;P1 = 0xf8;delay(1);P2 = 0x10;P0 = 0x01;P1 = 0xf0;delay(1);P2 = 0x20;P0 = 0x01;P1 = 0xe0;delay(1);P2 = 0x40;P0 = 0x03;P1 = 0xc0;delay(1);P2 = 0x80;P0 = 0x07;P1 = 0x80;delay(1);P2 = 0x00;  //消影P3 = 0x01;  //P3 口控制高 8 列,l8 ~l15P0 = 0x07;P1 = 0x80;delay(1);P3 = 0x02;P0 = 0x03;P1 = 0xc0;delay(1);P3 = 0x04;P0 = 0x01;P1 = 0xe0;delay(1);P3 = 0x08;P0 = 0x01;P1 = 0xf0;delay(1);P3 = 0x10;P0 = 0x01;P1 = 0xf8;delay(1);P3 = 0x20;P0 = 0x03;P1 = 0xfc;delay(1);P3 = 0x40;P0 = 0x07;P1 = 0xfe;delay(1);P3 = 0x80;P0 = 0x0f;P1 = 0xff;delay(1);P3 = 0x00;  //消影}
    }
    

    点灯合集(点亮LED、流水灯、8x8点阵、点阵拓展)——附程序相关推荐

    1. 【stm32cubeMX】使用HAL库点亮LED流水灯

      stm32cubeMX使用HAL库点亮LED流水灯 1.安装STM32CubeMX 2.安装HAL库 3.新建项目 4.keil仿真调试 五.实现 六.参考资料 1.安装STM32CubeMX 官网下 ...

    2. STM32F103C8T6以寄存器方式借助面包板搭建电路点亮LED流水灯详解

      文章目录 一.寄存器原理 1.什么是寄存器 2.如何访问寄存器 二.GPIO端口的初始化设置 1.时钟配置 (1)找到时钟使能寄存器映射基地址 (2)找到端口偏移地址以及对应端口所在位置 (3)使能对 ...

    3. GPIO端口初始化设置,STM32F103点亮LED流水灯过程

      文章目录 一.STM32F103系列芯片地址映射和寄存器映射原理 1.什么是寄存器 2.地址映射和寄存器映射 3.寄存器地址查找 二.GPIO端口初始化设置 1.GPIO简介 2.配置时钟 3.输入输 ...

    4. STM32F03寄存器方式点亮LED流水灯

      STM32F03寄存器方式点亮LED流水灯 文章目录 STM32F03寄存器方式点亮LED流水灯 一.题目内容 二.STM32F03系列芯片的地址映射和寄存器映射映射原理:了解GPIO端口的初始化设置 ...

    5. STM32F103寄存器方式点亮LED流水灯

      实验要求:以 STM32最小系统核心板(STM32F103C8T6)+面板板+3只红绿蓝LED 搭建电路,使用GPIOB.GPIOC.GPIOD这3个端口控制LED灯,轮流闪烁,间隔时长1秒.1)写出 ...

    6. 【嵌入式知识07】借助stm32CubeMX,使用STM32F103C8T6点亮LED流水灯

      本文目录 一.简述 二.STM32CubeMX简介 1.利用CubeMX新建工程点亮LED灯 1)前期准备 2)新建工程 2.界面讲解 3.配置引脚 4.时钟源配置 5.工程管理 三.点亮LED 1. ...

    7. stm32cubeMX使用HAL库点亮LED流水灯

      系列文章目录 文章目录 系列文章目录 一.实验工具 二.STM32CubeMX生成代码使用HAL库点亮流水灯 1.安装STM32CubeMX 2.安装HAL库 3.新建项目 4.keil仿真调试 三. ...

    8. 【嵌入式08】STM32F103C8T6寄存器方式借助面包板点亮LED流水灯详解

      文章目录 一.题目简述 二.简述:初始化GPIO,点亮LED灯 三.工程文件模板的建立 四.使用寄存器点亮LED灯--代码部分 1.硬件连接设计 2.打开之前建立的工程模板 3.代码编写 4.硬件连接 ...

    9. 点亮led流水灯c语言程序,用数组的指针控制LED流水灯--C语言编程

      #include/************************************************* 函数功能:延时约150ms (3*200*250=150 000μs=150ms ...

    10. 【嵌入式基础】用C语言编程、寄存器实现LED流水灯程序;stm32CubeMX+Keil使用HAL库点亮流水灯

      本文主要介绍STM32F103系列芯片的地址映射和寄存器映射原理,GPIO端口的初始化设置步骤.利用C语言编程和寄存器点亮流水灯以及stm32CubeMX+Keil使用HAL库点灯 目录 一.STM3 ...

    最新文章

    1. Oracle创建和管理表
    2. 关于HTML+CSS常用标签
    3. 1.linux系统基础笔记(互斥量、信号量)
    4. 智慧医疗解决方案可以大大减少医疗资源浪费!
    5. 解决nginx反向代理缓存不起作用的问题
    6. python面向对象oo是什么意思_python进阶:面向对象是什么意思?
    7. 图神经网络(GNN)资源帖视频及必读论文
    8. 计算机重启 ie 被改,ie被修改怎么办 ie被修改的解决方法【详解】
    9. ABD-Net: AttentivebutDiversePersonRe-Identification论文阅读
    10. 实训周实验(eNSP安装+简单使用+实验项目)总结
    11. pdps安装oracle12安装,Tecnomatix PDPS安装教程适用于Oracle版本11g
    12. 百度 Hydra 工具在移动端 UI 兼容性测试上的高效应用
    13. 遥感图像的空间分辨率、光谱分辨率、时间分辨率的含义
    14. sparksql内写linux脚本,shell脚本调用spark-sql
    15. 科研小技巧——制作学术会议报告视频的完整流程
    16. [转]帐号登录事件(事件编号与描述)
    17. wvr450g设置虚拟服务器,TP-Link TL-WVR450G V3 无线路由器一对一NAT映射设置方法
    18. 关于磁盘阵列和LVM
    19. ip数据报格式;ip数据报分片
    20. 谁在滋养你,谁在消耗你

    热门文章

    1. PDF如何修改,怎么裁剪页面
    2. 操作系统重要概念——并发性
    3. 基于MQTT和nodeMCU的音乐弹奏APP设计
    4. ASCII文件与二进制文件
    5. linux切换用户并执行命令
    6. 按键精灵打开网站,保存截图到文件夹
    7. 基于Arduino,使用三个开关控制电机的正转,反转,和停转
    8. LeetCode 134.Gas Station 解题分析
    9. 五个老司机才知道的手机APP 你手机上有吗
    10. 程序人生:Hello’s P2P