制作出來的實物圖如下:
實景圖片
Altium Designer畫的PCB圖如下:(51hei附件中可下載工程文件)
原pcb板
單片機源程序如下:
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)
2022-5-5 17:58 上傳
點擊文件名下載附件
PCB圖
595原理圖.pdf
(284.1 KB, 下載次數: 33)
2022-5-5 17:33 上傳
點擊文件名下載附件
原理圖
seg802.zip
(821 Bytes, 下載次數: 29)
2022-5-5 18:01 上傳
點擊文件名下載附件
程序
|