74HC595有一个引脚可以串行输出,这样可以控制多个数码管。给第一个芯片16位二进制数,也就是2个数码管的段码,参考数据结构“栈”的原理,最先输入的段码显示在第二个数码管,最后输入的段码,显示在第一个数码管,编程的时候需要注意。这样做的优点就是节约单片机IO口,比使用74LS138要节约;使用38译码器,控制8个数码管要占用11个IO口。使用74HC595控制八个数码管只需要3个IO口。效果如下:
/*程序未经过深思熟虑,仅仅实现功能,有些繁琐,仅供参考*/
#include <reg52.h>
sbit Output_Clock1 = P2^2; //输出时序,上升沿输出。16位数据都输入完成后操作。
sbit Input_Clock = P2^0; //输入时序,上升沿输入来自输入端的数据。
sbit Input_Data = P2^1; //输入引脚,用于输入数据。
/*程序未经过深思熟虑,仅仅实现功能,有些繁琐,仅供参考*/
/*程序未经过深思熟虑,仅仅实现功能,有些繁琐,仅供参考*/
void delay(int i,int j)
{
int a,b;
for(a = 0;a <= i; a ++)
{
for(b = 0;b <= j;b ++)
{}
}
}
void main(void)
{
int i,j,k,m;
/*下面使用二维数组保存数码管的段码数值,一行