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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5105|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

數(shù)碼管的動態(tài)刷新Verilog源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
六位八段數(shù)碼管,最后兩位自加首先循環(huán),同時在到特定的數(shù)字調(diào)用蜂鳴器“嗶~”


源程序如下:
  1. module Project_Segled2
  2. (        
  3.         //輸入端口
  4.         CLK_50M,CLK_1S,RST_N,
  5.         //輸出端口
  6.         SEG_DATA,SEG_EN,FM
  7. );
  8.         
  9. //---------------------------------------------------------------------------
  10. //--        外部端口聲明
  11. //---------------------------------------------------------------------------
  12. input                                         CLK_50M;                                //時鐘的端口,開發(fā)板用的50M晶振
  13. input                CLK_1S;
  14. input                                                RST_N;                                //復(fù)位的端口,低電平復(fù)位
  15. output reg         [ 5:0]         SEG_EN;                                //數(shù)碼管使能端口
  16. output reg         [ 7:0]         SEG_DATA;                        //數(shù)碼管數(shù)據(jù)端口(查看管腳分配文檔或者原理圖)
  17. output reg          FM;               //控制蜂鳴器

  18. //---------------------------------------------------------------------------
  19. //--        內(nèi)部端口聲明
  20. //---------------------------------------------------------------------------
  21. reg                        [15:0]        time_cnt;                        //用來控制數(shù)碼管閃爍頻率的定時計(jì)數(shù)器
  22. reg                        [15:0]        time_cnt_n;                        //time_cnt的下一個狀態(tài)
  23. reg                        [ 2:0]        led_cnt;                                //用來控制數(shù)碼管亮滅及顯示數(shù)據(jù)的顯示計(jì)數(shù)器
  24. reg                        [ 2:0]        led_cnt_n;                        //led_cnt的下一個狀態(tài)
  25. reg                                           [3:0]         gewei;                                       // 后兩位的個位
  26. reg                                           [3:0]         shiwei;                                      //后兩位的十位
  27. reg                                           [7:0]         GE_DATA;                                //個位數(shù)碼管數(shù)據(jù)
  28. reg                                           [7:0]         SHI_DATA;                                //十位數(shù)碼管數(shù)據(jù)
  29. reg                                           [3:0]         gewei_n;                                       // 后兩位的個位  
  30. reg                                        beep_reg;                                //用來控制蜂鳴器發(fā)聲的寄存器
  31. reg                                        beep_reg_n;                                //beep_reg的下一個狀態(tài)

  32. //設(shè)置定時器的時間為1ms,計(jì)算方法為  (1*10^3)us / (1/50)us  50MHz為開發(fā)板晶振
  33. parameter SET_TIME_1MS = 16'd50_000;
  34. parameter freq = 16'd47774;
  35. initial
  36. begin
  37. gewei = 4'h5;                                                                          //初始化個位十位的值
  38. shiwei=4'h0;
  39. gewei_n=4'h5;
  40. end               

  41. //---------------------------------------------------------------------------
  42. //--        邏輯功能實(shí)現(xiàn)        
  43. //---------------------------------------------------------------------------
  44. //時序電路,用來給time_cnt寄存器賦值
  45. always @ (posedge CLK_50M or negedge RST_N)  
  46. begin
  47.         if(!RST_N)                                                                        //判斷復(fù)位
  48.                 time_cnt <= 16'h0;                                        //初始化time_cnt值
  49.         else
  50.                 time_cnt <= time_cnt_n;                                //用來給time_cnt賦值
  51. end


  52. always @ (posedge CLK_50M)  
  53. begin
  54.         if(time_cnt == SET_TIME_1MS)                        //判斷1ms時間
  55.                 time_cnt_n = 16'h0;                                        //如果到達(dá)1ms,定時計(jì)數(shù)器將會被清零
  56.         else
  57.                 time_cnt_n = time_cnt + 27'h1;        //如果未到1ms,定時計(jì)數(shù)器將會繼續(xù)累加
  58. end





  59. //時序電路,用來給led_cnt寄存器賦值
  60. always @ (posedge CLK_1S or negedge RST_N)  
  61. begin
  62.         if(!RST_N )                                                                        //判斷復(fù)位
  63. begin        
  64.                     gewei = 4'h5;                                                                          //初始化個位十位的值
  65.                 shiwei=4'h0;
  66. end        
  67.         else if(gewei==4'b1001)
  68. begin                 
  69.                 gewei=4'h0;
  70.                 shiwei=shiwei+1'h1;                                                           //如果個位到十就歸0且讓十位加一
  71. end
  72.    else if(shiwei==4'b0100)
  73. begin               
  74.                  shiwei=4'h0;                                                                        //判斷十位的值如果到4就歸0
  75. end
  76.    else
  77.        gewei=gewei_n;        
  78. end
  79. //組合電路,判斷時間,實(shí)現(xiàn)控制顯示計(jì)數(shù)器累加
  80. always @ (negedge CLK_1S)  
  81. begin

  82.                 gewei_n = gewei + 1'h1;                //如果到達(dá)1s,計(jì)數(shù)器進(jìn)行累加
  83.         
  84.               
  85. end


  86. //時序電路,用來給gewei寄存器賦值
  87. always @ (posedge CLK_50M or negedge RST_N)  
  88. begin
  89.         if(!RST_N)                                                                        //判斷復(fù)位
  90.                 led_cnt <= 3'h0;                                                //初始化led_cnt值
  91.         else
  92.                 led_cnt <= led_cnt_n;                                //用來給led_cnt賦值
  93. end

  94. //組合電路,判斷時間,實(shí)現(xiàn)控制顯示計(jì)數(shù)器累加
  95. always @ (posedge CLK_50M)  
  96. begin
  97.         if(time_cnt == SET_TIME_1MS)                        //判斷1Ms時間        
  98.                 led_cnt_n = led_cnt + 1'h1;                //如果到達(dá)1ms,計(jì)數(shù)器進(jìn)行累加
  99.         else
  100.                 led_cnt_n = led_cnt;                                        //如果未到1ms,計(jì)數(shù)器保持不變
  101. end
  102. //實(shí)現(xiàn)gewei數(shù)據(jù)到數(shù)碼管碼數(shù)的一致
  103. always @ (posedge CLK_50M)
  104. begin
  105.                case(gewei)
  106.                            4'b0000:GE_DATA= 8'b00111111;        //0
  107.                            4'b0001:GE_DATA= 8'b00000110;        //1
  108.                            4'b0010:GE_DATA= 8'b01011011;        //2
  109.                            4'b0011:GE_DATA= 8'b01001111;        //3
  110.                            4'b0100:GE_DATA= 8'b01100110;        //4
  111.                            4'b0101:GE_DATA= 8'b01101101;        //5
  112.                            4'b0110:GE_DATA= 8'b01111101;        //6
  113.                             4'b0111:GE_DATA= 8'b00000111;       //7
  114.                            4'b1000:GE_DATA= 8'b01111111;        //8
  115.                             4'b1001:GE_DATA= 8'b01101111;       //9
  116.                             default:GE_DATA=8'b10111111;
  117.                endcase
  118. end

  119. //實(shí)現(xiàn)shiwei數(shù)據(jù)到數(shù)碼管數(shù)的一致
  120. always @ (posedge CLK_50M)
  121. begin
  122.                case(shiwei)
  123.                             4'b0000:SHI_DATA= 8'b00111111;        //0
  124.                            4'b0001:SHI_DATA= 8'b00000110;        //1
  125.                            4'b0010:SHI_DATA= 8'b01011011;        //2
  126.                            4'b0011:SHI_DATA= 8'b01001111;        //3
  127.                            4'b0100:SHI_DATA= 8'b01100110;        //4
  128.                            default:SHI_DATA=8'b10111111;
  129.                endcase
  130. end

  131. //組合電路,實(shí)現(xiàn)數(shù)碼管的數(shù)字顯示
  132. always @ (posedge CLK_50M)
  133. begin
  134.         case (led_cnt)  
  135.                 3'b000 : SEG_DATA = 8'b00000111;        //當(dāng)計(jì)數(shù)器為0時,數(shù)碼管將會顯示 "7"
  136.                 3'b001 : SEG_DATA = 8'b00000110;        //當(dāng)計(jì)數(shù)器為1時,數(shù)碼管將會顯示 "1"
  137.                 3'b010 : SEG_DATA = 8'b01100110;        //當(dāng)計(jì)數(shù)器為2時,數(shù)碼管將會顯示 "4"
  138.                 3'b011 : SEG_DATA = 8'b00111111;        //當(dāng)計(jì)數(shù)器為3時,數(shù)碼管將會顯示 "0"
  139.                 3'b100 : SEG_DATA = SHI_DATA;                       //當(dāng)計(jì)數(shù)器為4時,數(shù)碼管將會顯示 "十位"
  140.                 3'b101 : SEG_DATA = GE_DATA;                       //當(dāng)計(jì)數(shù)器為5時,數(shù)碼管將會顯示 "個位"        
  141.                 default: SEG_DATA = 8'b10111111;        
  142.         endcase         
  143. end






  144. always @ (posedge CLK_50M)
  145. begin
  146.         case (led_cnt)  
  147.                 3'b000 : SEG_EN = 6'b111110;                //當(dāng)計(jì)數(shù)器為0時,數(shù)碼管SEG1顯示
  148.                 3'b001 : SEG_EN = 6'b111101;                //當(dāng)計(jì)數(shù)器為1時,數(shù)碼管SEG2顯示
  149.                 3'b010 : SEG_EN = 6'b111011;                 //當(dāng)計(jì)數(shù)器為2時,數(shù)碼管SEG3顯示
  150.                 3'b011 : SEG_EN = 6'b110111;          //當(dāng)計(jì)數(shù)器為3時,數(shù)碼管SEG4顯示
  151.                 3'b100 : SEG_EN = 6'b101111;                //當(dāng)計(jì)數(shù)器為4時,數(shù)碼管SEG5顯示
  152.                 3'b101 : SEG_EN = 6'b011111;          //當(dāng)計(jì)數(shù)器為5時,數(shù)碼管SEG6顯示               
  153.                 default: SEG_EN = 6'b111111;                        
  154.         endcase         
  155. end









  156. //控制蜂鳴器
  157. always @ (posedge CLK_50M or negedge RST_N)
  158. begin
  159.         if(!RST_N)                                                                        //判斷復(fù)位
  160.                 beep_reg <= 1'b0;                                                //初始化beep_reg值
  161.         else
  162.                 beep_reg <= beep_reg_n;                                //用來給beep_reg賦值
  163. end

  164. //組合電路,判斷頻率,使蜂鳴器發(fā)聲
  165. always @ (posedge CLK_50M)
  166. begin
  167.         if(time_cnt == freq)                                                //判斷分頻值
  168.                 beep_reg_n = ~beep_reg;                                //改變蜂鳴器的狀態(tài)
  169.         else
  170.                 beep_reg_n = beep_reg;                                //蜂鳴器的狀態(tài)保持不變
  171. end
  172. always @  (posedge CLK_50M)
  173. begin
  174.   if(gewei==4'h5 && shiwei==4'h0)
  175.   FM = beep_reg;
  176. end

  177. endmodule
復(fù)制代碼

所有資料51hei提供下載:
final.zip (3.37 MB, 下載次數(shù): 10)


評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕日韩av | 成人av一区 | 中文字幕视频在线观看 | 午夜视频在线免费观看 | 蜜桃传媒一区二区 | 国产98色在线 | 日韩 | 亚洲一区二区三区在线播放 | 草久网| 成人3d动漫一区二区三区91 | 亚洲综合字幕 | 欧美日日| 欧美在线色视频 | 亚洲v日韩v综合v精品v | 欧美精品1区 | 天堂男人av | 国产成人高清视频 | 精品久久一 | 国产一级影片 | 久久久这里只有17精品 | 在线免费视频一区 | 伊久在线| 国产一区二区三区视频免费观看 | 日韩精品三区 | 日韩欧美国产一区二区三区 | 成人国产精品 | 欧美性受xxxx | 成年人国产在线观看 | 久久亚洲欧美日韩精品专区 | 狠狠爱一区二区三区 | 蜜桃综合在线 | 综合久| 国产1区2区 | 久久中文字幕一区 | 亚洲欧美激情网 | 久久69精品久久久久久久电影好 | 日韩成人专区 | 欧美成人激情视频 | 欧美一级片 | 成人免费看片网 | 一区二区三区四区在线视频 | 日韩久久成人 |