找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4615|回复: 5
打印 上一主题 下一主题
收起左侧

89单片机+四个74HC595的LED16x16点阵 程序源码原理图

  [复制链接]
跳转到指定楼层
楼主
ID:390416 发表于 2021-1-3 20:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
07 点阵16X16 四个模块级连原理图与内存分配图.pdf (111.34 KB, 下载次数: 45)

04 点阵16X16 单个模块原理图.pdf (84.31 KB, 下载次数: 36)

02 点阵工作原理与焊接制作注意事项.pdf (14.4 MB, 下载次数: 25)

电路原理图如下:

//------------------------------------------------------------------------------------------------祁绪电子《人人学会单片机》------

//1、本程序适用于:由4个595驱动的16*16点阵。先发16位阳极列选信号,再发送阴极字节模数据。
//2、为方便阅读,使用传统编程思路编写,并未使用框架式编程方式,
//3、本程序使用11.0592M晶振,STC89C52RC单片机12T模式工作。
//4、11.0592M晶振,刷新率50帧,太低会闪烁、太高CPU卡顿。
//5、89系列单片机下载的时候,如果“使能6T(双倍速)模式,可以增加单片机运行速度。

//------------------------------------------------------------------------------------------------祁绪电子《人人学会单片机》------
#include<REG52.H>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int   

//------------------------------------------------------------------------------------------------祁绪电子《人人学会单片机》------
//------汉字字模保存数组code
//------------------------------------------------------------------------------------------------祁绪电子《人人学会单片机》------
uchar code hanzi[10][32]=
{
//五角星
        {        0x00,0x00,0x04,0x00,0x06,0x02,0x07,0x0C,0x07,0xBC,0x07,0xF8,0x0F,0xF8,0x3F,0xF0,0xFF,0xE0,0x3F,0xF0,0x0F,0xF8,0x07,0xF8,0x07,0xBC,0x07,0x0C,0x06,0x02,0x04,0x00                },
//祁
        {        0x10,0x20,0x10,0x40,0x10,0x80,0x91,0x00,0x73,0xFF,0x15,0x00,0x18,0x80,0x00,0x00,0x7F,0xFF,0x40,0x10,0x42,0x08,0x4D,0x04,0x70,0x88,0x00,0x70,0x00,0x00,0x00,0x00                },
//绪
        {        0x04,0x44,0x0C,0xC6,0x35,0x44,0xC6,0x48,0x0C,0x68,0x02,0x48,0x22,0x80,0x23,0xFF,0x22,0x92,0xFE,0x92,0x2A,0x92,0x32,0x92,0x23,0xFF,0x46,0x80,0x02,0x00,0x00,0x00                },
//电
        {        0x00,0x00,0x1F,0xE0,0x12,0x40,0x12,0x40,0x12,0x40,0x12,0x40,0xFF,0xFC,0x12,0x42,0x12,0x42,0x12,0x42,0x12,0x42,0x3F,0xE2,0x10,0x02,0x00,0x0E,0x00,0x00,0x00,0x00                },
//子
        {        0x01,0x00,0x01,0x00,0x41,0x00,0x41,0x00,0x41,0x00,0x41,0x02,0x41,0x01,0x47,0xFE,0x45,0x00,0x49,0x00,0x51,0x00,0x61,0x00,0x01,0x00,0x03,0x00,0x01,0x00,0x00,0x00                },
//黑桃
        {         0x00,0x00,0x03,0xC0,0x07,0xE0,0x0F,0xF0,0x1F,0xF0,0x3F,0xE1,0x7F,0xC3,0xFF,0xFF,0xFF,0xFF,0x7F,0xC3,0x3F,0xE1,0x1F,0xF0,0x0F,0xF0,0x07,0xE0,0x03,0xC0,0x00,0x00                },
//红心
        {        0x00,0x00,0x07,0x80,0x0F,0xC0,0x1F,0xE0,0x1F,0xF0,0x1F,0xF8,0x0F,0xFC,0x07,0xFE,0x07,0xFE,0x0F,0xFC,0x1F,0xF8,0x1F,0xF0,0x1F,0xE0,0x0F,0xC0,0x07,0x80,0x00,0x00                },
//梅花
        {         0x00,0x00,0x00,0xE0,0x01,0xF0,0x03,0xF8,0x33,0xF8,0x79,0xF1,0xFD,0xE3,0xFF,0xFF,0xFF,0xFF,0xFD,0xE3,0x79,0xF1,0x33,0xF8,0x03,0xF8,0x01,0xF0,0x00,0xE0,0x00,0x00                },
//方片
        {        0x00,0x00,0x01,0x00,0x03,0x80,0x07,0xC0,0x0F,0xE0,0x1F,0xF0,0x3F,0xF8,0x7F,0xFC,0xFF,0xFE,0x7F,0xFC,0x3F,0xF8,0x1F,0xF0,0x0F,0xE0,0x07,0xC0,0x03,0x80,0x01,0x00                },
//花点               
        {        0xAA,0xAA,0x55,0x55,0xAA,0xAA,0x55,0x55,0xAA,0xAA,0x55,0x55,0xAA,0xAA,0x55,0x55,0xAA,0xAA,0x55,0x55,0xAA,0xAA,0x55,0x55,0xAA,0xAA,0x55,0x55,0xAA,0xAA,0x55,0x55                }
        };
