国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

74HC595工作原理及FPGA實現(xiàn)數(shù)碼管驅(qū)動方法

這篇具有很好參考價值的文章主要介紹了74HC595工作原理及FPGA實現(xiàn)數(shù)碼管驅(qū)動方法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

74HC595工作原理及FPGA實現(xiàn)數(shù)碼管驅(qū)動方法

?74HC595,移位寄存器,串行輸入,8位并行輸出,一般用于數(shù)碼管電路以減少使用的IO口數(shù)量。


管腳介紹:

Q0~Q7 :八位并行輸出位

Q7'? ? ? ?:? 級聯(lián)位,若輸入位數(shù)大于8位,先進入的位會從此口連續(xù)輸出,用于多片之間的級聯(lián)

VCC GND 不多介紹

Ds? ? ? ? :? 串行數(shù)據(jù)輸入位

OE? ? ? ?: 輸出使能位,低有效,一般直接全程給低電平就行

SHcp? ?:? 移位寄存器時鐘輸入,后文詳述

STcp? ? :? 存儲寄存器時鐘輸入,同上

MR? ? ? : 主復(fù)位,低有效,一般直接接到VCC拉高


74HC595工作原理及FPGA實現(xiàn)數(shù)碼管驅(qū)動方法

? ? ? ?上圖為74HC595內(nèi)部結(jié)構(gòu),一個8位的移位寄存器,一個8位的存儲寄存器,再有一個8位的并行輸出。

? ? ? 為講明Q7'的級聯(lián)作用,此處應(yīng)用場景選擇為:6位8段數(shù)碼管,驅(qū)動此數(shù)碼管共需要8位段選端和6位位選端,共14位串行數(shù)據(jù)輸入。

? ? ? ?Ds數(shù)據(jù)輸入端串行輸入時,在SHcp的上升沿將數(shù)據(jù)移入移位寄存器內(nèi),每個SHcp上升沿移入一位單bit數(shù)據(jù),最先輸入的一直向后移直到8個SHcp上升沿后,移位寄存器填滿,此時若數(shù)據(jù)輸入端還有數(shù)據(jù)輸入,下一個SHcp上升沿到來時,最先輸入的1bit數(shù)據(jù)就會從Q7'輸出(此處可理解為隊列,先進先出)。在STcp的上升沿,數(shù)據(jù)會從移位寄存器進入存儲寄存器中,當(dāng)OE低有效時,存儲寄存器中的值從Q0~Q7并行輸出。

74HC595工作原理及FPGA實現(xiàn)數(shù)碼管驅(qū)動方法

?

? ? ? ?上述應(yīng)用場景下,將第一片74HC595的Q7‘串行輸出端接到第二片的數(shù)據(jù)輸入端Ds,實現(xiàn)級聯(lián)功能。經(jīng)過14個時鐘SHcp上升沿后,數(shù)據(jù)已經(jīng)全部移位進入移位寄存器,一次共輸入14位數(shù)據(jù),那么第一位輸入的串行數(shù)據(jù)會在第二片74HC595芯片的Q5輸出,此時給一個上升沿的STcp信號就可以將信號移入存儲寄存器,OE信號持續(xù)給低, 即可輸出。

上述過程中還存在一個問題,SHCP頻率給多少合適?它是有限制的

74HC595工作原理及FPGA實現(xiàn)數(shù)碼管驅(qū)動方法

? ? ? ? 我實驗板子的電壓為3.3V,取圖中2V的亦可,采用50MHZ的四分頻12.5MHZ作為SHCP時鐘,計數(shù)SHCP時鐘上升沿,14個上升沿給出一個STCP的上升沿作為STCP時鐘,相當(dāng)于STCP時鐘是SHCP時鐘的14分頻。

主要難點就在于SHCP和STCP時鐘的獲得,其他的按步驟來即可。

代碼如下,需者自?。o態(tài)數(shù)碼管)

