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

單片機控制交通燈c51程序

作者:佚名   來源:本站原創   點擊數:x  更新時間:2009年10月11日   【字體:

先上圖

/*
程序效果:單片機模擬控制交通燈程序,規則如下:當南北通車時,此時南北的綠燈亮,東西的紅燈亮,之后南北的綠燈閃爍3次,過后黃燈亮,延時片刻,轉東西綠燈亮同時南北紅燈亮,之后東西的綠燈閃爍3次,過后黃燈亮,延時片刻;數碼管顯示的值都同步,結束。全部代碼由http://www.112239.live站長開發(由于站長對交通燈的規則不是特別了解,產生于事實沖突,敬請包涵)
*/
#include<reg52.h> //頭文件
#define uchar unsigned char//宏定義
#define uint  unsigned int
uchar code table[]={0x00,0x01,0x02,0x03, //數碼管顯示的值
0x04,0x05,0x06,0x07,0x08,0x09,0x10,0x11,
0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,
0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,
0x28,0x29,0x30,0x31,0x32,0x33,0x34,0x35,
0x36,0x37,0x38,0x39,0x40,0x41,0x42,0x43,
0x44,0x45};
void delay(uint x)//延時子函數
{
   uint i,j;
   for(i=x;i>0;i--)
    for(j=500;j>0;j--);
}
void main()    //主函數
{
   uchar i;   //定義局部變量
   P1=table[0];  //數碼管顯示0
   delay(400);   //延時一會兒,在此之前所有數碼管全為0,
   while(1)    //所有的交通燈都亮
   {
      for(i=0;i<45;i++) //南北通車較多,故延時較多
      {
         P2=0x0a;  //南北綠燈亮,東西紅燈亮
         P1=table[i];
         delay(200);
      }
      for(i=0;i<3;i++) //南北綠燈閃爍3次,同時東西紅燈亮
      {
         P2=0x0a;
         delay(200);
         P2=0x02;
         delay(200);
      }
      P2=0x22; //南北黃燈亮,同時東西紅燈亮
      delay(600);  //延時片刻
      for(i=0;i<35;i++) //東西開始通車,由于車輛較少,故延時較少
      {
         P2=0x11;  //南北的紅燈亮 ,東西的綠燈亮
         P1=table[i];
         delay(200);
      }
      for(i=0;i<3;i++)  //東西的綠燈閃爍3次
      {
         P2=0x11;
         delay(200);
         P2=0x10;
         delay(200);
      }
      P2=0x14; //東西的黃燈亮
      delay(600); //延時片刻
   }
}

 

發表評論】【告訴好友】【收藏此文】【關閉窗口

文章評論

专注江西快三走势分析 多乐棋牌游戏? 德甲排名积分榜2018 浙江6+1奖池多少 网上棋牌平台排行 热刺在英超的排名 排列五开奖结果 三分彩开奖不一样 深圳证券交易所股票 辉煌棋牌下载地址 怎样在开盘前买入股