微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > LED点阵程序不理解,求大神指导

LED点阵程序不理解,求大神指导

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

//--重定义函数变量--//
#define uchar unsigned char
#define uint  unsigned int
#define ulong unsigned long
//--定义SPI要使用的 IO--//
sbit MOSIO = P3^4;
sbit R_CLK = P3^5;
sbit S_CLK = P3^6;
//函数声明
void HC595SendData( uchar BT3, uchar BT2,uchar BT1,uchar BT0);
                                                                                                
/*******************************************************************************
* 函 数 名         : main
* 函数功能           : 主函数
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void main(void)
{
    uint i , j;
    uchar b1;
    while(1)
    {
         //--全亮--//
        HC595SendData(0x00, 0x00, 0xFF, 0xFF);
        for(j=0; j<50000; j++);
        
        //--刷行--//   
        b1 = 0x01;
        for(i = 0; i<8; i++)
        {
            HC595SendData(0x00, 0x00, 0x00, b1);
            b1 <<= 1;
            for(j=0; j<20000; j++);
        }
        b1 = 0x01;
        for(i = 0; i<8; i++)
        {
            HC595SendData(0x00, 0x00, b1, 0x00);
            b1 <<= 1;
            for(j=0; j<20000; j++);
        }
        //--刷列--//
        b1 = 0x01;
        for(i = 0; i<8; i++)
        {
            HC595SendData(0xFF, ~b1, 0xFF, 0xFF);
            b1 <<= 1;
            for(j=0; j<20000; j++);
        }
        b1 = 0x01;
        for(i = 0; i<8; i++)
        {
            HC595SendData(~b1, 0xFF, 0xFF, 0xFF);
            b1 <<= 1;
            for(j=0; j<20000; j++);
        }   
        
    }
}

/*******************************************************************************
* 函 数 名         : 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;
        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;
        S_CLK = 1;   
    }
    //--发送第一个字节--//
    for(i=0;i<8;i++)
    {
        MOSIO = BT0 >> 7;        //从高位到低位
        BT0 <<= 1;
        S_CLK = 0;
        S_CLK = 1;
    }
   
    //--输出--//
    R_CLK = 0; //set dataline low
    R_CLK = 1; //片选
}


我今天刚学的这个点亮点阵的程序,花了半天又是看595,又是琢磨程序,总算有点小的理解,也不知道能不能帮到你。你看哪儿不懂,追问我。

我今天刚学的这个点亮点阵的程序,花了半天又是看595,又是琢磨程序,总算有点小的理解,也不知道能不能帮到你。你看哪儿不懂,追问我。

第一个红色是三个IO口的定义,p3.4是数据输入,p3.5是锁存,p3.6是时钟。

第二个,看图

如果那里说错了,欢迎指正,如果有什么不清楚,就再问吧。

求问是是是是是是

发送四个字节的数据是什么意思,是使能端控制吗

大神,我刚开始看点阵,发送四个字节的数据是什么意思,算是使能端控制吗

谢谢小编分享。

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

网站地图

Top