控制电路.docx

上传人:b****5 文档编号:8742739 上传时间:2023-02-01 格式:DOCX 页数:19 大小:364.71KB
下载 相关 举报
控制电路.docx_第1页
第1页 / 共19页
控制电路.docx_第2页
第2页 / 共19页
控制电路.docx_第3页
第3页 / 共19页
控制电路.docx_第4页
第4页 / 共19页
控制电路.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

控制电路.docx

《控制电路.docx》由会员分享,可在线阅读,更多相关《控制电路.docx(19页珍藏版)》请在冰豆网上搜索。

控制电路.docx

控制电路

十字路路口交通灯控制电路的设计

1.设计任务

设计并制作一个十字路口的交通灯控制电路(用红、绿、黄发光二极管模拟显示灯),同时用数码管显示禁止和通行时间。

2.电路工作原理

利用AT89S51单片机电路设计并制作。

3.设计要求

3.1、绿灯亮表示允许通行,时间设定为25S;红灯亮表示禁止通行,时间设定为25S黄灯亮表示警告,并要求后5S中,绿灯闪2S,黄灯亮3S。

3.2、时间显示为倒计时,三个指示灯的交替显示要准确。

4.方案论证和总体设计

4.1提出方案:

实现此设计可有三种常用的方法。

4.1.1用传统的数字电路设计并制作。

数字电路制作交通灯的制作流程图为:

图4-1数字电路交通灯设计流程图

电路电路图如图4-2所示:

图4-2数字电路控制交通灯电路图

图中所示,选用JK触发器,设状态编码为:

S0=00   S1=01   S2=11  S3=10,其输出为Q1Q0倒计时显示采用七段数码管作为显示,它由计数器驱动并显示计数器的输出值。

计数器选用集成电路74190进行设计。

74190是十进制同步可逆计数器,它具有异步并行置数功能、保持功能。

74190没有专用的清零输入端,但可以借助QA、QB、QC、QD的输出数据间接实现清零功能。

现选用两个74190芯片级联成一个从可任意设定时间00~99倒计至00的计数器,其中作为个位数的74190芯片的CLK接秒脉冲发生器(频率为1),再把个位数74190芯片输出端的QA、QD用一个与门连起来,再接在十位数74190芯片的CLK端。

当个位数减到0时,再减1就会变成9,0(0000)和9(1001)之间的QA、QD同时由0变为1,把QA、QD与起来接在十位数的CLK端,此时会给十位数74190芯片一个脉冲数字减1,相当于借位。

整个交通灯控制系统需要有4个时间显示器,28个交通灯。

我在这里共接了6个时间显示器,其中4个用于交通倒计时,另外2个用于显示当前置数

 

4.1.2选择MAX7000S系列的EPM7128SLC84-7芯片设计制作。

电路划分为控制器和受控电路两部分。

在本系统中,设定系统的工作情况如下。

路口交通灯控制系统的东西路有交通灯R(红)、Y(黄)、G(绿);东西人行安全通道灯:

RXR(红)、RXG(绿)。

南北路有交通灯:

r1(红)、y1(黄)、g1(绿);南北人行安全通道灯:

rxr1(红)、rxg1(绿),所有灯均为高电平点亮。

设置15s的通行时间和5s转换时间的变模定时电路,由预置输入整数cnt决定是模15还是模5,输入逻辑cx是用来决定计数到4时清零还是到14时清零。

Clk是外部提供的基准秒脉冲信号。

x0、x1、x2、x3是由控制器输出的表示计数时间的四位二进制数。

图4-3是该系统控制器的符号框图。

    

    

 

图4-3控制器的ASM图

    根据系统设计要求,得到控制器的ASM图,如图2所示。

在这里,所有输入信号均为高电平有效。

该ASM图反映了交通灯系统的不同状态的转换过程及持续时间。

    

    

    

   图4-4控制器的VHDL程序设计

    根据所分析的系统的ASM图,结合系统的设计要求,用VHDL语言对各个模块进行编程,最后形成顶层文件,在MAX+PLUSⅡ环境下进行编译与仿真,检查所编程序是否运行正确。

