⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hc595.c

📁 51开发板源程序,74HC595驱动显示程序.在该模块中
💻 C
字号:
/****************************************************************************/
/*                                                                          */
/*                Copyright (c) 2005, 老树工作室                            */
/*                     All rights reserved.                                 */
/*                                                                          */
/*      Email:laoshu0902@163.com                                            */
/*      www.laoshu0902.bokee.com                                            */
/*                                                                          */
/****************************************************************************/
/****************************************************************************/
/* 文件名:hc595.c                                                          */
/* 版  本:Version 1.0                                                      */
/* 描  述:用hc595驱动数码管演示代码                                        */
/* 作  者:spot                                                             */
/* 函  数:                                                                 */
/*         load_number                                                      */
/*         send_shift_clock                                                 */
/*         send_latch_clock                                                 */ 
/*         display_number                                                   */
/*                                                                          */
/* 历史记录:                                                               */
/*  spot          2005-07-10     Creat Inital version. (Version 1.0)        */
/****************************************************************************/

#include <reg52.h>
#include <absacc.h>
#include <intrins.h>

typedef unsigned char u_char;

sbit DS   = P0^2;  /* 串行数据输入 */
sbit SHCP = P0^0;  /* 移位时钟输入 */
sbit STCP = P0^1;  /* 锁存时钟输入 */

/* 显示数据编码,按共阴极数码管编码 */
u_char number_code[11] = {
                           0x3f,    /* 0 */
                           0x06,    /* 1 */
                           0x5b,    /* 2 */
                           0x4f,    /* 3 */
                           0x66,    /* 4 */
                           0x6d,    /* 5 */
                           0x7d,    /* 6 */
                           0x07,    /* 7 */
                           0x7f,    /* 8 */
                           0x67,    /* 9 */
                           0x00     /* 灭*/
                         };

void load_number(u_char number, bit dp);
void send_shift_clock(void);
void send_latch_clock(void);
void clear_led(void);
void display_number(void);

/* 加载将要显示的数据,num-显示数据,dp:1显示小数点,0不显示小数点 */
void load_number(u_char number, bit dp)
{
    u_char i;
    u_char temp;

    temp = ~number_code[number];    /* 使用共阳极数码管,所以编码取反 */
    if (dp)
    {
        temp &= 0x7f;
    }
    for (i=0; i<8; i++)
    {
        if ( (temp & 0x80) == 0x80)
        {
            DS = 1;
        }
        else
        {
            DS = 0;
        }

        temp <<= 1;

        send_shift_clock();   /* 发移位脉冲信号 */
    }
}

/* 发送移位时钟脉冲信号 */
void send_shift_clock(void)
{
    SHCP = 1;
    _nop_();
    SHCP = 0;
}

/* 发送锁存脉冲信号 */
void send_latch_clock(void)
{
    STCP = 1;
    _nop_();
    STCP = 0;
}

/* 清除4位数码管显示 */
void clear_led(void)
{
    u_char i;

    for (i=0; i<32; i++)
    {
        DS = 1;
        send_shift_clock();
    }
    send_latch_clock();

}

/* 演示数码管显示数字 */
void display_number(void)
{
    u_char i;

    for (i=0; i<4; i++)
    {
        load_number(i, 0);
    }
    send_latch_clock();

    _nop_();

    for (i=0; i<4; i++)
    {
        load_number(i+4, 1);
    }
    send_latch_clock();

    _nop_();

    load_number(8, 0);
    load_number(9, 0);
    load_number(10, 0);
    load_number(10, 0);
    send_latch_clock();
    _nop_();
}

main()
{
    SHCP=0;
    STCP=0;

    while(1)
    {
        clear_led();
    	display_number();
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -