Hub12接口,P10两扫单元板的开发
第一步:引脚的初始化
我用的是AT32F403a的芯片,如图配置引脚即可,因为是两扫的单元板(红色),所以有的引脚是没有用的真正有用的是OE、A、B、ST、CLK、R引脚。配置成推挽输出
void bsp_LED_Unit_board_init ( void )
{
gpio_init_type gpio_init_struct;
/* enable the led clock */
crm_periph_clock_enable ( CRM_IOMUX_PERIPH_CLOCK, TRUE ); //复用时钟使能
crm_periph_clock_enable ( CRM_GPIOB_PERIPH_CLOCK, TRUE );
crm_periph_clock_enable ( CRM_GPIOD_PERIPH_CLOCK, TRUE );
crm_periph_clock_enable ( CRM_GPIOC_PERIPH_CLOCK, TRUE );
/* set default parameter */
gpio_default_para_init ( &gpio_init_struct );
/* configure the led gpio */
gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
gpio_init_struct.gpio_out_type = GPIO_OUTPUT_PUSH_PULL;
gpio_init_struct.gpio_mode = GPIO_MODE_OUTPUT;
gpio_init_struct.gpio_pins = GPIO_PINS_7 | GPIO_PINS_6 | GPIO_PINS_5 ;
gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
gpio_init ( GPIOB, &gpio_init_struct );
gpio_pin_remap_config ( SWJTAG_MUX_010, TRUE ); //禁用JTAG功能使能 SWD 功能, PB3 PB4用作普通IO
gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
gpio_init_struct.gpio_out_type = GPIO_OUTPUT_PUSH_PULL;
gpio_init_struct.gpio_mode = GPIO_MODE_OUTPUT;
gpio_init_struct.gpio_pins = GPIO_PINS_4 | GPIO_PINS_3 ;
gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
gpio_init ( GPIOB, &gpio_init_struct );
/* configure the led gpio */
gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
gpio_init_struct.gpio_out_type = GPIO_OUTPUT_PUSH_PULL;
gpio_init_struct.gpio_mode = GPIO_MODE_OUTPUT;
gpio_init_struct.gpio_pins = GPIO_PINS_7 | GPIO_PINS_6 | GPIO_PINS_5;
gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
gpio_init ( GPIOD, &gpio_init_struct );
/* configure the led gpio */
gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
gpio_init_struct.gpio_out_type = GPIO_OUTPUT_PUSH_PULL;
gpio_init_struct.gpio_mode = GPIO_MODE_OUTPUT;
gpio_init_struct.gpio_pins = GPIO_PINS_4 | GPIO_PINS_3 | GPIO_PINS_2 | GPIO_PINS_1 | GPIO_PINS_0;
gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
gpio_init ( GPIOD, &gpio_init_struct );
/* configure the led gpio */
gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
gpio_init_struct.gpio_out_type = GPIO_OUTPUT_PUSH_PULL;
gpio_init_struct.gpio_mode = GPIO_MODE_OUTPUT;
gpio_init_struct.gpio_pins = GPIO_PINS_12 | GPIO_PINS_11 | GPIO_PINS_10;
gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
gpio_init ( GPIOC, &gpio_init_struct );
OE2_1;
OE1_1;
}
第二步:清屏函数
只是把数据引脚R拉低,然后往里面写入低电平即可,把所有点写完,锁存,然后在显示
void clear_scree_board1 ( void )
{
int i;
R1_0;
OE1_1;
for ( i = 0; i < 32 * 8 * led_board_num1; i++ ) //清屏
{
CLK1_0;
delay_us ( 5 );
CLK1_1;
}
ST1_1;
delay_us ( 2 );
ST1_0;
delay_us ( 2 );
OE1_0;//显示
}
第三步:写数据函数(一个字节一个字节的写)
static void writedata_led_board1 ( uint8_t data )
{
int i;
for ( i = 0; i < 8; i++ )
{
if ( data & 0x01 ) //高位在前,如果想低位在前使用(data&0x80)
{
R1_1;
}
else
{
R1_0;
}
CLK1_0;
delay_us ( 1 );//必须要加一个延时
CLK1_1;
data = data >> 1;
}
}
第四步:显示字符汉字函数
这个函数是根据单元板的扫描逻辑进行编写的,我的板子的扫描逻辑如图所示,我嘴笨说不清楚
我是把要显示的汉字字符放在一个大的数组里面,只要字模取得对,就可以显示,字模取模方式为:如果要显示12X12的汉字字符 :行列式,阴码,顺向,点阵大小12X16
按理来说,显示16X16的汉字也可也显示,我没有测试,工作用不到
void display_12X12_board1 ( void )
{
uint8_t row, lin;
for ( row = 0; row < 2; row++ ) //2行
{
OE1_1;
for ( int i = 0; i < led_board_num1; i++ ) //用于判断几块单元板连级,有几块写几遍,把所有单元板的行都写完,在进行换行,不然会显示错误
{
for ( int p = 0; p < 4; p++ ) //共有4个四列
{
for ( lin = 0; lin < 4; lin++ ) //4列
{
for ( int zi = 0; zi < 2; zi++ ) //每列有两个字
{
uint8_t data;
if ( led_board_num1 == 1 )
{
data = display_board1.write_data_buff[48 - 16 * lin + 2 * zi + 4 * p + row];
writedata_led_board1 ( data );
}
if ( led_board_num1 == 2 )
{
if ( i == 0 ) //写第二块屏上的字
{
data = display_board1.write_data_buff[112 - 16 * lin + 2 * zi + 4 * p + row];
writedata_led_board1 ( data );
}
if ( i == 1 ) //写第一块屏上的字
{
data = display_board1.write_data_buff[48 - 16 * lin + 2 * zi + 4 * p + row];
writedata_led_board1 ( data );
}
}
if ( led_board_num1 == 3 )
{
if ( i == 0 ) //写第三块屏上的字
{
data = display_board1.write_data_buff[176 - 16 * lin + 2 * zi + 4 * p + row];
writedata_led_board1 ( data );
}
if ( i == 1 ) //写第二块屏上的字
{
data = display_board1.write_data_buff[112 - 16 * lin + 2 * zi + 4 * p + row];
writedata_led_board1 ( data );
}
if ( i == 2 ) //写第一块屏上的字
{
data = display_board1.write_data_buff[48 - 16 * lin + 2 * zi + 4 * p + row];
writedata_led_board1 ( data );
}
}
}
}
}
}
ST1_1;
delay_us ( 1 );
ST1_0;
switch ( row )
{
case ( 1 ) : A1_0; B1_1 ; break;
case ( 0 ) : A1_1; B1_0; break;
}
OE1_0; //显示
delay_us ( 10 ); //亮度调节,数值越大,led越亮
}
}
Hub12接口,P10两扫单元板的开发相关推荐
- 【花雕动手做】有趣好玩的音乐可视化系列项目(32)--P10矩阵LED单元板
偶然心血来潮,想要做一个音乐可视化的系列专题.这个专题的难度有点高,涉及面也比较广泛,相关的FFT和FHT等算法也相当复杂,不过还是打算从最简单的开始,实际动手做做试验,耐心尝试一下各种方案,逐步积累 ...
- 一文搞懂HUB75接口(附带LED单元板驱动介绍)
导读:HUB75接口是一种常用的LED单元板驱动接口,本文就常见的HUB75接口知识点进行整理. 一.HUB75 接口介绍 上图中有 A/B/C/D 4根地址线,所以是16扫( 2 4 = 16 2^ ...
- 【花雕动手做】有趣好玩的音乐可视化系列项目(30)--P6 LED单元板
偶然心血来潮,想要做一个音乐可视化的系列专题.这个专题的难度有点高,涉及面也比较广泛,相关的FFT和FHT等算法也相当复杂,不过还是打算从最简单的开始,实际动手做做试验,耐心尝试一下各种方案,逐步积累 ...
- 51单片机驱动P10单元板
以下是P10单元板(单色,1/4扫描,户外半户外)的实物图. P10屏幕是店铺常用的点阵屏幕,像素32*16(可以级联很多块).内部电路是74hc595或者是74hc595的替代芯片和编码驱动芯片组合 ...
- LED单元板驱动(HUB75接口)
开始之前先吐槽一下,搜这个的资料.要么都是Arduino,要么单片机的收费.小小的一个LED单元板,凭什么? 用Arduino是你速度快还是我ST,树莓派不好用?收费更离谱,这点东西还藏私?给你个中指 ...
- 最新 Arduino 驱动 12接口/户外 LED显示屏/LED点阵屏/LED单元板
起因 现有的驱动LED显示屏的资料,比较好的只有这个.但是它驱动的是08接口的室内显示屏,而我要驱动的是12接口的户外显示屏.两种屏幕的区别在于户外屏幕点阵比较稀疏,而且二者的扫描方式,驱动方式都不太 ...
- STM32F103 驱动32x64双色点阵单元板 (标准HUB08 接口 F3.75)
MCU:STM32F103C8 点阵屏:32*64 F3.75 单元板 红绿双色 显示 接口:标准HUB08 OE :高电平有效 ,138译码 , 1/16 扫 欢迎加QQ群 ...
- Python零基础先修课第六周两个单元
Python零基础先修课第六周两个单元 笔记 第一单元 第二单元 课后练习 第一单元 第二单元 笔记 第一单元 计算生态 计算思维 -抽象.自动化 -实证思维.逻辑思维.计算思维 计算机模拟:模拟现实 ...
- php主板主要是支持,i7处理器配什么主板好?两款主-板推荐
i7处理器配什么主板好?两款主-板推荐 发布时间:2017-08-20 22:05 来源:互联网 当前栏目:电脑技巧 导语:大家知道Intel i7中央处理器应该配什么样的主板吗?在这篇文章中,小编将 ...
最新文章
- Python程序设计 第六章 函数(续
- 微软推出Visual Studio Kubernetes工具包预览版
- LoRa、蓝牙、技术在电子显示牌上的应用
- oracle函数分为几个大类,ORACLE常见分析函数有哪几类呢?
- 程序员的“非程序员”之路
- 安装Ubuntu最后重启出错Write through
- 敏感词的字典树匹配(lua版)
- 2019数据安装勾选_Origin2019下载和安装教程
- 高德地图GPS经纬度转高德经纬度
- python中class什么意思_python中的class是什么意思
- html怎么修改网页背景色,CSS如何设置网页背景颜色、背景图片
- 大话谈VUE之export const
- .frm mysql_mysqlfrm使用
- java使用jbarcode生成条形码
- 传教士与野人过河问题 人工智能实验算法
- python绘图报错
- 基于OpenSSL的CA建立及证书签发(签发单域名/IP)
- 大厂Java岗春招必看:论一个面渣逆袭之路上必学得那些知识点
- vue实现盒子的拖拽移动
- 五种经典卷积神经网络
热门文章
- linux gpio 模拟串口,STM32的GPIO口模拟串口通信.rar
- jq点击事件实现防抖
- c语言表达式和逻辑表达式是,C语言中关系表达式和逻辑表达式的值是什么
- 监听element-ui的Calendar 日历组件的上一月 今天 下一月
- 如何用Android studio开发一个实现基本功能的新闻app?——简闻(源码及教程)
- 服务器意外断电MySQL无法启动
- 滴滴面试-zoom视频实习生-8.11
- 【T+】安装畅捷通T+提示安装向导找不到环境检测工具,是否手动选择环境检测工具文件夹。
- CoSTA:用于空间转录组分析的无监督卷积神经网络学习方法
- echarts显示地图以及jQuery地域选择器插件