高级会员 
 
主题
回帖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();  
 } 
} |   
 
 
 
 |