【普中 51-Ai8051 开发攻略】-- 第 12 章 LED 点阵实验-显示字符

(1)实验平台:

普中 51-Ai8051 开发板https://item.taobao.com/item.htm?abbucket=17&id=1026052331067(2)资料下载 :普中科技-各型号产品资料下载链接


LED 点阵屏广泛应用于各种公共场合, 如电子广告牌、 时钟、 计数器、 车站、码头、 机场、 商场等地方。 它不仅能够提供清晰的视觉信息, 还能提升场所的档次和吸引力。 本章我们实现在 8*8LED 点阵屏上显示字符 0。 本章分为如下几部分内容:

[12.1 实验介绍](#12.1 实验介绍)

[12.1.1 实验简介](#12.1.1 实验简介)

[12.1.1.1 LED 点阵屏动态扫描原理](#12.1.1.1 LED 点阵屏动态扫描原理)

[12.1.1.2 字符汉字显示原理](#12.1.1.2 字符汉字显示原理)

[12.1.2 实验目的](#12.1.2 实验目的)

[12.2 硬件设计](#12.2 硬件设计)

[12.3 软件设计](#12.3 软件设计)

[12.3.1 创建和配置工程](#12.3.1 创建和配置工程)

[12.3.1.1 GPIO 配置](#12.3.1.1 GPIO 配置)

[12.3.1.2 生成工程](#12.3.1.2 生成工程)

[12.3.2 添加用户驱动代码](#12.3.2 添加用户驱动代码)

[12.3.2.1 main.c 文件](#12.3.2.1 main.c 文件)

[12.4 实验现象](#12.4 实验现象)


12.1 实验介绍

12.1.1 实验简介

12.1.1.1 LED 点阵屏动态扫描原理

行列划分: 整个 LED 点阵屏被划分为若干行和列, 每个 LED 灯与行和列的交汇处连接。

行选通: 驱动 IC 按照一定的顺序, 逐个选通 LED 像素所在的行。 例如, 在逐行动态扫描中, 首先选通第一行的像素, 然后迅速切换到下一行, 以此类推。

列数据发送: 在行被选通的同时, 向各列送出表示图形或文字信息的脉冲信号。 这些信号决定了该行中每个 LED 灯的亮灭状态。

时间分片: 每个被选通的行只保持短暂的时间, 然后快速切换到下一个行。这个过程非常迅速, 通常在肉眼无法察觉的范围内完成, 使得所有像素看起来都是同时亮起的。

刷新率: 扫描速度非常快, 通常达到 60Hz 或以上的刷新率, 以避免肉眼可见的闪烁。

12.1.1.2 字符汉字显示原理

要在 LED 点阵屏上显示字符 0, 可将对应位置的 LED 灯点亮, 其余熄灭, 这样就能得到每列扫描时, 对应行显示的数据, 如下图所示:

cpp 复制代码
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};//LED 点阵显示数字 0 的列数据

数组 gled_col 存放的是从左到右每列扫描时对应的列数据。

数组 gled_row 存放的是从左到右每列扫描时对应的行数据。

为了方便更改所显示的内容, 可借助 PCtoLCD2002.exe 取模软件(资料目录"\5--开发工具\3-常用辅助开发软件\PCtoLCD2002 完美版\PCtoLCD2002.exe" ) , 操作如下所示:

12.1.2 实验目的

在 LED 点阵屏上显示字符 0。

12.2 硬件设计

本实验使用到硬件资源如下:

(1) GPIO

(2) LED 点阵模块

相关电路在前面章节已经介绍过, 此处省略。

12.3 软件设计

12.3.1 创建和配置工程

按照前面章节内容创建一份新工程, 并命名为 08-leddz_char, 如下图所示:

12.3.1.1 GPIO 配置

使能端口和时钟, LED 点阵对应 IO 设置为推挽输出模式, 使能上拉电阻; 如下图所示:

12.3.1.2 生成工程

配置完成后, 按下代码生成按钮, 自动创建工程, 系统开始生成初始化代码。生成工程文件目录如下图所示:

在工程文件夹内新建一个 APP 文件夹, 用于存储用户编写的外设驱动, 方便后期工程管理和程序移植。 在 APP 文件夹下新建 leddz 文件夹, 并在该文件夹内新建 leddz.c 和 leddz.h 文件, 用于保存点阵相关驱动。 可直接从前面工程内复制即可。 如下所示:

然后在导出的工程中添加 APP 组, 并将 leddz.导入到工程组内, 最后添加头文件路径, 否则编译将报错。 如下:

添加完以后, 如下图所示:

12.3.2 添加用户驱动代码

leddz.c 和 leddz.h 文件内容不变, 可参照点亮一个点代码。

12.3.2.1 main.c 文件

cpp 复制代码
//<<AICUBE_USER_HEADER_REMARK_BEGIN>>
/* 深圳市普中科技有限公司(PRECHIN 普中)
 * 在线视频:https://space.bilibili.com/2146492485/video
       官网:www.prechin.cn

 * 实验名称:LED点阵实验(显示字符)
 * 
 * 接线说明:参考电路图
 * 
 * 实验现象:程序下载成功后,LED点阵显示数字0
 * 
 * 注意事项:GND和OE短接
 * 
 */
//<<AICUBE_USER_HEADER_REMARK_END>>


#include "config.h"                     //默认已包含stdio.h、intrins.h、ai_usb.h等头文件


//<<AICUBE_USER_INCLUDE_BEGIN>>
// 在此添加用户头文件包含  
#include "leddz.h"
//<<AICUBE_USER_INCLUDE_END>>


//<<AICUBE_USER_GLOBAL_DEFINE_BEGIN>>
// 在此添加用户全局变量定义、用户宏定义以及函数声明 
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};//LED点阵显示数字0的列数据
//<<AICUBE_USER_GLOBAL_DEFINE_END>>



////////////////////////////////////////
// 项目主函数
// 入口参数: 无
// 函数返回: 无
////////////////////////////////////////
void main(void)
{
    //<<AICUBE_USER_MAIN_INITIAL_BEGIN>>
    // 在此添加用户主函数初始化代码 
	u8 j=0;
    //<<AICUBE_USER_MAIN_INITIAL_END>>

    SYS_Init();

    //<<AICUBE_USER_MAIN_CODE_BEGIN>>
    // 在此添加主函数中运行一次的用户代码  
    //<<AICUBE_USER_MAIN_CODE_END>>

    while (1)
    {
        //<<AICUBE_USER_MAIN_LOOP_BEGIN>>
        // 在此添加主函数中用户主循环代码
		for(j=0;j<8;j++)//循环8次扫描8行、列
		{
			LEDDZ_COL_Write_Data(gled_col[j]);//传送列选数据
			LEDDZ_Row_Write_data(gled_row[j]);//传送行选数据
			delay_ms(1);//延时一段时间,等待显示稳定
			LEDDZ_Row_Write_data(0x00);//消影	
		}	
        //<<AICUBE_USER_MAIN_LOOP_END>>
    }
}

主函数实现功能主要初始化系统时钟及相应外设端口, while 循环内通过 for循环 8 次, 对 8*8LED 点阵进行动态扫描, 每列扫描时写入对应行的数据。

12.4 实验现象

将程序编译下载到目标板运行, 实验现象: LED 点阵屏上显示字符 0。 如下所示:

相关推荐
进击的小头2 小时前
第11篇:TI DSP芯片中断系统详解:PIE架构、配置实战与实时性优化
单片机·嵌入式硬件
Deepoch3 小时前
基于 VLA 边缘计算的除草机器人自主作业技术研究
人工智能·开发板·具身模型·deepoc·除草机器人
Hello_Embed4 小时前
嵌入式上位机开发入门(二十四):Paho MQTT 嵌入式客户端源码分析
网络·单片机·网络协议·tcp/ip·嵌入式
yrx02030713 小时前
串口空闲中断+DMA接收+环形缓冲区 && 串口DMA发送+环形缓冲区
stm32·单片机
LCG元14 小时前
STM32实战:基于STM32F103的4G模块(EC20)HTTP通信
stm32·嵌入式硬件·http
送外卖的CV工程师15 小时前
STM32+Makefile编译+OpenOCD 烧录调试
stm32·单片机·嵌入式硬件·makefile·调试·烧录·openocd
豆包公子15 小时前
程序流监控:AUTOSAR CP 功能安全在裸机 MCU 上的实现(理论篇)
运维·单片机·嵌入式硬件·安全·车载系统·autosar
编程之升级打怪16 小时前
单片机SPI硬件接口的要点
嵌入式硬件
Aaron_dw17 小时前
PHY Eye Monitor 全栈技术说明书
嵌入式硬件