单片机交通灯实训报告Word文档下载推荐.docx

上传人:b****6 文档编号:21598230 上传时间:2023-01-31 格式:DOCX 页数:20 大小:2.22MB
下载 相关 举报
单片机交通灯实训报告Word文档下载推荐.docx_第1页
第1页 / 共20页
单片机交通灯实训报告Word文档下载推荐.docx_第2页
第2页 / 共20页
单片机交通灯实训报告Word文档下载推荐.docx_第3页
第3页 / 共20页
单片机交通灯实训报告Word文档下载推荐.docx_第4页
第4页 / 共20页
单片机交通灯实训报告Word文档下载推荐.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

单片机交通灯实训报告Word文档下载推荐.docx

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

单片机交通灯实训报告Word文档下载推荐.docx

27秒(时间可设)

交通灯从状态1至4不断循环,通过外设按钮实现状态1和3的切换

2、东西黄灯南北红灯

101

3秒(黄灯闪烁)

3、东西红灯南北绿灯

17秒(时间可设)

4、东西红灯南北黄灯

表2-1:

交通灯的工作状态表

根据表2-1所示可将交通灯的工作状态设为以下几个步骤:

1、初始状态时即为东西方向绿灯通行27秒+3秒黄灯,此时南北红灯亮。

2、随后是南北方向绿灯通行17秒+3秒黄灯,此时东西红灯亮。

3、通过按模式选择键一次来切换东西南北交通灯的当前状态。

(通过设置定时计时器T1实现交通灯的计时)

4、通过按模式选择键第二次切换至南北方向红绿灯的计时设置,通过加减按键来确定南北方向红绿灯的计时数。

5、确定南北方向计数值后,通过按模式选择键第三次切换至东西方向红绿灯的计时设置,通过加减按键来确定东西方向红绿灯的计时数。

6、确定交通灯计时数后再按下模式选择键后,交通灯便进入工作状态。

时间计时的实现:

采用定时中断实现秒的精确计时(详细方案入下列程序设计所示)。

按键输入的实现:

通过编写按键读取函数,来实现交通灯的状态以及时间值得设定(详细方案入下列程序设计所示)。

图2-1程序设计流程框图

3、硬件电路设计

1、倒计时显示

该系统要求完成倒计时的功能。

因只需显示数字,基于上述原因,我完全采用数码管显示,四个路口分别采用一个二位共阴极数码管即可。

2、状态灯显示

该系统要求完成状态灯显示的功能。

采用红绿黄三种LED灯一个路口只需三个个状态灯,绿灯通行,红灯停止,黄灯闪烁。

3、输入方案

该系统要求能手动改变东西与南北的通行时间、红绿灯状态紧急交换处理。

运用单片机中四个IO口设置三个按键,三个按键的功能分别为:

增加、减少、状态切换和暂停。

4、复位电路与晶振电路

复位电路:

复位方式有多种,本设计采用按键复位。

接线图如图3-1所示,当按下复位按键时,RST端产生高电平,使单片机复位。

复位后,其片内各寄存器状态改变,片内RAM内容不变。

晶振电路(如图3-2所示):

结合单片机内部产生单片机所需的时钟频率。

图3-1程序仿真接线图图3-2程序仿真接线图

5、AT89S51的简介

AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,AT89S51在众多嵌入式控制应用系统中得到广泛应用。

图3-3程序仿真接线图

4、软件设计

根据设计要求得完整的交通灯程序源代码包含有:

1.定时2.数码管显示3.LED状态切换.4按键读取。

#include"

reg51.h"

#defineuintunsignedint

#defineucharunsignedchar

