基于51单片机的交通灯设计论文.doc

上传人:精*** 文档编号:833675 上传时间:2023-09-07 格式:DOC 页数:33 大小:194KB
下载 相关 举报
基于51单片机的交通灯设计论文.doc_第1页
第1页 / 共33页
基于51单片机的交通灯设计论文.doc_第2页
第2页 / 共33页
基于51单片机的交通灯设计论文.doc_第3页
第3页 / 共33页
基于51单片机的交通灯设计论文.doc_第4页
第4页 / 共33页
基于51单片机的交通灯设计论文.doc_第5页
第5页 / 共33页
点击查看更多>>
资源描述

1、项目设计报告(电类)大 纲1 概述(系统基本功能描述) 本制作模拟东西、南北两干道交于一个十字路口,各干道有一组红、绿、黄三色的指示灯,指挥车辆和行人的安丘按通行。红灯禁止通行,绿灯亮允许通行。黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃亮时间为东西,南北两干道的公共停车时间。东西路口红灯亮,南北路口绿灯亮,同时开始25s倒计时。25s倒计时结束后开始5s倒计时,南北铝扣绿灯闪烁,计时至最后2s时,南北路口黄灯亮。完成一次这样的循环要30s。30s结束,南北路口红灯亮,东西路口绿灯亮,并重新30s倒计时,依次循环。本系统由5V稳压直流电源供电,通过8051单片机输入程序控制交通灯的亮暗时

2、间及亮暗方式,简单实用适合实际生活中的广泛使用。 2总体设计1.1 系统功能及技术指标(分类细化系统功能和技术指标) 系统功能为:要求由5V直流稳压电源供电,由算法控制东西路口红灯亮,南北路口绿灯亮,同时开始25s倒计时。25s倒计时结束后开始5s倒计时,南北铝扣绿灯闪烁,计时至最后2s时,南北路口黄灯亮。完成一次这样的循环要30s。30s结束,南北路口红灯亮,东西路口绿灯亮,并重新30s倒计时,依次循环。1.2 系统构成(尽量采取图示描述) 由5V直流稳压电源,8051单片机,SR锁存器,发光二级管,晶振及数码管等元器件组成。1.3 主要设备及元器件选型(说明选择依据)由5V直流稳压电源:普

3、通5V直流稳压电源即可;单片机:常用8051或8052SR锁存器:普通14脚SR锁存器即可晶振:12M发光二级管:普通发光二级管红,黄,绿数码管:LG3641电阻:10K电阻及300欧电阻若干电容:22pF电容及CT81电解电容1.4 系统核心处理策略(控制策略、信号处理方法等) 主要是电路设计正确及程序编写无误。起初对PCB板进行调试,确保焊接无误及电路连接正确。再通过编写程序控制灯的闪亮时间及方式直至符合要求。1.5 系统软硬件功能划分硬件部分: 计时部分 信号灯显示部分软件部分: 计时部分控制 信号灯显示次序控制1.6 其他(人机交互、结构设计等) 有复位按键,选通按键详细设计 1.7

4、硬件设计1.7.1 输入与输出(确定输入、输出性质、数量和指标要求) 输入为复位及选通开关 输出有计时输出及交通灯模拟信号输出 交通灯信号由两组红黄绿LED灯代替 计时部分由数码管显示,由于硬件限制,计时部分只能用于东西干道计时1.7.2 功能划分(以框图形式表示)1.7.3 子系统1(元器件选型、硬件原理及功能描述)25s 3s 2s 25s 3s 2s 东西通道 红灯亮 红灯亮 红灯亮 绿灯亮 绿灯闪 黄灯亮 南北通道 绿灯亮 绿灯闪 黄灯亮 红灯亮 红灯亮 红灯亮 1.7.4 子系统2(根据系统划分确定小节数)1.7.5 系统原理图及元器件清单1.7.6 PCB设计1.7.7 系统硬件资

