標(biāo)題: 求一份十字路口交通燈控制代碼 [打印本頁]
作者: ghf 時間: 2018-6-23 12:05
標(biāo)題: 求一份十字路口交通燈控制代碼
一、簡述
本項目為典型的LED顯示和中斷定時電路。利用定時器T0產(chǎn)生每10ms一次的中斷,每100次中斷為1s。對兩個方向分別顯示紅、綠、黃燈,已經(jīng)相應(yīng)的剩余時間即可。值得注意的是,需要意識到,A方向紅燈時間=B方向綠燈時間+黃燈緩沖時間這一常識。本項目使用的MAX7219芯片使用方法請參考題目3。
二、設(shè)計任務(wù)和要求
設(shè)計一個十字路口交通燈控制器。用單片機控制LED燈模擬指示。模擬東西方向的十字路口交通信號控制情況。東西向通行時間為80s,南北向通行時間為60s,緩沖時間為3s。
d.jpg (157.44 KB, 下載次數(shù): 17)
下載附件
2018-6-23 12:01 上傳
求代碼,急用,謝謝各位大佬!!!!
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit RED_A=P0^0; //????
sbit YELLOW_A=P0^1;
sbit GREEN_A=P0^2;
sbit RED_B=P1^0; //????
sbit YELLOW_B=P1^1;
sbit GREEN_B=P1^2;
sbit DIN=P3^0;
sbit LOAD=P3^1;
sbit CLK=P3^2;
uchar Flash_Count=0,Operation_Type=1,Time_Count=0,hh=1,i=80,mm=1,tt=9;
void DelayMS(uint x)
{
uchar i;
while(x--) for(i=0;i<120;i++);
}
void Traffic_Light()
{
switch(Operation_Type)
{
case 1:
RED_A=1;YELLOW_A=1;GREEN_A=0;
RED_B=0;YELLOW_B=1;GREEN_B=1;
DelayMS(2000);
Operation_Type=2;
break;
case 2:
DelayMS(300);
YELLOW_A=~YELLOW_A;GREEN_A=1;
if(++Flash_Count!=10) return;
Flash_Count=0;
Operation_Type=3;
break;
case 3:
RED_A=0;YELLOW_A=1;GREEN_A=1;
RED_B=1;YELLOW_B=1;GREEN_B=0;
DelayMS(2000);
Operation_Type=4;
break;
case 4:
DelayMS(300);
YELLOW_B=~YELLOW_B;GREEN_B=1;
if(++Flash_Count!=10) return;
Flash_Count=0;
Operation_Type=1;
}
}
void Write(uchar Addr,uchar Dat)
{
uchar i;
LOAD=0;
for(i=0;i<8;i++)
{
CLK=0;Addr<<=1;DIN=CY;
CLK=1;_nop_();
CLK=0;
}
for(i=0;i<8;i++)
{
CLK=0;Dat<<=1;DIN=CY;
CLK=1;_nop_();
CLK=0;
}
LOAD=1;
}
void Initialise()
{
Write(0x09,0x3f);
Write(0x0a,0x07);
Write(0x0b,0x01);
Write(0x0c,0x01);
}
void main()
{
Initialise();
TMOD=0x01; //定時器0工作在方式1
EA=1;
ET0=1;
TR0=1;
while(1)
{
Traffic_Light();
}
}
void T0_INT()interrupt 1
{
TH0=-50000/256;
TL0=-50000%256;
if(tt--==0)
{
tt=9;
if(hh--==0)
{
hh=1;
Write(1,i/0x0a);
Write(2,i%0x0a);
if(i--==0)
{
if(mm==0)
{
mm=1;
i=80;
}
else
{
mm=0;
i=60;
}
}
}
}
}
這是我寫的代碼,但是數(shù)碼管不會動,不知道是什么原因,求教!!!!
作者: ghf 時間: 2018-6-23 12:07
求一份可以運行的完整代碼,急用,謝謝各位大佬!!!
作者: 小貓貓愛吃魚 時間: 2018-6-23 17:04
你好!你的代碼里面沒有 MAX7219 的驅(qū)動,所以不能顯示;
看我頭像,協(xié)助完成設(shè)計。。。
作者: euxfcnmoi 時間: 2018-7-3 17:53
樓主可以把你的這一套設(shè)計發(fā)一遍嗎
作者: mikasaaa 時間: 2019-12-19 20:11
樓主寫出來了嗎,可以把正確的發(fā)一遍嗎
| 歡迎光臨 (http://www.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |