74HC164级联的电路中,如何不通过CPU的IO送出 MR信号,而让数码管从第一个重新开始显示?
如果不送出MR信号,会依次显示下去。
//共阴数码管74HC164串行驱动
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit DAT=P3^7; //模拟串口数据发送端
sbit CLK=P3^4;//模拟时钟控制端
sbit Rest=P2^0; //送出复位信号
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()
{
while(1){
sendbyte(2);
sendbyte(3);
sendbyte(4);
// sendbyte(5);
delay_50ms(2);
Rest=0; //送出复位信号,从第一个数码管开始
Rest=1;
}
}
如果不送出MR信号,会依次显示下去。
//共阴数码管74HC164串行驱动
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit DAT=P3^7; //模拟串口数据发送端
sbit CLK=P3^4;//模拟时钟控制端
sbit Rest=P2^0; //送出复位信号
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()
{
while(1){
sendbyte(2);
sendbyte(3);
sendbyte(4);
// sendbyte(5);
delay_50ms(2);
Rest=0; //送出复位信号,从第一个数码管开始
Rest=1;
}
}