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