标题: 三个74HC595控制16位数码管显示0~F单片机程序PCB,非常感谢热心大哥教导 [打印本页]

作者: shengzhen2007    时间: 2022-5-5 18:05
标题: 三个74HC595控制16位数码管显示0~F单片机程序PCB,非常感谢热心大哥教导
制作出来的实物图如下:

Altium Designer画的PCB图如下:(51hei附件中可下载工程文件)



单片机源程序如下:
include "reg51.h"
#include "intrins.h"

sfr P5 = 0xC8;
sfr P1M0 = 0X92;
sfr P1M1 = 0x91;
sfr P3M0 = 0XB2;
sfr P3M1 = 0xB1;
sfr P5M0 = 0XCA;
sfr P5M1 = 0xC9;

sbit S_RCLK = P1^7;//位移动信号
sbit L_RCLK = P1^6;//平行输出信号
sbit S_BIT  = P1^5;//位输入

//bit ;  //标志位,虚拟的按键
unsigned char ct;
//unsigned int  //255 65536
unsigned char code SEG_tab[]={0x3f,0x06,0x5b,0x4f,
                0x66,0x6d,0x7d,0x07,
                0x7f,0x6f,0x77,0x7c,
                0x39,0x5e,0x79,0x71,0x40,0x80};

void Send_595(unsigned char x);
void Delay1ms();


main(void)
{
    P1M0 = 0X00;
    P1M1 = 0X00; //0000 0000
    P3M0 = 0X00; //0000 1000
    P3M1 = 0X00;
    P5M0 = 0X00;
    P5M1 = 0X00;
    L_RCLK = 0;
    S_RCLK = 0;
    S_BIT  = 0;//位输入
    while(1)
    {        
                static unsigned char ct=0;
        unsigned int j=0;
        j=~(0x01<<ct);
                Send_595(j>>8);//片选相数码管 位码高8位
        Send_595(j);//片选相数码管 位码低8位
        Send_595(SEG_tab[ct]);//数码管数据
        L_RCLK = 1;
        L_RCLK = 0;
        Delay1ms();
        if(ct<16)
        {
            ct++;
        }
        else ct=0;
    }
}


void Send_595(unsigned char x)
{
    unsigned char i;
    for(i=0;i<8;i++)
    {
        if(x&0x80) S_BIT = 1;
        else       S_BIT = 0;
        S_RCLK = 1;
        S_RCLK = 0;
        x = x<<1;
    }
}

void Delay1ms()                //@11.0592MHz
{
        unsigned char i, j;

        i = 15;
        j = 90;
        do
        {
                while (--j);
        } while (--i);
}

PCB文件下载: HC595_Digital_Tube_2022-04-21.PcbDoc_2022-05-05.zip (16.59 KB, 下载次数: 29)
595原理图.pdf (284.1 KB, 下载次数: 33)
seg802.zip (821 Bytes, 下载次数: 29)

作者: hhh402    时间: 2022-5-6 12:32
单纯的显示有什么意义?按键呢?
作者: kz0018    时间: 2022-5-8 21:04
好像没什么实际意义,用处不大
作者: hi等你    时间: 2022-5-9 10:42
看是控制很多,其实不难,一片595控制笔画,两片595控制位选,单片机要不停的伺候这个大爷,干不了大事,只能学习用
作者: dyx811    时间: 2022-9-12 10:22
595驱动能力有这么强嘛?会不会遇到同时输出几位的情况?

作者: yyzf998    时间: 2022-9-12 12:19
两个595就可以解决了,为什么还要用3个呢?
作者: baobao125    时间: 2022-9-12 17:00
数码管刷新放定时器中断里刷新,你在While里刷新,你在干点其它事数码管就会闪烁。




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