`timescale 1ns/1ns


module seg_static(
    input sys_clk,
    input sys_rst_n,
    output reg [7:0]seg,
    output reg [5:0]sel
);

parameter seg_0 = 8'hc0,
          seg_1 = 8'hf9,
          seg_2 = 8'ha4,
          seg_3 = 8'hb0,
          seg_4 = 8'h99,
          seg_5 = 8'h92,
          seg_6 = 8'h82,
          seg_7 = 8'hf8,
          seg_8 = 8'h80,
          seg_9 = 8'h90,
          seg_a = 8'h88,
          seg_b = 8'h83,
          seg_c = 8'hc6,
          seg_d = 8'ha1,
          seg_e = 8'h86,
          seg_f = 8'h8e;
          
parameter cnt_500ms = 25'd24_999_999 ;
//parameter cnt_500ms = 25'd32_999_999 ;      

reg [24:0]cnt;   
reg [3:0]num;
          
always@(posedge sys_clk or negedge sys_rst_n)          
        if(sys_rst_n==1'b0)  
          cnt <= 25'd0;
          else if(cnt==cnt_500ms)
           cnt <= 25'd0;
           else 
           cnt <= cnt + 1'b1;
           
           
always@(posedge sys_clk or negedge sys_rst_n)          
        if(sys_rst_n==1'b0)  
          num <= 4'd0;
          else if(num==4'd15 && cnt==cnt_500ms)
           num <= 4'd0;
           else if(cnt==cnt_500ms)
           num <= num + 1'b1; 
            else 
           num <= num;
           
always@(posedge sys_clk or negedge sys_rst_n)          
        if(sys_rst_n==1'b0)  
          seg <= 8'b1111_1111;
          else
           case(num)          
          0 : seg <= seg_0;
          1 : seg <= seg_1;
          2 : seg <= seg_2;
          3 : seg <= seg_3;
          4 : seg <= seg_4;
          5 : seg <= seg_5;
          6 : seg <= seg_6;
          7 : seg <= seg_7;
          8 : seg <= seg_8;
          9 : seg <= seg_9;
         10 : seg <= seg_a;
         11 : seg <= seg_b;
         12 : seg <= seg_c;
         13 : seg <= seg_d; 
         14 : seg <= seg_e; 
         15 : seg <= seg_f; 
      default : seg <= 8'b1111_1111;   
      endcase
      
always@(posedge sys_clk or negedge sys_rst_n)          
        if(sys_rst_n==1'b0)  
          sel <= 6'b0;
          else 
          sel <= 6'b111_111;         
         
          
endmodule
`timescale  1ns/1ns


module hc595_ctrl(
    input sys_clk,
    input sys_rst_n,
    input wire [7:0]seg,
    input wire [5:0]sel,
    output reg shcp,
    output reg stcp,
    output reg ds,
    output wire oe
);

reg [1:0]cnt_4;
reg [3:0]cnt_14;

wire [13:0]data;

assign data = {seg[0],seg[1],seg[2],seg[3],seg[4],seg[5],seg[6],seg[7],sel};

