注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

追逐梦想的博客

我们要永远依偎在一起,无论快乐忧伤,无论天涯海角,然后看似水年华慢慢老去!

 
 
 

日志

 
 

单片机交通灯课程设计  

2010-08-28 19:44:35|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
 

目   录

 

 

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

1.1设计任务.............................................................................................................. 1

1.2性能指标.............................................................................................................. 1

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

2.1任务分析.............................................................................................................. 2

2.2方案设计.............................................................................................................. 2

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

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

3.2电源电路.............................................................................................................. 4

3.3数码管显示时间电路设计.................................................................................. 4

3.4信号灯控制电路设计.......................................................................................... 5

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

4.1 主程序设计......................................................................................................... 5

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

5.1  调试分析............................................................................................................ 6

5.1.1 软件调试...................................................................................................... 6

5.1.2 硬件调试...................................................................................................... 6

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

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

参考文献...................................................................................................................... 8

附录1 系统原理图..................................................................................................... 9

附录2 系统仿真图................................................................................................... 10

附录3 程序清单....................................................................................................... 11

 




1 设计任务和性能指标
1.1设计任务







西


利用单片机完成交通信号灯控制器的设计,该交通信号灯控制器由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。用红、绿、黄发光二极管作信号灯。如图上图所示。设东西向为主干道,南北为支干道。
1.2性能指标
(1)处于常允许通行的状态,支干道有车来时才允许通行。主干道亮绿灯时,支干道亮红灯;支干道亮绿灯时,主干道亮红灯。
(2)干道均有车时,两者交替允许通行,主干道每次放行60秒,支干道每次放行40秒,设立60秒、40秒计时、显示电路。
(3)绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡。黄灯亮时,原红灯按1Hz的频率闪烁。
(4)支干道通行时间及黄灯亮的时间均可在0~99秒内任意设置。
2 设计方案
2.1任务分析
模拟交通灯控制器就是使用单片机来控制一些LED 和数码管,模拟真实交通灯的功能。红、黄、绿交替闪亮,利用数码管倒计数显示间隔等,用于管理十字路口的车辆及行人交通,计时牌显示路口通行转换剩余时间等
2.2方案设计

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

 

  系统硬件框图

单片机可选用AT89C51,它与8051系列单片机全兼容,但其内部带有4KB的FLASH ROM,设计时无需外接程序存储器,为设计和调试带来极大的方便。南北向和东西向各采用2个数码管计时,同时需要对该方向的指示灯的点亮时间进行倒计时。键盘系统可以根据系统的需要设置不同的键的个数,可以选择线式键盘或矩阵式键盘,若单片机的IO口不够用时,可以考虑扩展8255或8155满足系统的要求。

2. 软件方案

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

主程序:初始化及键盘监控。

计时程序模块:为定时器的中断服务子程序,完成0.1秒(或其他时间)和1秒的时间定时。

显示程序模块:完成60个发光二极管(实际上只需驱动30个)和8个LED数码管的显示驱动。

 


开始



初始化



判断当前状态



调用正常

运行子程序



调用紧急

状态子程序


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


                                    程序流程图


3 系统硬件设计
3.1单片机的最小系统

ATMEL公司生产的AT89C52单片机它是硬件电路的核心部分,时钟电路晶振使用12MHz,复位电路采取按键复位方式。具体连接图3.1和图3.2。

 

单片机系统的时钟电路

单片机系统的复位电路


3.2电源电路设计

 电源用5V直流变压器直接供电。


3.3数码管显示电路

      显示电路采用8个共阴数码管,P1口作为数码管的输入,P3.4、P3.5、P3.6 P3.7分别作为东西南北四路数码管的位选端。


 

                        数码管显示电路


 
3.4信号灯控制电路

                   应急电路


4 系统软件设计

开始


4.1 主程序设计

                   


参数初始化



显示子程序



中断处理



紧急中断子程序


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


系统程序流程图   

                 


5 调试及性能分析
5.1  调试分析
5.1.1 软件调试

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


