74LS164功能:串行输入并行输出,说人话就是:假设你有8个苹果(分别代表数码管的a,b,c,d,e,f,g,dp),你把他们一个一个的包装好放进纸箱里(数据一个一个写入,串行),然后把纸箱打包发给别人(一次性输出,并行)。
下边是主程序代码和几个宏定义
#define Data PAout(0)//74Ls164——(1)
#define Click PAout(1)//74Ls164——(8)
#define Clear PAout(2)//74Ls164——(9)
// dp g f e d c b a
#define show_0 {Clear=0;Click=0;delay_ms(20);Clear=1; Data=0;Click=1;Click=0; Data=0;Click=1;Click=0; Data=1;Click=1;Click=0; Data=1;Click=1;Click=0; Data=1;Click=1;Click=0; Data=1;Click=1;Click=0; Data=1;Click=1;Click=0; Data=1;Click=1;delay_ms(1000);}
#define show_1 {Clear=0;Click=0;delay_ms(20);Clear=1; Data=0;Click=1;Click=0; Data=0;Click=1;Click=0; Data=0;Click=1;Click=0; Data=0;Click=1;Click=0; Data=0;Click=1;Click=0; Data=1;Click=1;Click=0; Data=1;Click=1;Click=0; Data=0;Click=1;delay_ms(1000);}
#define show_2 {Clear=0;Click=0;delay_ms(20);Clear=1; Data=0;Click=1;Click=0; Data=1;Click=1;Click=0; Data=0;Click=1;Click=0; Data=1;Click=1;Click=0; Data=1;Click=1;Click=0; Data=0;Click=1;Click=0; Data=1;Click=1;Click=0; Data=1;Click=1;delay_ms(1000);}
#define show_3 {Clear=0;Click=0;delay_ms(20);Clear=1; Data=0;Click=1;Click=0; Data=1;Click=1;Click=0; Data=0;Click=1;Click=0; Data=0;Click=1;Click=0; Data=1;Click=1;Click=0; Data=1;Click=1;Click=0; Data=1;Click=1;Click=0; Data=1;Click=1;delay_ms(1000);}
#define show_4 {Clear=0;Click=0;delay_ms(20);Clear=1; Data=0;Click=1;Click=0; Data=1;Click=1;Click=0; Data=1;Click=1;Click=0; Data=0;Click=1;Click=0; Data=0;Click=1;Click=0; Data=1;Click=1;Click=0; Data=1;Click=1;Click=0; Data=0;Click=1;delay_ms(1000);}
#define show_5 {Clear=0;Click=0;delay_ms(20);Clear=1; Data=0;Click=1;Click=0; Data=1;Click=1;Click=0; Data=1;Click=1;Click=0; Data=0;Click=1;Click=0; Data=1;Click=1;Click=0; Data=1;Click=1;Click=0; Data=0;Click=1;Click=0; Data=1;Click=1;delay_ms(1000);}
#define show_6 {Clear=0;Click=0;delay_ms(20);Clear=1; Data=0;Click=1;Click=0; Data=1;Click=1;Click=0; Data=1;Click=1;Click=0; Data=1;Click=1;Click=0; Data=1;Click=1;Click=0; Data=1;Click=1;Click=0; Data=0;Click=1;Click=0; Data=1;Click=1;delay_ms(1000);}
#define show_7 {Clear=0;Click=0;delay_ms(20);Clear=1; Data=0;Click=1;Click=0; Data=0;Click=1;Click=0; Data=0;Click=1;Click=0; Data=0;Click=1;Click=0; Data=0;Click=1;Click=0; Data=1;Click=1;Click=0; Data=1;Click=1;Click=0; Data=1;Click=1;delay_ms(1000);}
#define show_8 {Clear=0;Click=0;delay_ms(20);Clear=1; Data=0;Click=1;Click=0; Data=1;Click=1;Click=0; Data=1;Click=1;Click=0; Data=1;Click=1;Click=0; Data=1;Click=1;Click=0; Data=1;Click=1;Click=0; Data=1;Click=1;Click=0; Data=1;Click=1;delay_ms(1000);}
#define show_9 {Clear=0;Click=0;delay_ms(20);Clear=1; Data=0;Click=1;Click=0; Data=1;Click=1;Click=0; Data=1;Click=1;Click=0; Data=0;Click=1;Click=0; Data=1;Click=1;Click=0; Data=1;Click=1;Click=0; Data=1;Click=1;Click=0; Data=1;Click=1;delay_ms(1000);}
#define show_dp {Clear=0;Click=0;delay_ms(20);Clear=1; Data=1;Click=1;Click=0; Data=0;Click=1;Click=0; Data=0;Click=1;Click=0; Data=0;Click=1;Click=0; Data=0;Click=1;Click=0; Data=0;Click=1;Click=0; Data=0;Click=1;Click=0; Data=0;Click=1;delay_ms(1000);}
#define show_loop {show_0;show_1;show_2;show_3;show_4;show_5;show_6;show_7;show_8;show_9;show_dp;}
int main(void)
{
delay_init(); //延时函数初始化
LED_Init_1(); //数码管引脚初始化
while(1)
{
show_loop;
//运行结果:依次显示0,1,2,3,4,5,6,7,8,9,“ . ” 间隔 1 秒
}
}