复习单片机: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


相关文章
令人头疼的数据输入,认识数据 输入输出
令人头疼的数据输入,认识数据 输入输出
173 0
【数字IC手撕代码】Verilog自动售卖饮料机|题目|原理|设计|仿真
【数字IC手撕代码】Verilog自动售卖饮料机|题目|原理|设计|仿真
【数字IC手撕代码】Verilog自动售卖饮料机|题目|原理|设计|仿真
EasyX基础内容(和易错的地方)(一)
注意代码里面的文字,是易错点
194 0
EasyX基础内容(和易错的地方)(二)
EasyX基础内容(和易错的地方)
289 0
【数字IC手撕代码】Verilog异步复位同步释放|题目|原理|设计|仿真
【数字IC手撕代码】Verilog异步复位同步释放|题目|原理|设计|仿真
【数字IC手撕代码】Verilog异步复位同步释放|题目|原理|设计|仿真
|
自然语言处理 算法
【数字IC手撕代码】Verilog固定优先级仲裁器|题目|原理|设计|仿真
【数字IC手撕代码】Verilog固定优先级仲裁器|题目|原理|设计|仿真
【数字IC手撕代码】Verilog固定优先级仲裁器|题目|原理|设计|仿真
|
C语言
复习单片机:单灯闪烁(内含设计思路和原始代码)
复习单片机:单灯闪烁(内含设计思路和原始代码)
251 0
复习单片机:单灯闪烁(内含设计思路和原始代码)
|
芯片
复习单片机:静态数码管(内含1 数码管介绍+2 硬件设计+3 软件设计+4.原始代码+5 实验现象) (注:数码管介绍和硬件设计是重点)
复习单片机:静态数码管(内含1 数码管介绍+2 硬件设计+3 软件设计+4.原始代码+5 实验现象) (注:数码管介绍和硬件设计是重点)
442 0
复习单片机:静态数码管(内含1 数码管介绍+2 硬件设计+3 软件设计+4.原始代码+5 实验现象) (注:数码管介绍和硬件设计是重点)
|
芯片
复习单片机:独立按键(内含.1 按键介绍+.2 硬件设计+.3 软件设计+4.原始代码+.5 实验现象)
复习单片机:独立按键(内含.1 按键介绍+.2 硬件设计+.3 软件设计+4.原始代码+.5 实验现象)
816 0
复习单片机:独立按键(内含.1 按键介绍+.2 硬件设计+.3 软件设计+4.原始代码+.5 实验现象)
复习单片机:快速获得数字和图像对应的16进制代码软件的下载和使用
复习单片机:快速获得数字和图像对应的16进制代码软件的下载和使用
132 0
复习单片机:快速获得数字和图像对应的16进制代码软件的下载和使用