加入交流群  

扫一扫,添加管理员微信
备注:参考设计,即可被拉入群
和也在搞设计小伙伴们碰一碰

收藏 

评论 

兰博 发布

【航顺训练营】基于HK32F103CBT6的LED点阵学习板

 
设计简介

【简介】

本工程是基于HK32F103CBT6的双色LED点阵学习板,能够完成以下功能:

1.静态显示文字(程序已完成

2.左移显示(程序待开发)

3.点阵书写(程序已完成

4.灰度显示(程序待开发)

5.点阵时钟(程序待开发)

————————————————————————————————————————————————————————————

————————————————————————————————————————————————————————————

【硬件】

硬件整体结构如图所示:

整个电路结构其实还是比较简单的,主要部分是HK32最小系统和LED点阵

下面重点讲一下LED点阵部分的电路:

本设计中的16*32点阵由8块8*8共阳极点阵组成

LED点阵通常采用动态行列扫描来进行驱动,即按照顺序逐行显示,由于人眼的视觉暂留现象,

当扫描速度足够快的时候看起来画面就是静止的。

行扫描电路通常采用译码器来实现,因为某一个时刻只有一行是被选中的。

本设计中点阵的行数为16,所以需要使用4-16译码器,但是为了方便布线,并没有直接使用4-16译码器

而是采用两片3-8译码器级联,具体型号为74HC1 3 8。

由于1 3 8译码器输出有效电平为低电平,且输出能力不够,所以需要使用PMOS来进行反相及电流放大:

为了实现全局亮度调节还加入了PWM调光电路:

LED点阵的列驱动通常采用大家熟悉的74HC595串转并芯片,但是该芯片并非专门为LED点阵设计的,

当每一行的点亮数量不同时会出现亮度不均匀的现象,所以这里我改用了M B I 5024这款芯片,

它能够实现16通道的可编程恒流输出,亮度均匀,一致性好。同时它自带反相,很适合共阳极点阵:

其余电路均为常见设计,在此不做赘述。

————————————————————————————————————————————————————————————

————————————————————————————————————————————————————————————

【软件】

1.静态显示

前面提到LED点阵的驱动是通过行列扫描来实现的,整个过程并不复杂

首先需要在程序中建立一个二维数组作为显示缓存,与点阵的行列分别对应,

在扫描到某一行的时候将该行的数据发送出去再显示一小段时间就可以了,

只要扫描的速度够快,人眼看到的画面就是静止的了。

具体程序如下:

void Display()
{    
    char i,j;
    EN = 1;            //
关显示
    for(i=0;i<16;i++)  //
行扫描循环  
    {    
        Scan(i);   //
行扫描
        for(j=0;j<2;j++)  //
列扫描循环,每次发送4字节数据
        {        
            SendByte(Red_Buff[i][j*2] ,Green_Buff[i][j*2]);
            SendByte(Red_Buff[i][j*2+1] ,Green_Buff[i][j*2+1]);
        }
        LT = 1;  //
发送时钟让数据移出
        LT = 0;
        
        EN = 0;  //
显示一小段时间
        delay_us(50);
        EN = 1;
    }    
}

显示效果如下图:

——————————————————————————————————————————————————

2.点阵书写

LED点阵书写显示屏其实是很多年前一次电赛的题目,其实现原理并不复杂。

当我们把Pen(这个字中文违规了)放在点阵屏上,只要能够检测到Pen所在的位置,然后将对应位置的LED点亮即可。

那么,怎样才能够检测到Pen所在的位置呢?

首先,需要一支特殊的Pen:当它检测到一定强度的光照时,会输出一个信号。

光Pen电路如下图所示:

光敏元件使用3DU5C光敏三极管,响应速度更快。无光照情况下比较器同相电压比反相高,输出高电平,

当光敏三极管检测到LED点亮后导通,E极由低电平变为高电平,比较器输出极性反转,输出信号给单片机。

检测位置则可以使用扫描的方式来实现:

首先从上到下逐行点亮该行的所有LED,如果在点亮某一行的时候光Pen输出了信号,则说明光Pen在这一行,

这样就知道光Pen的Y轴坐标了,此时再从左到右逐个点来点亮这一行的LED

当光Pen检测到时,就确定了X轴坐标了。

扫描示意见GIF图:

通过这样的方式获取到光Pen所在的位置后,再将对应的LED点亮就可以实现LED点阵书写了。

需要注意的是,再扫描获取光Pen位置的时候会点亮很多点,如果扫描的时间和正常显示的时间一样的话,

肯定就区分不出来哪些点是点亮的,所以需要在程序中控制扫描时间和显示时间的比例,

当扫描时间比显示时间少很多的时候,扫描时候的亮度就不如正常显示的时候了,这样就能区分出扫描和正常显示了。

获取光Pen坐标的程序如下:

u16 GetPos()
{
    u16 i=0,j=0;
    u16 pos=0x0000;
    
    LT = 1;
    SendByte(0xff, 0x00);  //一行红色全亮
    SendByte(0xff, 0x00);
    SendByte(0xff, 0x00);
    SendByte(0xff, 0x00);
    LT = 0;
    
    EN=0;     //行扫描之前先开显示
    while(i<16)
    {
        Scan(i);//扫描某一行
        delay_us(20);  //延时一小段时间
        if(PEN == 1) {PEN = 0; EN = 1; break ;}//扫描到了光Pen,关显示,退出行扫描
        i++;
    }
    if(i==16) {PEN = 0; EN=1; return 0xffff;}//16行都没有扫描到光Pen,关显示退出扫描
    
    EN=0;//列扫描之前先开显示
    while(j<32)
    {
        Scan_Col(j);
        delay_us(20);        //延时一段时间,不然检测不到
        if(PEN == 1)
        {
            delay_us(30);
            if(PEN == 1) {PEN = 0; EN = 1; break ;}//扫描到了光Pen,关显示,退出列扫描
        }
        j++;
    }
    if(j==32) {PEN = 0; EN=1; return 0xffff;}//32列都没有扫描到光Pen,关显示退出扫描
    EN = 1;//正常扫描结束之后,关显示
    pos = (i<<8) | j;//计算坐标
        
    return pos;
}

实际书写效果如下图:

上图演示的是点亮模式,如果不小心写错了则需要使用点灭模式,原理类似。

——————————————————————————————————————————————————

3.待续。

由于本次训练营时间有限,仅完成两个DEMO程序,灰度显示和时钟后续会抽时间完成并更新。

————————————————————————————————————————————————————————————

————————————————————————————————————————————————————————————

【实物照片】

————————————————————————————————————————————————————————————

————————————————————————————————————————————————————————————

【源码】

代码见附件

参考设计图片
×

!注意:请使用浏览器自带下载,迅雷等下载软件可能无法下载到有效资源。

 
相关器件
器件 类型 描述 数据手册
CR1220-2 电池盒/电池座 点击下载
CL10B104KA8NNNC 贴片电容 精度:±10% 容值:100nF 额定电压:25V 温漂系数(介质材料):X7R 材质:X7R 点击下载
CL10A475KA8NQNC 贴片电容 精度:±10% 容值:4.7uF 额定电压:25V 温漂系数(介质材料):X5R 材质:X5R 点击下载
CL10A475KA8NQNC 贴片电容 精度:±10% 容值:4.7uF 额定电压:25V 温漂系数(介质材料):X5R 材质:X5R 点击下载
CL10A475KA8NQNC 贴片电容 精度:±10% 容值:4.7uF 额定电压:25V 温漂系数(介质材料):X5R 材质:X5R 点击下载
C2012X5R1E106KT000N 贴片电容 精度:±10% 容值:10uF 额定电压:25V 温漂系数(介质材料):X5R C2012X5R1E106K125AB 点击下载
0603N200G500CT 贴片电容 精度:±2% 容值:20pF 额定电压:50V 温漂系数(介质材料):NP0(C0G) 材质:NP0 点击下载
RT1C101M0605 贴片型铝电解电容 容值:100uF 精度:±20% 额定电压:16V 点击下载
B04B-PASK-1(LF)(SN) 线对板/线对线连接器 针脚数:4 连接器类型:针座 触头类型:公形引脚 间距:0.079"(2.00mm) 系列:PA 点击下载
XH-4A 线对板/线对线连接器 针脚数:4 连接器类型:针座 触头类型:公形引脚 间距:0.098"(2.50mm) 系列:XH 点击下载
SS56 肖特基二极管 直流反向耐压(Vr):60V 平均整流电流(Io):5A 正向压降(Vf):700mV @ 5A 60V,5A,VF=0.7V@5A 点击下载
Z-211-0211-0021-001 排针排母 针脚数:2 连接器类型:排针 排数:1 触头类型:公形引脚 间距:0.100"(2.54mm) 2.54 1*2P 直排针 0.8u镀金 PBT RoHS,针长3*6mm 点击下载
B-2100N10P-B110 排针 点击下载
CBG201209U101T 磁珠 阻抗 @ 频率:100Ω @ 100MHz 线路数:1 额定电流(最大):400mA 直流电阻(DCR)(最大):180mΩ 点击下载
NCD0603R1 发光二极管 照明颜色:红色 主波长/色坐标:615~630nm 0603 红色 贴片LED 发光二极管 点击下载
SI2301 MOS(场效应管) 点击下载
0603WAF1401T5E 贴片电阻 阻值(欧姆):1.4K 精度:±1% 功率:1/10W 温度系数:±100ppm/°C 点击下载
0805W8F0000T5E 贴片电阻 阻值(欧姆):0 精度:±1% 功率:1/8W 温度系数:±800ppm/°C 点击下载
GL5528A(10-15K) 光敏电阻 暗电阻:1 MOhm 亮电阻:(10~15)KOhm @10lux 最大工作电压:150 VDC 感应波长(峰值):540 nm 点击下载
3362P-1-102 精密可调电阻 阻值(欧姆):1K 精度:±10% 温度系数:±250ppm/℃ 点击下载
AR03FTD1002 贴片高精密、低温漂电阻 阻值(欧姆):10K 精度:±1% 功率:1/16W 温度系数:- 点击下载
RMC 0603 4K7 F N 贴片电阻 点击下载
0603WAF0000T5E 贴片电阻 阻值(欧姆):0 精度:±1% 功率:1/10W 温度系数:- 点击下载
RMC06031K1%N 贴片电阻 点击下载
TC-1102-C-E-B 轻触开关 按钮作用方向:Top Actuated 触点额定电流:50mA @ 12VDC 按钮头类型:Standard 作用力:260gf 电路结构:SPST 点击下载
MBI5024GP-D LED驱动 等电流范围1-45mA@VDD=5V; 1-30mA@VDD=3V 点击下载
SM74HC138 74系列逻辑芯片 3-8 译码器 点击下载
HK32F103CBT6 单片机(MCU/MPU/SOC) 点击下载
DS3231SN#T&R; 实时时钟芯片 日期格式:YY-MM-DD-dd 时间格式:HH:MM:SS (12/24 hr) 接口类型:I2C, 2-Wire Serial 存储器容量:- 时钟芯片类型:Clock/Calendar 低成本、高精度I2C实时时钟(RTC),具有集成的温补晶振(TCXO)和晶体 点击下载
LM393DR 电压比较器 输出类型:CMOS, MOS, Open-Collector, TTL 各通道功耗:2.5mA 传播延迟:- 比较器组数:2 电源电压:2V ~ 36V, ±1V ~ 18V 双路差动比较器 点击下载
RT9193-33GB 低压差线性稳压(LDO) 输出类型:固定 最大输入电压:5.5V 输出电流:300mA 输出电压(最小值/固定值):3.3V 3.3V固定输出,低压差300mV@Iout=300mA,Vin=5.5V(Max) 点击下载
CH340E USB芯片 驱动器/接收器数:- 协议类别:USB 2.0 类型:Transceiver 数据速率:2Mbps 超小体积,USB转UART串口,内置晶振,含485使能脚,外围简洁(两个电容),比CH340G、CH340C、CH341T更省体积 点击下载
TYPE-C16PIN USB连接器 点击下载
1ZCM08000EK0A 贴片晶体谐振器(无源) 等效串联电阻(ESR):400Ω 主频:8MHz 频率公差:±50ppm 负载电容值:8pF 点击下载
群聊设计,与管理员及时沟通

欢迎加入EEWorld参考设计群,也许能碰到搞同一个设计的小伙伴,群聊设计经验和难点。 入群方式:微信搜索“helloeeworld”或者扫描二维码,备注:参考设计,即可被拉入群。 另外,如您在下载此设计遇到问题,也可以微信添加“helloeeworld”及时沟通。

 
查找数据手册?

EEWorld Datasheet 技术支持

论坛推荐 更多
更新时间2024-11-12 07:44:41

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版 版权声明

EEWORLD参考设计中心

站点相关: TI培训 德州仪器(TI)官方视频课程培训

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved