51单片机控制的交通灯系统实验报告_第1页
51单片机控制的交通灯系统实验报告_第2页
51单片机控制的交通灯系统实验报告_第3页
51单片机控制的交通灯系统实验报告_第4页
51单片机控制的交通灯系统实验报告_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、系统实验报告系统实验报告 基于基于 51 单片机的交通灯设计单片机的交通灯设计 专 业: XX 学 生 姓 名: xx XX 学 号: 指 导 教 师: wwwwwwwwwww 2000 年 x 月 x 日 目目 录录 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 调试

2、及性能分析调试及性能分析.6 5.1 调试分析.6 5.1.1 软件调试.6 5.1.2 硬件调试.6 5.1.3 系统功能调试.6 6 心得体会心得体会.6 参考文献参考文献.8 附录附录 1 系统原理图系统原理图.9 附录附录 3 程序清单程序清单.10 附录附录 3 元器件清单元器件清单.14 1 设计任务和性能指标设计任务和性能指标 1.1 设计任务 利用单片机完成交通信号灯控制器的设计,该交通信号灯控制器由一条主干道 和一条支干道汇合成十字路口,在每 个入口处设置红、绿、黄三色信号灯, 红灯亮禁止通行,绿灯亮允许通行, 黄灯亮则给行驶中的车辆有时间停在 禁行线外。用红、绿、黄发光二极

3、管作 信号灯。如图上图所示。设东西向为 主干道,南北为支干道。 1.2 性能指标 1. 状态 1:仅亮灯,数码管不工作。 按下键 4,红/黄/绿三色灯交替亮: 红(20 秒)黄(闪烁)(5 秒)绿(20 秒) 黄(闪烁)(5 秒)红 2. 状态 2:灯和数码管相结合,模拟十字路口的交通灯 在以上功能的基础上数码管倒计时显示时间。 南 北 东 西 2 设计方案设计方案 2.1 任务分析 模拟交通灯控制器就是使用单片机来控制一些 LED 和数码管,模拟真实交通灯 的功能。红、黄、绿交替闪亮,利用数码管倒计数显示间隔等,用于管理十字 路口的车辆及行人交通,计时牌显示路口通行转换剩余时间等 2.2 方

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

5、图如图 1 所示。软件可由汇编语言完成,也可由 C 语言完成。 软件设计可以分为以下几个功能模块: 主程序:初始化及键盘监控。 计时程序模块:为定时器的中断服务子程序,完成 0.1 秒(或其他时间)和 1 秒的时间 定时。 显示程序模块:完成 60 个发光二极管(实际上只需驱动 30 个)和 8 个 LED 数码管的 显示驱动。 程序流程图见下一页: 程序流程图 3 系统硬件设计系统硬件设计 3.1 单片机的最小系统 ATMEL 公司生产的 AT89S52 单片机它是硬件电路的核心部分,时钟电路晶 振使用 12MHz,复位电路采取按键复位方式。具体连接图 3.1 和图 3.2。 单片机系统的时

6、钟电路 开始 初始化 判断当前状态 调用正常 运行子程序 调用紧急 状态子程序 单片机系统的复位电路 3.2 电源电路设计 电源用 5V 直流变压器直接供电。 3.3 数码管显示电路 显示电路采用 8 个共阳数码管,P1 口作为数码管的输入, P0.4、P0.5、P0.6 P0.7 分别控制东西南北四路数码管的位选端 C1,C2,C3,C4。 数码管显示电路(上图是共阴数码管) 3.4 信号灯控制电路 应急电路 4 系统软件设计系统软件设计 4.1 主程序设计 系统程序流程图 开始 参数初始化 显示子程序 中断处理 紧急中断子程序 5 调试及性能分析调试及性能分析 5.1 调试分析 5.1.1

7、 软件调试软件调试 软件调试主要是利用 proteus 仿真软件完成电路的搭建,运行以发现设计中 的错误及时改正。 5.1.2 硬件调试硬件调试 硬件调试主要是检测硬件电路是否有短路、断路、虚焊等。具体步骤及 测试结果如下: (1)检查电源与地线是否全部连接上,用万用表对照电路原理图测试各导 线是否完全连接,对未连接的进行修复。 (2)参照原理图,检查各个器件之间的连接是否连接正确,是否存在虚焊, 经测试,各连接不存在问题。 (3)以上两项检查并修复完后,给该硬件电路上电,电源指示灯点亮。 5.1.3 系统功能调试系统功能调试 通过软件仿真显示,系统基本能完成要求。 6 心得体会心得体会 这次

