欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2002|回復: 0
打印 上一主題 下一主題
收起左側

Verilog HDL語言在QuartusⅡ13.5軟件中將出租車計費器基本結構分成5個...

[復制鏈接]
跳轉到指定樓層
樓主
以CPLD/FPGA為主體,設計并制作一臺出租車計費系統。
基本要求:1、里程顯示,顯示方式為XXX.X,單位為km精確到0.1km
2、里程單價顯示,顯示方式為X.XX,單位為元/km,根據每天不同的時間段有兩種情況:當時間段為06:00~23:00時單價為1.40元/km,其他時間段單價為1.80元/km;
3、費用的計算及顯示,出租車的起價為5.00元,當里程小于2km時,按起價計算費用;當里程大于2km時,按下式計算費用:
   費用=里程×里程單價+等候時間×等候單價
    費用顯示方式為XXX:XX,單位為元;
4、當出租車在正常運行狀態下,應能顯示當前的時間;在熄火的情況下,時鐘必須正常運行,但是可以不顯示時鐘;

源程序如下:
  1. module control(clk,                  //50MHz
  2.                                 reset,               //復位
  3.                                 set,                 //狀態切換
  4.                                 start,               //計費啟動開關
  5.                                 run,                 //出租車運行狀態開關
  6.                                 price_day_short,     //白天近程單價
  7.                                 price_day_long,      //白天遠程單價
  8.                                 price_night_short,   //晚上近程單價
  9.                                 price_night_long,    //晚上遠程單價
  10.                                 price_wait_time,     //等待時間每分鐘價格
  11.                                 one_price_day,       //白天起步價
  12.                                 one_price_night,     //晚上起步價
  13.                                 short_distance,      //起步價可行最大里程數
  14.                                 long_distance,       //最大近程里程數
  15.                                 day_time,            //白天開始時間
  16.                                 night_time,          //晚上開始時間
  17.                                 start_out,
  18.                                 run_out,
  19.                                 state,
  20.                                 password            //更改信息的密碼
  21.                                 );
  22.         input clk,reset,set,start,run;
  23.         input [5:0] password;
  24.         output [7:0] price_day_short,price_day_long,price_night_short,price_night_long,price_wait_time;
  25.         output [11:0] one_price_day,one_price_night;
  26.         output [7:0] short_distance,long_distance;
  27.         output [7:0] day_time,night_time;
  28.         output [3:0] state,start_out;
  29.         output run_out;
  30.         reg [7:0] price_day_short,price_day_long,price_night_short,price_night_long,price_wait_time;
  31.         reg [11:0] one_price_day,one_price_night;
  32.         reg [7:0] short_distance,long_distance;
  33.         reg [7:0] day_time,night_time;
  34.         reg [3:0] state,start_out;
  35.         reg run_out,add,sub;
  36.        
  37.         initial   //為了處理小數點,把實際價格擴大十倍
  38.         begin
  39.                 day_time=5;           //白天開始時間
  40.                 night_time=23;        //晚上開始時間
  41.                 short_distance=3;     //起步價可行最大里程數
  42.                 long_distance=10;     //最大近程里程數
  43.                 price_day_short=24;   //實際價格2.4元
  44.                 price_day_long=36;    //實際價格3.6元
  45.                 price_night_short=31; //實際價格3.1元
  46.                 price_night_long=47;  //實際價格4.7元
  47.                 one_price_day=140;    //實際價格14元
  48.                 one_price_night=180;  //實際價格18元
  49.                 price_wait_time=10;   //實際價格1元
  50.         end
  51.        
  52.         initial
  53.         begin
  54.                 state<=4'd0;
  55.         end
  56.        
  57.         always@(posedge clk)
  58.         begin         
  59.                 if(reset==1)                               //復位鍵       
  60.                         state<=4'd0;                  

  61.                 if(set==1)                                 //總狀態設置
  62.                         if(state>=4'd14)
  63.                                 state<=4'd1;              
  64.                         else
  65.                                 state<=state+4'd1;       
  66.                                        
  67. //      start/run第一功能區               
  68.        
  69.                 if(start==1&&state==0)                     //state=0,該功能可用   //計費啟動鍵,每按一次取反一次。
  70.                         if(start_out>=4'd2) start_out<=4'd0;   //總狀態設置
  71.                         else start_out<=start_out+4'd1;
  72.                        
  73.                 if(start_out==0) run_out=1;                       
  74.                
  75.                 if(start_out==1&&run==1&&state==0)         //出租車行駛狀態鍵,沒按一次取反一次。
  76.                 begin
  77.                         run_out=~run_out;
  78.                 end
  79.                        
  80. //      start/run第二功能區       
  81.                
  82.                 add=start;                                 //加,第二功能
  83.                 sub=run;                                   //減,第二功能
  84.                 if(password==6'b010101)                    //密碼正確才能更改價格和參數                                
  85.                 case(state)
  86.                         4'd0:;
  87.                         4'd1:;
  88.                         4'd2:;
  89.                         4'd3:
  90.                                 begin                                       
  91.                                         if(add==1)                         //白天近程單價設置                                             
  92.                                                 if(price_day_short>=8'd99) price_day_short<=8'd0;
  93.                                                 else price_day_short<=price_day_short+8'd1;
  94.                                         if(sub==1)
  95.                                                 if(price_day_short<=8'd0) price_day_short<=8'd99;
  96.                                                 else price_day_short<=price_day_short-8'd1;
  97.                                 end
  98.                         4'd4:                                      //白天遠程單價設置  
  99.                                 begin
  100.                                         if(add==1)                                                     
  101.                                                 if(price_day_long>=8'd99) price_day_long<=8'd0;
  102.                                                 else price_day_long<=price_day_long+8'd1;
  103.                                         if(sub==1)
  104.                                                 if(price_day_long<=8'd0) price_day_long<=8'd99;
  105.                                                 else price_day_long<=price_day_long-8'd1;       
  106.                                 end               
  107.                 endcase
  108.         end
  109. endmodule
復制代碼


代碼下載: czc.7z (7.27 MB, 下載次數: 8)

評分

參與人數 2黑幣 +39 收起 理由
外星人11111 + 9
admin + 30 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表