单片机课程设计报告交通灯

单片机交通灯设计

洛阳理工学院

电气工程与其自动化系

专业:自动化

班   级:自动化八班

姓   名:01白彦芳

02何一婷11靳亚磊

指导老师:姚惠林

                  目录

1 设计任务和性能指标......................................... 3

1.1设计任务...................................................... 4

1.2性能指标...................................................... 4

2 设计方案.................................................. 4

2.1任务分析...................................................... 4

2.2方案设计...................................................... 4

2.2.1硬件方案.................................................... 4

2.2.2软件方案.................................................... 4

3 系统硬件设计.............................................. 6

3.1单片机的最小系统.............................................. 6

3.2电源电路...................................................... 6

3.3数码管显示时间电路............................................ 6

3.4系统原理图.................................................... 7

3.5系统元件...................................................... 8

4 系统软件设计.............................................. 8

4.1 主程序设计.................................................... 9

4.2系统程序...................................................... 9

5 调试及性能分析............................................ 9

5.1调试分析...................................................... 9

5.1.1软件调试.................................................. 9

5.1.2硬件调试.................................................. 9

5.1.3系统功能调试.............................................. 9

6心得体会.................................................. 9

附录一..................................................... 10

参考文献................................................... 18


摘要

交通在人们的日常生活中占有重要的地位,随着人们社会活动的日益频繁,这点更是体现的淋漓尽致。交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。

本系统采用单片机80C51为中心器件来设计交通灯控制器,系统实用性强、操作简单、扩展性强。本设计就是采用单片机模拟十字路口交通灯的各种状态显示以及倒计时时间。

本设计系统由单片机I/O口扩展系统、交通灯状态显示系统、LED数码显示系统、复位电路等几大部分组成。系统除基本的交通灯功能外,还具有倒计时等功能,较好的模拟实现了十字路口可能出现的状况。

软件上采用C52编程,主要编写了主程序,LED数码管显示程序,中断程序延时程序等。经过整机调试,实现了对十字路口交通灯的模拟。

关键字:电子线路 ;80C51;LED;交通灯。

1 设计任务和性能指标

1.1设计任务


                                     模拟图

利用单片机完成交通信号灯控制器的设计,该交通信号灯控制器由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。用红、绿、黄发光二极管作信号灯。如图上图所示。

1.2性能指标

(1)两路口是同等的。处于允许通行的状态,有车来时允许通行。东西道亮绿灯时,南北道亮红灯;南北道亮绿灯时,东西道亮红灯。绿红灯之间以黄灯间隔。

(2)两个方向均有车时,两者交替允许通行,均每次放行15秒,设立15秒计时、显示电路。红灯10秒。

(3)通行时间及黄灯亮的时间均可在0~99秒内任意设置。

2 设计方案

2.1任务分析

模拟交通灯控制器就是使用单片机来控制一些LED 和数码管,模拟真实交通灯的功能。红、黄、绿交替点亮,利用数码管倒计数显示间隔等,用于管理十字路口的车辆及行人交通,计时牌显示路口通行转换剩余时间等。

2.2方案设计

2.2.1硬件方

案根据设计的要求可知,系统的硬件原理框图如下图所示

系统硬件框图

  单片机可选用80C51,它与8051系列单片机全兼容,但其内部带有8KB的FLASH ROM,设计时无需外接程序存储器,为设计和调试带来极大的方便。南北向和东西向各采用2个数码管计时,同时需要对该方向的指示灯的点亮时间进行倒计时。按键可以根据系统的需要进行复位。用三极管驱动数码管显示,三极管控制共阳位选端,控制数码管的显示。

2.2.2 软件方案

首先南北方向红灯、东西方向绿灯亮,南北方向红灯15秒、东西方向绿灯10秒,相应的数码管显示对应的数字并读秒,同时南北方向红色的二极管和东西方向的绿色二极管接通点亮显示,当东西方向的绿灯时间到,则东西方向的绿灯转为黄灯,同时数码管显示黄灯的时间5秒,东西方向的黄色二极管接通点亮,此时南北方向的红灯不变。南北方向的红灯和东西方向的黄灯时间同时到,此时南北方向的红灯跳转为绿灯,时间同样为10秒,东西方向有黄灯跳转为红灯,时间为15秒。当南北方向的绿灯时间到,南北绿灯跳转为黄灯,东西方向的红灯不变,当南北方向的黄灯和东西方向的红灯时间到,南北方向的黄灯跳转为红灯,东西方向的红灯跳转为绿灯。进入开始的状态,循环执行。

根据设计要求,程序框图如图所示。软件可由汇编语言完成,也可由C语言完成。软件设计可以分为以下几个功能模块:

数码管显示模块

