小杰 发表于 2014-9-22 15:36:26

74CH595N与8位共阴数码管的连接实现0~9循环显示

小弟小白一枚,刚接触arduino 不久!驱动数码管直接插到板子上 我觉得 有点浪费 经过了解可以用74CH595N解决这个问题!
希望大神 大牛 大大们 来个详细介绍!
我很真诚的亲们{:soso_e149:}
越详细越好(毕竟还是小白嘛),最好有图有真相哦

STCunio 发表于 2014-9-22 16:17:41

用shiftOut函数,虽然我用的是STCunio,也就是51版的arduino:lol,程序应该差不多,595使用shiftOut函数之后要再来个下降沿才是正确的。我这个是级联的

code table1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
code table2[]={0xf7,0xfb,0xfd,0xfe};
void main()
{ int dataPin=8;
        int clockPin=9;
        int ST_CP=10;
        int _data;
        u8 data1,data2,data3,data4;
Serialbegin(2400);
        pinMode(dataPin,PullUp);
        pinMode(clockPin,PullUp);
        pinMode(ST_CP,PullUp);
        while(1)
        {
//最先进的数据会在Q7输出
                u8 i;
                for(i=0;i<=9;i++)
                {
                shiftOut(dataPin, clockPin, MSBFIRST,table1);//位选
                shiftOut(dataPin, clockPin, MSBFIRST,0xf7);        //段选       
                digitalWrite(ST_CP,LOW);
                digitalWrite(ST_CP,HIGH);                       
                delay_ms(200);
                }
                for(i=0;i<=9;i++)
                {
                shiftOut(dataPin, clockPin, MSBFIRST,table1);//位选
                shiftOut(dataPin, clockPin, MSBFIRST,0xfb);        //段选       
                digitalWrite(ST_CP,LOW);
                digitalWrite(ST_CP,HIGH);                       
                delay_ms(200);
                }
                for(i=0;i<=9;i++)
                {
                shiftOut(dataPin, clockPin, MSBFIRST,table1);//位选
                shiftOut(dataPin, clockPin, MSBFIRST,0xfd);        //段选       
                digitalWrite(ST_CP,LOW);
                digitalWrite(ST_CP,HIGH);                       
                delay_ms(200);
                }
                for(i=0;i<=9;i++)
                {
                shiftOut(dataPin, clockPin, MSBFIRST,table1);//位选
                shiftOut(dataPin, clockPin, MSBFIRST,0xfe);        //段选       
                digitalWrite(ST_CP,LOW);
                digitalWrite(ST_CP,HIGH);                       
                delay_ms(200);
                }
                _data=1345;
                while(1)//一直显示_data的值
                {               
                data1=_data/1000;
                data2=_data%1000/100;
                data3=_data%100/10;
                data4=_data%10;
                shiftOut(dataPin, clockPin, MSBFIRST,table1);//位选
                shiftOut(dataPin, clockPin, MSBFIRST,table2);        //段选       
                digitalWrite(ST_CP,LOW);
                digitalWrite(ST_CP,HIGH);
                shiftOut(dataPin, clockPin, MSBFIRST,table1);//位选
                shiftOut(dataPin, clockPin, MSBFIRST,table2);        //段选       
                digitalWrite(ST_CP,LOW);
                digitalWrite(ST_CP,HIGH);
                shiftOut(dataPin, clockPin, MSBFIRST,table1);//位选
                shiftOut(dataPin, clockPin, MSBFIRST,table2);        //段选       
                digitalWrite(ST_CP,LOW);
                digitalWrite(ST_CP,HIGH);
                shiftOut(dataPin, clockPin, MSBFIRST,table1);//位选
                shiftOut(dataPin, clockPin, MSBFIRST,table2);        //段选       
                digitalWrite(ST_CP,LOW);
                digitalWrite(ST_CP,HIGH);
                }
        }
}

小杰 发表于 2014-9-22 18:32:47

虽然有点看不懂 但是先谢谢了 慢慢搞
页: [1]
查看完整版本: 74CH595N与8位共阴数码管的连接实现0~9循环显示