单片机交通灯课设报告Word格式文档下载.docx

上传人:b****5 文档编号:8466788 上传时间:2023-05-11 格式:DOCX 页数:27 大小:412.35KB
下载 相关 举报
单片机交通灯课设报告Word格式文档下载.docx_第1页
第1页 / 共27页
单片机交通灯课设报告Word格式文档下载.docx_第2页
第2页 / 共27页
单片机交通灯课设报告Word格式文档下载.docx_第3页
第3页 / 共27页
单片机交通灯课设报告Word格式文档下载.docx_第4页
第4页 / 共27页
单片机交通灯课设报告Word格式文档下载.docx_第5页
第5页 / 共27页
单片机交通灯课设报告Word格式文档下载.docx_第6页
第6页 / 共27页
单片机交通灯课设报告Word格式文档下载.docx_第7页
第7页 / 共27页
单片机交通灯课设报告Word格式文档下载.docx_第8页
第8页 / 共27页
单片机交通灯课设报告Word格式文档下载.docx_第9页
第9页 / 共27页
单片机交通灯课设报告Word格式文档下载.docx_第10页
第10页 / 共27页
单片机交通灯课设报告Word格式文档下载.docx_第11页
第11页 / 共27页
单片机交通灯课设报告Word格式文档下载.docx_第12页
第12页 / 共27页
单片机交通灯课设报告Word格式文档下载.docx_第13页
第13页 / 共27页
单片机交通灯课设报告Word格式文档下载.docx_第14页
第14页 / 共27页
单片机交通灯课设报告Word格式文档下载.docx_第15页
第15页 / 共27页
单片机交通灯课设报告Word格式文档下载.docx_第16页
第16页 / 共27页
单片机交通灯课设报告Word格式文档下载.docx_第17页
第17页 / 共27页
单片机交通灯课设报告Word格式文档下载.docx_第18页
第18页 / 共27页
单片机交通灯课设报告Word格式文档下载.docx_第19页
第19页 / 共27页
单片机交通灯课设报告Word格式文档下载.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片机交通灯课设报告Word格式文档下载.docx

《单片机交通灯课设报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机交通灯课设报告Word格式文档下载.docx(27页珍藏版)》请在冰点文库上搜索。

单片机交通灯课设报告Word格式文档下载.docx

左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。

红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。

黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。

1.2系统设计的意义与目的

(1)加强对单片机和C51语言的认识,充分掌握和理解设计各部分的工作原理、设计过程、选择芯片器件、模块化编程等多项知识。

 

(2)用单片机模拟实现具体应用,使个人设计能够真正使用。

(3)把理论知识与实践相结合,充分发挥个人能力,并在实践中锻炼。

(4)提高利用已学知识分析和解决问题的能力。

(5)提高实践动手能力。

1.3系统设计的基本要求和内容

任务:

设计一个交通信号灯的模拟控制系统

设计内容与要求:

(1)用8个发光二极管模拟一个十字交叉路口的红、绿灯,并设置两个紧急放行按键。

(2)正常行驶时,东西或南北方向的灯按绿灯亮10秒,绿灯闪烁3秒,红灯亮12秒控制。

(3)当东西或南北方向的紧急放行按键按下时,如果禁行方向为红灯,则红灯继续维持12秒;

如果禁行方向为绿灯,则立即变为绿灯闪烁3秒;

如果禁行方向为绿灯闪烁,则闪烁继续维持。

(备注:

本系统采用8*8点阵来模拟十字路口,点阵只有红黄两种颜色,红点亮表示红灯亮,黄点亮表示绿灯亮,红点闪烁表示绿灯闪烁,这里我们看成黄灯闪烁)

二、工作原理

2.1系统框图

2.1.1LED数码管显示模块(模拟图)

2.1.2点阵模拟十字路口红绿灯显示模块(模拟图)

2.2程序原理

1、首先了解实际交通灯的变化情况和规律。

假设一个十字路口如上图所示,为东南西北走向。

初始状态1:

为东西绿灯亮,南北红灯亮;

然后转状态2:

东西黄灯闪烁,南北红灯亮;

过后转状态3:

东西红灯亮,南北绿灯亮;

再转状态4:

东西红灯亮,南北黄灯闪烁。

一段时间后,又循环至状态0。

中间可通过中断按钮产生中断,跳入中断程序执行中断,实现南北紧急通行或实现东西紧急通行。

