高级会员
主题
回帖0
积分1988
阅读权限30
注册时间2012-2-14
最后登录1970-1-1
在线时间 小时
|
仿真实现 16个LED转圈计数器 要求单片机控
制16个LED单灯左移一圈两个单位数码管数字加1显示。
数据显示范围00~99,单灯左移间隔时间为程序延时1S。
循环进行。
/*
一、99走马灯
要求:仿真实现 16个LED转圈计数器 要求单片机控
制16个LED单灯左移一圈两个单位数码管数字加1显示。
数据显示范围00~99,单灯左移间隔时间为程序延时1S。
循环进行。
*/
#include <reg52.h>
typedef unsigned char uint8;
typedef unsigned int uint16;
sbit D1 = P1^0;
sbit D2 = P1^1;
char code SEG7[] = {0xC0,0xF9,0xA4,0xB0,0x99,
0x92,0x82,0xF8,0x80,0x90
};//0,1,2,3,4,5,6,7,8,9
//char code LED[] = {0X7F,0XBF,0XDF,0XEF,0XF7,0XFB,0XFD,0XFE,0XFF};
void delay(uint16 k)
{
uint16 a,b;
for(a=0;a<k;a++)
for(b=0;b<120;b++);
}
void urint()
{
P0=0XFF;
P2=0xFF;
P3=0xFF;
D1=1;
D2=1;
}
void led_play()
{
uint8 m;
for(m=0;m<10;m++)
{
P3 = 0X7F;
delay(1000);
P3 = 0XBF;
delay(1000);
P3 = 0XDF;
delay(1000);
P3 = 0XEF;
delay(1000);
P3 = 0XF7;
delay(1000);
P3 = 0XFB;
delay(1000);
P3 = 0XFD;
delay(1000);
P3 = 0XFE;
delay(1000);
P3 = 0XFF;
P2 = 0X7F;
delay(1000);
P2 = 0XBF;
delay(1000);
P2 = 0XDF;
delay(1000);
P2 = 0XEF;
delay(1000);
P2 = 0XF7;
delay(1000);
P2 = 0XFB;
delay(1000);
P2 = 0XFD;
delay(1000);
P2 = 0XFE;
delay(1000);
P2 = 0XFF;
P0 = SEG7[m];
}
}
void main()
{
urint();
while(1)
{
led_play();
}
} |
|