使ç¨æ±ç¼è¯è¨å©ç¨AT89C51åçæºé©±å¨8*8LEDéµåæ¾ç¤ºæ°å2012010895åä¸æ¯å¾å¤æï¼ä½éè¦ç¥éåçæºåå·ãæ¶æ¯é¢çï¼å½ä½ æçµåå¾è´´ä¸æ¥ä¹è¡ã
//*****************************//
//ç¨åºå:ååè·¯å£äº¤éç¯æ§å¶
//ç¼å人:é»åºå
//ååæ¶é´:2009å¹´1æ2æ¥
//ç¨åºåè½:åå为车è¡é,延æ¶60ç§;ä¸è¥¿æ¹å为人è¡é,延æ¶20ç§,ä¸å¨æå3ç§é»ç¯æ¾ç¤º2ç§éåå®ç°åæ¢.
//CPU说æ:AT89C51ååçæº; 24MHZæ¶ä½æ¯è¡å¨
//å®ææ¶é´:2009å¹´1æ6æ¥
//*****************************//
#include<stdio.h>
#include<reg51.h>
#include<intrins.h>
sfr p0 = 0x80;
sfr p1 = 0x90;
sfr p2 = 0xA0;
sfr p3 = 0xb0; //è¿é¨åå
容å
¶å®å¨â#include<reg51.h>âéå·²ç»æï¼ä½éé¢å®ä¹çå¿
é¡»åºå大å°åï¼å¨è¿éï¼å 为æç¨åºéç¨çæ¯å°åï¼reg51.hé对å个端å£ä¸å¯åå¨çå®ä¹é½æ¯å¤§åï¼æ以å¨ç¼è¯è¿æ¥æ¶ï¼ä¼æ¥éï¼æ以ï¼å¨æ¬è®¾è®¡ç¨åºéï¼æåªç¨å°äºç«¯å£ï¼å¨è¿éä¹å°±åªå®ä¹äºå个ï¼è没æå»æ¹reg51.héé¢çå
容ãå
¶å®ä¸¤è
æ¯ä¸æ ·çã
sbit sw = p0^0;
sbit OE =P0^6;
sbit LE =P0^7; //74LS373éåå¨æ§å¶ç«¯å®ä¹
char display[]={ 0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99 }; //p1å£çæ°ç 管æ¶é´æ¾ç¤ºè°ç¨,å©ç¨74L74BCDç ,8ä½é©±å¨è¾åº;
//å½æ°å£°æ begin
void delay1(int count);
void delay_long(int number1,int number2);
void people_car_drive();
//å½æ°å£°æend
//***********************//延æ¶åç¨åº
void delay1(int count)
{ int i;
for(i=count;i>0;i--)
{ ;}
}
void delay_long(int number1,int number2)
{
int a,b;
for(a=number1;a>0;a--)
{
for(b=number2;b>0;b--)
{ _nop_(); }
}
}
//**********************//延æ¶åç¨åº
void people_car_drive()
{
int p_1=2,i,j=9,p_2=6; //****************//è¡äººéè¡æ¶ï¼å»¶æ¶20ç§
p2=0x09; //åå红ç¯äº®
p3=0x24; //ä¸è¥¿ç»¿ç¯äº®
while(p_1-->0)
{ LE=1;
OE=0;
if(p_1==0){OE=1;} //å½åä½æ°åå°0æ¶,åªæ¾ç¤ºä¸ªä½æ°
p1=display[p_1];
delay1(1000);
LE=0;
j=9;
for(i=10;i>0;i--)
{
if(p_1==0&&j==3)break; //åå°3æ¶éåºå¾ªç¯,让å
¶é»ç¯éªçæ¾ç¤º
p1=display[j--];
delay_long(16000,2);
if(sw==1)return;
}
}
//*******************************************************************************//
p2=0x12; //ååé»ç¯éªçä¸ç§,以æéè¡äººæ³¨æ
p3=0x12;
p1=display[3];
delay_long(8000,1);
p2=0x00;
p3=0x00;
delay_long(14000,1);
p2=0x12;
p3=0x12;
p1=display[2];
delay_long(8000,1);
p2=0x00;
p3=0x00;
delay_long(14000,1);
p2=0x12;
p3=0x12;
p1=display[1];
delay_long(8000,1);
p2=0x00;
p3=0x00;
delay_long(14000,1);
//*****************以ä¸æ¯è½¦è¾éè¡æ¶å»¶æ¶60ç§//
p2=0x24; //åå绿ç¯äº®
p3=0x09; //ä¸è¥¿çº¢ç¯äº®
while(p_2-->0)
{ LE=1;
OE=0;
if(p_2==0){OE=1;} //å½åä½æ°åå°0æ¶,åªæ¾ç¤ºä¸ªä½æ°
p1=display[p_2];
delay1(1000);
LE=0;
j=9;
for(i=10;i>0;i--)
{
if(p_2==0&&j==3)break; //åå°2æ¶éåºå¾ªç¯
p1=display[j--];
delay_long(16000,2);
if(sw==1)return;
}
}
p2=0x12; //ååé»ç¯éªçä¸ç§,以æéè¡äººæ³¨æ
p3=0x12;
p1=display[3];
delay_long(8000,1);
p2=0x00;
p3=0x00;
delay_long(14000,1);
p2=0x12;
p3=0x12;
p1=display[2];
delay_long(8000,1);
p2=0x00;
p3=0x00;
delay_long(14000,1);
p2=0x12;
p3=0x12;
p1=display[1];
delay_long(8000,1);
p2=0x00;
p3=0x00;
delay_long(14000,1); //ååé»ç¯éªçä¸ç§å®æ¯
}
void main() //主å½æ°å
¥å£å¤
{
p0=0x01;
p1=0x00;
p2=0x00;
p3=0x00; //åå§åå端å£
{ while(1)
{
if(sw==0)
{ people_car_drive();}
else
{
p2=0x00;
p3=0x00; //å
³éææ交éç¯}
追é®æç¹çéæé®äºå§ï¼æåªæ³æ±å©å®ç°æçè¦æ±çç¨åºã