动态显示方式:动态显示方式是指一位一位地轮流点亮每位显示器(称为扫描),即每个数码管的位选被轮流选中,多个数码管公用一组段选,段选数据仅对位选选中的数码管有效。对于每一位显示器来说,每隔一段时间点亮一次。显示器的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关。通过调整电流和时间参数,可以既保证亮度,又保证显示。若显示器的位数不大于8位,则显示器的公共端只需一个8位I/O口进行动态扫描(称为扫描口),控制每位显示器所显示的字形也需一个8位口(称为段码输出)。

LED红绿灯显示模块

状态1, 东西绿灯亮,南北红灯亮

状态2, 东西黄灯亮,南北红灯亮

状态3, 东西红灯亮,南北绿灯亮

状态4, 东西红灯亮,南北黄灯亮

结构框图

   

3 系统硬件设计

3.1单片机的最小系统

STC公司生产的80C51单片机它是硬件电路的核心部分,时钟电路晶振使用12MHz,复位电路采取按键复位方式。

单片机系统的时钟电路

单片机系统的复位电路及显示单元

3.2电源电路设计电源用5V直流变压器直接供电,usb接口供电。

 3.3数码管显示电路

显示电路采用4个共阳数码管,用74HC244做驱动器,P0口作为数码管的输入,ULN2803作为控制位选端,P2.0,P2.1,P2.2, P2.3分别作为东西,南北四路数码管的位选端。数码管显示电路图

3.4系统原理图

                                        系统原理图

3.5指示单元

3.6系统元件

去电子市场按原件清单购买所需原件,检测所购元件的性能是否达到所需标准,然后按照系统原理图接好硬件图,检查接线是否正确,是否有漏接,短接等。并用测试程序检查元器件是否能正常工作,以便修改,一切就绪后,就将写好的程序下载进单片机。以下是元器件清单列表。

椭圆: 开始4 系统软件设计4.1 主程序设计系统程序流程图

 

 4.2系统程序

根据设计方案,设计满足要求的程序,并将程序烧写进单片机,运行程序,观察现象是否符合要求,若不符合要求继续修改程序。直至能达到要求。程序清单见附录一。 

5 调试及性能分析

5.1 调试分析

5.1.1软件调试

软件调试主要是利用protus仿真软件完成电路的搭建,运行以发现设计中的错误及时改正。

5.1.2硬件调试

硬件调试主要是检测硬件电路是否有短路、断路、虚焊等。具体步骤及测试结果如下:

(1)检查电源与地线是否全部连接上,用万用表对照电路原理图测试各导线是否完全连接,对未连接的进行修复。(2)参照原理图,检查各个器件之间的连接是否连接正确,是否存在虚焊,经测试,各连接不存在问题。(3)以上两项检查并修复完后,给该硬件电路上电,电源指示灯点亮。

5.1.3系统功能调试

通过通电调试系统的功能,观察系统是否正常运行,是否达到设计指标,通过修改软件完成系统的系能指标,也可以通过仿真软件进行仿真运行,调试并修改系统,以便达到最佳水准。让系统最大限度的发挥其功效。

6 心得体会

 这次单片机课程设计历时三个星期的时间,在这次设计过程里我们体验了从总体方案设计、画原理图、设计程序、焊电路板到调试完善的整个过程。

我学会了用更多的工具去查阅资料,获取所需的知识,解决了很多我在之前的学习中没有弄懂的问题。了解了很多元件的作用和用法。熟悉了单片机的使用,熟悉了单片机的各个管脚的功能。这可以说是给我上了深刻的复习课,在我即将忘记单片机知识的时候,又让我加深了我对它的认识,而且了解了更多以前没有注意的问题。

通过这次课程设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧(特别是汇编语言)的掌握方面都能向前迈了一大步。本次课程设计的过程是艰辛的,不过收获却是很大的。

在设计过程中,会出现了一些问题,但都是常见的小问题,如:代码中双引号的使用并不是在英语书写状态下,输入字母出错等,在调试时出现异常,不过这些都是经常性错误,经过调试修改都一一解决,程序顺利完成,并实现了其功能。

综合课程设计让我把以前学习到的知识得到巩固和进一步的提高认识,对已有知识有了更进一步的理解和认识。在此,由于自身能力有限,在课程设计中碰到了很多的问题,我通过查阅相关书籍、资料以及和周围同学交流。

由于使用的是单片机作为核心的控制元件,使得电路的可靠性比较高,功能也比较强大,而且可以随时的更新系统,进行不同状态的组合。但是在我们设计和调试的过程中,也发现了一些问题,譬如红灯和绿灯的切换还不够迅速,红绿灯规则不完善效率还不是很高等等,这需要在实践中进一步完善。当然,通过这次课程设计,我也发现了自身的很多不足之处,在以后的学习中,我会不断的完善自我。