uchar idata Mould[2];                                          //控制该列的取模值,低电平亮灯,每个模组16行,占2字节
uchar idata upright[2];                                        //控制某一列,高电平亮灯,每个模组16列,占2字节
uchar idata LED2X64[34];                                //开辟缓存空间,被定时器随时调用。每列两个字节,多加2个用于移位操作。
sbit HC595_DS=P3^6;                                                //74HC595的数据
sbit HC595_SH=P3^5;                                                //74HC595的时钟
sbit HC595_ST=P3^4;                                                //74HC595的锁存

//------------------------------------------------------------------------------------------------祁绪电子《人人学会单片机》------
//------定时器0配置:16位定时器,1.25ms显示1列,帧率50帧。
//------------------------------------------------------------------------------------------------祁绪电子《人人学会单片机》------
void Timer0_Init()                                                                        
{
        TMOD&=0Xf0;                                                        //16位定时器模式,需要人工重装初值
        TMOD|=0X01;                                                        //16位定时器模式,需要人工重装初值
        TL0=0x80;                                                        
        TH0=0xf8;                                                        //STC89最高刷新率60帧,太高了会占用CPU
        ET0=1;                                                                //定时器0中断闭合导通
        TR0=1;                                                                //定时器0启动
        EA=1;                                                                //总中断闭合导通
}

//------------------------------------------------------------------------------------------------祁绪电子《人人学会单片机》------
//------发送数据到595芯片
//------------------------------------------------------------------------------------------------祁绪电子《人人学会单片机》------
void HC595_Write()                                                //74HC595发送数据。
{
        uchar value,i,j=1;
        value=upright[j*2-1];
        for(i=0;i<8;i++)                                         //发送给每个模组的 U4 ,高电平整列可以亮,低电平整列灭。
        {
                HC595_SH=0;                                                //时钟拉低
                HC595_DS=value&0x80;                          //从最后一个字节开始,先高位后低位。
                value<<=1;                                                //字节左移
                HC595_SH=1;                                                //时钟上升沿拷贝
        }
        value=upright[j*2-2];
        for(i=0;i<8;i++)                                         //发送给每个模组的 U3 ,高电平整列可以亮,低电平整列灭。
        {
                HC595_SH=0;                                                //时钟拉低
                HC595_DS=value&0x80;                          //从最后一个字节开始,先高位后低位。
                value<<=1;                                                //字节左移
                HC595_SH=1;                                                //时钟上升沿拷贝
        }
        
        value=Mould[j*2-1];
        for(i=0;i<8;i++)                                         //发送给每个模组的 U2 ,低电平整行可以亮,高电平整行全灭。
        {
                HC595_SH=0;                                                //时钟拉低
                HC595_DS=value&0x80;                          //从最后一个字节开始,先高位后低位。
                value<<=1;                                                //字节左移
                HC595_SH=1;                                                //时钟上升沿拷贝
        }
        value=Mould[j*2-2];
        for(i=0;i<8;i++)                                         //发送给每个模组的 U1 ,低电平整行可以亮,高电平整行全灭。
        {
                HC595_SH=0;                                                //时钟拉低
                HC595_DS=value&0x80;                          //从最后一个字节开始,先高位后低位。
                value<<=1;                                                //字节左移
                HC595_SH=1;                                                //时钟上升沿拷贝
        }        
        HC595_ST=1;                                                        //锁存脉冲信号,上升沿。
        HC595_DS=0;                                                        //延时
        HC595_ST=0;                                                        //锁存脉冲信号复位。
        HC595_SH=0;
}