5、源清单及价格名称规格数量单价格备注89S51112数码管四位44电容22pf40.15晶振12M12锁存器74HC57322微动开关80.25自锁开关22发光二极管 红,黄,绿6个0.1电阻10k 7个1.8 结构设计3调试与测试1.9 调试(主要控制参数或策略确定方法、实验结果、出现问题与解决方法) 针对单片机P1口调试交通灯信号,使其预定目标显示 针对单片机P0口和P1口调试数码管显示部分,使其按预定 实现倒计时1.10 测试(测试内容及结果) 1信号显示是否与计时同步 2 LED显示顺序是否正确 3 计时是否正确2 结论(是否达到系统设计目标、存在问题及原因) 通过测试交通灯系统能够符合

6、要求,完成亮灯转换及时间计数要求3 感想工程综合实训具有很强的实践性质,虽然有时比较辛苦,但让我们获得的是收获的快乐。在这综合实训期间,我们有太多的担心与害怕,遇到了太多的挫折,中途有好多次都有放弃的念头,印象最深的是我们调电路的那几天,下午饭基本上没有吃过,为了查清楚某一部分的原理,我们晚上2点多钟才睡觉,为了写项目设计说明书我们熬夜到很晚。但值得庆幸的是,我们坚持下来了,并且获得了成功,心里有种小小的成就感。从中我们学到了很多了知识,没有了担心与害怕并且学会了坚持。当然,这与老师和同学的帮助分不开。自从做“线性稳压电源”这个项目以来,每天都是匆忙而规律的,苦恼、欢笑,失败、成功伴随着我们工

7、训的点点滴滴。虽然我们小组只有两个女生,但是我们共同努力,克服了许许多多的困难,一直在努力让自己做到最好。从最开始的确定组员和选定题目,到后来的设计电路,购买元器件,再到安装PCB板子、安装以及调试,虽然辛苦但收获很多,看到我们两个辛苦做出来的成果,心里真的很高兴。工程实训不仅让我们学到了很多课堂上学不到的东西,而且开拓了我们的视野,增长了见识,为我们以后更好的把所学知识运用到实际工作中打下坚实的基础。经过这次实训,让我们从实践中对自己所学专业获得了一个感性的认识,为今后专业的学习打下坚实的基础。作为一名工科学生,掌握生产实践基本知识和加强动手能力是十分必要的,我们的汗水与心血将会见证我们的成

8、功。程序清单:#include unsigned char code dis_721=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82, 0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1, 0x86,0x8e,0xbf,0x89,0x8c,0x00,0xff;/共阳数码管 段码 unsigned char data disbuf6=0x00,0x00,0x00,0x00,0x00,0x00;/显示缓冲区:时分秒使用 unsigned char data count_timedx=2,10,5,10,25; /东西方向倒计时时间 unsigned char

9、 data count_timenb=2,25,10,5,10; /南北方向倒计时时间 unsigned char data Hour=14,Minite=06,Second=0,Halfsec=0; /定义时钟位 unsigned char xdata *ledaddr=0x2000; /锁存器选通地址 unsigned char data Ms=0,Lightcode=0,Light_step,Led_step,Light_num; unsigned int data Fault_dx=0,Fault_nb=0,Fault_total=0,Countdx=0,Countnb=0; sbit

10、 p10=P10; /第0位数码管位控制端 sbit p11=P11; /第1位数码管位控制端 sbit p12=P12; /第2位数码管位控制端 sbit p13=P13; /第3位数码管位控制端 sbit p14=P14; /第4位数码管位控制端 sbit p15=P15; /第5位数码管位控制端 sbit p16=P16; /发光二极管选通 sbit p17=P17; /按键选通 sbit p33=P33; /k1键 用于切换四种功能 /*/ /*1毫秒延时函数*/ void delay1ms(int t) unsigned int i,j; for(i=0;it;i+) for(j=0

11、;j120;j+) ; /*/ /*键盘扫描函数*/ unsigned char getkey(void) unsigned char Yiwei; unsigned char test=0x00,tim; *ledaddr=test; if(p17=0 & tim=0) /判断是否有按键按下 p17=1; tim=1; test=0xfe; delay1ms(5); for(Yiwei=0;Yiwei8;Yiwei+) /处理按键 *ledaddr=test; if(p17=0)break; else test=(test=4)&(Light_step=1)&(Light_step4) Li

