点灯合集(点亮LED、流水灯、8x8点阵、点阵拓展)——附程序
点灯合集
- 一、点亮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点阵、点阵拓展)——附程序相关推荐
- 【stm32cubeMX】使用HAL库点亮LED流水灯
stm32cubeMX使用HAL库点亮LED流水灯 1.安装STM32CubeMX 2.安装HAL库 3.新建项目 4.keil仿真调试 五.实现 六.参考资料 1.安装STM32CubeMX 官网下 ...
- STM32F103C8T6以寄存器方式借助面包板搭建电路点亮LED流水灯详解
文章目录 一.寄存器原理 1.什么是寄存器 2.如何访问寄存器 二.GPIO端口的初始化设置 1.时钟配置 (1)找到时钟使能寄存器映射基地址 (2)找到端口偏移地址以及对应端口所在位置 (3)使能对 ...
- GPIO端口初始化设置,STM32F103点亮LED流水灯过程
文章目录 一.STM32F103系列芯片地址映射和寄存器映射原理 1.什么是寄存器 2.地址映射和寄存器映射 3.寄存器地址查找 二.GPIO端口初始化设置 1.GPIO简介 2.配置时钟 3.输入输 ...
- STM32F03寄存器方式点亮LED流水灯
STM32F03寄存器方式点亮LED流水灯 文章目录 STM32F03寄存器方式点亮LED流水灯 一.题目内容 二.STM32F03系列芯片的地址映射和寄存器映射映射原理:了解GPIO端口的初始化设置 ...
- STM32F103寄存器方式点亮LED流水灯
实验要求:以 STM32最小系统核心板(STM32F103C8T6)+面板板+3只红绿蓝LED 搭建电路,使用GPIOB.GPIOC.GPIOD这3个端口控制LED灯,轮流闪烁,间隔时长1秒.1)写出 ...
- 【嵌入式知识07】借助stm32CubeMX,使用STM32F103C8T6点亮LED流水灯
本文目录 一.简述 二.STM32CubeMX简介 1.利用CubeMX新建工程点亮LED灯 1)前期准备 2)新建工程 2.界面讲解 3.配置引脚 4.时钟源配置 5.工程管理 三.点亮LED 1. ...
- stm32cubeMX使用HAL库点亮LED流水灯
系列文章目录 文章目录 系列文章目录 一.实验工具 二.STM32CubeMX生成代码使用HAL库点亮流水灯 1.安装STM32CubeMX 2.安装HAL库 3.新建项目 4.keil仿真调试 三. ...
- 【嵌入式08】STM32F103C8T6寄存器方式借助面包板点亮LED流水灯详解
文章目录 一.题目简述 二.简述:初始化GPIO,点亮LED灯 三.工程文件模板的建立 四.使用寄存器点亮LED灯--代码部分 1.硬件连接设计 2.打开之前建立的工程模板 3.代码编写 4.硬件连接 ...
- 点亮led流水灯c语言程序,用数组的指针控制LED流水灯--C语言编程
#include/************************************************* 函数功能:延时约150ms (3*200*250=150 000μs=150ms ...
- 【嵌入式基础】用C语言编程、寄存器实现LED流水灯程序;stm32CubeMX+Keil使用HAL库点亮流水灯
本文主要介绍STM32F103系列芯片的地址映射和寄存器映射原理,GPIO端口的初始化设置步骤.利用C语言编程和寄存器点亮流水灯以及stm32CubeMX+Keil使用HAL库点灯 目录 一.STM3 ...
最新文章
- Oracle创建和管理表
- 关于HTML+CSS常用标签
- 1.linux系统基础笔记(互斥量、信号量)
- 智慧医疗解决方案可以大大减少医疗资源浪费!
- 解决nginx反向代理缓存不起作用的问题
- python面向对象oo是什么意思_python进阶:面向对象是什么意思?
- 图神经网络(GNN)资源帖视频及必读论文
- 计算机重启 ie 被改,ie被修改怎么办 ie被修改的解决方法【详解】
- ABD-Net: AttentivebutDiversePersonRe-Identification论文阅读
- 实训周实验(eNSP安装+简单使用+实验项目)总结
- pdps安装oracle12安装,Tecnomatix PDPS安装教程适用于Oracle版本11g
- 百度 Hydra 工具在移动端 UI 兼容性测试上的高效应用
- 遥感图像的空间分辨率、光谱分辨率、时间分辨率的含义
- sparksql内写linux脚本,shell脚本调用spark-sql
- 科研小技巧——制作学术会议报告视频的完整流程
- [转]帐号登录事件(事件编号与描述)
- wvr450g设置虚拟服务器,TP-Link TL-WVR450G V3 无线路由器一对一NAT映射设置方法
- 关于磁盘阵列和LVM
- ip数据报格式;ip数据报分片
- 谁在滋养你,谁在消耗你