8、系统实验历时两周的时间,在这实验过程里我们巩固了从编程、焊板 到调试的专业知识,逻辑思维和动手能力都得到了很大的提高。 对于交通灯这个题目,由于以前学单片机这个课程时,做过类似相关的实验, 觉得这个比较简单而且做出的东西也比较直观,查阅了大量的资料,在老师的 讲解帮助下,我们对如何通过单片机控制交通灯这个题目,有了进一步的理解。 要解决的主要问题就是程序的设计了,虽然感觉交通灯程序没什么难的,就 是数码管倒计时显示加几个闪烁的二极管就完事,但是也许是起初想的太简单, 设计时到了细节处,也出了不少问题,而且很难被检查出来,但是最后经过我 们的不断努力,还是写出来正确的代码。 上周终于拿到了 PC

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

10、就存在错误。 通过这次系统实验,对以前学过的知识进行了巩固,加深了理解,提高了 应用的能力,而且提高了我们的发现、分析、解决问题的能力,同时提高了大 家对专业的认识及兴趣,对于我们工科生来说,对以后就业很有帮助。 最后,尤其要感谢 xx 和 xx 老师的指导和帮助,我们才得以顺利完成这次 系统试验。 参考文献参考文献 1 邹丽新.单片微型机原理及应用苏州大学出版社,2006.12 2 彭伟.单片机 C 语言程序设计实训 100 例.北京:电子工业出版社,2009。8 附录附录 1 系统原理图系统原理图 1234 A B C D 4321 D C B A EA/VP 31 X1 19 X2 18

11、 RESET 9 RD 17 WR 16 INT0 12 INT1 13 T0 14 T1 15 P10 1 P11 2 P12 3 P13 4 P14 5 P15 6 P16 7 P17 8 P00 39 P01 38 P02 37 P03 36 P04 35 P05 34 P06 33 P07 32 P20 21 P21 22 P22 23 P23 24 P24 25 P25 26 P26 27 P27 28 PSEN 29 ALE/P 30 TXD 11 RXD 10 U1 AT89S51 XTAL1 11.0592 C5 20p C620p VCC 2 3 4 5 6 7 8 9 1

12、RP310K 2 3 4 5 6 7 8 9 1 RP4 10K 2 3 4 5 6 7 8 9 1 RP1 10KVCC VCC C12 22u R10 1K VCC VCC C7 470U C9 0.1U 1 2 3 J3 3 RST Vin 1 GND 2 Vout 3 U5 LM7805 SCK MOSI MISO AC AC + - D1 K1 K2 K3 K4 R1 1K LEDPower KEYRESET KEYAKEYBKEYCKEYD NUMA NUMB NUMC NUMD LED1 LED2 LED3 LED4 L1 L2 L3 L4 L5 L6 DOT KEYA KEYB

13、 KEYC KEYD R2 1K LED1 Q1 9013 VCC L1 R3 1K LED2 Q2 9013L2 R4 1K LED3 Q3 9013L3 R5 1K LED4 Q4 9013L4 R6 1K LED5 Q5 9013L5 R7 1K LED6 Q6 9013L6 e d vc1 c dp e d vc2 c dp e d vc3 c dp e d vc4 c dp f g a b f g a b f g a b f g a b LT 3 BI/RBO 4 RBI 5 g 14 f 15 e 9 d 10 c 11 b 12 a 13 D 6 C 2 B 1 A 7 U2 7

14、4LS47 g f e d c b a NUMA NUMB NUMC NUMD R20 150 R21 150 R22 150 R23 150 R24 150 R25 150 R26 150 Q7 9013 VCC LED1 Q8 9013LED2 Q9 9013LED3 Q10 9013LED4 vc1vc2vc3vc4 R27 150 dpDOT RXD TXD 1 2 3 4 5 J2 5 VCC GND MOSI MISO SCK 1 2 3 4 5 J1 5 VCC GND GND RXD TXD a bf c g d e DPY e 1 d 2 com 3 c 4 dp 5 b 6

