交通灯的课程设计.docx

上传人:b****5 文档编号:3904757 上传时间:2022-11-26 格式:DOCX 页数:17 大小:166.88KB
下载 相关 举报
交通灯的课程设计.docx_第1页
第1页 / 共17页
交通灯的课程设计.docx_第2页
第2页 / 共17页
交通灯的课程设计.docx_第3页
第3页 / 共17页
交通灯的课程设计.docx_第4页
第4页 / 共17页
交通灯的课程设计.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

交通灯的课程设计.docx

《交通灯的课程设计.docx》由会员分享,可在线阅读,更多相关《交通灯的课程设计.docx(17页珍藏版)》请在冰豆网上搜索。

交通灯的课程设计.docx

交通灯的课程设计

摘要

交通在人们的日常生活中占有重要的地位,随着人们社会活动的日益频繁,这点更是体现的淋漓尽致。

交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。

本系统采用单片机AT89C51为中心器件来设计交通灯控制器,系统实用性强、操作简单、扩展性强。

本设计就是采用单片机模拟十字路口交通灯的状态显示以及倒计时。

本设计系统由单片机I/O口扩展系统、交通灯状态显示系统、LED数码显示系统、复位电路等几大部分组成。

系统除基本的交通灯功能外,还具有倒计时功能,较好的模拟实现了十字路口可能出现的状况。

软件上采用汇编语言编程,主要编写了主程序,LED数码管显示程序。

经过整机调试,实现了对十字路口交通灯的模拟。

 

目录

1概述………………………………………………………………………………3

1.1绪论…………………………………………………………………………3

1.2设计目的……………………………………………………………………3

1.3设计任务和内容……………………………………………………………3

2系统总体方案及核心器件简介…………………………………………………4

2.1总体设计……………………………………………………………………4

2.2AT89C51………………………………………………………………………4

2.374LS164………………………………………………………………………6

3单元电路模块设计………………………………………………………………8

3.1复位电路……………………………………………………………………8

3.2晶振电路……………………………………………………………………8

3.3LED数码管显示电路………………………………………………………8

3.4总体设计原理图及功能介绍………………………………………………8

4软件编程设计……………………………………………………………………10

4.1设计思想……………………………………………………………………10

4.2程序框图……………………………………………………………………10

5课程设计体会……………………………………………………………………11

参考文献……………………………………………………………………………12

附1:

源程序代码

1概述

1.1绪论

近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。

在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。

交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。

1.2设计目的

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

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

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

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

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

1.3设计任务和内容

结合教材及参考资料,用AT89C51单片机模拟实现十字路口的交通灯亮灭、倒计时显示等功能。

(1)填写设计任务书。

(2)进行总体设计,画出原理图。

(3)编写并调试程序。

(4)用Proteus软件进行仿真。

 

2系统总体方案及核心器件简介

2.1总体设计

整个设计以AT89C51单片机为核心,LED数码管显示,晶振电路,复位电路组成。

硬件模块入图2-1。

图2-1硬件模块

2.2AT89C51

1.AT89C51单片机简介

AT89C51是美国ATMEL公司推出的系列单片机,将多种功能的8位CPU与FPEROM(快闪可编程/擦除只读存储器)结合在一个芯片上,是一种低功耗、高性能的CMOS控制器,为很多嵌入式控制应用提供了非常灵活而又价格适宜的方案,其性能价格比远高于同类芯片。

它与MCS-51指令系统兼容,片内FPEROM允许对程序存储器在线重复编程,也可用常规的EPROM编程器编程,可循环写入/擦除1000次。

89C51内含4KB的FPEROM,一般的EEPROM的字节擦除时间和写

入时间基本上均为10ms,对于任一个实时控制系统来说,这样长的时间是不可能在线修改程序的。

图2-289C51内部结构图

与EEPROM相比较,FPEROM大大缩短了存储内容擦除和写入的时间,为在线改写程序提供了极大的方便,而且价格也比带EPROM87C系列单片机便宜,这更显示出了89C系列的优越性。

它还有128*8Bit的片内RAM;32根I/O线;2个16位定时/计数器;5个中断源;一个全双工的异步串行口;间歇和掉电工作模式;三级程序存储器加密;全静态工作,晶振工作范围:

0Hz—24MHz。

2.管脚功能

AT89C51单片机为40引脚芯片如图2-3所示。

I/O口线:

P0、P1、P2、P3共四个八位P0口是三态双向口,通称数据总线口,因为只有该口能直接用于对外部存储器的读ˆ写操作。