ucharcodenum[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

//数码管显示数组

ucharT0_Count=0,East_time=0,North_time=0;

//定时变量,东西倒计时变量,南北倒计时变量

sbitDXD_Red=P3^0;

//东西方向红灯

sbitDXD_Yellow=P3^1;

//东西方向黄灯

sbitDXD_Green=P3^2;

//东西方向绿灯

sbitNBD_Red=P3^3;

//南北方向红灯

sbitNBD_Yellow=P3^4;

//南北方向黄灯

sbitNBD_Green=P3^6;

//南北方向绿灯

sbitDXKZ_GE=P2^4;

//东西方向个位数码管公共端

sbitDXKZ_SHI=P2^5;

//东西方向十位数码管公共端

sbitNBKZ_GE=P2^6;

//南北方向个位数码管公共端

sbitNBKZ_SHI=P2^7;

//南北方向十位数码管公共端

sbitKey_Add=P1^1;

//增加按键

sbitKey_Dec=P1^2;

//减少按键

sbitKey_OK=P1^3;

//确定按键,兼具状态切换

sbitLE=P1^0;

voiddelayms(uinti)//毫秒级延时

{

uintx,y;

for(x=i;

x>

0;

x--)

for(y=110;

y>

y--);

}

voidt0_init()

TMOD=0X01;

//16位定时器0

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

//定时50ms

ET0=1;

//开启中断1

EA=1;

//开启总中断

TR0=1;

//开启定时器0

voidstate1()//东西绿灯亮,南北红灯亮

DXD_Red=1;

DXD_Yellow=1;

DXD_Green=0;

NBD_Red=0;

NBD_Yellow=1;

NBD_Green=1;

voidstate2()//东西黄灯闪烁

{DXD_Red=1;

DXD_Yellow=0;

DXD_Green=1;

voidstate3()//东西红灯亮,南北绿灯亮

DXD_Red=0;

NBD_Red=1;

NBD_Green=0;

voidstate4()//南北黄灯闪烁

NBD_Yellow=0;

voidDisplay(ucharnum1,num2)//功能:

数码管扫描显示函数

//参数:

num1,东西方向数码管显示值;

num2,南北方向数码管显示值

{

P0=num[num1%10];

//LE=1;

LE=0;

//写入个位数

DXKZ_GE=0;

delayms(10);

//开启一个数码管公共端,显示一段时间

DXKZ_GE=1;

//关闭公共端

P0=num[num1/10];

//写入十位数

DXKZ_SHI=0;

DXKZ_SHI=1;

P0=num[num2%10];

//写入个位数

NBKZ_GE=0;

NBKZ_GE=1;

P0=num[num2/10];

//写入十位数

NBKZ_SHI=0;

NBKZ_SHI=1;

ucharkey_read()//功能:

按键读取参数:

back,1,按下增加按键;

2,减少按键;

3确定键

ucharback=0;

if(P1!

=0xff)

{

delayms(10);

//按键延时消抖

if(Key_Add==0)

back=1;

elseif(Key_Dec==0)

back=2;

elseif(Key_OK==0)

back=3;

while(P1!

=0xff);

}

returnback;

voidClear_Display()//关闭所有数码管显示

P0=0x00;

voidmain()

ucharTab=1,key,East_TimeNum=30,North_TimeNum=20;

t0_init();

Clear_Display();

//开机初始化关闭所有数码管

//设置东西方向倒计时

while(key!

=3)//按下确定键,退出while

key=key_read();

//按键读取函数

if(key==1)//按下增加按键

East_TimeNum++;

elseif(key==2)//按下减少按键

if(East_TimeNum>

3)East_TimeNum--;

Display(East_TimeNum,0);

//数码管同步显示东西方向设定的值

key=0;

//设置南北方向倒计时

North_TimeNum++;

if(North_TimeNum>

3)North_TimeNum--;

Display(0,North_TimeNum);

//数码管同步显示南北方向设定的值

while

(1)

switch(Tab)

{

case1:

//红绿灯状态1

{

East_time=East_TimeNum;

//填充东西倒计时值,大小为已设置好的East_TimeNum

Tab=2;

//切换至下一红绿灯状态

state1();

while((East_time!

=3)&

&

(key!

=3))//倒计时至3秒或按下切换按键,退出while

{

Display(East_time,North_time);

//数码管显示

key=key_read();

//按键读取

}

if(key==3)

key=0;

East_time=0;

//东西倒计时立刻清零

Tab=3;

//按下切换按键,直接跳到状态3

break;

}

case2:

//红绿灯状态2

state2();

Tab=3;

//切换至下一红绿灯状态

=0)&

=3))//倒计时至0秒或按下切换按键,退出while

{

DXD_Yellow=~DXD_Yellow;

//按下切换按键,直接跳到状态3

East_time=0;

//东西倒计时立刻清零

case3:

//红绿灯状态3

North_time=North_TimeNum;

Tab=4;

//切换至下一红绿灯状态

state3();

while((North_time!

=3))

key=0;

Tab=1;

North_time=0;

case4:

//红绿灯状态4

state4();

//切换至下一红绿灯状态

NBD_Yellow=~NBD_Yellow;

}

}

}

