高分求一路口交通灯设计电路。高手进。

核心提示用maxplus做,一片74192可以完成10计数,两片级联即可完成100计数,所以50计数用两片74192就可以了。具体: (1) 计数时钟接第一片的减计数时钟输入端DN,同时加计数时钟输入UP和清零端CLR输入高电平,使第一片处于10进

用maxplus做,一片74192可以完成10计数,两片级联即可完成100计数,所以50计数用两片74192就可以了。具体:

(1) 计数时钟接第一片的减计数时钟输入端DN,同时加计数时钟输入UP和清零端CLR输入高电平,使第一片处于10进制减法计数状态

(2) 第一片的借位输出BON 连接到第二片的减计数时钟输入端DN,同时加计数时钟输入UP接高电平

(3) 74192有四个输出QD,QC,QB,QA,其中QD为最高位。把第二片的输出最高位QD,次低QB位接反相器后分别接到四输入与门的输入,剩下的次高位QC和最低位QA直接输入到 四输入与门中。接好四个输入后,把四输入与门的输出接到第二片的清零端CLR,形成反馈,使模值变为所需的50.

(4) 最后第二片的借位输出BON作为整个计数器的借位输出。

(5) 其他输入悬空,相当接高电位。

具体原理是第一片计数到10,并以其借位输出作为第二片的计数时钟。而第二片经反馈后只计数到5,两片级联相乘即得模值50的计数器。

先看仿真效果图,源代码如下,我仿真可以的,电路图要的话发给你

#include<reg51.h>?

#define?uchar?unsigned?char?

#define?uint?unsigned?int?

sbit?RED_A=P0^0;?//?﹁?ボ?

sbit?YELLOW_A=P0^1;?

sbit?GREEN_A=P0^2;?

sbit?RED_B=P0^3;?//玭ボ?

sbit?YELLOW_B=P0^4;?

sbit?GREEN_B=P0^5;?

uchar?Time_Count=0,Flash_Count=0,Operation_Type=1;?

//﹚?竟?0?い?ㄧ?

void?T0_INT()?interrupt?1?

{?

TL0=-50000/256;?

TH0=-50000%256;?

switch(Operation_Type)?

{?

case?1:?//?﹁蒓玭獹?5s?

RED_A=0;

YELLOW_A=0;

GREEN_A=1;

RED_B=1;

YELLOW_B=0;

GREEN_B=0;?

if(++Time_Count!=100)?return;?//5s?100*50ms?ち?

Time_Count=0;?

Operation_Type=2;?break;?

case?2:?//?﹁﹍

if(++Time_Count!=8)?return;?

Time_Count=0;?

YELLOW_A=~YELLOW_A;

GREEN_A=0;?

if(++Flash_Count!=10)?return;?//

Flash_Count=0;?

Operation_Type=3;?break;?

case?3:?//?﹁蒓玭獹?5s?

RED_A=1;

YELLOW_A=0;

GREEN_A=0;?

RED_B=0;

YELLOW_B=0;

GREEN_B=1;?

if(++Time_Count!=100)?return;?//5s?100*50ms?ち?

Time_Count=0;?

Operation_Type=4;?

case?4:?break;?//玭?﹍

if(++Time_Count!=8)?return;?

Time_Count=0;?

YELLOW_B=~YELLOW_B;GREEN_A=0;?

if(++Flash_Count!=10)?return;?//

Flash_Count=0;?

Operation_Type=1;?break;?

}?

}

//?祘?

void?main()?

{?

TMOD=0x01;?

IE=0x82;?

TR0=1;?

while(1);?

}

 
友情链接
鄂ICP备19019357号-22