P0口也用以输出外部存储器的低8位地址。

由于是分时输出,故应在外部加锁存器将此地址数据锁存,地址锁存信号用ALE。

P1口是专门供用户使用的I/O口,是准双向口。

P2口是从系统扩展时作高8位地址线用。

不扩展外部存储器时,P口也可P2口也是准双向口。

P3口是双功能口,该口的每一位均可独立地定义为第一I/O功能或第二I/O功能。

作为第一功能使用时操作同P1口。

P3口的第二功能如表2-1。

图2-389C51引脚图

控制口线:

PSEN(片外取控制)、ALE(地址锁存控制)、EA(片外储器选择)、RE2SET(复位控制);

电源及时钟:

CCC、VSS;XTAL1,XTAL2

表2-1引脚功能表

2.374LS164

74LS164引脚定义如图2-5所示,其真值表如表2-2所示,其功能是将外部输入的串行数据转化为8位的并行数据输出具有锁寸功能。

A、B端为串行数据输入端,QA~QH为数据输出端,CLK为外部时钟输入端,CLR为清零端。

图2-574LS164引脚图

 

表2-274LS164真值表

输入

输出

CLEAR

CLOCK

AB

QAQB……QH

L

X

XX

LLL

H

L

XX

QA0QB0QH0

H

HH

HQAnQGn

H

LX

LQAnQGn

H

XL

LQAnQGn

 

3单元电路模块设计

3.1复位电路

3-1复位电路

3.2晶振电路

             3-2 晶振模块原理图

 选取原则:

传统做法,但能够实现所需,即最简单也最是实用。

电容选取22uF,晶振为11.0592Hz。

3.3LED数码管显示电路

在单片机应用系统中,数码管显示常用两种方法:

静态显示和动态扫描显示。

所谓静态显示,就是每一个显示器都要占用单独的具有锁存功能的I/O接口用于笔划段字形代码。

这样单片机只要把要显示的字形代码发送到接口电路,就不用管它了,直到要显示新的数据时,再发送新的字形码,因此,使用这种方法单片机中CPU的开销小,可以提供单独锁存的I/O接口电路很多。

所以本设计采用串并转换电路74LS164的静态显示电路。

其电路图如图3-4所示。

图3-4数码管显示静态驱动电路

3.4总体设计原理图及功能介绍

功能介绍:

LED数码管则用来对各种状态进行倒计时的显示。

设计中采用74LS164静态驱动LED数码管,利用单片机的RXD作为数据的输出端给164送数。

利用164的移位进行多位的显示。

利用延时程序控制每秒时间,从而控制RXD送数的时间间隔。

 

4软件编程设计

4.1设计思想

交通灯根据其显示情况可以分为四个状态,可以通过定时来控制每个状态的时间;通过定时也可以向LED数码管中每隔1秒送一个数,显示该状态剩余的时间。

4.2程序框图

图4-1主程序框图

 

5课程设计体会

作为一名电信专业的学生,我觉得做单片机课程设计是十分有意义的,而且是十分必要的。

在已度过的大学时间里,我们大多数接触的是专业课。

我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?

如何把我们所学的专业基础课理论知识运用到实践中去呢?

我想做类似的课程设计就为我们提供了良好的实践平台。

要做好一个课程设计,就必须做到:

在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常德,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。

课程设计结束了,但是从中学到的知识会让我受益终身。

发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。

设计过程,好比是我们的成长的历程,常有一些不如意,难免会遇到各种各样的问题。

在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

我们通过查阅大量有关资料,并在小组中互相讨论,交流经验和自学,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。

通过这次课程设计我也发现了自身存在的不足之处,虽然感觉理论上已经掌握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决。

这也激发了我今后努力学习的兴趣,我想这将对我以后的学习产生积极的影响。

通过这次设计,我懂得了学习的重要性,了解到理论知识与实践相结合的重要意义,学会了坚持、耐心和努力,这将为自己今后的学习和工作做出了最好的榜样。

我觉得作为一名电信专业的学生,单片机的课程设计是很有意义的。

更重要的是如何把自己平时所学的东西应用到实际中。

虽然自己对于这门课懂的并不多,很多基础的东西都还没有很好的掌握,觉得很难,也没有很有效的办法通过自身去理解,但是靠着这一个多礼拜的“学习”,在小组同学的协助下,渐渐对这门课逐渐产生了些许的兴趣,自己开始主动学习并逐步从基础慢慢开始弄懂它。