12、ght_num=0; if(key3=5) /KL2键用于修改东西方向倒计时,加1 count_timedxLight_num+; if(count_timedxLight_num=99) count_timedxLight_num=99; if(key3=1)/KL6键用于修改东西方向倒计时,减1 count_timedxLight_num-; if(count_timedxLight_num=99) count_timenbLight_num=99; if(key3=2)/KL3键用于修改南北方向倒计时,减1 count_timenbLight_num-; if(count_timenbL

13、ight_num9) Ms=0; Halfsec+; /计时半秒 if(Halfsec=2) Halfsec=0; Second+; /计时一秒 Countdx-; /东西、南北倒计时减一 Countnb-; if(Second=60) Second=0; Minite+;/计时一分 if(Minite=60) Minite=0; Hour+; /计时一小时 if(Hour=24) Hour=0; if(Countdx=0)|(Countnb=0) /转换交通灯显示状态 Light_step+; if(Light_step6) Light_step=1; if(Countnb=0) Count

14、nb=count_timenbLight_step;/东西为红灯,南北绿、黄、左切换 if(Countdx=0) Countdx=count_timedxLight_step;/南北为红灯,东西绿、黄、左切换 /*/ /*外部中断1服务函数*/ void int_1(void) interrupt 2 /数码管显示状态切换 EX1=0; /关中断 if(Led_step4) Led_step+; if(Led_step=4) Led_step=0; EX1=1;/开中断 /*串行口中断服务函数*/ void ser_put(void) interrupt 4 /上位机发出字符c,则清违章记录,

15、若发出g,则上传违章记录 if(RI=1) /接收到上位机发出的字符 RI=0; ACC=SBUF; /取字符 if(ACC=c) /清违章记录 Fault_dx=0; Fault_nb=0; else if(ACC=g)/上传违章记录 Fault_total=Fault_dx+Fault_nb; SBUF=Fault_total; if(TI=1) /发送中断 TI=0; /*/ /*8051初始化函数*/ void Istr(void) /*定时器初始化*/ TMOD=0x21;/定时器1工作于方式2,做波特率发生器;定时器0工作于方式1,做定时器 TH1=0xfa; /产生9.6kbit

16、/s波特率 TL1=0xfa; TH0=0x4c; /50ms TL0=0x00; /*串行通信初始化*/ SCON=0x50; PCON=0X80|PCON; /*启动定时器,开中断*/ ET1=0; /禁止定时器1中断 ET0=1; TR1=1; TR0=1; IT1=1; /设置外部中断为边沿触发 EX1=1; ES=1; EA=1; /*主函数*/ void main(void) Istr(); /调用初始化函数 Led_step=0; Light_step=0; Light_num=0; Countdx=count_timedx0; Countnb=count_timenb0; SB

17、UF=s; while(1) if(Led_step=0) /显示倒计时 displed(20,(Countdx/10),(Countdx%10),20,(Countnb/10),(Countnb%10); if(Led_step=1) /显示时钟 shuzizhong(); /调用数字钟函数 displed(disbuf5,disbuf4,disbuf3,disbuf2,disbuf1,disbuf0); if(Led_step=2) /修改倒计时数 change_time(); /调用修改倒计时时间函数 displed(Light_num,count_timedxLight_num/10,count_timedxLight_num%10,Light_num,count_timenbLight_num/10,count_timenbLight_num%10); if(Led_step=3) /显示并统计违章数 weizhang(); /调用违章记录函数 displed(15,Fault_dx/10,Fault_dx%10,15,Fault_nb/10,Fault_nb%10); displight(Light_step);/显示交通灯

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 大学论文

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922