5.1.2 硬件调试

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

(1)检查电源与地线是否全部连接上,用万用表对照电路原理图测试各导线是否完全连接,对未连接的进行修复。

(2)参照原理图,检查各个器件之间的连接是否连接正确,是否存在虚焊,经测试,各连接不存在问题。

(3)以上两项检查并修复完后,给该硬件电路上电,电源指示灯点亮。


5.1.3 系统功能调试

     通过软件仿真显示,系统基本能完成要求,由于设计思路出现问题,键盘没有正确的做出来,没有键盘电路,紧急情况也可以通过一个按钮来采取相关的动作。


6 心得体会

    这次单片机课程设计历时一个学期的时间,在这次设计过程里我们体验了从设计、画板、编程、焊板到调试的整个过程。

   对于交通灯这个题目,由于以前学单片机这个课程时,做过类似相关的实验,觉得这个比较简单而且做出的东西也比较直观,在确定题目之后,查阅了大量的资料,初步完成了电路设计方案。

   接着就是用AD6这个软件来画电路板,这个软件的应用上学期也学过了,但是学的时候感觉很简单,但是到了具体设计的时候,问题不断的出来,比如有的器件库里面没有封装,要自己花封装,这时候就很容易出问题,比如焊盘的大小,有的器件上焊盘大小不一样,有个别大的是用来固定的,这个很容易被忽略。

   下来就是程序的设计了,虽然感觉交通灯程序没什么难的,就是数码管倒计时显示加几个闪烁的二极管就完事,但是也许是起初想的太简单,设计时到了细节处,也出了不少问题,而且很难被检查出来,但是最后经过我们的不断努力,还是写出来正确的代码。

   上周学校终于把板子给做回来了,怀着紧张的心情一个器件一个器件的完成板子的焊接,最后通过串口线把程序下载到板子上,但是板子却没有意料中的效果,而且没一点现象,用万用表检查单片机的电压差不多为零,查出了问题所在松了口气,后来在网上查资料知道原来变压器的接口那三个引脚,两个GND必须短接,要不就不能正常供电,本以为短接后就正常了,但是数码管还是没反应,二极管基本可以正常显示,这时候真是一种煎熬,差了很久找不到原因,后来对照着原理图一个个的检查,最后发现原来是数码管封装错了,板子上的数码管公共极是3、8两个引脚,但是原理图上封装的事1、6,当时也没有注意,以为只要是共阴管就没问题了,没想到软件本身就存在错误。

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



参考文献

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

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

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


附录1 系统原理图


附录2 系统仿真图


附录3 程序清单

;------------------------------------

;程序实现功能

;西南北路口直行与转弯交替通行,数码管显示直行通行倒计时,红绿黄灯显示包括人行道在内的道路交通状态。

;某一方向道路拥挤时,可以人工控制调节东西南北方向通行时间。

;紧急情况时,各路口交通灯显示红灯,数码管保持数据不变。

 

 

;工作寄存器及存储单元分配

;1.工作寄存器

;R2设置为定时器定时中断次数,R6、R7用于延时程序中的寄存器

 

;2.片内存储单元

;30H、31H作为两组数码管显示数据存储单元;32H、33H作为交通灯初始状态存储单元;40H、41H作为交通灯显示数据存储单元

 

;3.标志位

;00H:南北通行标志位 ; 01H:东西通行标志位;02H:紧急事件标志位  

;-----------------------------------

SNF   EQU  00H             ;;;南北通行标志位

EWF   EQU  01H             ;;;东西通行标志位

URF   EQU  02H             ;;;紧急事件标志位

ORG   0000H

LJMP  MAIN                 ;;;上电转主程序

ORG   000BH                ;;;定时中断入口

LJMP  DSZD                   

ORG   0003H                ;;;紧急中断入口

LJMP  URZD

ORG   0030H  

MAIN: LCALL INIT           ;;;调用初始化子程序

LOOP: LCALL DIS            ;;;循环执行显示子程序

      AJMP  LOOP

;///////////初始化程序

