看、繁花落尽 2022-04-27 16:50 采纳率: 40%
浏览 62
已结题

硬件基础综合设计 实验:同步时序逻辑电路的仿真与设计

实验:同步时序逻辑电路的仿真与设计

img

设计方案论述、详细设计、结果及分析

  • 写回答

5条回答 默认 最新

  • 吕布辕门 后端领域新星创作者 2022-04-27 19:09
    关注

    如下是模拟交通灯信号控制,你可以根据如下参考修改一下。

    设计

    交通灯信号控制是交通工具现代化的产物,在平面交叉口,为了把可能发生冲突的车流从时空上分离,必须通过交通信号对交通流进行有效的引导和调度。

    设计要求:

    (1) 设计一个十字路口的交通灯控制电路,要求南北方向和东西方向两个交叉路口的车辆交替运行,每个方向绿灯亮30秒,两个方向能根据车流量的大小自动调节通行时间,车流量大,通行时间增加30秒,车流量小,通行时间仍然是30秒。

    (2) 在路灯转为红灯时,要求黄灯先亮3秒钟,才能变换运行车道。

    源码实现

    #include<iostream>  
    #include<windows.h>  
    using namespace std;  
      
    void way1(int a,int y);                         //交通灯的函数
    void way2(int b);//交通灯的函数
     
    int green1, green2;                             //定义交通灯的红,黄,绿灯的变量和赋初值
    int yellow1, yellow2;
    int red1, red2;
    int green[2] = {31,61};
    int yellow = 4;
    int red[3] = {34,64};
     
    int main()
    {
        int car1, car2, car3, car4;                       //车辆数变量
        int i = 0, j;
        char d;
        cout<<endl<<"***开始模拟智能交通灯系统***"<<endl<<endl;
        while(1)
        {
            cout<<"请设置东车道车辆数:";                         //设置车辆数
            cin>>car1;
            cout<<"请设置西车道车辆数:";
            cin>>car2;
            cout<<"请设置北车道车辆数:";
            cin>>car3;
            cout<<"请设置南车道车辆数:";
            cin>>car4;
            cout<<endl<<endl;
            cout<<"******开始模拟******"<<endl;
            if((car1+car2)-(car3+car4)>10)                             //根据车辆数来选择交通灯计时函数
            {
                j = i+1;
                way1(j, i);
            }
            else if(((car1+car2)-(car3+car4)>=0)&&((car1+car2)-(car3+car4)<=10))
            {
                way2(i);
            }
            else
            {
                j = i+1;
                way1(i, j);
            }
            cout<<"若想重新设置车辆数请按Y,若退出请按N。";
            cin>>d;
            if(d == 'Y'||d == 'y')
            {
                cout<<endl;
                continue;
            }
            else if(d == 'N'||d == 'n')
                break;
        }
     
        return 0;
    }
     
    void way1(int a,int y)
    {
        green1=green[a];                                      //先给交通灯赋初值
        green2=0;
        yellow1=yellow2=0;
        red1=0;
        red2=red[a];
        int c;
        char d;
        while(1)                                              //东西车道的交通灯
        {
            for(c=99;c>0;c--)
            {  
                cout<<endl<<"------东西车道------"<<endl; 
                if(green1>0)
                {
                    if(green1==green[a])
                    {
                        green1--;
                    }
                    else
                    {
                        cout<<"   >>> 绿灯 <<< "<<green1<<" 秒\n";  
                        green1--;
                    }
                    if(green1==0)  
                        yellow1=yellow;  
                }  
                if(yellow1>0)  
                {  
                    if(yellow1==4)  
                        yellow1--;    
                    else  
                    {  
                        cout<<"   >>> 黄灯 <<< "<<yellow1<<" 秒\n";  
                        yellow1--;  
                    }  
                    if(yellow1==0)  
                    {       
                        red1=red[y];  
                    }  
                }  
                if(red1>0)  
                {  
                    if(red1==red[y])  
                        red1--;  
                    else   
                    { 
                        cout<<"   >>> 红灯 <<< "<<red1<<" 秒\n";  
                        red1--;  
                    }  
                    if(red1==0)  
                    {  
                        green1=green[a];    
                    }  
                }
                /***********************************************************************************/
                cout<<endl<<"------南北车道------"<<endl;                   //南北车道的交通灯
                if(red2>0)
                {
                    if(red2==red[a])
                    {
                        red2--;
                    }
                    else
                    {
                        cout<<"   >>> 红灯 <<< "<<red2<<" 秒\n";  
                        red2--;
                    }  
                    if(red2==0)  
                        green2=green[y];  
                }  
                if(green2>0)  
                {  
                    if(green2==green[y])  
                        green2--;    
                    else  
                    {  
                        cout<<"   >>> 绿灯 <<< "<<green2<<" 秒\n";  
                        green2--;  
                    }  
                    if(green2==0)  
                    {       
                        yellow2=yellow;  
                    }  
                }  
                if(yellow2>0)  
                {  
                    if(yellow2==4)  
                        yellow2--;  
                    else   
                    {  
                        cout<<"   >>> 黄灯 <<< "<<yellow2<<" 秒\n";  
                        yellow2--;  
                    }  
                    if(yellow2==0)  
                    {  
                        red2=red[a];    
                    }  
                }  
     
     
                Sleep(1000);
                system("cls");
                
            }
            cout<<"若想继续请按C,若想返回上一级请按R。";
            cin>>d;
            if(d == 'C'||d == 'c')
            {
                cout<<endl;
                continue;
            }
            else if(d == 'R'||d == 'r')
            {
                cout<<endl<<endl;
                break;
            }
        }
    }
     
     
    void way2(int b)
    {
        green1=green[b];
        green2=0;
        yellow1=yellow2=0;
        red1=0;
        red2=red[b];
        int c;
        char d;
        while(1)
        {
            for(c=69;c>0;c--)
            {  
                cout<<endl<<"------东西车道------"<<endl; 
                if(green1>0)
                {
                    if(green1==green[b])
                    {
                        green1--;
                    }
                    else
                    {
                        cout<<"   >>> 绿灯 <<< "<<green1<<" 秒"<<endl;  
                        green1--;
                    }
                    if(green1==0)  
                        yellow1=yellow;  
                }  
                if(yellow1>0)  
                {     
                    if(yellow1==4)  
                        yellow1--;    
                    else  
                    {  
                        cout<<"   >>> 黄灯 <<< "<<yellow1<<" 秒"<<endl;  
                        yellow1--;  
                    }  
                    if(yellow1==0)  
                    {       
                        red1=red[b];  
                    }  
                }  
                if(red1>0)  
                {  
                    if(red1==red[b])  
                        red1--;  
                    else   
                    { 
                        cout<<"   >>> 红灯 <<< "<<red1<<" 秒"<<endl;  
                        red1--;  
                    }  
                    if(red1==0)  
                    {  
                        green1=green[b];    
                    }    
                }
                /***********************************************************************************/
                cout<<endl<<"------南北车道------"<<endl; 
                if(red2>0)
                {
                    if(red2==red[b])
                    {
                        red2--;
                    }
                    else
                    {
                        cout<<"   >>> 红灯 <<< "<<red2<<" 秒"<<endl;  
                        red2--;
                    }  
                    if(red2==0)  
                        green2=green[b];  
                }  
                if(green2>0)  
                {  
                    if(green2==green[b])  
                        green2--;    
                    else  
                    {  
                        cout<<"   >>> 绿灯 <<< "<<green2<<" 秒"<<endl;  
                        green2--;  
                    }  
                    if(green2==0)  
                    {       
                        yellow2=yellow;  
                    }  
                }  
                if(yellow2>0)  
                {  
                    if(yellow2==4)  
                        yellow2--;  
                    else   
                    {  
                        cout<<"   >>> 黄灯 <<< "<<yellow2<<" 秒"<<endl;  
                        yellow2--;  
                    }  
                    if(yellow2==0)  
                    {  
                        red2=red[b];    
                    }    
                }  
     
     
                Sleep(1000);
                system("cls");
                
            }
            cout<<"若想继续请按C,若想返回上一级请按R。";
            cin>>d;
            if(d == 'C'||d == 'c')
            {
                cout<<endl;
                continue;
            }
            else if(d == 'R'||d == 'r')
            {
                cout<<endl<<endl;
                break;
            }
        }
    }
    
    评论

报告相同问题?

问题事件

  • 系统已结题 5月5日
  • 修改了问题 4月27日
  • 创建了问题 4月27日

悬赏问题

  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图