第一篇:交通灯的设计心得体会总结
交通灯的设计心得体会总结
通过此次课程设计,使我更加扎实的掌握了有关电子线路方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过自己亲手实践,是我们掌握的知识不再是纸上谈兵。
过而能改,善莫大焉。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于游逆而解。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会极大人的认可。
课程设计诚然是一门专业课,给我很多专业知识以及专业技能上的提升,同时又是一门讲道课,一门辩思课,给了我许多道,给了我很多思,给了我莫大的空间。同时,设计让我感触很深。使我对抽象的理论有了具体的认识。通过这次课程设计,我掌握了NI Multisim软件的使用方法,了解了红绿灯的实际控制过程,以及如何提高电路的性能等等。
我认为,在这学期的实验中,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。
回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。
第二篇:交通灯的设计心得体会总结
通过此次课程设计,使我更加扎实的掌握了有关电子线路方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。过而能改,善莫大焉。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于游逆而解。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会极大人的认可。
课程设计诚然是一门专业课,给我很多专业知识以及专业技能上的提升,同时又是一门讲道课,一门辩思课,给了我许多道,给了我很多思,给了我莫大的空间。同时,设计让我感触很深。使我对抽象的理论有了具体的认识。通过这次课程设计,我掌握了NI Multisim软件的使用方法,了解了红绿灯的实际控制过程,以及如何提高电路的性能等等。
我认为,在这学期的实验中,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。
回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。
第三篇:交通灯设计心得体会
设计心得,一个简单的交通灯控制系统终于做完,总的来说就只实现两个功能,1 红绿黄灯的交替点亮。2,显示每种灯的倒计时,其实,就是一个的状态机,四个状态的变换,刚开始。我按照书上的程序将代码输进去,只输的过程中发现不少错误。定义灯的显示错了。多个地方判断语句IF的判断部分都写成赋值语句“《=”最严重的是最后的结果既然仿真不出来,我试图将错误的揪出来,没想到自己自己的思维也陷进去了。按着书上的注解一点都没错,就是仿真不出来。在这时候,我决定按照自己的思路来修改,书上的原程序有7个进程,我将,p5 p6,p7, 压缩成一个程序p5 ,同样也可以实现书要求的所有功能,书上的计数器是通过十六输出端,分别接到两个数码管,考虑到我们的实验板上带有bcd/七段led译码器。故我直接将计数器的输出,按照bcd码接到译码器上,做了这些算是有点点成就感,我觉得这个课设,不仅需要很好的dea基本功,更需要周密的思维。耐心和细心的做事态度,当看到大篇幅的程序是,正是验证理论知识的时刻,我是以为自己还有必要加强,平时判断上升沿时一般习惯用clk’event and(cke=1), 一下子看到wait语句时,我顿时不知书上的语句是对是错,只能查阅课本,做事态度面,我有时候特心急,一下子十几行的错误提示,看着心都凉了,要不是为了一组的荣誉的我真的没耐心看了,当把一条一条的错误改正后,才知道自己能行的。
我们设计的东西最终目标就是能真正应用到生活中去,因此,需要对平时的生活常识有一定了解,善于观察生活,看需要什么,就设计什么出来。也不一定要做已经有了的东西,或者自己写出更高效的程序。
总的来,我对这是很感兴趣的。我能在做的过程中找到快乐,觉得学到的东西有用处,我以后更加深刻地学习课本知识,做事会更有耐心,平时多关注生活,多思考。既然选择这个专业,就不仅学习专业知识,也要学习专业精神。
第四篇:单片机:交通灯控制系统设计
交通灯控制系统设计
摘要:本系统由单片机系统、键盘、LED 显示、交通灯演示系统组成。系统包括人行道、左转、右转、以及基本的交通灯的功能。系统除基本交通灯功能外,还具有倒计时、时间设置、紧急情况处理、分时段调整信号灯的点亮时间以及根据具体情况手动控制等功能。关键词:AT89S51,交通规则
一、方案比较、设计与论证 1 电源提供方案
为使模块稳定工作,须有可靠电源。我们考虑了两种电源方案
方案一:采用独立的稳压电源。此方案的优点是稳定可靠,且有各种成熟电路可供选用;缺点是各模块都采用独立电源,会使系统复杂,且可能影响电路电平。方案二:采用单片机控制模块提供电源。改方案的优点是系统简明扼要,节约成本;缺点是输出功率不高。综上所述,我们选择第二种方案。2 显示界面方案
该系统要求完成倒计时、状态灯等功能。基于上述原因,我们考虑了三种方案: 方案一:完全采用数码管显示。这种方案只显示有限的符号和数码字苻,无法胜任题目要求。
方案二:完全采用点阵式LED 显示。这种方案实现复杂,且须完成大量的软件工作;但功能强大,可方便的显示各种英文字符,汉字,图形等。
方案三:采用数码管与点阵LED 相结合的方法因为设计既要求倒计时数字输出,又要求有状态灯输出等,为方便观看并考虑到现实情况,用数码管与LED灯分别显示时间与提示信息。这种方案既满足系统功能要求,又减少了系统实现的复杂度。权衡利弊,第三种方案可互补一二方案的优缺,我们决定采用方案三以实现系统的显示功能。3 输入方案:
题目要求系统能手动设灯亮时间、紧急情况处理,我们讨论了两种方案: 方案一:采用8155扩展I/O 口及键盘,显示等。该方案的优点是:
使用灵活可编程,并且有RAM,及计数器。若用该方案,可提供较多I/O 口,但操作起来稍显复杂。
方案二: 直接在IO口线上接上按键开关。因为设计时精简和优化了电路,所以剩余的口资源还比较多,我们使用四个按键,分别是K1、K2、K3、K4。由于该系统对于交通灯及数码管的控制,只用单片机本身的I/O 口就可实现,且本身的计数器及RAM已经够用,故选择方案二。
二、理论分析与计算
1.交通灯显示时序的理论分析与计算
对于一个交通路口来说,能在最短的时间内达到最大的车流量,就算是达到了最佳的性能,我们称在单位时间内多能达到的最大车流为车流量,用公式:车流量= 车流 / 时间 来表示。
先设定一些标号如图2-1 所示。
说明:此图为直方图,上边为北路口灯,右边为东路口灯,下边为南路口灯,左边为西 路口灯。
图2-2 所示为一种红绿灯规则的状态图,分别设定为S1、S2、S3、S4,交通灯以这四 的状态为一个周期,循环执行(见图2-3)。
请注意图2-1b和图2-1d,它们在一个时间段中四个方向都可以通车,这种状态能在
一定的时间内达到较大的车流量,效率特别高。
依据上述的车辆行驶的状态图,可以列出各个路口灯的逻辑表,由于相向的灯的状态图
是一样的,所以只需写出相邻路口的灯的逻辑表;根据图2-3 可以看出,相邻路口的灯它
们的状态在相位上相差180°。因此最终只需写出一组S1、S2、S3、S4的逻辑状态表。
如表2-1 所示。
表中的“×”代表是红灯亮(也代表逻辑上的0),“√”是代表绿灯亮(也代表逻辑上 的1),依上表,就可以向相应的端口送逻辑值。2.交通灯显示时间的理论分析与计算
东西和南北方向的放行时间的长短是依据路口的各个方向平时的车流量来设定,并且
S1、S2、S3、S4各个状态保持的时间之有严格的对应关系,其公式如下所示。T-S1+T-S2=T-S3 T-S2=T-S4 T-S1=T-S3 我们可以依据上述的标准来改变车辆的放行时间。按照一般的规则,一个十字路口可分
为主干道和次干道,主干道的放行时间大于次干道的放行时间,我们设定值时也应以此为参 考。
三、电路图及设计文件 1.灯控制电路设计
由于32个LED 来实现红绿灯状态,若直接接在单片机的口线,路口倒计时的显示就不
能实现,所以本次设计中采用一种新型的电路如图3-1 所示。
图中74LS04的作用是倒相和驱动,它输出的电流大约48mA,实际测试发现足以满足要
求,而且发光管也能达到足够的亮度。
观察图可以看出:两组发光管(一组红、一组绿)由于反相器的作用,其逻辑状态恰恰 相反。
图中和电阻串联的二极管的作用是为了分压,防止因上下两组发光管分压不同导致逻辑 的错误。
共四组和上述相同的电路分别代表东西南北四个方向的红绿灯,使用两片74LS04 作为 驱动。
2.倒计时显示电路设计
前面已经分析过相向的灯的状态和倒计时都是相同的,所以为了节省,采用两组四个数码管
作为倒计时的显示;同时为了节省口资源,采用串口显示的方式驱动数码管。见图3-2 所 示。
四、程序设计思路与流程图 1.主程序流程图
主程序中主要是一个死循环,不停的循环四个状态,如图4-1 所示。
2.按键子程序流程图
它包含倒计时调整和紧急状态两个状态。
主程序中放了一个按键的判断指令,当有按键按下的时候,程序就自动的跳转到按键子
程序处理。当检测到K2键按下的时候就自动返回到主程序。当出现紧急的情况的时候,按下K3或者K4 就切换到紧急状态,当紧急事件处理完毕 的时候,按下K2,就可以返回正常状态。
五、测试、数据及结果分析 1.状态灯显示测试
当电路连接完毕后,将写好的测试程序刷写到芯片内,K1 和K2分别给端口送高电平和
低电平,通电即可检测。2.数码管的测试
将串口的和电路板上的接口连接,将写好的测试程序刷写到芯片内,开电源即可测试。
3.整体电路测试
系统上电,刷写好程序即可开始测试,观测一个周期(共计S1~S4四个状态,默认140 秒)灯的显示状态是否正常,同时观察倒计的计数是否正常。
六、总结
由于使用的是单片机作为核心的控制元件,使得电路的可靠性比较高,功能也比较强大,而且可以随时的更新系统,进行不同状态的组合。
但是在我们设计和调试的过程中,也发现了一些问题,譬如红灯和绿灯的切换还不够迅
速,红绿灯规则不效率还不是很高等等,这需要在实践中进一步完善。附录 系统总体电路图
1.满足南北向红绿灯亮,东西向红灯亮,占25秒——南北向黄灯亮,东西向红灯亮,占5秒——南北向红灯亮,东西向绿灯亮,占25秒——南北向红灯亮,东西向黄灯亮,占5秒。如此循环,周而复始。2.十字路口要有数字显示,提示行人把握时间:当某方向绿灯亮时,置显示器为24,然后以每秒减1计数方式工作,直到减为0,绿灯灭,黄灯亮。黄灯灭,红灯亮时,再次置显示器为29,并开始减计数,直到为0,十字路口红绿灯交换,完成一次工作循环。
3.可手动调整和自动调整,夜间为黄灯闪耀。下面是一个单片机交通灯程序 /*
****************************************************************************************** * *
* Keil C 89S51 交通信号控制程序 * *(C)版权所有 Dai_Weis@hotmail.com * * *
****************************************************************************************** */
#include “reg51.h” #define UINT unsigned int #define ULONG unsigned long #define UCHAR unsigned char /*
信号灯变量
南北方向绿灯
sbit n_bike_g = P1^0;//自行车
sbit n_right_g = P1^1;//右转
sbit n_up_g = P1^2;//直行
sbit n_left_g = P1^3;//左转 调头
南北方向红灯
sbit n_bike_r = P1^4;//自行车
sbit n_right_r = P1^5;//右转
sbit n_up_r = P1^6;//直行
sbit n_left_r = P1^7;//左转 调头 南北方向黄灯
sbit n_bike_y = P3^0;//自行车
sbit n_right_y = P3^1;//右转
sbit n_up_y = P3^2;//直行
sbit n_left_y = P3^3;//左转 调头
东西方向绿灯
sbit e_bike_g = P2^0;//自行车
sbit e_right_g = P2^1;//右转
sbit e_up_g = P2^2;//直行
东西方向红灯
sbit e_bike_r = P2^4;//自行车
sbit e_right_r = P2^5;//右转
sbit e_up_r = P2^6;//直行
东西方向黄灯
sbit e_bike_y = P3^4;//自行车
sbit e_right_y = P3^5;//右转
sbit e_up_y = P3^6;//直行
*/ //延时
void delay(UINT t, UINT s){ while(t){ UINT i;
for(i = 0;i < s;i++){ } t--;} }
//信号灯状态
void time_x(UCHAR P_P1, UCHAR P_P2, UCHAR P_P3){
P1 = P_P1;P2 = P_P2;P3 = P_P3;delay(150, 65535);}
void time_s(UCHAR P_P1, UCHAR P_P2, UCHAR P_P3, UCHAR P_P11, UCHAR P_P22){ UINT i;
for(i = 0;i < 3;i ++){
P1 = P_P1;P2 = P_P2;delay(5, 65535);P1 = P_P11;P2 = P_P22;delay(5, 65535);}
P1 = P_P1;P2 = P_P2;P3 = P_P3;delay(10, 65535);} //主程序
void main(){
P1 = P2 = P3 = 0x0;while(1){
time_x(0xA5, 0x38, 0x0);
time_s(0xA4, 0x38, 0x1, 0xA5, 0x38);time_x(0x96, 0x52, 0x0);
time_s(0x92, 0x52, 0x4, 0x96, 0x52);time_x(0x5A, 0x52, 0x0);
time_s(0x50, 0x50, 0x2A, 0x5A, 0x52);time_x(0xF0, 0x25, 0x0);
time_s(0xF0, 0x24, 0x20, 0xF0, 0x25);time_x(0xD2, 0x16, 0x0);
time_s(0xD0, 0x10, 0x62, 0xD2, 0x16);} }
给你一个定时控制的信号系统,我只做的简单的测试,至于延时我用的软件,你自己想办法。^_^
Dai_Weis 于 2005-5-4 13:43:23 重新给你说明
/*
*********************************************************************************** * *
* Keil C AT89S51 交通信号控制程序 * *(C)版权所有 Dai_Weis@hotmail.com * * *
*********************************************************************************** 开发说明:
固定时间信号变换,南北设置调头、左传、直行、右转、自行车。
东西设置左传、直行、右转、自行车。
时序状态:
红 绿 红 绿
序号 左 前 右 自 左 前 右 自 前 右 自 前 右 自1 0 1 0 0 1 0 1 1 1 1 0 0 0 2 1 0 0 1 0 1 1 0 1 0 1 0 1 0 3 0 1 0 1 1 0 1 0 1 0 1 0 1 0 4 1 1 1 1 0 0 0 0 0 1 0 1 0 1 5 1 1 0 1 0 0 1 0 0 0 1 1 1 0 */
另外修正个错误
while(1){
time_x(0xA5, 0x70, 0x0);time_s(0xA4, 0x70, 0x1, 0xA5, 0x70);
材料: 1、89S51 11.0592M 晶振
1K电阻、10UF电容
12个灯,红、黄、绿各四个,12个1K电阻
,十字路口嘛。蜂鸣器一个。
按键一个,按键复位
采用AT89s51型号的单片机,由于交通十字路口的对称性,所以一个引脚可以同时控制两个灯,将发光二极管分别接到P1各个引脚,在其中加入一个时振荡当电路,来控制时间,在P3.0引脚接入蜂鸣器只黄灯亮的时候发出声响,这里我们让每次黄灯亮的时候发出六声响,通过C程序的控制就可以实现,每次循环是10秒。2、9cm*15cm万用板 1片 单片机及IC座 1套 12M晶振 1只 22P电容 2只 10uF电容 1只 10K电阻 1只 1K排阻 1只 两位一体数码管 2只 DC座 1只 自锁开关 1只
发光二极管红绿黄
各4只 按键 7只 USB电源线 1条 导线
若干
1、基于51系列单片机(型号:STC89C52、AT89C51/C52、AT89S51/S52,随机选择,如有特
殊要求请与店主讨论)设计实现。(以上几种单片机全部为51系列单片机,除了名字不一样外,功能及应用完全一样,互相
兼容)
2、两个两位一体数码管显示东西、南北方向时间。
3、四方向各有红绿黄三颗灯。
4、七个按键操作,分别是:禁止通行、东西通行、南北通行、时间加、时间减、切换方向、确认。
第五篇:基于单片机的交通灯设计
基于单片机的交通灯设计
设计程序:
#include
//共阳极
uchar
code table1[5]={0xf3,0xf5,0xde,0xee,0xf6};/*各种状态下红绿灯段选码, 状态1:A绿灯,B红灯;状态2:A黄灯亮,B红灯;状态3:A红灯,B绿灯;状态4:A红灯,B黄灯亮;状态5:A红灯,B红灯;*/ uchar
code tab[4]={0x1E,0x2D,0x4E,0x8D};//数码管显示位选码 sbit key1=P1^0;//放行A sbit key2=P1^1;//放行B sbit key3=P1^2;//禁止通行
uchar EW=40,SN=30,K1_T=15,K2_T=15,K3_T=20;//初始化交通灯时间 uchar count;//计时中断次数 uchar i,j;//循环控制变量 char Timer;//子程序说明语句 void Process();void Display(uchar j);void Delay(uchar a);/**************************主程序**************************/ main(){ IP=0X02;//设置定时器中断为高优先级//成为中断嵌套
TMOD=0x01;//定时器工作方式
TH0=0x3C;//定时器初始化
TL0=0xB0;IT0=1;//中断触发方式为下降沿触发
EA=1;//CPU开中断
ET0=1;//开定时中断
TR0=1;//启动定时
EX0=1;//启动外部中断0 while(1)
{
Process();
} } /*************************交通灯显示子程序*************************/ void Display(uchar j)//j控制显示table中连续位的起始点 {
char h,l;
h=Timer/10;//EW通行时间十位
l=Timer%10;//EW通行时间个位
for(i=0;i<4;)//按位显示通行状况及时间 {
P0=table1[j];//通行状况显示
P3=tab[i];//位选显示
i++;
//j++;
if(i%2)//两位计时显示
{
P2=table[l];
Delay(400);
}
else
{
P2=table[h];
Delay(400);
} } Delay(5);
//设置扫描时间
} /*********键控*******/ void Keyboard()interrupt 0 using 0 {
if(key1==0)
{ Timer=K1_T;
while(Timer>0)
{
j=0;
Display(0);
//显示一次
}
if(key2==0)
{
Timer=K2_T;
while(Timer>0)
{
j=2;
Display(j);
}
if(key3==0)
{
Timer=K3_T;
while(Timer>0)
{
j=4;
Display(j);
}
} } /**************************延时子程序**************************/ void Delay(uchar a)//循环a次 { uchar x;x=a;while(x--){;} }
/************************TO计时中断服务程序************************/ void timer0(void)interrupt 1 using 1//T0中断 { TH0=0x3C;TL0=0xB0;//定时计数初值
count++;//中断溢出一次count+1 if(count==20){
Timer--;
count=0;//中断次计数,count回,倒计时时间
} } /**************************亮灯控制**************************/ void Process(){ Timer=EW;//初始化方向通行时间
while(Timer>3)//状态:A绿灯,B红灯;{
j=0;
Display(j);//调用显示函数
} while(Timer>0)//状态:A黄灯亮,B红灯;{
j=1;
Display(j);
} Timer=SN;while(Timer>3)//状态:A红灯,B绿灯;{
j=2;
Display(j);} while(Timer>0)//状态:A红灯,B黄灯亮;{
j=3;
Display(j);
}
}
电路图如下: