单片机交通灯实验报告文档格式.docx

上传人:b****0 文档编号:13270486 上传时间:2022-10-09 格式:DOCX 页数:11 大小:382.30KB
下载 相关 举报
单片机交通灯实验报告文档格式.docx_第1页
第1页 / 共11页
单片机交通灯实验报告文档格式.docx_第2页
第2页 / 共11页
单片机交通灯实验报告文档格式.docx_第3页
第3页 / 共11页
单片机交通灯实验报告文档格式.docx_第4页
第4页 / 共11页
单片机交通灯实验报告文档格式.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

单片机交通灯实验报告文档格式.docx

《单片机交通灯实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《单片机交通灯实验报告文档格式.docx(11页珍藏版)》请在冰豆网上搜索。

单片机交通灯实验报告文档格式.docx

聲蠶翠一一防

^h4-8J4-

RF3g

ranzP3.VT>

1cazomj»

3ywn

runwrcjaAO:

mviuafqwjhrvjr*j»

fVMXMmv/A&

i

(2)用Keil软件编写程序调试;

代”

 

交通灯程序:

/*******************"

(弋码说明************程序实现简单的十字交通路口指示灯功能。

按键act是功能选择键,按第一下后,再按add键实现倒计时增加,最后一次增加的值作为倒计•时数的值,

act按第二下后,再按Jdd键实现交通灯方向变换,act按第三下倒计时继续。

*/

#includeHreg51.hM

#defineucharunsignedchar

#defineuintunsignedint

#defineAA15

#defineBB20〃设初值

ucharcodetable[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7(1,0x07,

//aad键

//act键

〃南北方向的红灯

0x7f,0x6f};

sbitadd二PIT;

sbitact=PlA0:

sbitnred=PlA2;

sbitnyellow=PlA3;

sbitngreen=PlA4;

sbitered=PlA5;

〃东西方向的红灯

sbiteyellow=PlA6;

sbitegreen=PlA7;

sbitjian=P3A2;

uchartime,num=O,nn=O,aa=1,flag2=0;

bitflag=O,flagl=O;

uintnumber,temp1,temp2,sum2=BB,sum1=AA;

voiddelay(uintz)〃延时函数

{

uintx,y;

for(x=z;

x>

0;

x—)for(y=l10;

y>

y—);

}

voidinit()〃初始化函数

templ=AA;

temp2=BB;

TMODI=Ox21;

//设置定时器1为工作方式2

THO=(65536-5OOOO)/256;

TL0=(65536-50000)%256;

TRO=1;

EA=1;

ETO=1;

SCON=0x50;

TH1=OxFD;

TL1=TH1;

PCON=0x00;

//ES=1;

TRI=1;

voiddisplay(ucharnum)

〃数码管现实函数

ucharshi.ge;

ge=num%10;

shi=nuni/10;

PO=table[shi];

P2=table[ge];

}voidmain()

while(act&

&

(aa=l))//开始键

P0=0;

P2=0;

if(act==O)

delay(lO);

aa=0;

while(!

act);

init();

if(flagl=O)

display(templ);

else

display(temp2);

while(l)

/*功能键*/

if(act==O)〃判断act键是否按下

if(act==O)

TR0=0:

nuni++;

if(num==4)〃重新启动定时器

num=0;

nn=O;

delay(5);

/*增加键或选择南北方向的键*/

if(add==O)〃判断add是否按下

if(add==O)

if(num==l)〃增加数值

nn=l;

templ++:

suml=tenipl;

if(templ==100)

temp1=0;

if(num==2)〃增加数值

tenip2++;

sum2=temp2;

if(temp2==100)

tenip2=0;

if(num==3)〃改变交通灯方向

flag1=0;

flag=0;

add);

/*减少键或选择东西方向键*/

if(jian==0)〃判断add是否按下

if(jian==O)

tempi—;

sumlnempl;

if(templ==-l)

temp1=100;

)display(templ);

temp2—;

suni2=temp2;

if(temp2==-1)

tenip2=100:

}display(temp2);

flag=l;

flag1=1;

jian);

if(flag==0)〃交通灯

[

ered=1;

ngreen=1;

nred=0;

egreen=0;

while((temp1>

=0&

temp1v5&

nn==0)ll(temp2>

tenip2<

5&

nn

=0))

//egreen=1;

eyellovv=0;

delay(500);

eyellow=l;

if(flag==l)

nred=l;

egreen=l;

ered=0;

ngreen=0;

nn==0)ll(tenip2>

temp2<

5&

nn==0))

//ngreen=l;

nyellow=0;

nyellow=l;

voidtimer0()interrupt1〃定时器0

time++;

time=O;

if(templ==-l)

templ=suml;

flag=~flag;

flag1二〜flag1;

if(flag!

=l)display(templ);

temp2=sum2;

flag=-flag;

flag1二〜flag1;

=O)

elsedisplay(templ);

if(flag2==l)//templ=number;

//suml=templ;

//flag1=0;

if(flag2==2)

//

tenip2=number;

flagl=l;

1

voidUARTInternipt(void)interrupt4{

if(RI)

RI=0;

flag2++;

if(flag2==3)

flag2=0;

number=SBUF;

TI=0;

/*voidSendOneByte(unsignedcharc)

SBUF=c;

TI);

}*/

(3)调试成功后结合实物调试。

六、实验结果及分析

按下第一个键,数码管和交通等开始亮,数码管开始倒计时显示,按下第一个键第一次调整第一个数,按下第二次调整第二个数,按下第三次,调整交通灯的显示状态,按下第四次重新开始倒汁时。

七、实验体会

这次实验主要用了定时器0中断来控制倒汁时的时间,运用查询法控制三个按键,P0口控制十位,P2口控制个位。

这次的实验是很难忘的经历,本次实验对单片机编程能力要求比较高,而且我们编的程序太麻烦了,太长了,没有注意编程的技巧,在以后的学习中要注意编程能力的训练。

通过此次实验,锻炼了我们的动手能力,理论联系实际,对于提高水平很有帮助。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1