交通灯控制系统设计与仿真毕业论文(编辑修改稿)内容摘要:

5 仿真图 我们用 proteus 软件对此原理图进行仿真。 仿真图如下: 2. 4pcb 图 经过布线工作后我们得到以下的 pcb图: 第三章 交通信号灯控制系统的设计与程序编写 十字路口交通信号灯具体的控制要求 (1) 交通信号灯分布于东南西北,每个路口均有三个。 南北方向绿灯和东西方向的绿灯不能同时亮;如果同时亮,则应自动立即关闭信号灯系统,并立即发出报警信号。 系统工作后,首先南北红灯亮并维持 30s;与此同时,东西绿灯亮,并维持 25s 时间,到 25s时,东西绿灯熄灭。 在东西绿灯熄灭时,东西黄灯亮并维持 5s,然后东西黄灯熄灭,东西红灯亮,同时南北红灯熄灭,南北绿灯亮;东西红灯亮并维持 30s;与此同时,南北绿灯亮并维持 15s;然后,南北绿灯熄灭南北绿灯熄灭时,南北黄灯亮维持 5s后熄灭;同时南北红灯亮,东西绿灯亮。 至此,结束一个工作循环 ,如下交通信号灯变化表: (2)在交通信号灯亮和闪烁的同时,路口设有两位七段码的显示器倒数计时,让车辆行人能够清楚地知道再过多久信号灯就会发生变化。 以便于司机和行人能够在有限的时间内准确的通行。 软件设计流程 ( 1)软 件总体设计主要完成各部分的软件控制和协调。 本系统主程序模块主要完成的工作是对系统的初始化,发送显示数据,同时对键盘进行扫描,等待外部中断,以及根据所需要的功能进行相应的操作。 ( 2)交通灯根据其显示情况可以分为四个状态,可以通过定时来控制每个状态的时间;通过定时也可以向 LED 数码管中每隔 1秒送一个数,显示该状态剩余的时间。 其流程交通信号灯变化表 东西 绿灯亮 黄灯亮 红灯亮 25S 5S 20S 南北 红灯亮 绿灯亮 黄灯亮 30S 15S 5S 图如图所示。 图 31 主程序框图 设置定时,显示初始化 南北绿灯亮,东西红灯亮,延时 南北黄灯闪烁,东西红灯亮,延时 南北红灯亮,东西绿灯亮,延时 南北红灯亮,东西黄灯闪烁,延时 开 始 软件设计 交通灯定时器模块 AT89S52 单片机内部有 3个定时器 T0, T1和 T2,本次设计中使用 T0 工作在方式 1,即 16 位定时器,定时 50ms, 20次中断产生秒信号,从而控制红绿灯的点亮时间。 工作方式寄存器 TMOD 用来设置 T0、 T1 的工作方式。 这次实习中设置 TMOD=0x01,即T0工作于方式 0( 16位定时器)。 内部定时器 /计数器用作定时器时,是对机器周期计数,每个机器周期的长度是 12 个振荡周期。 定时常数的设置可用一下方式计算: 机器周期 =12/12MHz=1us ( 65536定时常数) *=50ms 所以定时常数是 50000。 第四章 调试 调试图: 实物图: 第五章 体会 值此论文完成之际,谨向我们的导师老师表示衷心的感谢。 我们六个同学分工合作,在整个项目中学会了 multisim, keil 等电路相关软件的使用,大致掌握了电路设计的基本方法。 在项目进行中由于所学课程限制,遇到了诸多困难,通过自学也客服了许多。 总之,在整个项目中,学到的不仅仅是制作一个电子产品,更多的是对电子设计的兴趣和学到的创新精神。 附件一:源程序代码 include //调用单片机头文件 define uchar unsigned char //宏定义 uchar代替 unsigned char。 define uint unsigned int //宏定义 uint用来定义无符号整型数。 include //数码管段选定义 0 1 2 3 4 5 6 7 8 9 uchar code smg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, // A B C D E F 不显示 0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff}。 //断码 uchar dis_smg[8] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8}。 uchar smg_i = 4。 //显示数码管的个位数 //数码管位选定义 sbit smg_we1 = P2^0。 //数码管位选定义 sbit smg_we2 = P2^1。 sbit smg_we3 = P3^6。 sbit smg_we4 = P3^7。 char dx_s = 0。 //东西 南北 倒计时变量 sbit dx_red = P2^4。 //东西红灯 sbit dx_green = P2^3。 //东西绿灯 sbit dx_yellow = P2^2。 //东西黄灯 sbit nb_red = P2^7。 //南北红灯 sbit nb_green = P2^6。 //南北绿灯 sbit nb_yellow = P2^5。 //南北黄灯 uchar flag_jtd_mode。 //交通灯的模式 根据时间 bit flag_1s = 0。 bit flag_500ms。 bit flag_dx_nb。 //东西南北模式 uchar flag_5m_value。 uchar i。 uchar flag_alarm。 //模式 uchar dx_time = 30,nb_time = 20。 //东西、南北的时间 uchar flag_jdgz。 //交通管制 /***********************数码位选函数 *****************************/ void smg_we_switch(uchar i) { switch(i) { case 0: smg_we1 = 0。 smg_we2 = 1。 smg_we3 = 1。 smg_we4 = 1。 break。 case 1: smg_we1 = 1。 smg_we2 = 0。 smg_we3 = 1。 smg_we4 = 1。 break。 case 2: smg_we1 = 1。 smg_we2 = 1。 smg_we3 = 0。 smg_we4 = 1。 break。 case 3: smg_we1 = 1。 smg_we2 = 1。 smg_we3 = 1。 smg_we4 = 0。 break。 } } /******************把数据保存到单片机内部 eeprom 中 ******************/ void write_eeprom() { SectorErase(0x2020)。 byte_write(0x2020, dx_time)。 byte_write(0x2020, nb_time)。 byte_write(0x2058, a_a)。 } /******************把数据从单片机内部 eeprom 中读出来 *****************/ void read_eeprom() { dx_time = byte_read(0x2020)。 nb_time。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。