2、对于交通信号灯来说,应该有东西南北共四组灯,同一道上的两组的信号灯的显示情况是相同的,采用单片机的点阵模块即可来控制共12个信号灯。

3、通过编写程序,实现对发光点阵的控制,来模拟交通信号灯的管理。

每延时一段时间,发光点阵的显示情况都会按交通灯的显示规律进行状态转换。

4、通过延时时间送显,可以在原有的交通信号灯系统的基础上,用LED数码管增添其倒计时间的显示功能,实现其功能的扩展。

5、通过脉冲中断编写中断程序,可实现中断。

2.3选题方案论证

2.3.1供电方式

连接单片机控制芯片板和笔记本设备的USB接口,使用笔记本的电源,打开芯片板总开关正常通电。

本方案的优点是系统简明扼要,节约成本;

缺点是输出功率不高,笔记本要保持在通电的状态。

2.3.2显示方案

采用LED数码管与有色发光点阵相结合的方法因为程序设计既要求倒计时数字显示输出,又要求有状态灯的亮灭等,为方便观看并考虑到现实情况,用LED数码管与有色发光点阵分别显示时间与交通灯的亮灭情况。

三、硬件设计

3.1单片机

3.1.1单片机的概述

单片微型计算机简称单片机,是典型的嵌入式微控制器(MicrocontrollerUnit),常用英文字母的缩写MCU表示单片机,单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。

单片机由运算器、控制器、存储器、输入输出设备构成,相当于一个微型的计算机(最小系统),和计算机相比,单片机缺少了外围设备等。

概括的讲:

一块芯片就成了一台计算机。

它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。

同时,学习使用单片机是了解计算机原理与结构的最佳选择。

3.1.2单片机的特点

1.特点:

(1)体积小巧,携带方便 

USB接口通讯及供电,USB供电系统,直接插接到电脑USB口即可提供电源,不需另接直流电源,通讯速度快,无须外接电源 

(2)有电源和烧写状态指示灯,可直观了解编程器当前状态 

(3)只需要USB供电,无需使用外部电源。

周密的自保护方式,有效保证不损毁用户器件或编程器本身。

2.主要部件 

(1)8位数码管

可做数码管的静态扫描以及动态扫描显示实验. 

如:

0-999计数器实验,18B20温度检测实验,遥控解码实验等都可以用数码管显示。

(2)8位LED发光二极管

可做跑马灯实验。

(3)一路继电器控制

通过继电器可以控制其他电器设备的工作低压控制高压等实验,不过为了安全建议不要控制电压超过30V的设备。

(4)蜂鸣器

可做单片机发声实验 

播放音乐实验 

报警实验等声响实验。

(5)集成一体化红外接收头

方便学习红外遥控接收,解码实验。

(6)字符液晶1602LCD接口,采用接插件方式方便插拔

可显示两行,每行16个,共计32任意 

ASCII码字符,它的功能应用比数码管丰富很多显示的信息量更大 

(7)点阵,采用接插件方式方便插拔

可显示任意汉字和图形。

3.2芯片介绍

本设计选用了市面上较为常见的STC90C51单片机,STC90C51是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。

使用高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。

片上Flash允许程序存储器在系统可编程,亦适于常规编程器。

在单芯片上,拥有灵巧的8位CPU和在线系统可编程Flash,使得STC90C51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

3.2.1STC90C51芯片特性

主要性能:

(1)与MCS-51单片机产品兼容 

、8K字节在系统可编程Flash存储器、 

1000次擦写周期、全静态操作:

0Hz~33Hz 

、三级加密程序存储器 

、 

32个可编程I/O口线、三个16位定时器/计数器、两个外部中断源、全双工UART串行通道、 

低功耗空闲和掉电模式 

、掉电后中断可唤醒 

、看门狗定时器 

、双数据指针、掉电标识符 

(2) 

STC90C51是一种低功耗、高性能CMOS8位微控制器,具有 

8K 

在系统可编程Flash 

存储器。

使用高密度非易失性存储器技术制造,与工业80C51 

产品指令和引脚完全兼容。

在单芯片上,拥有灵巧的8 

位CPU 

3.2.2交通灯的状态显示

简单的十字路口交通灯基本拥有四个状态,依次循环显示这些状态,构成基本的交通灯控制系统。

