技术标签: 51单片机 led动画 74hc595串转并 led点阵 led 单片机
c51的LED点阵屏其实就是一个8*8像素的屏幕,一共有64个发光二极管。如下图
其实这个原理和数码管是一样的,都是利用人的视觉暂留,不停扫描LED点阵,依次点亮每一盏灯,只不过数码管扩引脚采用的是38译码器,点阵屏采用的是74HC595串转并芯片。参考数码管
原理图如下:
他的DPa~DPh其实就是上图的D0-D7
这样可能还是理解不清楚,看下图:
#include <REGX52.H>
#include "Delay.h"
sbit RCK=P3^5; //RCLK ,上升沿锁存,搬运工
sbit SCK=P3^6; //SRCLK,上升沿移位
sbit SER=P3^4; //SER,串行输入的每个bit
#define MATRIX_LED_PORT P0
/**
* @brief 74HC595写入一个字节
* @param Byte 要写入的字节
* @retval 无
*/
void _74HC595_WriteByte(unsigned char Byte)
{
unsigned char i;
for(i=0;i<8;i++)
{
SER=Byte&(0x80>>i);
SCK=1;//给一个上升沿(之前是0),让他把数据往下移
SCK=0;//复位0
}
RCK=1;//上升沿锁存,搬运
RCK=0;//复位0
}
/**
* @brief LED点阵屏显示一列数据
* @param Column 要选择的列,范围:0~7,0在最左边
* @param Data 选择列显示的数据,高位在上,1为亮,0为灭
* @retval 无
*/
void MatrixLED_ShowColumn(unsigned char Column,Data)
{
_74HC595_WriteByte(Data);
MATRIX_LED_PORT=~(0x80>>Column);
Delay(1);
MATRIX_LED_PORT=0xFF;
}
void main()
{
SCK=0;
RCK=0;
while(1)
{
MatrixLED_ShowColumn(0,0x3C);//第一列
MatrixLED_ShowColumn(1,0x42);//第二列
MatrixLED_ShowColumn(2,0xA9);
MatrixLED_ShowColumn(3,0x85);
MatrixLED_ShowColumn(4,0x85);
MatrixLED_ShowColumn(5,0xA9);
MatrixLED_ShowColumn(6,0x42);
MatrixLED_ShowColumn(7,0x3C);
}
}
表情有点折磨啊。。。
MatrixLed.h
#ifndef __MATRIX_LED_H__
#define __MATRIX_LED_H__
void MatrixLED_Init();
void MatrixLED_ShowColumn(unsigned char Column,Data);
#endif
MatrixLed.c
#include <REGX52.H>
#include "Delay.h"
sbit RCK=P3^5; //RCLK
sbit SCK=P3^6; //SRCLK
sbit SER=P3^4; //SER
#define MATRIX_LED_PORT P0
/**
* @brief 74HC595写入一个字节
* @param Byte 要写入的字节
* @retval 无
*/
void _74HC595_WriteByte(unsigned char Byte)
{
unsigned char i;
for(i=0;i<8;i++)
{
SER=Byte&(0x80>>i);
SCK=1;
SCK=0;
}
RCK=1;
RCK=0;
}
/**
* @brief 点阵屏初始化
* @param 无
* @retval 无
*/
void MatrixLED_Init()
{
SCK=0;
RCK=0;
}
/**
* @brief LED点阵屏显示一列数据
* @param Column 要选择的列,范围:0~7,0在最左边
* @param Data 选择列显示的数据,高位在上,1为亮,0为灭
* @retval 无
*/
void MatrixLED_ShowColumn(unsigned char Column,Data)
{
_74HC595_WriteByte(Data);
MATRIX_LED_PORT=~(0x80>>Column);
Delay(1);
MATRIX_LED_PORT=0xFF;
}
main.c
#include <REGX52.H>
#include "Delay.h"
#include "MatrixLED.h"
//动画数据,三帧
unsigned char code Animation[]={
0x3C,0x42,0xA9,0x85,0x85,0xA9,0x42,0x3C,
0x3C,0x42,0xA1,0x85,0x85,0xA1,0x42,0x3C,
0x3C,0x42,0xA5,0x89,0x89,0xA5,0x42,0x3C,
};
void main()
{
unsigned char i,Offset=0,Count=0;
MatrixLED_Init();
while(1)
{
for(i=0;i<8;i++) //循环8次,显示8列数据
{
MatrixLED_ShowColumn(i,Animation[i+Offset]);
}
Count++; //计次延时
if(Count>15)
{
Count=0;
Offset+=8; //偏移+8,切换下一帧画面
if(Offset>16)
{
Offset=0;
}
}
}
}
51单片机led点阵屏动画
JD-GUI反编译class文件后会将源码的真实行号放在行首的注释中,在源码中调试的时候不方便在JD-GUI工具栏点击Help - > PreferencesPreferences中相关选项改成这样再次反编译后,代码中会有大量的空行但是源码的位置都对齐了,注释也清掉了...
近日,在职场匿名论坛有一位女生分享了自己的经历。她说自己是做程序开发方面的工作,月薪税后是一万五。当时谈了一个男友,也有2年多了,由于女程序员和男友年龄都比较大了,于是准备买房结婚。而在平时,这个女程序员是比较节省的,毕竟在大城市这收入也不算高。就在上次逛街的时候,这个女程序员说自己破天荒第一次买了双高跟鞋以及2件衣服,总共是800元。可就因为自己花钱多了,陪自己逛街的男友一路说个不停,然后就把...
前言本文撰写于Typora一开始学习MarkDown就有的有道云笔记,后来一段时间曾经尝试过印象笔记,但UI太不友好,很难上手就换了。应该说有道云还是不错的,毕竟猪厂产品,界面友好,可以清楚看到渲染前和渲染后的结果,尤其是作为网易系产品,你可以很轻松的在电脑,手机,ipad上同步使用但用着用着,感觉就没那么好了,我本人就是比较喜欢折腾工具的,不管是开发工具还是平时的工具,看到有推荐的其他好...
简介:本文仅简单介绍基于Eclipse开发Dynamic Web Project应用下的JSP,Servlet及TOMCAT数据源的配置和开发。软件环境:Eclipse Java EE IDE for Web Developers压缩包eclipse-jee-indigo-SR2-win32.zipJDK安装包jdk-7u1-windows-i586.exeTOMCAT安装包apa
可信执行环境(TEE)是Global Platform(GP)提出的概念。针对移动设备的开放环境,安全问题也越来越受到关注,不仅仅是终端用户,还包括服务提供者,移动运营商,以及芯片厂商。TEE是与设备上的Rich OS(通常是Android等)并存的运行环境,并且给Rich OS提供安全服务。它具有其自身的执行空间,比Rich OS的安全级别更高,但是比起安全元素(SE,通常是智能卡)的安全性
点击上方关注 “终端研发部”设为“星标”,和你一起掌握更多数据库知识来源:GitHub上sa-token项目今天给大家推荐的这个开源项目超级棒,可能是史上功能最全的 Java 权限认证框...
基于IDEA2020 版本-DEA自定义/修改方法注释和修改类注释.注释时增加时间和作者.进入设置修改方法注释根据如图操作创建一个分类,分类名称我写的是MyAnnotation完成后得到如下图所示分类根据上图所示在刚才新建的分类下新建子类并输入注释内容** 1. @author Franciz 2. @date $date$*/并且全选以下内容:最终得到下图效果,然后保存3. 如何使用输入/man然后键盘回车就可以输出自定义的注释了如果要更改
一、基础环境设置1. 准备4台客户机(VMware虚拟机)系统版本:Centos7.5节点配置:192.168.208.128 ——Master192.168.208.129 ——Slaver-1192.168.208.130 ——Slaver-2192.168.208.130 ——Slaver-32. 配置hosts文件,使4台客户机能够以主机名相互访问[root...
1+(int)(10.0rand()/(RAND_MAX+1.0));整个语句的作用是产生随机数1~10。rand():用来产生一个随机数的函数,范围是[0, RAND_MAX],RAND_MAX是C中stdlib.h中宏定义的一个字符常量:#define RAND_MAX Ox7FFF其值最小为0,最大为Ox7FFF。10.0rand()得到一个浮点数,是10倍的[0, RAND_MAX...
程序员 2014-9-26 一天的奇妙之旅http://forjs.org/book/xyfULqrrXg/section/gklpSJ3fmSg
pyqt5小记| QSS开源暗黑主题qdarkstyle ,读取QSS主题文件安装Pip install qdarkstyle使用import sysfrom PyQt5.QtGui import QIconimport qdarkstylefrom PyQt5 import QtCorefrom PyQt5.QtWidgets import QApplication, QMainWindowif __name__ == '__main__': app = QApplicat
第一部分:个人总结1. 硬的问题。要在找工作的时候说服别人你是适合这个工作的, 那就要搞清楚对方期待什么东西,自信地展现出你的价值和能力。 (这个列表也可以说是 - 面试中最关键的问题)类别具体技能和面试问题现在的回答(大三)语言最拿手的计算机语言之一,代码量多少?C语言,略懂java软件实现(阅读代码的能力,实现,单元测试)你有没...