普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 3070|回复: 2

51led点阵

[复制链接]

1

主题

1

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2020-2-18 20:57:58 | 显示全部楼层 |阅读模式
#include <reg51.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define ulong unsigned long
sbit MOSIO = P3^4;
sbit R_CLK = P3^5;
sbit S_CLK = P3^6;

char code tap[]=
{
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,
};
char code tab[]=
{ /*--  文字:  普  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x40,0x44,0x54,0x64,0x45,0x7E,0x44,0x44,0x44,0x7E,0x45,0x64,0x54,0x44,0x40,0x00,
0x00,0x00,0x00,0xFF,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0xFF,0x00,0x00,0x00,0x00,


};
/*******************************************************************************
* 函 数 名         : HC595SendData
* 函数功能                   : 通过595发送四个字节的数据
* 输    入         : BT3:第四个595输出数值
*                  * BT2: 第三个595输出数值
*                  * BT1:第二个595输出数值
*                  * BT0:第一个595输出数值
* 输    出         : 无
*******************************************************************************/
void HC595SendData(  uchar BT3, uchar BT2,uchar BT1,uchar BT0)
{  
        uchar i;
        for(i = 0; i < 8; i++)
        {
                MOSIO = BT3 >> 7 ;        //从高位到低位
                BT3 <<= 1;
                S_CLK = 0;
                _nop_();
                S_CLK = 1;               
        }

        for(i = 0; i < 8; i++)
        {
                MOSIO = BT2 >>7;
                BT2 <<= 1;
                S_CLK = 0;
                S_CLK = 1;       
        }

        for(i = 0; i < 8; i++)
        {
                MOSIO = BT1 >> 7;
                BT1 <<= 1;
                S_CLK = 0;
                        _nop_();
                S_CLK = 1;       
        }

        for(i = 0; i < 8; i++)
        {
                MOSIO = BT0 >> 7;
                BT0 <<= 1;
                S_CLK = 0;
                        _nop_();
                S_CLK = 1;
        }
   
        //--输出--//
        R_CLK = 0;
                _nop_();
        R_CLK = 1;
                _nop_(); //片选
        R_CLK = 0;
}

void main()
{
        int  j;
        while(1)
        {
               
                                for(j = 0; j < 16; j++)          //显示一个字
                                {
                                        //--因为字模软件取的数组是高电平有效,所以列要取反--//
                                        HC595SendData(~tap[j+16],~tap[j],tab[j+16],tab[j]);
                                }

               
                       
                }
        }
我抄的,但是我的led点阵一直乱闪,没有规律的那种
回复

使用道具 举报

27

主题

337

帖子

3294

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3294
发表于 2020-2-19 08:46:10 | 显示全部楼层
注意595短接片是否插上。你可以把板子实验现象拍照出来
回复 支持 反对

使用道具 举报

0

主题

1

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2020-2-21 17:18:21 | 显示全部楼层
8x8的点阵怎么显示16x16的数据啊
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-5-5 10:38 , Processed in 0.087903 second(s), 30 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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