找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2780|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

交通燈程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:103092 發(fā)表于 2016-1-13 18:22 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
#define _MAIN_C
#include "use.h"
#include "main.h"
#include "time.h"
#include "key.h"
bit flag1s;
uchar count1s,NS_time,WE_time;
uchar GreenTime=30,RedTime=35;
uchar index=0;
enum eStaSysterm StaSysterm=NormalRun;

void main()
{
        EA=1;                                                                  //開總中斷
        InintTimer0();                                                  //初始化定時(shí)器0
        while(1)
        {       
                LEDScan();                                                  //數(shù)碼管即LED掃描
                KeyDriver();                                          //鍵盤驅(qū)動掃描
                if(flag1s)
                {
                        flag1s=0;
                        NS_time--;                                          //紅綠燈倒計(jì)時(shí)時(shí)間減
                        WE_time--;
                }       
        }
}
void InintTimer0()
{
        TMOD=0X01;
        TH0=0X4C;
        TL0=0X00;
        ET0=1;
        TR0=1;
}
void Timer0() interrupt 1
{
        TH0=0XBB;
        TL0=0X00;
        KeyScan();
        if(++count1s<50)        return;
        count1s=0;
        if(StaSysterm==NormalRun) flag1s=1;         //非正常運(yùn)行時(shí),不紅綠燈數(shù)值不減一       
}
void LEDScan()
{
         if(StaSysterm==NormalRun)                         //正常運(yùn)行
         {
                if(NS_time==0 || WE_time==0)
                {
                        switch(index)                                 //改變紅綠燈的狀態(tài),狀態(tài)機(jī)
                        {
                                case 0:
                                {
                                        index=1;
                                        NS_time=GreenTime;
                                        WE_time=RedTime;
                                        P2=0X09;       
                                }break;
                                case 1:
                                {
                                        index=2;
                                        NS_time=RedTime-GreenTime;
                                        P2=0X0A;       
                                }break;
                                case 2:
                                {
                                        index=3;
                                        NS_time=RedTime;
                                        WE_time=GreenTime;
                                        P2=0X24;       
                                }break;
                                case 3:
                                {
                                        index=0;
                                        WE_time=RedTime-GreenTime;
                                        P2=0X14;       
                                }break;
                                default:break;
                        }
                }
                Seg_Display(NS_time/10,0);
                Seg_Display(NS_time%10,1);
                Seg_Display(WE_time/10,2);
                Seg_Display(WE_time%10,3);
        }
        else if(StaSysterm==UrgentRun)
        {                                                                   //緊急情況運(yùn)行
                P2=0x12;
                Delayms(200);
                P2=0x00;
                Delayms(200);
        }
        else                                                           //設(shè)置調(diào)整紅綠燈時(shí)間
        {
                index=0;
                NS_time=0;
                WE_time=0;         //重新初始化紅綠燈并運(yùn)行
                UrgentScan();
        }
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2016-1-13 19:09 | 只看該作者
謝謝分享 樓主 頭文件呢?最好傳個壓縮包
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表