来源:互联网 作者:2017年10月27日 16:38 74hc164是比较典型的移位寄存器,该移位寄存器有一个数据输入端口、一个时钟信号端口和八个输出端口。这种方法只需要2个MPU 的IO端口,而且在锁存器件这2个端口还可以干别的事情。 74HC164驱动共阴、共阳数码管都很方便。 74hc164驱动要点1、上升沿写入串行数据: CLK=0; DAT=num&0x01; CLK=1; 2、写入数据的数码管编码(指代码中的 tab[]) 串行数据是FIFO先进先出,也就是先写高位,移位放入。 74hc164驱动共阴数码管74hc164驱动共阴数码管电路图 74hc164驱动共阴数码管源程序 #include《AT892051.H》 #define uint unsigned int #define uchar unsigned char sbit DAT=P3^7; //模拟串口数据发送端 sbit CLK=P3^4;//模拟时钟控制端 uchar code tab[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xff,0xf6};//0-9,-,全灭 void sendbyte(uchar byte) { uchar num,c; num=tab[byte]; for(c=0;c《8;c++) { CLK=0; DAT=num&0x01; CLK=1; num》》=1; } } void delay_50ms(unsigned int t) { unsigned int j; for(;t》0;t--) for(j=6245;j》0;j--) {;} } main() { unsigned char h; while(1){ for(h=0;h《10;h++){ delay_50ms(1); sendbyte(h); delay_50ms(4); } h=0; } } 74hc164驱动共阳数码管74hc164驱动共阳数码管电路图 74hc164驱动共阳数码管源程序 #define uint unsigned int #define uchar unsigned char sbit DAT=P1^1; //模拟串口数据发送端 sbit CLK=P1^2;//模拟时钟控制端 uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};//0-9,-,全灭 (共阳字段表) void sendbyte(uchar byte) { uchar num,c; num=tab[byte]; for(c=0;c《8;c++) { CLK=0; DAT=num&0x80; //(0x80即十进制的128, 二进制的10000000 按位发送) CLK=1; num《《=1; } } void delay_50ms(unsigned int t) //50MS演示程序 { unsigned int j; for(;t》0;t--) for(j=6245;j》0;j--) {;} } main() { unsigned char h; while(1){ for(h=0;h《10;h++){ delay_50ms(1); sendbyte(h); delay_50ms(10); } h=0; } } |
|
来自: goodwangLib > 《74HC164》