INIT: SETB   SNF             

      SETB   EWF          

      SETB   URF          

      MOV   R2,#20         ;;;定时器中断20次为1s

      MOV   TMOD,#01H      ;;;初始化定时器

      MOV   TL0,#0B0H

      MOV   TH0,#3CH

      SETB  EA             ;;;开定时中断与紧急中断

      SETB  ET0

      SETB  TR0

      SETB  EX0

      SETB  IT0            ;;;设置中断程控方式

      MOV   DPTR,#TAB      ;;;数值首地址放入DPTR中

      MOV   40H,#40        ;;;东南西北通行时间设置

      MOV   41H,#40

      MOV   30H,#40        ;;;通行时间初始化

      MOV   31H,#60

      MOV   P0,#4CH        ;;;初始化时南北通行并把交通灯状态分别放在32H和33H中

      MOV   32H,#4CH

      MOV   P2,#15H

      MOV   33H,#15H

      RET

;////////////显示子程序

DIS:  MOV   P3,#0DFH       ;;;选中南北方向的十位数码管

      MOV   A,30H          ;;;把显示数据送人数码管显示

      MOV   B,#10

      DIV   AB

      MOVC  A,@A+DPTR

      MOV   P1,A           ;;;

      LCALL D1MS

      MOV   P3,#0EFH       ;;;选中南北方向的个位数码管

      MOV   A,B            ;;;送入数码管显示

      MOVC  A,@A+DPTR     

      MOV   P1,A

      LCALL D1MS

 

      MOV   P3,#7FH        ;;;选中第东西方向的十位数码管

      MOV   A,31H          ;;;送入数码管显示

      MOV   B,#10

      DIV   AB

      MOVC  A,@A+DPTR

      MOV   P1,A

      LCALL D1MS

      MOV   P3,#0BFH       ;;;选中第东西方向的个位数码管

      MOV   A,B

      MOVC  A,@A+DPTR

      MOV   P1,A

      LCALL D1MS

      SETB  P3.0

      SETB  P3.1

      JNB   P3.0,DIS_S     ;;;查询是否第一个按键按下

      JNB   P3.1,DIS_E     ;;;查询是否第二个按键按下

      AJMP  DIS_R          ;;;没有键按下则返回

DIS_S:LCALL D5MS           ;;;按键去抖

      JNB   P3.0,DIS_SN

      AJMP  DIS_R  

DIS_SN:MOV   40H,#50       ;;;对通行时间从新分配,南北通行时间加长

       MOV   41H,#30

       AJMP  DIS_R

DIS_E:LCALL D5MS           ;;;按键去抖

      JNB   P3.1,DIS_EW

      AJMP  DIS_R

DIS_EW:MOV   40H,#30       ;;;东西通行时间加长

       MOV   41H,#50

DIS_R:RET                 

;///////定时中断处理程序

DS_C: LJMP  DS_R           ;;;接力跳转

DSZD: PUSH  ACC            ;;;保护现场

      PUSH  PSW

      CLR   TR0            ;;;关定时器及中断标志位并重新赋值

      CLR   TF0

      MOV   TL0,#0B0H

      MOV   TH0,#3CH

      DJNZ  R2,DS_C        ;;;判断1m时间是否到达

      MOV   R2,#20         ;;;到达重新赋值

      DEC   30H            ;;;南北方向通行时间减一

      MOV   A,30H          ;;;把减一后的时间送入显示存储单元

;;;;;;;南北通行到达最后4秒时黄灯闪烁

DS_10:CJNE  A,#4,DS_11     ;;;如果通行时间剩余4秒

      JNB   SNF,DS_11      ;;;判断是否是南北通行

      MOV   P0,#8AH       

      MOV   32H, #8AH      ;;;把交通灯状态存入存储单元(后面类似)

DS_11:CJNE  A,#3,DS_12     ;;;不是剩余3秒,返回

      JNB   SNF,DS_12      ;;;不是南北通行时间,返回

      MOV   P0,#88H

      MOV   32H, #88H