我认为这个收获应该说是相当大的。

觉得课程设计反映的是一个从理论到实际应用的过程,但是更远一点可以联系到以后毕业之后从学校转到踏上社会的一个过程。

小组人员的配合﹑相处,以及自身的动脑和努力,都是以后工作中需要的。

参考文献

[1]李朝青.单片机原理及接口技术(第3版).北京:

北京航空航天大学出版社,2006

[2]何立民.单片机应用技术大全.北京:

北京航空航天大学出版社,1994

 

附1源程序代码

SECOND1EQU30H;东西路口计时寄存器

SECOND2EQU31H;南北路口计时寄存器

DBUFEQU40H;显示码缓冲区1

TEMPEQU44H;显示码缓冲区2

LED_G1BITP2.1;东西路口绿灯

LED_Y1BITP2.2;东西路口黄灯

LED_R1BITP2.3;东西路口红灯

LED_G2BITP2.4;南北路口绿灯

LED_Y2BITP2.5;南北路口黄灯

LED_R2BITP2.6;南北路口红灯

ORG0000H

LJMPSTART

ORG0100H

START:

MOVTMOD,#01H;置T0为工作方式1

MOVTH0,#3CH;置T0定时初值50ms

MOVTL0,#0B0H

CLRTF0

SETBTR0;启动T0

CLRA

MOVP1,A;关闭不相关的LED

LOOP:

MOVR2,#20;置1S计数初值,50ms*20=1s

MOVR3,#20;红灯亮20S

MOVSECOND1,#25;东西路口计时显示初值25s

MOVSECOND2,#25;南北路口计时显示初值25s

LCALLDISPLAY

LCALLSTATE1;调用状态1

WAIT1:

JNBTF0,WAIT1;查询50ms到否

CLRTF0

MOVTH0,#3CH;回复T0定时初值50ms

MOVTL0,#0B0H

DJNZR2,WAIT1;判断1S到否未到继续状态1

MOVR2,#20;置50MS计数初值

DECSECOND1;东西路口显示时间减1s

DECSECOND2;南北路口显示时间减1s

LCALLDISPLAY

DJNZR3,WAIT1;状态1维持20s

MOVR2,#5;置50MS计时初值5*4=20

MOVR3,#3;路灯闪3s

MOVR4,#4;闪烁间隔200ms

MOVSECOND1,#5;东西路口计时显示初值5s

MOVSECOND2,#5;南北路口计时显示初值5s

LCALLDISPLAY;

WAIT2:

LCALLSTATE2;调用状态2

JNBTF0,WAIT2;查询50ms到否

CLRTF0;

MOVTH0,#3CH;恢复T0定时初值50ms

MOVTL0,#0B0H

DJNZR4,WAIT2;判断200MS到否未到继续状态2

CPLLED_G1;东西绿灯闪

MOVR4,#4;闪烁间隔200MS

DJNZR2,WAIT2;判1S到否未到继续状态2

MOVR2,#5;置50MS计数初值

DECSECOND1;东西路口显示时间减1S

DECSECOND2;南北路口显示时间减1S

LCALLDISPLAY

DJNZR3,WAIT2;状态2维持3S

MOVR2,#20;置50MS计数初值

MOVR3,#2;黄灯闪2S

MOVSECOND1,#2;东西路口计时显示初值2S

MOVSECOND2,#2;南北路口计时显示初值2S

LCALLDISPLAY

WAIT3:

LCALLSTATE3;调用状态3

JNBTF0,WAIT3;查询100MS到否

CLRTF0

MOVTH0,#3CH;恢复T0定时初值100MS

MOVTL0,#0B0H

DJNZR2,WAIT3;判断1S到否未到继续状态3

MOVR2,#20;置100MS计数初值

DECSECOND1;东西路口显示时间减1S

DECSECOND2;南北路口显示时间减1S

LCALLDISPLAY

DJNZR3,WAIT3;状态3维持2S

MOVR2,#20;置50MS计数初值

MOVR3,#20;红灯闪20S

MOVSECOND1,#25;东西路口计时显示初值25S

MOVSECOND2,#25;南北路口计时显示初值25S

LCALLDISPLAY

WAIT4:

LCALLSTATE4;调用状态4

JNBTF0,WAIT4;查询100ms到否

CLRTF0

MOVTH0,#3CH;恢复T0定时初值100ms

MOVTL0,#0B0H

DJNZR2,WAIT4;判断1S是否未到继续状态4

MOVR2,#20;置100MS计数初值