15、 a 7 8 g 9 f 10 DS1 a bf c g d e DPY e 1 d 2 com 3 c 4 dp 5 b 6 a 7 8 g 9 f 10 DS2 a bf c g d e DPY e 1 d 2 com 3 c 4 dp 5 b 6 a 7 8 g 9 f 10 DS3 a bf c g d e DPY e 1 d 2 com 3 c 4 dp 5 b 6 a 7 8 g 9 f 10 DS4 系统原理图 附录附录 2 程序清单程序清单 ;- ;程序实现功能 ;西南北路口直行与转弯交替通行,数码管显示直行通行倒计时,红绿黄灯显示包括人行道 在内的道路交通状态。 ;某一方向道

16、路拥挤时,可以人工控制调节东西南北方向通行时间。 ;紧急情况时,各路口交通灯显示红灯,数码管保持数据不变。 #include #define uchar unsigned char #define uint unsigned int sbit key1=P10; sbit key2=P11; sbit key3=P12; sbit key4=P13; sbit smgwe1=P04; sbit smgwe2=P05; sbit smgwe3=P06; sbit smgwe4=P07; sbit smgdot=P27; sbit south_green=P20; sbit south_red=P

17、21; sbit south_yellow=P22; sbit east_green=P23; sbit east_red=P24; sbit east_yellow=P25; sbit num_a=P00; sbit num_b=P01; sbit num_c=P02; sbit num_d=P03; uchar count; uchar type=1; uchar num; uchar south_dispnum=10,east_dispnum=5; void delay_ms(uint z) uchar x,y; for(x=0;xz;x+) for(y=0;y123;y+); void

18、 timer0_init() TMOD=0 x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; ET0=1; EA=1; TR0=1; void display(uchar south_dispnum,uchar east_dispnum) uchar south_dispnum1,south_dispnum2; uchar east_dispnum1,east_dispnum2; south_dispnum1=south_dispnum/10; south_dispnum2=south_dispnum%10; east_dispnum1=ea

19、st_dispnum/10; east_dispnum2=east_dispnum%10; smgwe1=1; smgwe2=0; smgwe3=0; smgwe4=0; num_d=south_dispnum1/8; num_c=south_dispnum1%8/4; num_b=south_dispnum1%4/2; num_a=south_dispnum1%2; delay_ms(1); smgwe1=0; smgwe2=1; smgwe3=0; smgwe4=0; num_d=south_dispnum2/8; num_c=south_dispnum2%8/4; num_b=south

20、_dispnum2%4/2; num_a=south_dispnum2%2; delay_ms(1); smgwe1=0; smgwe2=0; smgwe3=1; smgwe4=0; num_d=east_dispnum1/8; num_c=east_dispnum1%8/4; num_b=east_dispnum1%4/2; num_a=east_dispnum1%2; delay_ms(1); smgwe1=0; smgwe2=0; smgwe3=0; smgwe4=1; num_d=east_dispnum2/8; num_c=east_dispnum2%8/4; num_b=east_

21、dispnum2%4/2; num_a=east_dispnum2%2; delay_ms(1); void traffic_light() switch(type) case 1:south_red=1; south_green=0; south_yellow=0; east_red=0; east_green=1; east_yellow=0; display(south_dispnum,east_dispnum); if(east_dispnum=0) east_dispnum=5; south_dispnum=5; type=2; break; case 2:south_red=1;

22、south_green=0; / south_yellow=0; east_red=0; east_green=0; / east_yellow=0; display(south_dispnum,east_dispnum); if(east_dispnum=0) south_dispnum=5; east_dispnum=10; type=3; break; case 3:south_red=0; south_green=1; south_yellow=0; east_red=1; east_green=0; east_yellow=0; display(south_dispnum,east_

23、dispnum); if(south_dispnum=0) south_dispnum=5; east_dispnum=5; type=4; break; case 4:south_red=0; south_green=0; / south_yellow=0; east_red=1; east_green=0; / east_yellow=0; display(south_dispnum,east_dispnum); if(east_dispnum=0) south_dispnum=10; east_dispnum=5; type=1; break; void main() timer0_init(); while(1) traffic_light(); void timer0_isr() interrupt 1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; count+; if(count=5) if(type=2) east_yellow=!east_yellow; if(type=4) south_yellow=!south_yellow; if(co

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论