欢迎光临散文网 会员登陆 & 注册

4位共阴数码管显示(595*2方式)

2023-04-30 00:07 作者:赵一潮  | 我要投稿

显示方式:两片595级联,一片作为段选,一片作为位选。

数据执行方式:先灌入位选数据再灌入段选数据,锁存器动作一次性输出至数码管进行显示。

总结:对于显示位数较小的数码管,显示比较方便,数据一次性输出。但对于位数较多的数码管显示,程序较为复杂可能会增大延迟,结构繁杂(适合2~8位显示,高于8位用595-138方式利于实现,138可替换更多位数的译码器)

主程序总览1
主程序总览2
宏定义合并一个H文件

附件:“主程序代码附注”

*********************************************************************************************************

#include"STCXXXX.H"

sbit SCK = P6^0; //IO口设定

sbit RCK = P6^2;

sbit DIO = P6^4;      


u16 a,b,c,d,e,f;           //参数

u num,ge,shi,bai,qian,js;

//{0x3f(0),0x06(1),0x5b(2),0x4f(3),0x66(4),0x6d(5),0x7d(6),0x07(7),0x7f(8),0x6f(9),0x77,0x7c,0x39,0x5e,0x79,0x71,0x73,0x00} 

code Data1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};     //段选数组

code Data2[]={0xfe,0xfd,0xfb,0xf7};                                   //位选数组

                                                                                         

void Gun(u16 e,u16 f); //显示函数                                                

void delay();          //延时

void main()

{  

js = 0;

    

while(1)//死循环

    {       

        Gun(0,qian);                        

        Gun(1,bai);         

        Gun(2,shi);        

        Gun(3,ge);        

        js++;         //每次循环,js+1

        if(js == 200) //==等于 >大于 < 小于 >= 大于等于 <= 小于等于;一个延时

        {

            js=0;     //js清零复位

            num++;

            qian=num%10000/1000;

            bai=num%1000/100;

            shi=num%100/10;

            ge=num%10;

        }

    }

}  

 

void Gun(u16 e,u16 f)             

{  

    a = Data2[e];        

          

    for(b=0;b<8;b++)  

    {

        DIO = a&0x80;  

        SCK = 0;

        SCK = 1;      

        a=a << 1;     

    } 

    a = Data1[f]; 

    for(b=0;b<8;b++)  

    {

        DIO = a&0x80;  

        SCK = 0;

        SCK = 1;     

        a=a << 1;    

    } 

    RCK=0;             

    RCK=1;            

}

4位共阴数码管显示(595*2方式)的评论 (共 条)

分享到微博请遵守国家法律