DECSECOND1;东西路口显示时间减1S

DECSECOND2;南北路口显示时间减1S

LCALLDISPLAY

DJNZR3,WAIT4;状态4维持20S

MOVR2,#5;置50MS计数初值

MOVR4,#4;红灯闪20S

MOVR3,#3;绿灯闪3S

MOVSECOND1,#5;东西路口计时显示初值5S

MOVSECOND2,#5;南北路口计时显示初值5S

LCALLDISPLAY

WAIT5:

LCALLSTATE5;调用状态5

JNBTF0,WAIT5;查询100MS到否

CLRTF0

MOVTH0,#3CH;恢复T0定时初值100MS

MOVTL0,#0B0H

DJNZR4,WAIT5;判断200MS到否?

未到继续状态5

CPLLED_G2;南北绿灯闪

MOVR4,#4;闪烁200MS

DJNZR2,WAIT5;判断1S到否?

未到继续状态5

MOVR2,#5;置100MS计时初值

DECSECOND1;东西路口显示时间减1S

DECSECOND2;南北路口显示时间减1S

LCALLDISPLAY

DJNZR3,WAIT5;状态5维持3S

MOVR2,#20;置50MS计数初值

MOVR3,#2;红灯闪2S

MOVSECOND1,#2;东西路口计时显示初值2S

MOVSECOND2,#2;南北路口计时显示初值2S

LCALLDISPLAY

WAIT6:

LCALLSTATE6;调用状态6

JNBTF0,WAIT6;查询100MS到否

CLRTF0

MOVTH0,#3CH;恢复T0定时初值100MS

MOVTL0,#0B0H

DJNZR2,WAIT6;判断1S到否未到继续状态6

MOVR2,#20H;置100MS计数初值

DECSECOND1;东西路口显示时间减1S

DECSECOND2;南北路口显示时间减1S

LCALLDISPLAY

DJNZR3,WAIT6;状态6维持2S

LJMPLOOP;大循环

STATE1:

;状态1

SETBLED_G1;东西路口绿灯亮

CLRLED_Y1

CLRLED_R1

CLRLED_G2

CLRLED_Y2

SETBLED_R2;南北路口红灯亮

RET

STATE2:

;状态2

CLRLED_Y1

CLRLED_R1

CLRLED_G2

CLRLED_Y2

SETBLED_R2;南北路口红灯亮

RET

STATE3:

;状态3

CLRLED_G1

CLRLED_R1

CLRLED_G2

CLRLED_Y2

SETBLED_R2;南北路口红灯亮

SETBLED_Y1;东西路口绿灯亮

RET

STATE4:

;状态4

CLRLED_G1

CLRLED_Y1

SETBLED_R1;东西路口红灯亮

SETBLED_G2;南北路口红灯亮

CLRLED_Y2

CLRLED_R2

RET

STATE5:

;状态5

CLRLED_G1

CLRLED_Y1

SETBLED_R1;东西路口红灯亮

CLRLED_Y2

CLRLED_R2

RET

STATE6:

;状态6

CLRLED_G1

CLRLED_Y1

SETBLED_R1;东西路口红灯亮

CLRLED_G2

CLRLED_R2

SETBLED_Y2;南北路口黄灯亮

RET

DISPLAY:

;数码显示

MOVA,SECOND1;东西路口计时寄存器

MOVB,#10;十六进制数拆成两个十进制数

DIVAB

MOVDBUF+3,A

MOVA,B

MOVDBUF+2,A

MOVA,SECOND2

MOVB,#10

DIVAB

MOVDBUF+1,A

MOVA,B

MOVDBUF,A

MOVR0,#DBUF

MOVR1,#TEMP

MOVR7,#4

DP10:

MOVDPTR,#LEDMAP

MOVA,@R0

MOVCA,@A+DPTR

MOV@R1,A

INCR0

INCR1

DJNZR7,DP10

MOVR0,#TEMP

MOVR1,#4

DP12:

MOVR7,#8

MOVA,@R0

DP13:

RLCA

MOVP3.0,C

CLRP3.1

SETBP3.1

DJNZR7,DP13

INCR0

DJNZR1,DP12

RET

LEDMAP:

DB3FH,06H,5BH,4FH,66H,6DH;0,1,2,3,4,5

DB7DH,07H,7FH,6FH,77H,7CH;6,7,8,9,a,b

DB58H,5EH,7BH,0,40H;s,d,e,f,,-

END

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

当前位置:首页 > 小学教育 > 数学

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

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