• 51单片机学习:LED点阵实验(点亮一个点)


    实验名称:LED点阵实验(点亮一个点)
    接线说明:    
    实验现象:下载程序后,8*8LED点阵点亮左上角第一个点
    注意事项:LED点阵旁的J24黄色跳线帽短接到GND一端                                                                                  
    ***************************************************************************************/
    #include "reg51.h"

    typedef unsigned int u16;    //对系统默认数据类型进行重定义
    typedef unsigned char u8;

    //定义74HC595控制管脚
    sbit SRCLK=P3^6;    //移位寄存器时钟输入
    sbit RCLK=P3^5;        //存储寄存器时钟输入
    sbit SER=P3^4;         //串行数据输入

    #define LEDDZ_COL_PORT    P0    //点阵列控制端口


    /*******************************************************************************
    * 函 数 名       : delay_10us
    * 函数功能         : 延时函数,ten_us=1时,大约延时10us
    * 输    入       : ten_us
    * 输    出         : 无
    *******************************************************************************/
    void delay_10us(u16 ten_us)
    {
        while(ten_us--);    
    }

    /*******************************************************************************
    * 函 数 名         : hc595_write_data(u8 dat)
    * 函数功能           : 向74HC595写入一个字节的数据
    * 输    入         : dat:数据
    * 输    出         : 无
    *******************************************************************************/
    void hc595_write_data(u8 dat)
    {
        u8 i=0;
        
        for(i=0;i<8;i++)//循环8次即可将一个字节写入寄存器中
        {
            SER=dat>>7;//优先传输一个字节中的高位
            dat<<=1;//将低位移动到高位
            SRCLK=0;
            delay_10us(1);
            SRCLK=1;
            delay_10us(1);//移位寄存器时钟上升沿将端口数据送入寄存器中    
        }
        RCLK=0;
        delay_10us(1);
        RCLK=1;//存储寄存器时钟上升沿将前面写入到寄存器的数据输出    
    }


    /*******************************************************************************
    * 函 数 名       : main
    * 函数功能         : 主函数
    * 输    入       : 无
    * 输    出         : 无
    *******************************************************************************/
    void main()
    {    
        u8 i=0;

        LEDDZ_COL_PORT=0x7f;//将LED点阵左边第一列设置为0,即LED阴极为低电平,其余列为1,即高电平
        while(1)
        {            
            hc595_write_data(0x80);//将LED点阵上边第一行设置为1,即LED阳极为高电平,其余行为0,即低电平                                
        }        
    }

     

    纷传单片机学习资料放在纷传小程序里了,需要的可以加入圈子有资料百度网盘下载地址及提取码。

  • 相关阅读:
    官方烧录软件烧写2023.10版本树莓派镜像
    QT+QTimer+QThread实现线程内的定时任务并且和主线程进行交互
    macad.core解析exchange
    【华为OD:C++机试】Day-1
    【Android】Android Framework系列--CarUsbHandler源码分析
    实用工具系列 - Pycharm安装下载使用
    剑指offer 22. 链表中环的入口结点
    LeetCode704.二分查找及二分法
    mac虚拟机安装配置qt遇到的坑
    批量挖漏洞(从内网到外网、从白盒到黑盒)
  • 原文地址:https://blog.csdn.net/qq_63964231/article/details/126907488