设计一个程序:能够达到0-99计数,用P2和P1端口,应用在单片机上的,帮个忙,谢谢了!用两个数码管就可以!

[复制链接]
查看11 | 回复2 | 2008-10-2 10:57:32 | 显示全部楼层 |阅读模式
#include
void Delay(void)
{ unsigned int i;
for(i=50000;i>0;i--) ;

}
unsigned char qianw,baiw,shiw,gew,sum=0,i,j;
unsigned char duan[]={0x3f,0x06,0x5b,0x4f,0x66,0xbd,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsigned char wei[]={0xfe,0xfc,0xf80,0xf0};
void xians(unsigned char x,unsigned char y)
{
P1=duan[x];Delay();
P2=wei[y];

}
void main(void)
{
for(i=0;i<=5050;i++)

{ sum+=i;

qianw=sum/1000;
baiw=(sum%1000)/100;
shiw=((sum%1000)%100)/10;
gew=sum%10;

}
for(j=0;j<20;j++)

{ if(qianw==0)
{ if(baiw==0)

{ if(shiw==0)
{ xians(wei[0],gew); Delay();}

else {xians(wei[1],shiw); Delay();}

}

else {xians(wei[2],baiw); Delay();}
}

else {xians(wei[3],qianw); Delay();}

}
}
我这个程序可以运行,但与ptrotues联调不能实现,请问是怎么回事啊?帮我改一下好吗?谢谢了!

回复

使用道具 举报

千问 | 2008-10-2 10:57:32 | 显示全部楼层
给你个思路,P2.0接第一个(十位)位选,P2.1接第二个(个位)位选。P1接口接数码管的8个段选,建议使用共阳的两位一体数码管 这样走线比较简单。阳极的位选控制电路建议使用8550三极管。程序大概思路:inc a寄存器a加1
cjne a,#100,next;比较寄存器a的值是不是到超过99了,如果没有执行next
clr a;a清零
jmp out如果超过99就跳出
mov b,#10;给b赋值10作为除数next:
div ab ; a/b 得到个位和十位
MOVC A,@A+D...
回复

使用道具 举报

千问 | 2008-10-2 10:57:32 | 显示全部楼层
给你一个现成的程序,是我自己写的,程序用c语言写成,程序是从0到9999运行,用了四个数码管,在数码管下面用了四个8550的三极管用于作为每一个对应位的数码管开关,另外我用了定时器,使得变化的时间为一秒,由于这个程序只是对应于我这个板子的连接,如果板子连接不一样的话,可能不能正确显示出来;不过我可以保证这个程序的整体思路肯定是正确的,我用keil调试是完全正...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行