太阳能红绿灯课程设计_第1页
太阳能红绿灯课程设计_第2页
太阳能红绿灯课程设计_第3页
太阳能红绿灯课程设计_第4页
太阳能红绿灯课程设计_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、一、任务设计一个使用太阳能供电的红绿交通灯。二、要求1. 基本要求1) 点亮交通灯。使用太阳能电板供电驱动红绿交通灯(led),点亮即可;2) 手动运行。使用按键控制模拟,符合实际交通灯闪烁变化,即四个方向的交通灯的红绿灯变换;3) 自动运行。使用MCU等嵌入式控制芯片自动控制led模拟交通灯的闪烁,允许此芯片使用外部供电; 4) 显示倒计时。使用MCU等嵌入式控制芯片显示红灯倒计时,黄灯倒计时,绿灯倒计时(四个方向其中一个方向即可)。2. 发挥部分1) 当基本要求2实现的情况下,手动运行,实现基本要求4的显示倒计时。2) 在不使用MCU等嵌入式控制芯片的情况下,实现基本要求3(交通灯闪烁)的

2、自动运行。3) 在不使用MCU等嵌入式控制芯片的情况下,实现基本要求4的显示倒计时。4) 设计使用太阳能供电的红绿交通灯,即不能使用任何外部供电。仅需实现基本要求3(交通灯闪烁)的自动运行。5) 设计使用太阳能供电的红绿交通灯,即不能使用任何外部供电,仅需实现基本要求4的显示倒计时。6) 其它功能。目录1 设计目的2 设计思路3 设计过程3.1方案比较与论证3.2电路设计和设计说明3.2.1 89C52单片机3.2.2 红绿灯(显示部分)数码管与按键3.2.4 太阳能电池板供电电路3.2.4 原理图4测试数据与分析5结论与体会6附件6.1实物电路图6.2源程序交通灯控制电路摘要:交通信号灯常用

3、于城市、街道主、支路口,用来控制车辆的流量,提高交叉路口车辆的通行能力,缓冲交通压力。本交通灯设计主要由51单片机,太阳能电池板供电电路和模拟交通灯,数码管和键盘等组成。51单片机由ATC89c52芯片控制模拟交通灯电路、数码管电路实现,供电主要采用采用太阳能电池板电路和储能电路,从而显示红黄绿灯的转换。关键字:交通灯 数码管倒计时 太阳能电池板供电 1 、设计目的(1)熟悉MCU等集成电路的引脚安排。(2)了解太阳能电池板结构及其使用。(3)了解交通灯控制电路的组成及工作原理。(4)学会用仿真软件对设计的原理图进行仿真。(5)熟悉数字交通灯控制电路的设计与制作。2、设计思路(1)利用MCU芯

4、片控制模拟交通灯的转换(2)利用数码管电路充当交通灯定时电路(显示倒计时)(3)设计交通灯控制电路(4)利用太阳能电池板为MCU电路供电(5)其他功能的实现3 设计过程 3.1方案论证与比较方案一 用单片机技术来实现交通灯控制 用单片机技术来来实现交通灯控制,容易实现,而且该电路可靠性也很高。由于本组队员单片机刚刚进入学习,一方面更快地学习单片机,另一方面也更快地进入设计,所以选用了MCU来实现交通灯控制。交通灯控制系统的原理框图如下图所示。51单片机按键模拟交通显示灯数码管显示倒计时紧急按键太阳能供电或pc交通灯控制状态分析: Stste1 东西亮红灯,南北亮绿灯;Stste2 东西亮红灯,

5、南北亮黄灯;Stste3 东西亮绿灯,南北亮红灯; Stste1 东西亮黄灯,南北亮红灯; 在紧急状况下,实现四个方向的亮红灯;方案二 用数电电子技术来实现交通灯控制它主要由控制器、定时器、译码器和秒脉冲信号发生器等部分组成。秒脉冲发生器是该系统中定时器和控制器的标准时钟信号源,译码器输出两组信号灯的控制信号,经驱动电路后驱动信号灯工作,控制器是系统的主要部分,由它控制定时器和译码器的工作。电路设计相对复杂,所以我们并没有采取这个方案。3.2单元电路的设计 (1)太阳能供电电路(2)红绿灯电路设计4系统调试与结果(1)程序的编写及调试,均有结果和现象。(2)交通灯、太阳能电池板电路设计部分等(

6、3)调试交通灯按键控制以及数码管倒计时显示部分。 5结论1、能实现的功能   交通灯的状态转换和计时时间的显示,基本能实现甲、乙道路直行和转弯灯的显示功能,太阳能可以为交通模拟灯充分供电。并且在紧急状况下实现四个方向全亮红灯,数码管倒计时停止。2、不足之处  交通灯设计中没有形成模块化。6、设计心得体会通过这次的参与,发现了许多欠缺的知识,在答辩时,也认识到了差距。不过在不断的学习和设计中,还是有些意外的收获的,团队的合作,也让我们充分体会到了过程的艰辛和愉快的。希望通过不断地学习,不断地努力,做到更好!附件总电路图1.太阳能电板或蓄电池2.电脑pc供电

