【51单片机系列】proteus中创建16x16LED点阵 | 您所在的位置:网站首页 › 自制点屏神器教程 › 【51单片机系列】proteus中创建16x16LED点阵 |
本文参考来源: Proteus8.6中16x16LED点阵制作教程【Proteus】16乘16点阵滚动播放 文章目录 一、测试proteus中的8x8点阵驱动方式1.1 测试电流通过方向1.2 测试行列控制接口 二、使用proteus中的8x8点阵制作16x16LED点阵三、测试制作的16x16LED点阵四、使用自制的16x16LED点阵元件显示数字和字符 proteus中提供的LED点阵有5x7和8x8的,如下,没有其他尺寸的,但软件可以自制元件,所以可以使用8x8的点阵制作出16x16的点阵。在proteus中按如下操作找到8x8矩阵,依次左键单击【MATRIX-8X8-BLUE】后双击,可以将多个元件都显示到Selector中。 创建四个8x8点阵,如下。 使用电源和地就可检测出电流通过方向、上下接口控制行列等。 1.1 测试电流通过方向为四个点阵添加电源和地,按照如下连接后,开始仿真。如下: 从结果显示,红色LED点阵电流方向从上到下,现在把蓝色、绿色、橘色点阵的连接改成如下,进行仿真,如下: 可以得出结论:proteus中的LED点阵,红色的电流通过方向为上->下,蓝色、绿色、橘色的电流通过方向为下->上。 1.2 测试行列控制接口按照如下连接方式可以测试上面的接口控制的是行还是列,结果如下: 从结果可以得出结论:proteus中的LED点阵,红色的上面的接口控制列,下面的接口控制行;蓝色、绿色、橘色的上面的接口控制行,下面的接口控制列。并且接口从左到右依次控制第一行到最后一行或第一列到最后一列。 总结proteus中的8x8LED点阵:电流方向从列->行(1->0),红色的LED点阵接口是上列下行,蓝色、绿色、橘色的LED点阵接口是上行下列。 二、使用proteus中的8x8点阵制作16x16LED点阵使用proteus中的8x8LED点阵制作16x16LED点阵详细步骤如下,这里以橘色为例。 点击菜单栏【View】,选择【Snap 50th】,如下全部完成后,在分解的元件部分会得到如下 复制对角线上的圆点 分解复制的圆点,并将标志位移动到同一行 制作Symbol 最终效果如下,每一行只复制对角线上的圆点 制作元件完成后,在元件库中就可以找到了,如下,选择该元件,放置在界面上。 使用第一节的测试方法,结果如下,接口控制是上列下行,电流方向上->下,从左到右依次控制第一行到最后一行或第一列到最后一列。 为了让元件使用时更清楚,这里把自制的元件做一下更改,具体操作如下。 首先,创建一个自制的16x16LED点阵,鼠标放到元件上,背景是淡红色时右键,选择【Decompose】,点击左侧工具栏的【S】,根据上面的测试可以知道下面的接口控制的是行,那么就将下面的接口移动到左侧,表示控制行,如下 然后按照制作元件的第17步制作元件,如下 此时重新再添加自制的元件发现就会变成如下所示。 本实验的功能是使用自制16x16LED点阵元件简单显示数字”1“和字符”中“。直接使用51单片机的32个接口连接到LED点阵上,不额外使用其它的模块。proteus中设计如下: 软件设计如下: /* 实现功能:74HC595芯片控制16x16LED点阵显示数字1和汉字中 [2023-12-13] zoya */ #include "reg52.h" #include "intrins.h" #include "HC595.h" #define GPIO_LED P0 // 显示数字 1 u8 hang1[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; u8 hang2[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xfc, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00}; // 显示汉字 中 //u8 hang1[] = {0x00, 0x00, 0x00, 0x1f, 0x11, 0x11, 0x11, 0x7f, 0x11, 0x11, 0x11, 0x1f, 0x00, 0x00, 0x00, 0x00}; //u8 hang2[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; u16 lie=0x8000; // 延时函数,i=1时延时10us void Delay(u16 i) { while(i--); } // 数码管显示函数 void digDisplay() { u8 i; for(i=0;i while(1) { digDisplay(); } }仿真结果,显示数字“1”如下 仿真结果显示汉字”中“如下 红色、蓝色、绿色的16x16点阵也是按这个方法实现。 |
CopyRight 2018-2019 实验室设备网 版权所有 |