微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 普中开发板LED点阵无法实现效果,求大神指教

普中开发板LED点阵无法实现效果,求大神指教

时间:10-02 整理:3721RD 点击:

  1. #include"reg51.h"
  2. #include"intrins.h"
  3. typedef unsigned char u8;
  4. sbit SRCLK=P3^6;
  5. sbit RCLK=P3^5;
  6. sbit SER=P3^4;
  7. void HC595sendbyte(u8 dat)
  8. {
  9.         u8 i;
  10.         SRCLK=0;
  11.         RCLK=0;
  12.         for(i=0;i<8;i++)
  13.         {
  14.                 if(dat&0x80)
  15.                         SER=1;
  16.                 else
  17.                         SER=0;
  18.                 dat<<=1;
  19.                 SRCLK=1;
  20.                 _nop_();
  21.                 _nop_();
  22.                 SRCLK=0;
  23.         }
  24.         RCLK=1;
  25.         _nop_();
  26.         _nop_();
  27.         RCLK=0;
  28. }
  29. void main()
  30. {
  31.         while(1)
  32.         {
  33.                 HC595sendbyte(0x80);
  34.                 P0=0x7f;
  35.         }
  36. }

复制代码

我想点亮一个灯但效果如图。


没有数组 for语句不对 for(i=0;i<8;i++)

跟数组什么关系 ,别看到8就想到  8x8,   别人是通过移位寄存器发送一个BYTE,当然要for语句了!

抱歉啊我用手机APP看的没有看全断章取义了

#include<reg51.h>
#include<intrins.h>
typedef unsigned char u8;
typedef unsigned int u16;
sbit OH=P3^4;
sbit SCLK=P3^6;
sbit RCLK=P3^5;
void delay(u8 a);
u8 led1 [32]=
{
0x00,0x83,0x83,0xff,0xff,0x83,0x83,0x00,0x7c,0xfe,0xfe,0xfc,0xfe,0xfe,0x7c,0x00,
0x00,0x01,0x01,0x7d,0xfd,0xc1,0xc1,0xfc,0x7c,0x00,0x01,0x03,0x01,0x00,0x00,0x00
};
u8 ledwei[32]=
{
        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
};
void delay(u8 a);
void hc595(u8 hc1,u8 hc2,u8 hc3,u8 hc4 );
void main()
{
        while(1)
        {
                u8 l;
                for(l=0;l<16;l++)
                {
                        hc595(~ledwei[l+16],~ledwei[l],led1[l+16],led1[l]);
                        delay(10);
                }
                       
        }
}
void delay(u8 a)
{
while(a--);
       
}
void hc595(u8 hc1,u8 hc2,u8 hc3,u8 hc4)
{
        u8 i;
        SCLK=1;
        RCLK=1;
        for(i=0;i<8;i++)
        {
                 if((hc1<<i)&0x80)
                 {
                         OH=1;
                 }
                 else OH=0;
                 SCLK=0;
                 _nop_();
                 _nop_();
                 SCLK=1;
        }

for(i=0;i<8;i++)
        {
                 if((hc2<<i)&0x80)
                 {
                         OH=1;
                 }
                 else OH=0;
                 SCLK=0;
                 _nop_();
                 _nop_();
                 SCLK=1;
        }

        for(i=0;i<8;i++)
        {
                 if((hc3<<i)&0x80)
                 {
                         OH=1;
                 }
                 else OH=0;
                 SCLK=0;
                 _nop_();
                 _nop_();
                 SCLK=1;
        }

        for(i=0;i<8;i++)
        {
                 if((hc4<<i)&0x80)
                 {
                         OH=1;
                 }
                 else OH=0;
                 SCLK=0;
                 _nop_();
                 _nop_();
                 SCLK=1;
        }
        RCLK=0;
        _nop_();
        RCLK=1;
}

看了你就知道了

看了你就知道了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top