<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 單片機實(shí)驗--交通燈

單片機實(shí)驗--交通燈

作者: 時(shí)間:2016-11-22 來(lái)源:網(wǎng)絡(luò ) 收藏
一、實(shí)驗目的

1、進(jìn)一步熟悉HNIST-2型單片機系統

本文引用地址:http://dyxdggzs.com/article/201611/319587.htm

相關(guān)硬件電路;

2、掌握單片機中斷的應用和中斷處理程序的編寫(xiě)方法;

3、掌握單片機內部定時(shí)/計數器的使用及編程方法

。

二、實(shí)驗前準備

1、完成作業(yè)4

2、根據實(shí)驗內容編寫(xiě)好相關(guān)程序,并進(jìn)行Proteus仿真。

三、實(shí)驗內容

實(shí)驗內容為3項,其中第1、2項必做。

1、基本交通燈。

根據圖3.2電路,用單片機的IO口控制4組紅綠黃共12個(gè)發(fā)光二極管,使發(fā)光二極管按照一定規則與次序發(fā)光與閃亮以實(shí)現模擬交通燈的功能。假設初始狀態(tài)為:(南北通行狀態(tài))南北綠燈、東西紅燈(25s);后轉為過(guò)度狀態(tài):南北黃燈、東西紅燈(5s);再轉為東西通行狀態(tài):東西綠燈、南北紅燈25(s)。再轉為過(guò)渡狀態(tài):東西黃燈、南北紅燈(5s),然后循環(huán)往復。

要求采用定時(shí)器實(shí)現所需要的定時(shí)時(shí)間。

2、鍵控交通燈。

按一下K1鍵

,保持南北通行狀態(tài);按一下K2鍵

,保持東西通行狀態(tài);按一下K3鍵

,保持正常交通燈。

要求在中斷中進(jìn)行按鍵處理。

3、具有閃爍的交通燈。

在2的基礎上增加,綠燈最后5s閃爍,即亮0.5S滅0.5S閃爍。

四、實(shí)驗原理圖

圖3.2交通燈實(shí)驗電路原理

圖3.2共有4個(gè)按鍵K1、K2、K3、K4,分別連接到單片機P2.0、P2.1、P2.2、P2.3引腳,按鍵后對應引腳為低電平,通過(guò)4個(gè)二極管D17、D18、D19、D20連接到P3.2(外部中斷0),這是二極管構成的相與電路,即任意按一個(gè)鍵能在P3.2上產(chǎn)生一個(gè)低電平或下降,作為中斷觸發(fā)信號。

五、軟件設計思想

1、定時(shí)思想。

采用定時(shí)器T0或T1的方式1定時(shí)500ms,每500ms中斷進(jìn)行計數,計數10次即0.5s,計數20次即1s,對秒計數實(shí)現所需要的定時(shí)時(shí)間。

2、亮燈控制思想。

單片機控制燈引腳與燈對應如下,0點(diǎn)亮。

一共有四種狀態(tài)S0、S1、S2、S3,

a、南北通行S0狀態(tài):

南北綠燈、東西紅燈,P0=11110111=0xf7,P1=10011110=0x9e;

南北通行S0

b、過(guò)渡狀態(tài)S1:

南北黃燈、東西紅燈,P0=11111011=0xfb,P1=10101110=0xae;?

過(guò)渡狀態(tài)S1?

c、東西通行狀態(tài)S2:

東西綠燈、南北紅燈,P0=11111100=0xfc,P1=11110011=0xf3;?

東西通行狀態(tài)S2?

d、過(guò)渡狀態(tài)S3:

東西黃燈、南北紅燈,P0=11111101=0xfd,P1=01110101=0x75;

過(guò)渡狀態(tài)S3?

設置一個(gè)秒計數單元SEC每秒+1,設置兩個(gè)控制值變量a,b。

首先令SEC=0,a=0xfd,b=0x75,處于S0狀態(tài);

SEC==25,a=0xfc,b=0xf3,處于S1狀態(tài);

SEC==30,a=0xfb,b=0xae,處于S2狀態(tài);

SEC==55,a=0xf7,b=0x9e,處于S3狀態(tài);

SEC==60,SEC=0,a=0xfd,b=0x75,處于S0狀態(tài);

P0=a,P1=b。

3、交通燈鍵控

