久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

FPGA實現出租車計價器

[復制鏈接]
跳轉到指定樓層
樓主
  1. /*
  2.     *出租車計價器
  3.     *功能:1、初始化計價 10元
  4.            2、數碼管按鍵切換顯示價格和里程
  5.            3、速度300m/s
  6.            4、可以通過撥碼開關進行清零和保持當前價格和里程
  7.            5、當里程十位無數據時,不顯示
  8.            6、數碼管最高位分別顯示當前顯示的內容字母,d顯示距離,C顯示價格
  9.     *勻速狀態
  10.     *By:魚芯工作室
  11. */

  12. module taxi_prj(clkin,rstn,led,dataout,dot,en,Key);

  13. input clkin,rstn;
  14. input [2:0] Key;
  15. output led;
  16. output[7:1] dataout;
  17. output dot;
  18. output[3:0] en;//COM使能輸出

  19. reg led;
  20. reg [10:0] cnt;

  21. reg[7:1] dataout;//各段數據輸出
  22. reg dot;//各段數據輸出.
  23. reg[3:0] en;
  24. reg[1:0] cnt_scan;//掃描頻率計數器
  25. reg[3:0] dataout_buf;
  26. reg [4:0] data_ten,data_ge,data_dot,init_cost;
  27. reg [16:0] distance;
  28. reg [16:0] cost;

  29. gen_div U1(.clkin(clkin),.rstn(rstn),.clkout(clkout));//1ms

  30. always@(posedge clkout or negedge rstn)
  31. begin
  32.     if(!rstn)  
  33.     begin
  34.         cnt <= 0;
  35.         distance <= 0;
  36.         data_ten<=0;
  37.         data_ge<=0;
  38.         data_dot<=0;
  39.         init_cost <= 10;
  40.         cost<=0;
  41.     end
  42.     else if(cnt == 2000)
  43.     begin
  44.         cnt <= 0;
  45.         led <= ~led;
  46.         if(Key[2]==1 || Key[1] == 1)
  47.         begin
  48.             if(Key[1] == 1)
  49.             begin
  50.                 distance <= 0;
  51.                 data_ten<=0;
  52.                 data_ge<=0;
  53.                 data_dot<=0;
  54.                 init_cost <= 10;
  55.                 cost<=0;
  56.             end
  57.             else
  58.             begin
  59.                 distance <= distance ;
  60.                 data_ten<=data_ten;
  61.                 data_ge<=data_ge;
  62.                 data_dot<=data_dot;
  63.                 cost<=cost;
  64.             end            
  65.         end
  66.         else
  67.         begin
  68.                 distance <= distance+300;
  69.                 data_ten<=distance/10000%10;
  70.                 data_ge<=distance/1000%10;
  71.                 data_dot<=distance/100%10;
  72.                 if(distance<=3000 && distance >0)
  73.                 begin
  74.                     init_cost <= 10;
  75.                     cost = init_cost *10;
  76.                 end
  77.                 else
  78.                     cost <=init_cost *10+2*(distance-3000)/100;
  79.         end
  80.     end
  81.     else cnt <= cnt + 1;
  82. end
  83. //segment
  84. always@(posedge clkout or negedge  rstn)
  85. begin
  86.     if(!rstn)
  87.         begin //低電平復位
  88.             cnt_scan<=0;
  89.         end
  90.     else
  91.         begin
  92.             cnt_scan<=cnt_scan+1;
  93.         end
  94. end

  95. always @(cnt_scan)//段碼掃描頻率
  96. begin
  97.   case(cnt_scan[1:0])
  98.       2'b00 :
  99.           en = 4'b1110;
  100.       2'b01 :
  101.           en = 4'b1101;
  102.       2'b10 :
  103.           en = 4'b1011;
  104.       2'b11 :
  105.           en = 4'b0111;
  106.       default :
  107.           en = 4'b1110;
  108.     endcase
  109. end

  110.   always @ (Key[0],en) //對應COM信號給出各段數據,段碼
  111.     case(Key[0])
  112.         1'b0:
  113.             begin
  114.                 case(en)
  115.                   4'b1110:
  116.                   begin
  117.                         dataout_buf<= 13;//輸入將要顯示的數字
  118.                         dot <= 1;
  119.                         end
  120.                   4'b1101:
  121.                   begin
  122.                   if(data_ten!==0)
  123.                   begin
  124.                         dataout_buf<=data_ten;
  125.                         dot <= 1;
  126.                     end
  127.                     else
  128.                     begin
  129.                             dataout_buf<=7'b1111_111;
  130.                             dot <= 1;
  131.                         end
  132.                     end
  133.                   4'b1011:
  134.                   begin
  135.                         dataout_buf <=  data_ge;
  136.                         dot <= 0;
  137.                         end
  138.                   4'b0111:
  139.                   begin
  140.                         dataout_buf<=data_dot;  
  141.                         dot <= 1;
  142.                         end
  143.                   default:
  144.                         dataout_buf=1;
  145.               endcase
  146.           end
  147.         1'b1:
  148.                     begin
  149.                             case(en)
  150.                               4'b1110:
  151.                               begin
  152.                                     dataout_buf<= 12;//輸入將要顯示的數字
  153.                                     dot <= 1;
  154.                                     end
  155.                               4'b1101:
  156.                               begin
  157.                                     dataout_buf<=cost/100;
  158.                                     dot <= 1;
  159.                                     end
  160.                               4'b1011:
  161.                               begin
  162.                                     dataout_buf <= cost/10%10;
  163.                                     dot <= 0;
  164.                                     end
  165.                               4'b0111:
  166.                               begin
  167.                                     dataout_buf<=cost%10;   
  168.                                     dot <= 1;
  169.                                     end
  170.                               default:
  171.                                     dataout_buf=1;
  172.                           endcase
  173.                       end
  174.             default:dataout_buf=0;
  175.     endcase  


  176. always@(dataout_buf)
  177. begin
  178.     case(dataout_buf)  //將要顯示的數字譯成段碼
  179.         4'b0000://0
  180.             dataout=7'b0000_001;
  181.         4'b0001://1
  182.             dataout=7'b1001_111;
  183.         4'b0010://2
  184.             dataout=7'b0010_010;
  185.         4'b0011://3
  186.             dataout=7'b0000_110;
  187.         4'b0100://4
  188.             dataout=7'b1001_100;
  189.         4'b0101://5
  190.             dataout=7'b0100_100;
  191.         4'b0110://6
  192.             dataout=7'b0100_000;
  193.         4'b0111://7
  194.             dataout=7'b0001_111;
  195.         4'b1000://8
  196.             dataout=7'b0000_000;
  197.         4'b1001://9
  198.             dataout=7'b0000_100;
  199.             4'b1010://A
  200.             dataout=7'b0001_000;
  201.             4'b1011://B
  202.                 dataout=7'b1100_000;
  203.             4'b1100://C
  204.             dataout=7'b0110_001;
  205.             4'b1101://D
  206.             dataout=7'b1000_010;
  207.             4'b1110://E
  208.             dataout=7'b0010_000;
  209.        default://這里僅編譯了0-9這幾個數字
  210.             dataout=7'b1111_111;//全滅
  211.      endcase
  212. end

  213. endmodule
復制代碼


全部代碼51hei下載地址:
taxi_prj.zip (3.12 MB, 下載次數: 20)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:894408 發表于 2021-11-12 18:58 | 只看該作者
前輩 我學習了這個程序,功能都能實現,但是我想在前面加一個分鐘計時,就是在前兩位數碼管上加一個計時的,這個程序里面的位選我不太會,我不知道怎么改,希望前輩教一教我
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久久国产精品一区三寸 | 亚洲免费在线观看 | 国产成人精品在线播放 | 久久久久国产精品一区三寸 | 国产最新网址 | 色啪网 | 亚洲有码转帖 | 男人天堂网址 | 国产在线第一页 | 亚洲精品v | 国产在线不卡 | 久久久精品一区 | 亚洲精品一区二区三区中文字幕 | 性色av一区二区三区 | 国产精品18久久久 | 老牛嫩草一区二区三区av | 国产 欧美 日韩 一区 | 999免费视频| 一级黄色录像片子 | 中国黄色在线视频 | 日韩中文一区二区 | 精品国产91亚洲一区二区三区www | 欧美一区二区视频 | 亚洲天堂中文字幕 | 色网在线看 | 日韩精品一区二区三区老鸭窝 | 色中文在线| 在线观看第一页 | 成人精品一区二区三区 | 日韩精品一区二区三区 | 国产 日韩 欧美 在线 | 国产成人精品一区 | 99久久婷婷国产综合精品电影 | 男女羞羞视频在线免费观看 | 99re在线视频 | 亚洲综合无码一区二区 | 亚洲欧美精 | 一区二区三区免费 | 欧美激情在线播放 | 亚洲综合小视频 | 日韩www |