(正常行驶时,东西或南北方向的灯按绿灯亮10秒,黄灯闪烁3秒,红灯亮13秒控制)。

交通灯基本状态表

状态1

状态2

状态3

状态4

南北向红灯时长10s

东西向绿灯时长10s

南北向红灯时长3s

东西向黄灯时长3s

南北向绿灯时长10s

东西向红灯时长10s

南北向黄灯时长3s

东西向红灯时长3s

四、软件设计

4.1程序设计语言

在本次设计中,采用了C语言作为程序编程的语言。

4.2程序设计软件

4.2.1编程软件

程序设计选择了KeilμVision3.0编程环境的软件。

这款软件支持众多不同公司的MCS51架构芯片,它集编辑、编译、仿真为一体,同时还支持PLM、汇编和C语言的程序设计,界面友好、简单易学,在调试程序。

软件仿真方面都有很强大的功能。

在初期的软件调试阶段,KeilμVision会提供非常便利的环境。

4.2.2烧录软件

程序设计还使用了单片机烧录软件STC_ISP_V483.exe软件。

由于STC90系列的单片机具有系统可编程特性(ISP),省去购买通用编程器。

把程序烧录进芯片,无须将单片机从已生产好的拆下,通过编程器将程序代码烧录单片机内部。

直接下载到单片机中显示程序结果,若现实结果与预期不一致,再返回Keil软件修改程序,再次进行调试显示结果。

有些程序尚未定型的产品可以一边生产,一边完善,加快了产品进入市场的速度,减小先产品由于软件缺陷带来的风险。

4.3程序设计

4.3.1主要函数

/*------------------------------------------------

主函数

------------------------------------------------*/

main()

{

用于循环显示交通灯四种状态

}

定时器0中断函数

voidtim(void)interrupt

用于每种交通灯状态计时

}

外部中断0函数

voidISR_Key(void)interrupt0

