对初学者来说,程序没有好次,能跑对就是成功。楼主既然在开发板上弄对了,那就是对了,好不好是另外的话。
NE5532 发表于 2012-6-26 22:28
刚醒来的时候突然想把程序的左移方式改下,由原来的F出现后重新显示0~7,改为循环显示,即出现8~F的下一状态为9~F~0,仅仅改了几个变量就OK了,修改的地方加了红色
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code seg[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e}; //数码管段码
void delay(uchar x) //延时程序
{
uchar a,b;
for(a=x;a>0;a--)
for(b=100;b>0;b--);
}
void main() //主程序
{
uchar c,d=0x7f,e,i,il; //c:数码管段选偏移量;d:数码管位选变量;e:数码管段码地址变量
while(1)
{
for(il=100;il>0;il--)
{
e=c;
for(i=8;i>0;i--)
{
P0=0xff; //段码清零,防止数码管出现余辉
P2=d; //选位
P0=seg[e]; //调用段码表
delay(10); //延时
e++; //段码加1
if(e==c+8) //是否最后一个数码管
{e=c;}
if(e==16)
e=0; //重新装载段码地址变量
d=_cror_(d,1); //位选变量右移一位
}
}
c++;
if(c>15)
c=0;
}
} |