标题: 为什么点阵不会亮呢?可以显示0,但不会显示单独一个点。 [打印本页]

作者: indexcolor    时间: 2021-7-20 18:02
标题: 为什么点阵不会亮呢?可以显示0,但不会显示单独一个点。
/**************************************************************************************
实验现象:下载程序后,LED点阵左上角第一个点的LED被点亮果
                  
接线说明: (具体接线图可见开发攻略对应实验的“实验现象”章节)
       
注意事项:                                                                                                                                                               


***************************************************************************************/

#include "reg52.h"                         //此文件中定义了单片机的一些特殊功能寄存器
#include "intrins.h"

typedef unsigned int u16;          //对数据类型进行声明定义
typedef unsigned char u8;

//--定义使用的IO口--//
sbit SRCLK=P3^6;
sbit RCLK=P3^5;
sbit SER=P3^4;


void Hc595SendByte(u8 dat1,u8 dat2,u8 dat3,u8 dat4)
{
        u8 a;
        SRCLK = 1;
        RCLK = 1;

        for(a=0;a<8;a++)                 //发送8位数
        {
                SER = dat1 >> 7;                 //从最高位开始发送
                dat1 <<= 1;

                SRCLK = 0;                         //发送时序
                _nop_();
                _nop_();
                SRCLK = 1;       
        }


        for(a=0;a<8;a++)                 //发送8位数
        {
                SER = dat2 >> 7;                 //从最高位开始发送
                dat2 <<= 1;

                SRCLK = 0;                         //发送时序
                _nop_();
                _nop_();
                SRCLK = 1;       
        }



        for(a=0;a<8;a++)                 //发送8位数
        {
                SER = dat3 >> 7;                 //从最高位开始发送
                dat3 <<= 1;

                SRCLK = 0;                         //发送时序
                _nop_();
                _nop_();
                SRCLK = 1;       
        }

        for(a=0;a<8;a++)                 //发送8位数
        {
                SER = dat4 >> 7;                 //从最高位开始发送
                dat4 <<= 1;

                SRCLK = 0;                         //发送时序
                _nop_();
                _nop_();
                SRCLK = 1;       
        }


        RCLK = 0;
        _nop_();
        _nop_();
        RCLK = 1;
}


/*******************************************************************************
* 函 数 名       : main
* 函数功能                 : 主函数
* 输    入       : 无
* 输    出             : 无
*******************************************************************************/
void main()
{
        Hc595SendByte(0xff,0xfe,0x00,0x01);
       
        while(1)
        {
          
        }               
}

23.jpg (3.66 MB, 下载次数: 75)

oe口以接地

oe口以接地

作者: indexcolor    时间: 2021-7-20 18:03
头文件我也改成了reg51.h了
作者: indexcolor    时间: 2021-7-20 21:33
已解决




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1