如果出现错误,需要进行修改,直到完全通过为止。

需要说明的是,在进行程序编译时,要先从底层程序开始,所有底层程序都正确后,才能开始顶层程序的编译。

这是因为顶层程序是对底层程序的概括,它是把底层程序各个模块连接起来,就相当于把每个模块的功能汇聚到一起,实现整个系统的控制功能,所以底层程序的正确与否,关系到顶层程序的运行结果。

    在控制器的程序设计中,在定义结构体时,有两种程序设计方法均可以通过编译及仿真,但在进行时序分析时结果却不同。

    

(1)如果这样定义:

    ...

    ARCHITECTUREcon1_arcofcon1IS

    SIGNALcurrent_state:

state;

    BEGIN

    ...

    在进行程序调试时,均通过了编译及仿真,但在进行时序分析中,却出现了不按设定的计数顺序工作的结果:

14,13,2,1,0...。

经过反复修改调试,对程序进行了修改,如

(2)所定义的。

    

(2)

    ARCHITECYTUREcon1_arcOFcon1IS

    SIGNALcurrent_state:

state;

    SIGNALTEMP_STATE:

state;

    ...

    TEMPSTATE<=current_state;

    BEGIN

    ...

    在这种设计方法中,多定义了一个信号变量,从而使得程序能按设定的状态14,13,12...进行转换。

通过这个实例,可以看出EDA技术作为电子设计工具的功能修改及调试的方便快捷,即不需要硬件电路的支持就可以找到问题所在并进行修改,体现了它的优越性。

    硬件电路实现

    根据交通灯系统的控制要求,图4-5所示为本系统的硬件电路图。

该电路包含了1个CPLD芯片,2个七段LED数码显示器,20个分别表示各个方向上的红、黄、绿灯,以及相应的限流电阻。

这个电路与其他控制方法相比,所用器件可以说是比较简单经济的。

经过实验,实现了预定的交通灯系统的控制功能。

    

    

    图4-5系统的硬件电路图

4.1.2利用AT89S51单片机电路设计并制作。

单片机采用ATM公司的AT89S51,这类芯片容易购买,用起来也很方便。

显示部分分为两部分,一部分就是数码管实现倒计时显示,一部分就是三种不同颜色的发光二极管模拟红、绿、黄交通灯。

数码管采用四个一位的七段数码管。

电路用串口方式显示,这种方式可以节省单片机的接口,实现的程序也比较容易。

电路采用74LS164来实现串口对并口的转换,这种芯片价格便宜,容易买到。

电路图如图4-6所示:

图4-6利用AT89S51单片机电路设计并制作的电路图

4.2方案比较:

如上所述,采用传统的数字电路设计并制作方案。

电路复杂,设计复杂,设计思维能力要求较高,调试起来也有一定的难度。

加上电路需要的硬件多,成本高。

所以不采用这种方案。

采用MAX7000S系列的EPM7128SLC84-7芯片设计制作方案。

电路硬件比较少,但是采用的芯片比较贵,并且软件的设计难度比较大,对软件的设计要借助一定的工具。

而这实现这种逻辑编程的工具很贵。

所以也不宜采用这种方案。

利用AT89S51单片机电路设计并制作。

这种方案硬件少,基本上硬件是设计没有什么难度,都是常用的接法。

软件实现难度不高。

并且单片机电路也是常用的电路,芯片容易买到,价格又相对便宜。

所以我们决定采用这种方案。

5.单元电路设计

电路设计总体上可以分为软件的设计和硬件设计两个部分。

而硬件设计部分主要由三个部分组成:

单片机最小系统、串口转并口显示电路、模拟红、绿、黄三色灯部分电路。

而软件部分,主要有定时计数模块、七段数码管的输出显示模块和红、绿、黄三色灯的控制模块。

下面将各部分的设计分析如下,包括有关电路图和电路原理的分析。

