打印
[STM32]

振南ZN-X开发板(STM32F103版) 基础实验 之 16x16点阵测试实验

[复制链接]
1365|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
znmcu|  楼主 | 2014-10-10 10:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 znmcu 于 2014-10-10 14:17 编辑

振南网站还在继续美化改进,暂时提供一个平台来发布振南的实验和相关资料!
http://www.znmcu.cn/znx_m3_exp_basic_leddz_test.html
振南QQ:987582714  群:198521880

振南ZN-X开发板(STM32F103) 基础实验 16x16点阵测试实验
实验说明:
LED点阵无疑是非常经典的基础实验,如同“流水灯”一样,LED点阵很多单片机学习者必作的实验。它虽然看似简单,但包含了很多内容,比如扫描驱动的思想、定时器、中断、串行与并行等等。对于一些初学者,还是有一定难度的。曾经有很多人向我询问点阵屏驱动和电路的原理。希望通过此实验可以向大家对其有较深的认识。
此实验的目的是在ZN-X开发板(配基础实验模块)的16x16点阵上轮流显示“振南电子”这几个汉字的字形。
实验硬件:
硬件特写:











实验原理图:
信号连接:
振南ZN-X开发板具有极强的扩展性,可以插接很多种模块,同时也可以兼容很多种CPU芯片。本实验使用的是STM32F103和基础资源模块。将基础资源模块插接到ZN-X基板的插座上,这样模块的信号便与CPU的IO进行了连接。
16x16点阵部分的信号连接如下表:
16x16点阵信号

与CPU IO连接


说明


595-DINH


PA7


用于控制“行”的两片级联HC595的串行数据输入


595-DINL


PA4


用于控制“列”的两片级联HC595的串行数据输入


595-LC


PB10


用于控制4片HC595的数据锁存


595-SCK


PA5


串行时钟


驱动原理简要介绍:
对于点阵屏的显示原理,其实与数码管是一样的道理,都是采用动态扫描的方法。我们首先要获取显示字形的字模数据。对于16x16点阵,每一行是16个位,每一列也是16个位。我们首先取出一行点阵数据写入到用于控制“列”的两片级联HC595中(它拼成了16位的输出),同时我们选通它所对应的某一行(向控制“行”的两片级联HC595写入0x0001<<n)。这一过程高速的轮训,各行依次显示16位点阵数据,由于人眼的暂留效应,最终人们就会看到一个完整的字形。
更为详细的讲解,请参见《振南的基础外设9日通》视频教程 之 LED点阵专辑
请进入振南电子视频教程专区 http://v.znmcu.cn



视频教程课程主要内容:
1、认识LED点阵
     1)无处不在的LED点阵
     2)8X8点阵原理
     3)模块接口定义
     4)从8X8点阵到16X16点阵
2、基础资源模块上的点阵
     1)电路讲解
     2)模块实物介绍
3、点阵的驱动方法
     1)用8X8点阵显示字符
        1、动态扫描
        2、PCtoLCD的用法
     2)74HC595的使用方法
        1、单片操作
        2、多片级联
     3)用16X16点阵显示汉字
4、用16X16点阵显示8位数码
5、点阵的驱动电流问题  
程序下载与仿真方法:
ARM-OB SWDP仿真调试器接口(ARM-OB其实是JLINK的简化版,它只支持SWDP接口方式,而非JTAG方式)。



主要代码:
const unsigned char hz_buf[4][32]= //汉字的字模数据
{
{
  0x10,0x00,0x13,0xFE,0x12,0x00,0xFE,0x00,0x12,0xFC,0x16,0x00,0x1B,0xFE,0x12,0xC0,
  0x32,0xA4,0xD2,0xA6,0x12,0x98,0x12,0x88,0x14,0x88,0x14,0xA6,0x58,0xC4,0x20,0x80,/*"振",0*/
},
{
  0x01,0x00,0x01,0x04,0xFF,0xFE,0x01,0x00,0x02,0x00,0x3F,0xFC,0x24,0x24,0x22,0x44,
  0x2F,0xF4,0x21,0x04,0x3F,0xFC,0x21,0x04,0x21,0x04,0x21,0x14,0x21,0x08,0x00,0x00,/*"南",1*/
},
{
  0x01,0x00,0x01,0x00,0x01,0x00,0x3F,0xF8,0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,
  0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,0x01,0x02,0x01,0x02,0x00,0xFE,0x00,0x00,/*"电",2*/
},
{
  0x00,0x00,0x3F,0xF0,0x00,0x20,0x00,0x40,0x00,0x80,0x01,0x00,0x01,0x00,0x01,0x04,
  0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00,/*"子",3*/
}
};

int main(void)
{      
         unsigned int index=0;

     ZNX_Board_Init(); //ZN-X开发板的板级初始化  

         delay_init();              //延时函数初始化      
         uart_init(38400);

         printf("*********************** \r\n");
         printf("This is LedMatrix Test  \r\n");
         printf("*********************** \r\n");

    DZ_Init();    //初始化点阵,启动点阵动态扫描

         while(1)
         {
                   DZ_UpdateBuffer(hz_buf[index++]);      //将汉字的字模数据更新到显示缓冲数组中
                   index%=4; //对i取4的余,使其在0~3变化
                   delay_ms(500);
         }
}
注:有很多人询问程序中的汉字字模数据是如何获取的,其实很简单,是使用PCtoLCD软件获取的。这在视频教程中,以及振南的书中都有详细的说明。
书电子版的下载:http://www.znmcu.cn/znfat_support.html 中的第十章!
实验效果:


实验代码下载:


相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:振南的znFAT -- 单片机上上的FAT32文件系统 www.znmcu.cn

4474

主题

5195

帖子

33

粉丝