always@(posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n==1'b0)
        cnt_4 <= 2'b0;
        else if(cnt_4==2'd3)
        cnt_4 <= 2'b0;
        else 
        cnt_4 <= cnt_4 + 1'b1;


//sys_clk的四分頻當(dāng)作shcp時鐘
always@(posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n==1'b0)
        shcp <= 1'b0;
        else if(cnt_4 <= 2'd1)
        shcp <= 1'b0;
        else  
        shcp <= 1'b1;
        
        
//產(chǎn)生stcp時鐘
always@(posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n==1'b0)
        cnt_14 <= 4'b0;
        else if(cnt_14==4'd13 && cnt_4==2'd3)
        cnt_14 <= 4'b0;
        else if(cnt_4==2'd3)
         cnt_14 <= cnt_14 + 1'b1;
        else 
        cnt_14 <= cnt_14;
        
always@(posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n==1'b0)
        stcp <= 1'b0;
        else if(cnt_14==4'd13 && cnt_4==2'd3)
        stcp <= 1'b1;
        else 
        stcp <= 1'b0;


//產(chǎn)生ds信號

always@(posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n==1'b0)
        ds <= 1'b0;
        else if(cnt_4==2'd0)
        ds <= data[cnt_14];
        else 
        ds <= ds;


//產(chǎn)生oe信號

assign oe = ~sys_rst_n;



endmodule
`timescale  1ns/1ns

module smg_static(
    input  sys_clk,
    input  sys_rst_n,
    output shcp,
    output stcp,
    output oe,
    output ds
);

wire [7:0]seg;
wire [5:0]sel;

seg_static seg_static_inst(
   .sys_clk(sys_clk),
   .sys_rst_n(sys_rst_n),
   .seg(seg),
   .sel(sel)

);

hc595_ctrl hc595_ctrl_inst(
    .sys_clk(sys_clk),
    .sys_rst_n(sys_rst_n),
    .seg(seg),
    .sel(sel),
    .shcp(shcp),
    .stcp(stcp),
    .ds(ds),
    .oe(oe)
);

endmodule

動態(tài)數(shù)碼管隨緣更新文章來源地址http://www.zghlxwxcb.cn/news/detail-402045.html

到了這里,關(guān)于74HC595工作原理及FPGA實現(xiàn)數(shù)碼管驅(qū)動方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • STM32 4位數(shù)碼管和74HC595

    STM32 4位數(shù)碼管和74HC595

    ????????在使用一位數(shù)碼管的時候,會用到8個IO口,那如果使用4位數(shù)碼管,難道要使用32個IO口嗎?肯定是不行的,太浪費了IO口了。把四個數(shù)碼管全部接一起共用8個IO口,然后分別給他們一個片選。所以4位數(shù)碼管共有12個IO口。 ? ? ? ? 當(dāng)選擇數(shù)碼管1顯示的時候,這可以

    2024年04月17日
    瀏覽(38)
  • 51單片機驅(qū)動8位數(shù)碼管(74HC595驅(qū)動)滾動顯示

    51單片機驅(qū)動8位數(shù)碼管(74HC595驅(qū)動)滾動顯示

    原文鏈接:https://www.yourcee.com/newsinfo/2929591.html 點擊圖片購買 主要關(guān)注下供電電壓是3.0-5.0v(建議5V),請在規(guī)定范圍內(nèi)供電。 模塊上芯片引出5個引腳,芯片引腳與模塊引腳對應(yīng)關(guān)系是:VCC-VCC SCK-SCLK, RCK-RCLK,SER-DIO,GND-GND 可以對比程序?qū)W習(xí)時序圖,便于理解。 1.顯示異??膳懦?/p>

    2024年02月15日
    瀏覽(41)
  • 【基礎(chǔ)知識】【模塊介紹】8位8段數(shù)碼管(74HC595)【硬件部分】

    【基礎(chǔ)知識】【模塊介紹】8位8段數(shù)碼管(74HC595)【硬件部分】

    數(shù)碼管實際上是 多個LED按照一定順序排列,并加上遮罩所構(gòu)成的元件。 八段一般會引出9個引腳,其中7個引腳顯示數(shù)字(或某些字母),1個顯示小數(shù)點,1個作為片選端。 根據(jù)連接方式的不同,數(shù)碼管分為共陽和共陰。 共陽在這端輸出低電平時點亮,高電平時會熄滅,共陰

    2023年04月17日
    瀏覽(20)
  • 51單片機通過兩片74HC595級聯(lián),用8位LED數(shù)碼管,分別顯示當(dāng)前日期,如:“2”、“0”、“-”、“0”、“5”、“-”、“2”、“6”,用Proteus仿真實現(xiàn)。

    51單片機通過兩片74HC595級聯(lián),用8位LED數(shù)碼管,分別顯示當(dāng)前日期,如:“2”、“0”、“-”、“0”、“5”、“-”、“2”、“6”,用Proteus仿真實現(xiàn)。

    1.先上仿真圖,但這么連仿真圖是不太正確的,要注意。展示的話能用就行。 2.從上到下依次放上數(shù)據(jù)手冊上的引腳解釋和邏輯功能和時序圖 ? ?3.貼上代碼:寫了發(fā)送一字節(jié)數(shù)據(jù)函數(shù),發(fā)送全部字節(jié)函數(shù),加上一些寫了很久的解釋(求贊)。

    2024年02月08日
    瀏覽(31)
  • 基于MAX-10 FPGA 讀取超聲波模塊HC_SR04距離數(shù)據(jù)到數(shù)碼管上

    基于MAX-10 FPGA 讀取超聲波模塊HC_SR04距離數(shù)據(jù)到數(shù)碼管上

    將MAX-10小腳丫FPGA和超聲波模塊HC_SR04插在面包板上,用杜邦線將對應(yīng)的引腳連接好,燒錄程序,小腳丫自帶的數(shù)碼管顯示距離數(shù)據(jù)(單位是厘米)。 這張圖拍花了,數(shù)碼管顯示的數(shù)據(jù)是18CM HC-SR04是一種基于超聲波的測距模塊。該模塊向前15度內(nèi)發(fā)送超聲波并接收回響,通過發(fā)

    2024年02月14日
    瀏覽(22)
  • 51單片機LED點陣控制原理、74HC595工作原理和字母和滾動顯示實驗代碼

    51單片機LED點陣控制原理、74HC595工作原理和字母和滾動顯示實驗代碼

    目錄 1. 74HC595工作原理圖解 ?2.LED點陣控制原理 3.點陣LED實驗 3.1 配置74HC595代碼 3.2 D點陣LED顯示H? ?3.3 滾動LED? (1) 滾動掃描圖示 ?(2)程序代碼 4.遇到奇怪的bug ? ?:? ? ? ? 輸出使能,輸入低電平允許輸出,因此需要用接線帽j24讓oe和地短接。 (但是我普中A2的板子,不

    2024年02月04日
    瀏覽(31)
  • 51單片機---編程實現(xiàn)流水燈----鍵盤控制數(shù)碼管顯示--利用74LS164擴展并行輸出口---定時中斷方式驅(qū)動一個數(shù)碼管

    目錄 基于51單片機,用c語言編程實現(xiàn)流水燈 代碼: 使用C語言編寫的基于51單片機的鍵盤控制數(shù)碼管顯示 代碼: 基于51單片機,用c語言編程實現(xiàn)利用74LS164擴展并行輸出口 代碼: 基于51單片機,用c語言編程實現(xiàn)定時中斷方式驅(qū)動一個數(shù)碼管? 代碼:? 1- 2- 上述代碼中,使用

    2024年02月16日
    瀏覽(19)
  • FPGA項目(5)--FPGA控制數(shù)碼管動態(tài)顯示的原理

    FPGA項目(5)--FPGA控制數(shù)碼管動態(tài)顯示的原理

    ????????數(shù)碼管是現(xiàn)在電子產(chǎn)品上常用的顯示器件,它有驅(qū)動簡單、顯示清晰、價格低廉等優(yōu)勢。數(shù)碼管的實物圖: ?????????數(shù)碼管的內(nèi)部結(jié)構(gòu)圖如下所示: ? ? ? ? ?從圖中可以看出,它由八個段組成,即A B C D E F G DP(小數(shù)點),只要將這八個段按規(guī)律組合點亮,就

    2024年02月11日
    瀏覽(22)
  • FPGA學(xué)習(xí)—通過數(shù)碼管實現(xiàn)電子秒表模擬

    FPGA學(xué)習(xí)—通過數(shù)碼管實現(xiàn)電子秒表模擬

    請參閱博主以前寫過的一篇電子時鐘模擬,在此不再贅述。 https://blog.csdn.net/qq_54347584/article/details/130402287 項目說明:本次項目是為了通過數(shù)碼管實現(xiàn)秒表模擬。其中,六位數(shù)碼管分別顯示秒表的分位,秒位,毫秒位(由于毫秒有三位,在此只取百位和十位),其中分位和秒位

    2024年02月14日
    瀏覽(15)
  • 四位數(shù)碼管3641AS的FPGA實現(xiàn)

    四位數(shù)碼管3641AS的FPGA實現(xiàn)

    ?????????四位數(shù)碼管3641AS為一款 共陰極 的四位八段數(shù)碼管,其具體的每一段為單個二極管,可通過壓降實現(xiàn)點亮,通過控制單位多段二極管的點亮實現(xiàn)數(shù)字或字母等字符。 ????????共陰極:八段發(fā)光二極管的陰極端連接在一起,陽極端分開控制,使用時候公共端接地

    2024年02月05日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包