/*基于74HC595的静态数码管倒计时程序*/
#include<reg51.h>
sbit Output_Clock = P3^5; //输出时序,上升沿输出。8位数据都输入完成后操作。
sbit Input_Clock = P3^6; //输入时序,上升沿输入来自输入端的数据。
sbit Input_Data = P3^4; //输入引脚,用于输入数据。
void Send_Number(int a) //数码管显示数字的段码。
{
if(a == 0)
{
Input_Clock = 0;Input_Data = 1;Input_Clock = 1; //上升沿输入出数据
Input_Clock = 0;Input_Data = 1;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Output_Clock = 0;Output_Clock = 1; //数据输入完成后整体输出数据。
}
if(a == 1)
{
Input_Clock = 0;Input_Data = 1;Input_Clock = 1;
Input_Clock = 0;Input_Data = 1;Input_Clock = 1;
Input_Clock = 0;Input_Data = 1;Input_Clock = 1;
Input_Clock = 0;Input_Data = 1;Input_Clock = 1;
Input_Clock = 0;Input_Data = 1;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 1;Input_Clock = 1;
Output_Clock = 0;Output_Clock = 1;
}
if(a == 2)
{
Input_Clock = 0;Input_Data = 1;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 1;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 1;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Output_Clock = 0;Output_Clock = 1;
}
if(a == 3)
{
Input_Clock = 0;Input_Data = 1;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 1;Input_Clock = 1;
Input_Clock = 0;Input_Data = 1;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Output_Clock = 0;Output_Clock = 1;
}
if(a == 4)
{
Input_Clock = 0;Input_Data = 1;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 1;Input_Clock = 1;
Input_Clock = 0;Input_Data = 1;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 1;Input_Clock = 1;
Output_Clock = 0;Output_Clock = 1;
}
if(a == 5)
{
Input_Clock = 0;Input_Data = 1;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 1;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 1;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Output_Clock = 0;Output_Clock = 1;
}
if(a == 6)
{
Input_Clock = 0;Input_Data = 1;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 1;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Output_Clock = 0;Output_Clock = 1;
}
if(a == 7)
{
Input_Clock = 0;Input_Data = 1;Input_Clock = 1;
Input_Clock = 0;Input_Data = 1;Input_Clock = 1;
Input_Clock = 0;Input_Data = 1;Input_Clock = 1;
Input_Clock = 0;Input_Data = 1;Input_Clock = 1;
Input_Clock = 0;Input_Data = 1;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Output_Clock = 0;Output_Clock = 1;
}
if(a == 8)
{
Input_Clock = 0;Input_Data = 1;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Output_Clock = 0;Output_Clock = 1;
}
if(a == 9)
{
Input_Clock = 0;Input_Data = 1;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 1;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Input_Clock = 0;Input_Data = 0;Input_Clock = 1;
Output_Clock = 0;Output_Clock = 1;
}
}
void Delay(int a,int b) //延时程序
{
int i,j;
for(i = 0;i <= a;i ++)
{
for(j = 0;j <= b;j ++);
{}
}
}
void main()
{
int i = 0;
int k = 99999;
Send_Number(i);
while(1)
{
Delay(600,100);
Send_Number(i);
i ++;
if(i == 10)
{
i = 0;
}
}
}