//------------------------------------------------------------------------------------------------祁绪电子《人人学会单片机》------
////定时器中断处理,16位定时器,控制595函数1.25ms显示1列,帧率50帧。
//------------------------------------------------------------------------------------------------祁绪电子《人人学会单片机》------
void Timer0_Routnie (void) interrupt 1                                
{
        static uchar i;        
        static uint kkk=0x0001;                                //用于16列轮流控制
        TH0=0xfb;                                                        //定时器赋初始值65536-(11059200÷6T÷16列÷50帧)
        TL0=0x95;                                                        //STC89最高刷新率60帧,太高了会占用CPU, 0x95是微调值约等于计算值
        
        Mould[1]=~LED2X64[i+1];                                //i=0,把缓存的第01号字节发送到第一个模组的最左边的下8位。
        Mould[0]=~LED2X64[i+0];                                //i=0,把缓存的第00号字节发送到第一个模组的最左边的上8位。
        
        upright[1]=kkk/256;                                        //16位变量KKK,取高8位。控制第一个模组的0~7列。
        upright[0]=kkk%256;                                        //16位变量KKK,取低8位。控制第一个模组的8~15列。
        
        kkk=_irol_(kkk,1);                                        //循环控制0~16列
        i++;i++;
        i=i%32;
        HC595_Write();                                                //595的缓存Mould[8]、upright[8],得到数据后,立马发送到芯片

}

//------------------------------------------------------------------------------------------------祁绪电子《人人学会单片机》------
//------主函数
//------------------------------------------------------------------------------------------------祁绪电子《人人学会单片机》------
void main()                                                                   //主函数
{
        uchar k=0;
        for(k=0;k<32;k++)
        {
                LED2X64[k]=hanzi[k/32+1][k%32];        //把要显示的内容写入缓存
        }
        HC595_DS=0;                                                        //初始化595IO口拉低
        HC595_SH=0;                                                        //初始化595IO口拉低
        HC595_ST=0;                                                        //初始化595IO口拉低
        
        Timer0_Init();                                                //初始化定时器
        
         while(1)                                                           //大循环
        {
               
        }
}

点阵16X16显示祁字动画.gif (209.48 KB, 下载次数: 105)

点阵16X16显示祁字动画.gif

08 点阵16X16 字模提取 汉字字模软件设置.png (53.5 KB, 下载次数: 126)

08 点阵16X16 字模提取 汉字字模软件设置.png

08 点阵16X16 字模提取 汉字字模举例.jpg (879.22 KB, 下载次数: 96)

08 点阵16X16 字模提取 汉字字模举例.jpg

06 点阵16X16 使用STC8多功能DMX无线板做主控 级联驱动.jpg (252.56 KB, 下载次数: 110)

06 点阵16X16 使用STC8多功能DMX无线板做主控 级联驱动.jpg

03 点阵8X8 管脚引出的拉线图.png (275.3 KB, 下载次数: 95)

03 点阵8X8 管脚引出的拉线图.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏10 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:232366 发表于 2021-3-3 10:59 | 只看该作者
这点阵取模软件能不能共享以下
回复

使用道具 举报

板凳
ID:390416 发表于 2021-3-3 17:00 | 只看该作者
SHANWAZI 发表于 2021-3-3 10:59
这点阵取模软件能不能共享以下

其他多种资料的统一链接:https://pan.baidu.com/s/1HKoHDJSc9sxFTQvllo825g
提取码:1234
回复

使用道具 举报

地板
ID:895140 发表于 2021-3-24 19:51 | 只看该作者
SHANWAZI 发表于 2021-3-3 10:59
这点阵取模软件能不能共享以下

字模提取

字模提取V2.2.rar

262.6 KB, 下载次数: 25, 下载积分: 黑币 -5

我是用这个提取字模的,楼主那个我知道但不会用

回复

使用道具 举报

5#
ID:917675 发表于 2021-5-15 10:18 | 只看该作者
谢谢分享,最近正在研究点阵模块
回复

使用道具 举报

6#
ID:571580 发表于 2021-5-24 14:11 | 只看该作者
原理图文件可以分享下嘛
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表