voidTimer_0()interrupt1

T0_Count++;

//每50ms进入一次中断函数

if(T0_Count==20)//定时20*50ms=1S

T0_Count=0;

//清零重新计时

if(East_time==0)

East_time=0;

else

East_time--;

//东西方向按秒间隔倒计时

if(North_time==0)

North_time=0;

North_time--;

//南北方向按秒间隔倒计时

5、仿真过程与仿真结果

运用ISIS7Professional仿真软件进行程序仿真,按程序要求设置好程序仿真图(图3-1所示),把KeiluVision4生成交通灯程序的.hex文件捎入仿真图中,运行结果如下:

图5-1东西方向通行时间设置

通加减按键来控制东西方向通行时间,时间设置好后按下确定键切换至下一个状态。

图5-2南北方向通行时间设置

通加减按键来控制南北方向通行时间,时间设置好后按下确定键切换至下一个状态。

图5-3红绿灯正常工作状态

交通灯进入正常工作状态,按下确定键紧急切换红绿灯状态

图5-4红绿灯紧急切换

6、安装与调试

将所设计的程序写入keil4的工程中,编写好程序且检测无误后,点击编译(project/rebuildalltargetfiles)生成.Hex文件。

通过PZ-ISP软件(图6-1所示)将.hex文件下载到AT89C51单片机。

检测与调试交通灯运行状况。

由于电路板焊接问题,硬件功能无法实现,切换到开发板上进行功能测试。

图6-1PZ-ISP程序下载软件

操作1:

将hex文件捎入单片机后,交通灯便进入东西方向计时设定状态,通过按键的加减来改变东西通行时间(图6-2所示),设定好时间后按确定键,进入操作2。

图6-2程序的初始状况以及东西通行时间的调试

操作2:

交通灯进入南北方向计时设定状态后,通过按键的加减来改变南北通行时间(图6-3所示),设定好时间后按确定键,进入操作2。

图6-3状态切换至南北通行时间的调试

操作3:

交通灯各个方向计时设定好后进入工作状态,通过确定按键,来紧急切换红绿灯状态。

再次按下确定键,便进入操作1状态。

图6-4交通灯的工作状态以及红绿灯状态的紧急切换

经安装与调试后得,所设计的程序符合交通灯的设计要求。

硬件实物图

7、结论与心得

结论:

虽然所设计的交通灯符合本次实训的所有有要求,但还是有很多不足之处,要把我所设计的交通灯与实际中的交通灯相比还是有很多缺陷的,比如缺少各个方向左拐通行的指示功能,缺少人行横道的交通指示功能。

针对上述不足之处,在今后的学习中会不断的加以完善。

心得:

通过本次实训使我明白了,单片机实训跟单片机实验完全不同,自身的不足之处在这次实训中都一一暴露出来了,对于单片机的了解还是不够的,完全只停留在表面,对于单片机深层次的知识掌握的不够,无法很灵活的使用单片机的各个语句,这些不足之处在实训的操作下和老师的考察下都显露无疑。

在今后的学习中我定会加强对单片机的理论与实际操作的学习,对于自身不足之处定会加以改正。

八、参考文献

[1]阎石《数字电子技术基础(第三版)》,北京:

高等教育出版社,1989。

[2]苏家健,曹柏荣,汪志锋.《单片机原理及应用技术》.北京:

高等教育出社,

2004.

[3]《单片机原理及应用》张毅刚,高等教育出版社。

[4]《单片机实验教程》彭冬明、韦友春,北京理工大学出版社。

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

当前位置:首页 > 解决方案 > 学习计划

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

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