久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

51單片機數碼管交通燈程序

作者:huqin   來源:本站原創   點擊數:  更新時間:2014年04月16日   【字體:

本程序的pdf格式的原理圖下載: http://www.zg4o1577.cn/f/ks51.pdf  ,是在51hei單片機開發板上面做的,只需要看數碼管部分的原理圖即可 其他的可以忽略.

/**
  ***********************************************************************************
  * @file    :  main.c
  * @author  :  xr
  * @date    :  2014年4月16日10:04:27 - 2014年4月16日11:09:50
  * @version :  V1.2.3
  * @brief   :  數碼管交通燈 TrafficLight  單片機STC89C52RC MCU  晶振 11.0592MHZ
  ***********************************************************************************
  */

#include <reg52.h>

//74HC138
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;

//數碼管編碼真值表
unsigned char code LedTable[] = {
0xC0,  //"0"
                0xF9,  //"1"
                0xA4,  //"2"
                0xB0,  //"3"
                0x99,  //"4"
                0x92,  //"5"
                0x82,  //"6"
                0xF8,  //"7"
                0x80,  //"8"
                0x90,  //"9"
                0x88,  //"A"
                0x83,  //"B"
                0xC6,  //"C"
                0xA1,  //"D"
                0x86,  //"E"
                0x8E   //"F"
};

//數碼管顯示緩沖區+LED小燈顯示緩沖區
unsigned char LedBuff[7] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};

unsigned char thr0, tlr0;//Timer0定時初值高低字節
bit flag1s = 0;
unsigned char timer = 0;//倒計時時間

enum TrafficLightColor
{
GREEN = 0, YELLOW = 1, RED = 2
};

static enum TrafficLightColor color = GREEN;//定義枚舉變量color,表示紅綠黃燈,開始時是黃燈
/****************function definition************************/
void TrafficLight();
void ConfigTimer0(unsigned int xms);
void Initial();

/*主程序main()*/
void main(void)
{
Initial();
ConfigTimer0(1);//定時1ms

while (1)
{
if (flag1s)
{
flag1s = 0;
TrafficLight();//每過1s進行交通燈的切換或timer的倒計時,并分解timer到緩沖區
}
}
}

/*初始化*/
void Initial()
{
ADDR3 = 1;
ENLED = 0;//選擇U3,即選擇數碼管顯示+LED顯示

P0 = 0xFF;
}

/*定時器T0配置*/
void ConfigTimer0(unsigned int xms)
{
unsigned long tmp;
tmp = 11059200/12;//機器周期頻率
tmp = tmp * xms /1000;//定時xms需要的計數值(f*T=計數個數)
tmp = 65536-tmp+18;//定時xms裝入的初值

thr0 = (unsigned char)(tmp >> 8);//重載值高字節
tlr0 = (unsigned char)tmp; //重載值低字節

TMOD &= 0xF0;//清零T0控制位
TMOD |= 0x01;//T0工作方式1,16位可設定時模式
TH0 = thr0;
TL0 = tlr0;//裝入初值
TR0 = 1;
ET0 = 1;
EA  = 1;
}

/*交通燈的紅綠黃燈的切換和倒計時值的設定*/
void TrafficLight()
{
//首先判斷timer倒計時時間是否到了0,若到了0就進行紅綠黃交通燈的切換,否則進行倒計時
if (timer == 0) //倒計時到0,進行交通燈的切換
{
switch (color)
{
case GREEN:  color = YELLOW; LedBuff[6] = 0xE7; timer = 2;//綠燈切換到黃燈,LED6和LED5作為綠燈,倒計時3s
break;
case YELLOW: color = RED; LedBuff[6] = 0xFC; timer = 29;//黃燈切換到紅燈,LED3和LED2作為紅燈,倒計時30s
break;
case RED:    color = GREEN; LedBuff[6] = 0x3F; timer = 45;//紅燈切換到綠燈,LED9和LED8作為綠燈,倒計時46s
break;
default: break;
}
}
else
{
timer--;//倒計時
}

/*分解timer并存放到數碼管緩沖區*/
LedBuff[0] = LedTable[timer % 10];
LedBuff[1] = LedTable[timer / 10 % 10];
}

/*數碼管刷新*/
void LedCharRefresh()
{
   static unsigned char j = 0;//刷新索引

   P0 = 0xFF;//消隱
 
//   switch (j)
//   {
//   case 0: ADDR2 = 0; ADDR1 = 0; ADDR0 = 0;
// break; //LEDS0 = 0;點亮第一個數碼管
// case 1: ADDR2 = 0; ADDR1 = 0; ADDR0 = 1;
// break;
// case 2: ADDR2 = 0; ADDR1 = 1; ADDR0 = 0;
// break;
// case 3: ADDR2 = 0; ADDR1 = 1; ADDR0 = 1;
// break;
// case 4: ADDR2 = 1; ADDR1 = 0; ADDR0 = 0;
// break; //LEDS4 = 0;點亮第5個數碼管
// case 5: ADDR2 = 1; ADDR1 = 0; ADDR0 = 1;
// break; //LEDS5=0;點亮第6個數碼管
// case 6: ADDR2 = 1; ADDR1 = 1; ADDR0 = 0;
// break; //LEDS6=0;選中LED小燈
// default : break;
//   }
   P1 &= 0xF8;//清零P1口的低三位
   P1 |= j;//低三位控制三八譯碼器工作,同時刷新6個數碼管和LED小燈

   P0 = LedBuff[j++];
   if (j >= 7)
   j = 0; //j 0->6
}

/*定時器T0中斷服務*/
void Timer0_ISP() interrupt 1
{
static unsigned int counter = 0;//計數器

TH0 = thr0;
TL0 = tlr0;//重新裝入初值
counter++;
LedCharRefresh();//刷新數碼管和小燈

if (counter >= 1000) //1s
{
counter = 0;
flag1s = 1;
}
}

關閉窗口

相關文章

主站蜘蛛池模板: 亚洲天堂免费在线 | 国产精品夜间视频香蕉 | 婷婷五月色综合香五月 | www.日日夜夜| 啪啪免费 | 欧洲视频一区二区 | 中文字幕视频在线观看 | 成人福利视频 | 亚洲综合无码一区二区 | 四季久久免费一区二区三区四区 | 色婷婷亚洲 | 国产一区中文 | 97精品超碰一区二区三区 | 日日夜精品视频 | 欧美性另类 | 国产在线资源 | 久久成人免费 | 久久国产成人精品国产成人亚洲 | 欧美二区在线 | 久久婷婷av | 国产成人一区二区三区久久久 | 中文字幕精品一区二区三区精品 | 国产免费观看一级国产 | 亚洲天堂成人在线视频 | 中文字幕 在线观看 | 国产精品久久午夜夜伦鲁鲁 | 久久精品 | 免费v片| 国产亚洲精品久久久久久牛牛 | 国产做a爱片久久毛片 | 精品真实国产乱文在线 | 午夜亚洲| 91精品国产91久久久久福利 | 国产精品美女久久久久久免费 | 久久久久久亚洲欧洲 | 欧美福利专区 | 中文字幕 国产 | 九九热精品免费 | 久久久成| 中文字幕av亚洲精品一部二部 | 国产一区二区影院 |