DS_12:CJNE  A,#2,DS_13

      JNB   SNF,DS_13

      MOV   P0,#8AH

      MOV   32H, #8AH

DS_13:CJNE  A,#1,DS_14

      JNB   SNF,DS_14

      MOV   P0,#88H

      MOV   32H, #88H

;------------------------

DS_14:JNZ   DS_NE          ;;;通行时间没有结束转向改变东西方向的数码管

      CPL   SNF            ;;;如果通行时间结束则对标志位取反

      JNB   SNF,DS_1       ;;;判断是否南北通行

      MOV   30H,40H        ;;;是,点亮相应的交通灯

      MOV   P0,#4CH

      MOV   32H,#4CH       ;;;存储交通灯状态

      MOV   P2,#15H

      MOV   33H, #15H      ;;;存储交通灯状态

DS_NE:DEC   31H            ;;;东西方向通行时间减一

      MOV   A,31H          ;;;把通行剩余时间送入显示存储单元

;;;;;;;;东西方向通行时间剩余4秒钟黄灯闪烁(程序注释与南北方向类似 略)

DS_20:CJNE  A,#4,DS_21   

      JB    EWF,DS_21

      MOV   P0,#51H

      MOV   32H, #51H

DS_21:CJNE  A,#3,DS_22

      JB    EWF,DS_22

      MOV   P0,#41H

      MOV   32H, #41H

DS_22:CJNE  A,#2,DS_23

      JB    EWF,DS_23

      MOV   P0,#51H

      MOV   32H, #51H

DS_23:CJNE  A,#1,DS_24

      JB    EWF,DS_24

      MOV   P0,#41H

      MOV   32H, #41H

;-----------------------------

DS_24:JNZ   DS_R             ;;;东西方向时间没有结束,返回

      CPL   EWF              ;;;对通行状态取反

      JNB   EWF,DS_2         ;;;东西方向通行时间到来,跳转

      MOV   31H,#80          ;;;东西方向通行结束,重新显示时间

      MOV   P0,#89H          ;;;点亮相应的交通灯

      MOV   32H, #89H

      MOV   P2,#29H

      MOV   33H, #29H

      AJMP  DS_R    

DS_1: MOV   30H,#80          ;;;南北通行时间结束,重新对显示存储单元赋值    

      MOV   P0,#89H          ;;;执行转弯状态1

      MOV   32H, #89H

      MOV   P2,#26H

      MOV   33H, #26H

      AJMP  DS_NE           

DS_2: MOV   31H,41H         ;;;东西方向开始通行,赋值予显示存储单元

      MOV   P0,#61H         ;;;点亮相应的交通灯

      MOV   32H, #61H

      MOV   P2,#15H

      MOV   33H, #15H

DS_R: SETB  TR0

      POP   PSW             ;;;恢复现场

      POP   ACC

      RETI

;/////////////紧急中断处理程序

URZD: PUSH  ACC             ;;;保护现场

      PUSH  PSW

      CLR   IE0             ;;;清除中断标志位

      CLR   TR0             ;;;关定时器

      CPL   URF             ;;;紧急事件标志位

      JB    URF,UR_CON      ;;;紧急结束;跳转

      MOV   P0,#49H         ;;;各路口灯全显示红灯亮

      MOV   P2,#15H

      AJMP  UR_R

UR_CON:SETB  TR0            ;;;恢复正常交通

      MOV   A,32H

      MOV   P0,A

      MOV   A,33H

      MOV   P2,A

UR_R: POP   PSW             ;;;恢复现场

      POP   ACC

      RETI     

;////////////查表指令

TAB:  DB  3FH,  06H,  5BH,  4FH,  66H,  6DH

      DB  7DH,  07H,  7FH,  6FH

 

;//////////延时5ms与1ms

D5MS:  MOV    R7,#5

D1MS:  MOV    R7,#10

       MOV    R6,#50

L1:    DJNZ   R6,$

       DJNZ   R7,L1

       RET

       END

 

  评论这张
 
阅读(2241)| 评论(3)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017