通过这次课程设计,对以前学过的知识进行了巩固,加深了理解,提高了应用的能力,而且提高了我们的发现、分析、解决问题的能力。经历了从最初的设计到最后做出产品的开发过程,提高了对专业的认识及兴趣,对于我们工科来说,对以后就业有及其重大的影响。

附录一

SECOND1 EQU     30H                 ;东西路口计时寄存器

SECOND2 EQU     31H                 ;南北路口计时寄存器

DBUF    EQU     40H                 ;显示码缓冲区1

TEMP    EQU     44H                 ;显示码缓冲区2

LED_G1  BIT     P2.1                ;东西路口绿灯

LED_Y1  BIT     P2.2                ;东西路口黄灯

LED_R1  BIT     P2.3                ;东西路口红灯

LED_G2  BIT     P2.4                ;南北路口绿灯

LED_Y2  BIT     P2.5                ;南北路口黄灯

LED_R2  BIT     P2.6                ;南北路口红灯

        ORG     0000H

        LJMP    START

        ORG     0100H

START:  MOV     TMOD,#01H           ;置T0为工作方式1

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

        MOV     TL0,#0B0H              

        CLR     TF0

        SETB    TR0                 ;启动T0

        CLR     A

        MOV     P1,A                ;关闭不相关的LED

;***************************************************

LOOP:   MOV     R2,#20              ;置1s计数初值,50ms*20=1s

        MOV     R3,#20              ;红灯亮20s

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

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

        LCALL   DISPLAY

        LCALL   STATE1              ;调用状态1

WAIT1:  JNB     TF0,WAIT1           ;查询50ms到否

        CLR     TF0        

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

        MOV     TL0,#0B0H

        DJNZ    R2,WAIT1            ;判断1s到否?未到继续状态1

        MOV     R2,#20              ;置50ms计数初值

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

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

        LCALL   DISPLAY

        DJNZ    R3,WAIT1            ;状态1维持20s

;*******************************************

        MOV     R2,#5               ;置50ms计数初值 5*4=20

        MOV     R3,#3               ;绿灯闪3s

        MOV     R4,#4               ;闪烁间隔200ms

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

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

        LCALL   DISPLAY

WAIT2:  LCALL   STATE2              ;调用状态2

        JNB     TF0,WAIT2           ;查询50ms到否

        CLR     TF0

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

        MOV     TL0,#0B0H

        DJNZ    R4,WAIT2            ;判断200ms到否?未到继续状态2

        CPL     LED_G1              ;东西绿灯闪

        MOV     R4,#4               ;闪烁间隔200ms

        DJNZ    R2,WAIT2            ;判1s到否?未到继续状态2

        MOV     R2,#5               ;置50ms计数初值

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

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

        LCALL   DISPLAY

        DJNZ    R3,WAIT2            ;状态2维持3s

;****************************************

        MOV     R2,#20              ;置50ms计数初值

        MOV     R3,#2               ;黄灯闪2s

        MOV     SECOND1,#2          ;东西路口计时显示初值2s

        MOV     SECOND2,#2          ;南北路口计时显示初值2s

        LCALL   DISPLAY

WAIT3:  LCALL   STATE3              ;调用状态3

        JNB     TF0,WAIT3           ;查询100ms到否

        CLR     TF0

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

        MOV     TL0,#0B0H

        DJNZ    R2,WAIT3            ;判断1s到否?未到继续状态3

        MOV     R2,#20              ;置100ms计数初值

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

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

        LCALL   DISPLAY

        DJNZ    R3,WAIT3            ;状态3维持2s

;*******************************************

        MOV     R2,#20              ;置50ms计数初值

        MOV     R3,#20              ;红灯闪20s

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

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

        LCALL   DISPLAY

WAIT4:  LCALL   STATE4              ;调用状态4

        JNB     TF0,WAIT4           ;查询100ms到否

        CLR     TF0

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

        MOV     TL0,#0B0H

        DJNZ    R2,WAIT4            ;判断1s到否?未到继续状态4

        MOV     R2,#20              ;置100ms计数初值

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

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

        LCALL   DISPLAY

        DJNZ    R3,WAIT4            ;状态4维持20s

;*******************************************

        MOV     R2,#5               ;置50ms计数初值

        MOV     R4,#4               ;红灯闪20ms

        MOV     R3,#3               ;绿灯闪3s

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

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

        LCALL   DISPLAY