5.1单片机最小系统。

单片机采用ATM公司的AT89S51,组面的电路包括,复位电路、晶振电路,和51单片机芯片。

电路图如图5-1所示。

图5-1单片机最小系统

图中所示,电路,晶振采用11。

0592M,提供电路工作时序。

复位电路是上电时使单片机芯片的I/O口置高电平。

接法和其它元器件的参数如图5-1所示。

5.2串口转并口显示电路

数码管采用四个一位的七段数码管。

电路用串口方式显示,这种方式可以节省单片机的接口,实现的程序也比较容易。

电路采用74LS164来实现串口对并口的转换。

其引脚和内部结构图如图5-2、图5-3所示:

图5-274LS164引脚图

图5-374LS164内部结构图

74LS164的真值表如图表5-4所示

H-高电平L-低电平X-任意电平↑-低到高电平跳变QA0,QB0,QH0-规定的稳态条件建立前的电平QAn,QGn-时钟最近的↑前的电平

串口转并口显示电路总体电路图如图5-5所示

图5-5串口转并口显示电路

 

5.3模拟红、绿、黄三色灯部分电路

此部分电路由红绿黄三色发光二极管和一个非门集成芯片74LS05组成。

其中非门集成芯片74LS05的引脚和内部结构图如图5-6所示:

图5-674LS05的引脚和内部结构图

模拟红、绿、黄三色灯部分电路的总体电路图如图5-7所示:

图5-7模拟红、绿、黄三色灯部分电路图

硬件部分的总体电路图如图5-8所示:

 

5.4软件部分

软件部分,主要有定时计数模块、七段数码管的输出显示模块和红、绿、黄三色灯的控制模块。

其程序如下所示:

SECOND1EQU30H;东西路口计时寄存器

SECOND2EQU31H;南北路口计时寄存器

DBUFEQU40H;显示码缓冲区1

TEMPEQU44H;显示码缓冲区2

LED_R1BITP2.1;东西路口红灯

LED_G1BITP2.2;东西路口绿灯

LED_Y1BITP2.3;东西路口黄灯

LED_Y2BITP2.4;南北路口黄灯

LED_G2BITP2.5;南北路口绿灯

LED_R2BITP2.6;南北路口红灯

ORG0000H

LJMPSTART

ORG0100H

START:

MOVTMOD,#01H;置T0为工作方式1

MOVTH0,#3CH;置T0定时初值50ms

MOVTL0,#0B0H

CLRTF0

SETBTR0;启动T0

CLRA

MOVP2,A;关闭不相关的LED

;***************************************************

LOOP:

MOVR2,#20;置1s计数初值,50ms*20=1s

MOVR3,#20;红灯亮20s

MOVSECOND1,#25;东西路口计时显示初值25s

MOVSECOND2,#25;南北路口计时显示初值25s

LCALLDISPLAY

LCALLSTATE1;调用状态1

WAIT1:

JNBTF0,WAIT1;查询50ms到否

CLRTF0

MOVTH0,#3CH;恢复T0定时初值50ms

MOVTL0,#0B0H

DJNZR2,WAIT1;判断1s到否?

未到继续状态1

MOVR2,#20;置50ms计数初值

DECSECOND1;东西路口显示时间减1s

DECSECOND2;南北路口显示时间减1s

LCALLDISPLAY

DJNZR3,WAIT1;状态1维持20s

;*******************************************

MOVR2,#5;置50ms计数初值5*4=20

MOVR3,#3;绿灯闪3s

MOVR4,#4;闪烁间隔200ms

MOVSECOND1,#5;东西路口计时显示初值5s

MOVSECOND2,#5;南北路口计时显示初值5s

LCALLDISPLAY

WAIT2:

LCALLSTATE2;调用状态2

JNBTF0,WAIT2;查询50ms到否

CLRTF0

MOVTH0,#3CH;恢复T0定时初值50ms

MOVTL0,#0B0H

DJNZR4,WAIT2;判断200ms到否?