按鍵后即進(jìn)入外部中斷0,在外部中斷0中斷程序中判斷:若是按K1鍵,控制南北通行狀態(tài),并將定時(shí)器T0關(guān)閉,即可保持南北通行狀態(tài);若是按K2鍵,控制東西通行狀態(tài),并將定時(shí)器T0中斷關(guān)閉,即可保持東西通行狀態(tài);若是按K3鍵,開(kāi)啟定時(shí)器T0中斷,恢復正常交通燈。

4、閃爍控制?

在需要閃爍時(shí),0.5s按正常顯示,0.5s全滅,即是閃爍效果。實(shí)現方法是:當=0.5s的時(shí)刻,并且在南北通行的最后5s(19或在東西通行的最后5s(49,滅綠燈:P0=0xf9,P1==0x24,當=1s的時(shí)刻,按正常顯示。

六、實(shí)驗源代碼

#include//基本的交通燈程序

#defineuintunsignedint

uintflag=20;//定義計時(shí)器標志

uintsecond=0;//定義秒標志

voidmain()

{

TMOD=0x01;//選擇T0計時(shí)器的工作方式1

TH0=(65536-50000)/256;//給TH0裝初始值為50000us

TL0=(65536-50000)%6;//給TH1裝初始值

TR0=1;//SCON中T0計時(shí)器打開(kāi)

ET0=1;//打開(kāi)定時(shí)計數器T0中斷

EA=1;//打開(kāi)總中斷

P2=0xf7;//交通燈賦初始狀態(tài)

P3=0x9e;

while(1)//等待時(shí)間,做出反應

{

if(second==25)

{P2=0xf7;P3=0x9e;}

if(second==30)

{P2=0xfb;P3=0xae;}

if(second==55)

{P2=0xfc;P3=0xf3;}

if(second==60)

{P2=0xfd;P3=0x75;}

if(second>60)second=second`;

}

}

voidT0_int(void)interrupt1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%6;

flag--;

if(flag==0)

{

second++;//秒標志加1

flag=20;//重置計時(shí)器標志

}

}

#include//基本的交通燈程序

#defineuintunsignedint

sbitk1=P2^0;

sbitk2=P2^1;

sbitk3=P2^2;

uintflag=5;//定義計時(shí)器標志

uintsecond=0;//定義秒標志

uintkey;//判斷按鍵是否按下的標志

voidmain()

{

TMOD=0x01;//選擇T0計時(shí)器的工作方式1

TH0=(65536-5000)/256;//給TH0裝初始值為50000us

TL0=(65536-5000)%6;//給TH1裝初始值

TR0=1;//SCON中T0計時(shí)器打開(kāi)

ET0=1;//打開(kāi)定時(shí)計數器T0中斷

EX0=1;//開(kāi)外部中斷0

IT0=1;//外部中斷0觸發(fā)方式為跳變沿觸發(fā)

PX0=1;//設置外部中斷0優(yōu)先級為1

EA=1;//開(kāi)總中斷

P1=0xf7;//交通燈賦初始狀態(tài)

P3=0x9e;

while(1)//等待時(shí)間,做出反應

{

if(second==10)

{P1=0xf7;P3=0x9e;}

if(second==20)

{P1=0xfb;P3=0xae;}

if(second==30)

{P1=0xfc;P3=0xf3;}

if(second==40)

{P1=0xfd;P3=0x75;}

if(second>40)second=second`;

if(key==1){TR0=0;P1=0xf7;P3=0x9e;}//如果k1按下,南北通行

if(key==2){TR0=0;P1=0xfc;P3=0xf3;}//如果k2按下,東西通行

if(key==3)//如果k3按下,普通交通燈

{

TR0=1;

TH0=(65536-5000)/256;

TL0=(65536-5000)%6;

}

}

}

voidT0_int(void)interrupt1//定時(shí)計數器的中斷子程序

{

TH0=(65536-5000)/256;

TL0=(65536-5000)%6;

flag--;

if(flag==0)

{

second++;//秒標志加1

flag=5;//重置計時(shí)器標志

}

}

voidX0_int(void)interrupt0//外部中斷0的中斷子程序

{

if(k1==0)key=1;//根據各按鍵情況設置按鍵標志

if(k2==0)key=2;

if(k3==0)key=3;

}



關(guān)鍵詞: 單片機實(shí)驗交通

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>