¼ÆËã»ú¿ØÖƿγÌÉè¼Æ

Îå¡¢Èí¼þÉè¼Æ

5.1 Éè¼ÆÁ÷³Ìͼ

5.2 ³ÌÐòÇåµ¥

#include

sbit ADDR3 = P1^3; sbit ENLED = P1^4;

unsigned char code LedChar[] = { //ÊýÂë¹ÜÏÔʾ×Ö·ûת»»±í 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E };

unsigned char LedBuff[7] = { //ÊýÂë¹Ü+¶ÀÁ¢LEDÏÔʾ»º³åÇø 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };

bit flag1s = 1;

unsigned char T0RH = 0; unsigned char T0RL = 0;

void ConfigTimer0(unsigned int ms); void TrafficLight(); void main() {

TMOD = 0x01; TH0 = (65536 - DELAY) / 256; TL0 = (65536 - DELAY) % 256; EA = 1; //¿ª×ÜÖÐ¶Ï ET0 = 1; TR0 = 1; P0=0xff;

P1=0x00; //ÉèÖö¨Ê±Æ÷ΪÖжϹ¤×÷ģʽ ENLED = 0; //ʹÄÜÊýÂë¹ÜºÍLED ADDR3 = 1;

ConfigTimer0(1); //ÅäÖÃT0¶¨Ê±1ms

while(NSEMERGENCY&&EWEMERGENCY) { timeDisplay_Blue(); timeDisplay_Red(); if(flag) stateChange(); stateChange_Glint(); }

while (1) {

if (flag1s) //ÿÃëÖ´ÐÐÒ»´Î½»Í¨µÆË¢Ð {

flag1s = 0; TrafficLight(); } } }

void ConfigTimer0(unsigned int ms) {

unsigned long tmp; //ÁÙʱ±äÁ¿

//½ô¼±Çé¿ö´¦Àí tmp = 11059200 / 12; //¶¨Ê±Æ÷¼ÆÊýƵÂÊ tmp = (tmp * ms) / 1000; //¼ÆËãËùÐèµÄ¼ÆÊýÖµ tmp = 65536 - tmp; //¼ÆË㶨ʱÆ÷ÖØÔØÖµ

tmp = tmp + 18; //²¹³¥ÖжÏÏìÓ¦ÑÓʱÔì³ÉµÄÎó²î

T0RH = (unsigned char)(tmp>>8); //¶¨Ê±Æ÷ÖØÔØÖµ²ð·ÖΪ¸ßµÍ×Ö½Ú T0RL = (unsigned char)tmp;

TMOD &= 0xF0; //ÇåÁãT0µÄ¿ØÖÆÎ» TMOD |= 0x01; //ÅäÖÃT0Ϊģʽ1 TH0 = T0RH; //¼ÓÔØT0ÖØÔØÖµ TL0 = T0RL;

ET0 = 1; //ʹÄÜT0ÖÐ¶Ï TR0 = 1; //Æô¶¯T0 }

void TrafficLight() {

static unsigned char color = 2; static unsigned char timer = 0;

if(timer == 0) { switch(color) { case 0: color = 1; timer = 2; LedBuff[6] = 0xE7; break; case 1: color = 2; timer = 29; LedBuff[6] = 0xFC; break; case 2: color = 0; timer = 39; LedBuff[6] = 0x3F; break; default: break; } }

else { timer--; }

LedBuff[0] = LedChar[timer]; LedBuff[1] = LedChar[timer/10]; }

void LedScan() {

static unsigned char i = 0; //¶¯Ì¬É¨ÃèË÷Òý

P0 = 0xFF; //¹Ø±ÕËùÓжÎѡ룬ÏÔʾÏûÒþ P1 = (P1 & 0xF8) | i; //λѡË÷ÒýÖµ¸³Öµµ½P1¿ÚµÍ3λ

P0 = LedBuff[i]; //»º³åÇøÖÐË÷ÒýλÖõÄÊý¾ÝË͵½P0¿Ú if (i < 6) //Ë÷ÒýµÝÔöÑ­»·£¬±éÀúÕû¸ö»º³åÇø i++; else

i = 0; }

void InterruptTimer0() interrupt 1 {

static unsigned int tmr1s = 0; //1Ã붨ʱÆ÷

TH0 = T0RH; //ÖØÐ¼ÓÔØÖØÔØÖµ TL0 = T0RL;

LedScan(); //LEDɨÃèÏÔʾ tmr1s++; //1Ã붨ʱµÄ´¦Àí if (tmr1s >= 1000) {

tmr1s = 0;

flag1s = 1; //ÉèÖÃÃ붨ʱ±êÖ¾ } }

Áù¡¢×ܽá

¾­¹ýÈý¸öÐÇÆÚµÄŬÁ¦£¬ÖÕÓÚÍê³ÉÁË×Ô¼ºµÄ¼ÆËã»ú¿ØÖƿγÌÉè¼Æ¡£Ëä˵æµÁ˵㣬µ«ÎÒ¾õµÃÕâÑùµÄÉú»î³äʵÇÒÓгɾ͸У¬µ±È»£¬Ò²»ñÒæ·Ëdz¡£

ͨ¹ýÕâ´Î½»Í¨µÆµÄ¿Î³ÌÉè¼Æ£¬ÈÃÎÒÌá¸ßÁËÓÃרҵ֪ʶ¡¢×¨Òµ¼¼ÄÜ·ÖÎöºÍ½â¾öÏÖʵÎÊÌâµÄÄÜÁ¦¡£Ê¹ÎÒÔÚµ¥Æ¬»úµÄ»ù±¾Ô­Àí¡¢µ¥Æ¬»úÓ¦ÓÃѧϰ¹ý³ÌÖУ¬ÒÔ¼°ÔÚ³£Óñà³ÌÉè¼ÆË¼Â·¼¼ÇɵÄÕÆÎÕ·½Ãæ¶¼ÄÜÏòǰÂõÁËÒ»´ó²½£¬¿Î³ÌÉè¼ÆÈÃÎÒ°ÑÒÔǰѧϰ

µ½µÄ֪ʶµÃµ½¹®¹ÌºÍ½øÒ»²½µÄÌá¸ßÈÏʶ£¬²¢ÇÒ¶ÔÒÑÓÐ֪ʶÓÐÁ˸üÉî²ã´ÎµÄÀí½âºÍÈÏʶ¡£¿ÉÒÔ˵ÔÚÕû¸öÈí¼þÉè¼Æ¹ý³ÌÖУ¬ÎÒ²»½öѧ»áÁËÑÓʱµÄÁ½ÖÖ·½·¨£¬¼´Èí¼þÑÓʱºÍÓ²¼þÑÓʱ£¬»¹ÕÆÎÕÊýÂë¹ÜµÄÁ½ÖÖÏÔʾ·½Ê½£¨¼´¶¯Ì¬ÏÔʾÓ뾲̬ÏÔʾ£©¼°ÆäÈçºÎÑ¡Ôñ¡£

ÔÚÕû¸ö¿Î³ÌÉè¼Æ¹ý³ÌÎÒ»¹ÕÆÎÕÁËһϼ¸µã£º

£¨1£©ÕÆÎÕÁ˵ç×ÓϵͳÉè¼ÆµÄÁ÷³Ì£¬ÊìϤÁ˸÷ÖÖÓ²¼þµç·ÒÔ¼°Èí¼þ±à³Ì·½·¨¡£ £¨2£©Àí½âÁË×Ƭ»úµÄ¸÷²¿·Ö×é³É¼°ÌØÐÔ¡£ £¨3£©ÊìÁ·Ê¹ÓÃÁ˸÷ÖÖ¼ÆËã»ú¸¨ÖúÉè¼Æ¹¤¾ßÍê³ÉÉè¼Æ£¬³ä·ÖÕÆÎÕÁËÕâЩ¹¤¾ßµÄʹÓá£

ͨ¹ý±¾´ÎµÄ¿Î³ÌÉè¼Æ£¬³ä·ÖÒâʶµ½×Ô¼ºËùѧµÄ¶«Î÷»¹ÊǷdz£ÓÐÏ޵쬲»¹ýͨ¹ýÉè¼Æ£¬»¹ÊÇѧµ½ÁËһЩÊé±¾ÉÏûÓÐѧµ½µÄ¶«Î÷£¬Îª×Ô¼ºÒÔºóµÄѧϰÆðÁ˺ܴóµÄ°ïÖú¡£¾ÍÎÒ¸öÈ˶øÑÔ£¬ºÜÉî¿ÌµØÌå»áµ½Ò»µã£¬ÄǾÍÊÇÎÒÃÇÔÚÉè¼Æ¹ý³ÌÖÐÒ»¶¨ÒªÓÐÒ»¸öÕûÌåµÄÇåÎúµÄ˼·£¬ÖªµÀ×Ô¼ºµÄÉè¼ÆµÄ¶ÔÏóµÄ»ù±¾¹¦ÄܺͺËÐÄÆ÷¼þµÄÊÊÓü°Æä×÷Óã¬Ö»Òª°ÑÎÕסÕâЩÖ÷Òª·½Ã棬һЩСÎÊÌâ¶¼½«Î§ÈÆ×ÅÕâЩÖ÷ÒªÎÊÌâ¶øÖ𲽵õ½½â¾ö¡£Í¬Ê±ÎÒÒ²¶®µÃ£¬ÔÚÕû¸öÉè¼Æ¹ý³ÌÖУ¬Éú»îÖÐÒ²Ò»Ñù£¬Ò»¶¨ÒªÒâÖ¾¼á¶¨£¬¿Ë·þ×Ô¼ºµÄηÄÑÇéÐ÷,ÕâÑù²ÅÄܽ«ÊÂÇé×öºÃ£¬²ÅÄܸɳöÒ»·¬³É¾Í¡£×îºó£¬¶ÔÔÚÕâ¸ö¿Î³ÌÉè¼Æ¹ý³ÌÖаïÖúÎÒµÄËùÓÐͬѧºÍ¸÷λָµ¼ÀÏʦÔٴαíʾÖÔÐĵĸÐл£¡

ÁªÏµ¿Í·þ£º779662525#qq.com(#Ìæ»»Îª@) ËÕICP±¸20003344ºÅ-4