搜索
bottom↓
回复: 4

菜鸟求老鸟改一下交通灯的程序

[复制链接]

出0入0汤圆

发表于 2011-3-24 12:12:57 | 显示全部楼层 |阅读模式
我们老板要我烧个程序,我左烧右烧就是烧不出。题目要求为道路较窄而车辆通行较多,支线、干线的车辆通行时间不等,并设有左右弯道通行时间,允许人工监控或修改各线通行时间,同时设有道路应急控制。具体的情况是:在正常的情况下,干道通行时间为40秒,其中左右弯道占时5秒,直道通行时间为25秒,其中左右弯道占时5秒,直道占时20秒。并且能够在人工监控状态下,干道、支道通行时间通过键盘修改或通过开关人为控制。
最后一个要求“并且能够在人工监控状态下,干道、支道通行时间通过键盘修改或通过开关人为控制。”这个我用那个状态机,不懂做,希望老鸟帮我改一下程序。我把已经能实现功能的基础部分拷贝如下:

注:A方向即为主干道方向  B方向为支干道方向

/*信号定义与说明:
CLK :同步时钟;
EN:使能信号,为1的话,则控制器工作;
LAMPA:控制A方向四盏灯的亮灭;其中LAMPA0~LAMPA3,分别控制A方向的左拐灯、绿灯、黄灯和红灯。
LAMPB:控制B方向四盏灯的亮灭;其中LAMPB0~LAMPB3,分别控制B方向的左拐灯、绿灯、黄灯和红灯。
acount:用于A方向灯的时间显示,8位,可驱动两个数码管;
bcount:用于B方向灯的时间显示,8位,可驱动两个数码管。*/

module traffic(CLK,EN,LAMPA,LAMPB,acount,bcount);
input CLK,EN;
output[3:0] LAMPA,LAMPB;
output[7:0] acount,bcount;
reg tempa,tempb;
reg[2:0] counta,countb;
reg[3:0] LAMPA,LAMPB;
reg[7:0] ared,ayellow,agreen,aleft,bred,byellow,bgreen,bleft;
reg[7:0] numa,numb;
     
always @(EN)
  if(!EN)
         begin
           ared <=8'd35;  
           ayellow<=8'd5;  
           agreen <=8'd35;  
           aleft <=8'd5;  
           bred <=8'd50;  
           byellow <=8'd5;  
           bgreen <=8'd20;  
           bleft <=8'd5;
         end
         assign acount=numa;
         assign bcount=numb;
         always @(posedge CLK)
           begin
             if(EN)
               begin
                 if(!tempa)
                   begin
                 tempa<=1;
                 case(counta)
                 0:begin numa<=agreen;LAMPA<=2;counta<=1;end
                 1:begin numa<=ayellow;LAMPA<=4;counta<=2;end
                 2:begin numa<=aleft;LAMPA<=1;counta<=3;end
                 3:begin numa<=ayellow;LAMPA<=4;counta<=4;end
                 4:begin numa<=ared;LAMPA<=8;counta<=0;end
                 default: LAMPA<=8;
                 endcase
                end
               else begin
                  if(numa>1)
                  if(numa[3:0]==0)
                  begin numa[3:0]<=4'b1001;numa[7:4]<=numa[7:4]-1;end
                  else numa[3:0]<=numa[3:0]-1;
                if(numa==2) tempa<=0;
                end
           end
           else begin LAMPA<=4'b1000;counta<=0;tempa<=0;end
          end
         
         
        always @(posedge CLK)
          begin
             if(EN)
               begin
                 if(!tempb)
                   begin
                 tempb<=1;
                 case(countb)
                 0:begin numb<=bred;LAMPB<=8;countb<=1;end
                 1:begin numb<=bgreen;LAMPB<=2;countb<=2;end
                 2:begin numb<=byellow;LAMPB<=4;countb<=3;end
                 3:begin numb<=bleft;LAMPB<=1;countb<=4;end
                 4:begin numb<=byellow;LAMPB<=4;countb<=0;end
                 default: LAMPB<=8;
                 endcase
                end
               else begin
                  if(numb>1)
                  if(numb[3:0]==0)
                  begin numb[3:0]<=9;numb[7:4]<=numb[7:4]-1;end
                  else numb[3:0]<=numb[3:0]-1;
                if(numb==2) tempb<=0;
                end
           end
           else begin LAMPB<=4'b1000;countb<=0;tempb<=0;end
          end
         
         
  endmodule

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2011-3-24 12:15:19 | 显示全部楼层
回复【楼主位】768516985
-----------------------------------------------------------------------

希望能帮我把后面的那个用按键改变预制数的功能实现出来
老鸟要是没时间的话
发个类似的程序参考下
菜鸟也会在这感激不尽的

出0入0汤圆

发表于 2011-3-24 12:44:08 | 显示全部楼层
多分析逻辑 才是硬道理

出0入0汤圆

 楼主| 发表于 2011-3-24 16:04:03 | 显示全部楼层
回复【2楼】aaron96031 龙飞(LF)
-----------------------------------------------------------------------

谢谢哈 我源程序代码看懂了
要是大家有解决的办法 或是程序
大家写一下哦 这样才能互相学习
谢谢

出0入0汤圆

 楼主| 发表于 2011-3-26 12:02:44 | 显示全部楼层
好多菜鸟与青鸟
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 15:18

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表