未到继续状态2

CPLLED_G1;东西绿灯闪

MOVR4,#4;闪烁间隔200ms

DJNZR2,WAIT2;判1s到否?

未到继续状态2

MOVR2,#5;置50ms计数初值

DECSECOND1;东西路口显示时间减1s

DECSECOND2;南北路口显示时间减1s

LCALLDISPLAY

DJNZR3,WAIT2;状态2维持3s

;****************************************

MOVR2,#20;置50ms计数初值

MOVR3,#2;黄灯闪2s

MOVSECOND1,#2;东西路口计时显示初值2s

MOVSECOND2,#2;南北路口计时显示初值2s

LCALLDISPLAY

WAIT3:

LCALLSTATE3;调用状态3

JNBTF0,WAIT3;查询100ms到否

CLRTF0

MOVTH0,#3CH;恢复T0定时初值100ms

MOVTL0,#0B0H

DJNZR2,WAIT3;判断1s到否?

未到继续状态3

MOVR2,#20;置100ms计数初值

DECSECOND1;东西路口显示时间减1s

DECSECOND2;南北路口显示时间减1s

LCALLDISPLAY

DJNZR3,WAIT3;状态3维持2s

;*******************************************

MOVR2,#20;置50ms计数初值

MOVR3,#20;红灯闪20s

MOVSECOND1,#25;东西路口计时显示初值25s

MOVSECOND2,#25;南北路口计时显示初值25s

LCALLDISPLAY

WAIT4:

LCALLSTATE4;调用状态4

JNBTF0,WAIT4;查询100ms到否

CLRTF0

MOVTH0,#3CH;恢复T0定时初值100ms

MOVTL0,#0B0H

DJNZR2,WAIT4;判断1s到否?

未到继续状态4

MOVR2,#20;置100ms计数初值

DECSECOND1;东西路口显示时间减1s

DECSECOND2;南北路口显示时间减1s

LCALLDISPLAY

DJNZR3,WAIT4;状态4维持20s

;*******************************************

MOVR2,#5;置50ms计数初值

MOVR4,#4;红灯闪20ms

MOVR3,#3;绿灯闪3s

MOVSECOND1,#5;东西路口计时显示初值5s

MOVSECOND2,#5;南北路口计时显示初值5s

LCALLDISPLAY

WAIT5:

LCALLSTATE5;调用状态5

JNBTF0,WAIT5;查询100ms到否

CLRTF0

MOVTH0,#3CH;恢复T0定时初值100ms

MOVTL0,#0B0H

DJNZR4,WAIT5;判断200ms到否?

未到继续状态5

CPLLED_G2;南北绿灯闪

MOVR4,#4;闪烁200ms

DJNZR2,WAIT5;判断1s到否?

未到继续状态5

MOVR2,#5;置100ms计数初值

DECSECOND1;东西路口显示时间减1s

DECSECOND2;南北路口显示时间减1s

LCALLDISPLAY

DJNZR3,WAIT5;状态5维持3s

;****************************************

MOVR2,#20;置50ms计数初值

MOVR3,#2;红灯闪2s

MOVSECOND1,#2;东西路口计时显示初值2s

MOVSECOND2,#2;南北路口计时显示初值2s

LCALLDISPLAY

WAIT6:

LCALLSTATE6;调用状态6

JNBTF0,WAIT6;查询100ms到否

CLRTF0

MOVTH0,#3CH;恢复T0定时初值100ms

MOVTL0,#0B0H

DJNZR2,WAIT6;判断1s到否?

未到继续状态6

MOVR2,#20;置100ms计数初值

DECSECOND1;东西路口显示时间减1s

DECSECOND2;南北路口显示时间减1s

LCALLDISPLAY

DJNZR3,WAIT6;状态6维持2s

LJMPLOOP;大循环

;**********************************************

STATE1:

;状态1

SETBLED_G1;东西路口绿灯亮

CLRLED_Y1

CLRLED_R1

CLRLED_G2

CLRLED_Y2

