|
/*8位数码管来回扫描显示1~8*/
#include <reg52.h> //包含头文件
#include <intrins.h> //包含移位函数头文件
//段码表
unsigned char code dis_code[11]={0xc0,0xf9,0xa4,0xb0, // 0, 1, 2, 3
0x99,0x92,0x82,0xf8,0x80,0x90, 0xff};// 4, 5, 6, 7, 8, 9, off
//毫秒级延时函数
void delay(unsigned int x)
{
unsigned char i;
while(x--)
{
for(i=0;i<120;i++);
}
}
//主函数
void main()
{
unsigned char k,i,m=0x80; //变量定义
P0 = 0xff; //先关闭数码管
P2 = 0x00; //
while(1)
{
for(i=8;i>0;i--)
{
for(k = 0;k < i;k++) //循环8次
{
P2 = 0x00; //每显示一位都要关闭位选端口一次
m=_crol_(m,1); //循环左移
P2=m; //每次选通一个位选端口
P0=dis_code[k+1]; //段码送P0口
delay(200);
}
m=0x80;
}
m=0x01;
for(i=8;i>0;i--)
{
for(k = i;k>0;k--) //循环8次
{
P2 = 0x00; //每显示一位都要关闭位选端口一次
m=_cror_(m,1); //循环左移
P2=m; //每次选通一个位选端口
P0=dis_code[k]; //段码送P0口
delay(200);
}
m=0x01;
}
}
}
|
|