复习单片机:8*8点阵---->点亮数字0(内含:1.设计思路+2.数字0的编程数据+3.原始代码+4.实验现象)(注:获得编程数据工具的下载和使用放在下一篇文章)

简介: 复习单片机:8*8点阵---->点亮数字0(内含:1.设计思路+2.数字0的编程数据+3.原始代码+4.实验现象)(注:获得编程数据工具的下载和使用放在下一篇文章)

1.设计思路:

要实现行列不同位置亮灯,需要使用动态显示的方法,也要结合扫描的方法。

在第一行亮灯一段时间以后灭掉,点亮第二行一段时间以后灭掉,点亮第三行一

段时间以后灭掉,如此点亮,直到八行全部点亮一次,在第一行点亮到最后一行

灭掉的总时间不能超过人肉眼可识别的时间,即 24 毫秒。在每一行点亮的时候,

给列一个新的数据,此时对应列的数据就可以体现在这行上要点亮的灯上。这样

就和动态数码管的显示一样,只不过数码管的 LED 灯是段值。这里使用 LED 点

阵显示数字,也是多个 LED 同时点亮。

要想在点阵上显示数字等字符,首先要获取在 LED 点阵上显示数字字符所需

的数据,即一个数字字符在 LED 点阵上显示,对应的每行每列都会有一些灯点亮

或者熄灭,这样就会构成一组数据,也就是数字字符的显示数据,我们只要将这

些数据通过 74HC595 发送到点阵对应的行或列就能显示数字字符。

2.数字0的编程数据:

u8 gled_row [ 8 ]={ 0x00 , 0x7C , 0x82 , 0x82 , 0x82 , 0x7C , 0x00 , 0x00 }; //LED 点阵

显示数字 0 的行数据

这些数据其实就是上述描绘的数字 0 从左到右依次每列对应的行数据。

至于其它数字或字符及简单图形的显示取模方法与上述类似。

既然是动态扫描,就需要不断的扫描每列,因此可以把 LED 点阵的列控制也

用数组存储起来,为后面循环调用提供方便。根据数字 0 取模的数据特点是从左

至右每列对应的行数据,因此扫描时也应该从左至右的顺序,如下:

u8 gled_col [ 8 ]={ 0x7f , 0xbf , 0xdf , 0xef , 0xf7 , 0xfb , 0xfd , 0xfe }; //LED 点阵

显示数字 0 的列数据

3.原始代码:

#include"reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
#define LEDDZ_COR_PORT P0
sbit SRCLK=P3^6;
sbit rCLK=P3^5;
sbit SER=P3^4;
//LED 点阵显示 数字 0 的行数据
u8 gled_row[8]={0x00,0x7C,0x82,0x82,
                0x82,0x7C,0x00,0x00};
//LED 点阵显示 数字 0 的列数据                                
u8 gled_col[8]={0x7f,0xbf,0xdf,0xef,
                0xf7,0xfb,0xfd,0xfe};                                
void delay_10us(u16 ten_us)
{
    while(ten_us--);
}
void hc595_write_data(u8 dat)
{
    u8 i=0;
    for(i=0;i<8;i++)
    {
        SER=dat>>7;
        dat<<=1;
        SRCLK=0;
        delay_10us(1);
        SRCLK=1;
        delay_10us(1);
    }
    rCLK=0;
    delay_10us(1);
    rCLK=1;
}
void main()
{
    u8 i=0;
    while(1)
    {
        for(i=0;i<8;i++)
        {
                    //传送列选数据
        LEDDZ_COR_PORT=gled_col[i];
        //传送行选数据
        hc595_write_data(gled_row[i]);
        //延时一段时间,等待显示稳定
        delay_10us(100);
        //消影
        hc595_write_data(0x00);
        }
    }
}

a112f2a29af64c3ebc5d8e086edb74e3.png


4.LED 点阵(显示数字)实验现象:

使用 USB 线将开发板和电脑连接成功后(电脑能识别开发板上 CH340 串口),

把编译后产生的.hex 文件烧入到芯片内,实现现象如下:8*8LED 点阵显示数字

0。


b228972170424c209759e641d9cad990.png


相关文章
|
5天前
|
存储 移动开发
80C51单片机----数据传送类指令
80C51单片机----数据传送类指令
10 2
|
5天前
|
算法 定位技术 C语言
51单片机实现俄罗斯方块游戏编程
设计了一款基于AT89C51单片机的俄罗斯方块游戏机,使用LCD12864液晶显示,按键控制方块移动与变形。游戏中,7种不同形状的方块随机下落,填满一行得分,满屏则游戏结束。包含电源、单片机最小系统、LCD和按键模块的硬件电路通过Proteus进行了仿真,展示了游戏运行、得分和计时等。代码部分展示了检查碰撞和更新地图的函数。
17 1
|
5天前
|
传感器
51单片机循迹小车原理介绍和代码示例
51单片机循迹小车原理介绍和代码示例
51单片机循迹小车原理介绍和代码示例
|
5天前
|
传感器
51单片机矩阵键盘超详解!(内含LCD1602代码)
51单片机矩阵键盘超详解!(内含LCD1602代码)
12 0
【51单片机】自定义动态数码管显示(设计思路&原理&代码演示)
【51单片机】自定义动态数码管显示(设计思路&原理&代码演示)
【51单片机】自定义静态数码管显示(设计思路&代码演示)
【51单片机】自定义静态数码管显示(设计思路&代码演示)
|
5天前
|
C++
【51单片机】添加模块代码的常见问题(图示&代码演示)
【51单片机】添加模块代码的常见问题(图示&代码演示)
|
5天前
|
编译器 C语言 开发者
单片机原理与应用:探索微型计算机世界
单片机原理与应用:探索微型计算机世界
21 1
|
5天前
|
数据采集 数据处理 C语言
单片机:探索其原理、应用与编程实践
单片机:探索其原理、应用与编程实践
22 1
|
5天前
|
物联网
STC51单片机-实验开发装置仿真-物联网应用系统设计
STC51单片机-实验开发装置仿真-物联网应用系统设计
64 0