7、源代码/自动控制交通灯的闪烁#include<reg52.h>#define uchar unsigned char#define uint unsigned int uchar t0,s1,g1,temp,state=1;int t=-1;uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71; /-依次为南北 红 黄 绿 灯亮sbit d1=P10;sbit d2=P11;sbit d3=P12; /-依次为东西 黄 绿 红 灯亮sbit d

8、6=P15;sbit d7=P16;sbit d8=P17;void display(uchar s1,uchar g1);void init();void judg();void state_led();void keyscan();void delay(uint z)uint x,y;for(x=z;x>0;x-) for(y=115;y>0;y-);/-主函数-void main() init(); keyscan();void timer() interrupt 1 /一个定时器中断TH0=(65536-50000)/256;TL0=(65536-50000)%256;t0

9、+; void judg() /计时函数 if(t!=-1) s1=t/10;g1=t%10; display(s1,g1); / 数码管上显示倒计时 if(t0 = 20) / 1s 20*50000=1s t0=0; /清零 if(t=-1) state_led();/进入状态选择 if(state=4)/状态循环 state=0; state+; /状态切换 t-;/一秒减一次,倒计时实现 /-状态函数-void state_led()if(state=1) d3=1; d8=1; d1=0; d7=0; /-南北红灯亮 东西绿灯亮 t=15; else if(state=2)d1=1;

10、 d7=1; d1=0; d6=0; /-南北红灯亮 东西黄灯亮 t=3;else if(state=3) d1=1; d6=1; d2=0; d8=0; /-南北绿灯亮 东西红灯亮 t=15;else if(state=4) d2=1; d8=1; d3=0; d8=0; /-南北黄灯亮 东西红灯亮 t=3; void init()/初始化子程序 /*定时器*TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;void display(uchar s1,uchar g1) /显示子函数 P0=table

11、s1;/倒计时的显示位P2=0xfb;delay(1); P0=tableg1; P2=0xf7; delay(1); void keyscan() while(1) judg();P3=0xfe;/*赋初值*temp=P3; temp=temp&0xf0;/*检测*if(temp!=0xf0)/*用while语句要小心,产生死锁*delay(100);/*延迟一会*temp=P3; temp=temp&0xf0;/*再检测,键盘是否真的按下*if(temp!=0xf0) temp=P3; if(temp=0xde) d1=0; d8=0;d2=1;d3=1;d6=1;d7=1

12、; if(temp!=0xf0)/*松手检测*delay(100);temp=P3;temp=temp&0xf0; /程序功能:用按键模拟控制交通灯的闪烁/*#include<reg52.h>#define uchar unsigned char#define uint unsigned int uchar t,s1,g1,k1,state; uint k;uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71; /-依次为南北 红 黄

13、绿 灯亮sbit d1=P10;sbit d2=P11;sbit d3=P12; /-依次为东西 黄 绿 红 灯亮sbit d6=P15;sbit d7=P16;sbit d8=P17;void display(uchar s1,uchar g1);void judg();void state_led();void keyscan();void delay(uint z)/ 延时函数uint x,y;for(x=z;x>0;x-) for(y=115;y>0;y-);/主函数void main() state=1; t=-1; while(1) judg(); keyscan();

14、 if(t=-1) state_led(); if(state=4)/状态循环 state=0; state+; void judg() /状态循环 if(t!=-1) /实现倒计时时灯的即时变化 s1=t/10;g1=t%10; display(s1,g1); /显示倒计时/-状态子函数void state_led() if(state=1) d3=1; d8=1; d1=0; d7=0; /-南北红灯亮 东西绿灯亮 t=15; else if(state=2) d1=1; d7=1; d1=0; d6=0; /-南北红灯亮 东西黄灯亮 t=3;else if(state=3) d1=1; d6=1; d2=0; d8=0; /-南北绿灯亮 东西红灯亮 t=15;else if(state=4) d2=1; d6=1; d3=0; d8=0; /-南北黄灯亮 东

温馨提示

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

评论

0/150

提交评论