74hc573驱动共阴数码管例程谁给发几个,我是初学51单片机 5

573驱动数码管的给几个,我是初学者很多东西都不懂呢,谢谢赐教... 573驱动数码管的给几个,我是初学者很多东西都不懂呢,谢谢赐教 展开
 我来答
hyhv126
2011-05-24
知道答主
回答量:38
采纳率:0%
帮助的人:33万
展开全部

下面是个164+573的,164是为了减少占用I/O口,573就段选后送位选,没什么程序可言。

#include"reg52.h"

#include"intrins.h"

sbit DSA=P2^7;//P1^1;

sbit CP= P2^4;//P1^0;

sbit dw=P1^7;

unsigned char code table[]={0Xc0,0Xf9,0Xa4,0Xb0,0X99,0X92,0X82,0Xf8,0X80,0X90,0X88,0X83,0Xc6,0Xa1,0X86,0X8e};

/*unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

*/

void delay_ms(unsigned int );

void Show_164(unsigned char ) ;

unsigned char i,j;

void main()

{

while(1)

{

i++;

if(i==10)

{

i=0;

j++;

if(j==16)

j=0;

}

dw=1;

Show_164(0x01);

dw=1;

delay_ms(11);

dw=0;

Show_164(table[j]);

dw=0;

delay_ms(11);

 //---------------

dw=1;

Show_164(0x02);

dw=1;

delay_ms(11);

dw=0;

Show_164(table[j]);

dw=0;

delay_ms(11);

//---------------

dw=1;

Show_164(0x04);

dw=1;

delay_ms(11);

dw=0;

Show_164(table[j]);

dw=0;

delay_ms(11);

//---------------

dw=1;

Show_164(0x08);

dw=1;

delay_ms(11);

dw=0;

Show_164(table[j]);

dw=0;

delay_ms(11);

}   

}

void Show_164(unsigned char _ShowValue) 

{

    unsigned char Count0;

    for(Count0=0;Count0<=7;Count0++) 

{     

if((_ShowValue&0x80)==0x80) 

     DSA=1;  

else        

DSA=0; 

  

_ShowValue<<=1;    

CP=0;

   

_nop_(); 

                _nop_(); 

CP=1;

}

void delay_ms(unsigned int t)

{

unsigned int x,y;

for(x=t;x>0;x--)

for(y=100;y>0;y--);

}

QQ1660827928
2011-05-26
知道答主
回答量:73
采纳率:0%
帮助的人:0
展开全部
#include "reg51.h"
/********************/
unsigned char table[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴数码管 0-9 表
/********************/
sbit LHJ_A = P1^0; //管脚定义 74HC138(3-8)译码器输入控制信号线
sbit LHJ_B = P1^1;
sbit LHJ_C = P1^2;
/********************/ //宏定义 ,定义数码管显示第几位
#define SMG_1 LHJ_C=0;LHJ_B=0;LHJ_A=0//译码器的输入脚,全 0选择第一位数码管。
#define SMG_2 LHJ_C=0;LHJ_B=0;LHJ_A=1//译码器的输入脚,001选择第二位数码管。
#define SMG_3 LHJ_C=0;LHJ_B=1;LHJ_A=0 //同上类推
#define SMG_4 LHJ_C=0;LHJ_B=1;LHJ_A=1
#define SMG_5 LHJ_C=1;LHJ_B=0;LHJ_A=0
#define SMG_6 LHJ_C=1;LHJ_B=0;LHJ_A=1
#define SMG_7 LHJ_C=1;LHJ_B=1;LHJ_A=0
#define SMG_8 LHJ_C=1;LHJ_B=1;LHJ_A=1
/******************************/
void delay(unsigned int d_time); //延时子函时,
/***************/
void main(void)
{
unsigned char i; //定义循环变量
while(1)
{
SMG_8; //选择第八位数码管,这是静态显示,P2口输出同一个数显示,不需要刷新,可选择
其它位,比如第一位,则为 SMG_1
for(i=0;i<10;i++) //循环显示0-9
{
P2=table[i]; //P2,查表输出定义好的数码管段时,显示相应的 0-9
delay(500); //延时
}
}
}
/*******************************/
//延时子函数,参数范围 0-65536
void delay(unsigned int tmp)
{
unsigned char i,j;
i=tmp;
while(i--){
j=255;
while(j--);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式