WAIT5:  LCALL   STATE5              ;调用状态5

        JNB     TF0,WAIT5           ;查询100ms到否

        CLR     TF0

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

        MOV     TL0,#0B0H              

        DJNZ    R4,WAIT5            ;判断200ms到否?未到继续状态5

        CPL     LED_G2              ;南北绿灯闪

        MOV     R4,#4               ;闪烁200ms

        DJNZ    R2,WAIT5            ;判断1s到否?未到继续状态5

        MOV     R2,#5               ;置100ms计数初值

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

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

        LCALL   DISPLAY

        DJNZ    R3,WAIT5            ;状态5维持3s

;****************************************

        MOV     R2,#20              ;置50ms计数初值

        MOV     R3,#2               ;红灯闪2s

        MOV     SECOND1,#2          ;东西路口计时显示初值2s

        MOV     SECOND2,#2          ;南北路口计时显示初值2s

        LCALL   DISPLAY

        WAIT6:  LCALL   STATE6      ;调用状态6

        JNB     TF0,WAIT6           ;查询100ms到否

        CLR     TF0

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

        MOV     TL0,#0B0H

        DJNZ    R2,WAIT6            ;判断1s到否?未到继续状态6

        MOV     R2,#20              ;置100ms计数初值

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

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

        LCALL   DISPLAY

        DJNZ    R3,WAIT6            ;状态6维持2s

        LJMP    LOOP                ;大循环

;**********************************************

STATE1:                             ;状态1

        SETB    LED_G1              ;东西路口绿灯亮

        CLR     LED_Y1

        CLR     LED_R1

        CLR     LED_G2

        CLR     LED_Y2

        SETB    LED_R2              ;南北路口红灯亮

        RET

STATE2:                             ;状态2

        CLR     LED_Y1

        CLR     LED_R1

        CLR     LED_G2

        CLR     LED_Y2

        SETB    LED_R2              ;南北路口红灯亮

        RET

STATE3:                             ;状态3

        CLR     LED_G1

        CLR     LED_R1

        CLR     LED_G2

        CLR     LED_Y2

        SETB    LED_R2              ;南北路口红灯亮

        SETB    LED_Y1              ;东西路口绿灯亮

        RET

STATE4:                             ;状态4

        CLR     LED_G1

        CLR     LED_Y1

        SETB    LED_R1              ;东西路口红灯亮

        SETB    LED_G2              ;南北路口绿灯亮

        CLR     LED_Y2

        CLR     LED_R2

        RET

STATE5:                             ;状态5

        CLR     LED_G1

        CLR     LED_Y1

        SETB    LED_R1              ;东西路口红灯亮

        CLR     LED_Y2

        CLR     LED_R2

        RET

STATE6:                             ;状态6

        CLR     LED_G1

        CLR     LED_Y1

        SETB    LED_R1              ;东西路口红灯亮

        CLR     LED_G2

        CLR     LED_R2

        SETB    LED_Y2              ;南北路口红灯亮

        RET

DISPLAY:                            ;数码显示

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

        MOV     B,#10               ;16进制数拆成两个10进制数

        DIV     AB

        MOV     DBUF+3,A

        MOV     A,B

        MOV     DBUF+2,A

        MOV     A,SECOND2           ;南北路口计时寄存器

        MOV     B,#10               ;16进制数拆成两个10进制数

        DIV     AB

        MOV     DBUF+1,A

        MOV     A,B

        MOV     DBUF,A

        MOV     R0,#DBUF

        MOV     R1,#TEMP

        MOV     R7,#4

DP10:   MOV     DPTR,#LEDMAP

        MOV     A,@R0

        MOVC    A,@A+DPTR

        MOV     @R1,A

        INC     R0

        INC     R1

        DJNZ    R7,DP10

        MOV     R0,#TEMP

        MOV     R1,#4

DP12:   MOV     R7,#8

        MOV     A,@R0

DP13:   RLC     A

        MOV     P3.0,C

        CLR     P3.1

        SETB    P3.1

        DJNZ    R7,DP13

        INC     R0

        DJNZ    R1,DP12

        RET

LEDMAP:

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

        DB  7DH,07H,7FH,6FH,77H,7CH     ;6,7,8,9,A,B

        DB  58H,5EH,7BH,71H,0,40H       ;C,D,E,F, ,-

        END

参考文献

[1] 徐维祥.单片微型机原理及应用 大连理工大学出版社,2006.12

[2] 胡汉才.单片机原理与接口技术[M].北京: 清华大学大学出版社,2004.1-505.

[3] 闫胜利.Altium Designer 6.X中文版使用教程 电子工业出版社 2007.6

[4] 朝青.单片机原理及接口技术(第3版).20##年10月

[5] 张迎新.单片微型计算机原理、应用及接口技术(修订版)北京:国防工业出版社,2004.1.

[6] 房小翠.单片微型计算机与机电接口技术.北京:国防工业出版社,2002.3

相关推荐