{

用于南北紧急放行

INT0:

通过中断接口P3.2连接的独立按键,使用电平触发

外部中断1函数

voidISR_INT1(void)interrupt1

用于东西紧急放行

INT1:

通过中断接口P3.3连接的独立按键,使用电平触发,启用按键去抖,适合实际按键

4.4程序流程图

不按紧急通行按钮时:

外部中断0程序(南北紧急放行):

外部中断1程序(东西紧急放行):

五、调试测试

5.1调试 

1、接硬件图接线,为了确保东西南北红黄绿灯能够对应显示,实验时,P1口连接至LED用于显示红绿灯,P0口接数码管,数码管显示时间,P3.0接段码B,P3.1接位码A,P3.2接按键K1,P3.3接按键K2,P2接点阵接口J4和J5从J4对齐。

2、开始运行,观察8*8点阵上对应的点是否与交通显示情况对应,如果有偏差,则单步运行或断点运行,进行调试,直至满足设计要求。

3、调试完灯的显示后,观察数码管显示的是否正常,如果不正常,则运用单步运行或断点运行进行分析和调试,直至满足要求。

4、整体运行,观察灯显示和时间显示是否都符合要求,如果不符合,则再调试。

直至满足要求。

5.2测试过程

5.2.1通电测试

编写程序之前检测硬件电路板是否有短路或设备连接不稳固等隐患。

通电后打开电路板开关,LED数码管显示13的字样。

我的程序设计中仅用到了数码管和发光点阵,通过烧录软件将磁盘中的LED循环左移程序烧录芯片中运行,结果显示LED发光二极管电路连接良好,未发生短路状况。

5.2.2基本测试

编写好的程序通过KeilμVision3.0编译生成.hex文件,再用烧录软件将.hex文件烧录到芯片中,通电后程序运行:

初始状态1为南北红灯亮,东西绿灯亮,双位数码管显示倒计时为13。

状态2南北红灯亮,东西黄灯闪烁,数码管显示为3。

状态3南北绿灯亮,东西红灯亮,数码管显示10。

状态4南北黄灯闪烁,东西红灯亮,数码管显示为3。

程序依次循环显示这四个状态。

5.2.3复位测试

程序运行时,若在状态2、3、4显示的途中,按复位键,程序立刻回转初始状态运行。

反复测试成功。

六、结论

6.1特点

系统采用了STC90C51芯片的硬件设计,简便、实用性强、操作简单、程序设计简便;

同时采用了C语言作为程序编程的语言,可读性和可移植性高于汇编语言。

该系统设计有一定的新颖性,采用STC90C51芯片点阵来显示东西南北向的红绿灯;

两位LED数码管动态显示倒计时,显示南北向的倒计时。

普通交通灯模拟系统仅用一直排的LED灯来显示东西南北的红绿灯,不够直观和美观,

6.2存在的问题

程序设计过程中东西南北时间为固定值,若考虑到车流高峰时,固定设置的红绿灯时间可能会造成交通更加堵塞,易发生交通事故。

程序过于简单,只能适用于一些车流简单的小路段使用。

6.3需要改进的地方

在各个方向加上一个指示转弯的指示灯。

再通过程序实现对定时的改变,便可使此交通灯系统实现全方位的指示。

参考文献

[1]张友德 涂时亮 赵志英:

单片微型机原理、应用于实验上海:

复旦大学出版社,2012,3

附录

程序代码

/*-----------------------------------------------

P1口连接至LED用于显示红绿灯,P0口接数码管,数码管显示时间,

P3.0接B,P3.1接A,P3.2接k1,P3.3接K2,P2接J4,J5从J4对齐

INT0:

通过中断接口P3.2连接的独立按键,使用电平触发

INT1:

通过中断接口P3.3连接的独立按键,使用电平触发,启用按键去抖,适合实际按键

#include<

reg52.h>

//包含头文件,头文件包含特殊功能寄存器的定义

#include<

intrins.h>

硬件端口定义

sbitLATCH=P2^3;

//数码管管脚定义

sbitSRCLK=P2^2;

sbitSER=P2^1;

sbitLATCH_B=P2^7;

sbitSRCLK_B=P2^6;

sbitSER_B=P2^5;

sbitLACTCH1=P3^0;

//段锁存

sbitLACTCH2=P3^1;

//位锁存

sbitnorth=P3^0;

sbiteast=P1^7;

全局变量

bitred,green,yellow,red2,green2,yellow2,turnred;

//定义红绿黄灯标志位

unsignedcharsecond;

//秒数

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

//共阴数码管0-9

unsignedcharsegout[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

//8列

unsignedcharcodetab1[]={0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,};

//1南北红

unsignedcharcodetab2[]={0x00,0x00,0x01,0x00,0x00,0x80,0x00,0x00,};

//2南北黄

unsignedcharcodetab3[]={0x00,0x01,0x00,0x00,0x00,0x00,0x80,0x00,};

//3南北绿

unsignedcharcodetab4[]={0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x02,};

//4东西绿

unsignedcharcodetab5[]={0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x04,};

//5东西黄

unsignedcharcodetab6[]={0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x08,};

//6东西红

unsignedcharcodetab10[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//10空

};

unsignedcharcodetab11[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//11黄灯闪

unsignedcharDis_Shiwei;

//定义十位

unsignedcharDis_Gewei;

//定义个位

voiddelay(unsignedintcnt)

while(--cnt);

/*/*------------------------------------------------

uS延时函数,含有输入参数unsignedchart,无返回值

unsignedchar是定义无符号字符变量,其值的范围是

0~255这里使用晶振12M,精确延时请使用汇编,大致延时

长度如下T=tx2+5uS

voidDelayUs2x(unsignedchart)

while(--t);

mS延时函数,含有输入参数unsignedchart,无返回值

0~255这里使用晶振12M,精确延时请使用汇编

voidDelayMs(unsignedchart)

while(t--)

{

//大致延时1mS

DelayUs2x(245);

}

发送字节程序

带有方向参数,可以选择从高位节写入或者低位写入

voidSendByte(unsignedchardat,bitdirection)

unsignedchari,temp;

if(direction==0)

temp=0x80;

else

temp=0x01;

for(i=0;

i<

8;

i++)

SRCLK=0;

SER=dat&

temp;

dat<

<

=1;

dat>

>

SRCLK=1;

}

发送双字节程序

voidSend2Byte(unsignedchardat1,unsignedchardat2,bitdirection)

SendByte(dat1,direction);

SendByte(dat2,direction);

595锁存程序

voidOut595(void)

LATCH=0;

_nop_();

LATCH=1;

发送位码字节程序

使用另外一片单独595

voidSendSeg(unsignedchardat

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

当前位置:首页 > 高等教育 > 经济学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2