SETBLED_R2;南北路口红灯亮

RET

STATE2:

;状态2

CLRLED_Y1

CLRLED_R1

CLRLED_G2

CLRLED_Y2

SETBLED_R2;南北路口红灯亮

RET

STATE3:

;状态3

CLRLED_G1

CLRLED_R1

CLRLED_G2

CLRLED_Y2

SETBLED_R2;南北路口红灯亮

SETBLED_Y1;东西路口绿灯亮

RET

STATE4:

;状态4

CLRLED_G1

CLRLED_Y1

SETBLED_R1;东西路口红灯亮

SETBLED_G2;南北路口绿灯亮

CLRLED_Y2

CLRLED_R2

RET

STATE5:

;状态5

CLRLED_G1

CLRLED_Y1

SETBLED_R1;东西路口红灯亮

CLRLED_Y2

CLRLED_R2

RET

STATE6:

;状态6

CLRLED_G1

CLRLED_Y1

SETBLED_R1;东西路口红灯亮

CLRLED_G2

CLRLED_R2

SETBLED_Y2;南北路口红灯亮

RET

DISPLAY:

;数码显示

MOVA,SECOND1;东西路口计时寄存器

MOVB,#10;16进制数拆成两个10进制数

DIVAB

MOVDBUF+3,A

MOVA,B

MOVDBUF+2,A

MOVA,SECOND2;南北路口计时寄存器

MOVB,#10;16进制数拆成两个10进制数

DIVAB

MOVDBUF+1,A

MOVA,B

MOVDBUF,A

MOVR0,#DBUF

MOVR1,#TEMP

MOVR7,#4

DP10:

MOVDPTR,#LEDMAP

MOVA,@R0

MOVCA,@A+DPTR

MOV@R1,A

INCR0

INCR1

DJNZR7,DP10

MOVR0,#TEMP

MOVR1,#4

DP12:

MOVR7,#8

MOVA,@R0

DP13:

RLCA

MOVP3.0,C

CLRP3.1

SETBP3.1

DJNZR7,DP13

INCR0

DJNZR1,DP12

RET

LEDMAP:

DB3FH,06H,5BH,4FH,66H,6DH;0,1,2,3,4,5

DB7DH,07H,7FH,6FH,77H,7CH;6,7,8,9,A,B

DB58H,5EH,7BH,71H,0,40H;C,D,E,F,,-

END

6.电路仿真调试

我们采用Protues对电路进行了仿真调试,并且采用Keilc对程序进行了调试。

仿真电路图如图6-1、图6-2所示:

图6-1仿真电路图1

图6-2仿真电路图2

7.心得体会

EDA课程设计,给我最大感想就是:

从设计,到仿真调试,再到电路的焊接,最后成品的制成,每一个步骤都可能存在很多难点,.出现很多的问题。

这要求我们首先要有信心和耐心,还得细心,其次要有正确的学习态度,最后你得有扎实的理论基础和一定的动手能力。

要明白不管看上去多么简单的电路,实际做起来还是很难的,为了不走太多的弯路,一开始就要有认真对待的准备。

作品的选题和设计过程中,我们选取了一道我们有把握,知识点我们觉得可以掌握的题,这样做起来才能够实现理论和实践的接合,从中学到更多的知识。

在设计过种中我们分难点分步进行设计,首先在心中要有一个模块,然后在把想法拿到仿真软件里去一一验证。

这一步是很重要的,也是实实在在学习的关健所在。

这其中我们碰到的难题就是,实验参数的设计。

要达到课程的数据要求,必需进行了大量的仿真调试和大量查阅相关的芯片参数。

这其中要求你要有一定的数电模电的基础知识。

这其中另一个关键之处就是组员的合作,要把问题摆出来充分讨论共同去查阅解决。

做到这点,才能事半功倍。

我们这组一个人理论知识很好,一个人动手能力很好的人,这样设计起来才能很好的把理论和实践之间的不同点接合起来,少走了不少的弯路。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1