普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 2644|回复: 5

A2的板子,程序烧录之后为啥我的8*8点阵全亮了(显示一个0)

[复制链接]

1

主题

2

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2021-2-8 13:53:20 | 显示全部楼层 |阅读模式
#include"reg52.h"
#include"intrins.h"

#define GPIO_LED P0

sbit SRCLK=P3^6;
sbit RCLK1=P3^5;
sbit SER=P3^4;

typedef unsigned int u16;

//先编写每一列哪个灯亮,再编写哪一列亮
u16 ledlie[]= {0xff,0xff,0xC3,0xbd,0xbd,0xc3,0xff,0xff};
u16 ledwei[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
u16 j;

void delay(u16 i)
{
    while(i--);
}
void HC595Send(u16 date)
{
    u16 a;
        SRCLK=0;
        RCLK=0;
    for(a=0; a<8; a++)
    {
        SER=date>>7;
        date<<=1;          

        SRCLK=1;
        _nop_();          //延时一微秒
        _nop_();
        SRCLK=0;
    }
    RCLK1=1;
    _nop_();          //延时一微秒
    _nop_();
    RCLK1=0;
}
void main()
{
    while(1)
    {       
        for(j=0; j<8; j++)
        {
            P0=ledwei[j];
            HC595Send(ledlie[j]);
            delay(100);
            HC595Send(0x00);
        }
    }
}
回复

使用道具 举报

1

主题

8

帖子

27

积分

新手上路

Rank: 1

积分
27
发表于 2021-2-8 14:38:09 | 显示全部楼层
变量定义成8位(unsigned char)试试,
回复 支持 反对

使用道具 举报

1

主题

8

帖子

27

积分

新手上路

Rank: 1

积分
27
发表于 2021-2-8 21:43:36 | 显示全部楼层
#include"reg52.h"
#include"intrins.h"
#define GPIO_LED P0

sbit SRCLK=P3^6;
sbit RCLK1=P3^5;
sbit SER=P3^4;

typedef unsigned int u16;
typedef unsigned char u8;

//先编写每一列哪个灯亮,再编写哪一列亮
u8 ledlie[]= {0x00,0x00,0x3c,0x42,0x42,0x3c,0x00,0x00};
u8 ledwei[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
u8 j;

void delay(u16 i)
回复 支持 反对

使用道具 举报

1

主题

8

帖子

27

积分

新手上路

Rank: 1

积分
27
发表于 2021-2-8 21:45:10 | 显示全部楼层
#include"reg52.h"
#include"intrins.h"
#define GPIO_LED P0

sbit SRCLK=P3^6;
sbit RCLK1=P3^5;
sbit SER=P3^4;

typedef unsigned int u16;
typedef unsigned char u8;

//先编写每一列哪个灯亮,再编写哪一列亮
u8 ledlie[]= {0x00,0x00,0x3c,0x42,0x42,0x3c,0x00,0x00};
u8 ledwei[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
u8 j;

void delay(u16 i)
        {while(i--);}

void HC595Send(u8 date)
        {   u8 a;
        SRCLK=0;
        RCLK=0;
            for(a=0; a<8; a++)
                    {SER=date>>7;
                date<<=1;         
                SRCLK=1;
                _nop_(); _nop_();
                SRCLK=0;
                    }
            RCLK1=1;
            _nop_();_nop_();
            RCLK1=0;
        }
void main()
{for(j=0; j<8; j++)
        {P0=ledwei[j];
     HC595Send(ledlie[j]);
     delay(100);
     HC595Send(0x00);
     }}

回复 支持 反对

使用道具 举报

1

主题

2

帖子

15

积分

新手上路

Rank: 1

积分
15
 楼主| 发表于 2021-2-9 11:16:39 | 显示全部楼层
zxzm 发表于 2021-2-8 21:45
#include"reg52.h"
#include"intrins.h"
#define GPIO_LED P0

诶,可以了,谢谢,但是为啥换成char就可以了呢
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2024-5-5 17:25 , Processed in 0.096359 second(s), 33 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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