0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Verilog實(shí)現(xiàn)流水燈及與C語(yǔ)言的對(duì)比

FPGA之家 ? 來(lái)源:FPGA之家 ? 2023-05-14 14:11 ? 次閱讀

一、 軟件平臺(tái)與硬件平臺(tái)

軟件平臺(tái):

1、操作系統(tǒng):Windows-8.1

2、開發(fā)套件:ISE14.7

3、仿真工具:ModelSim-10.4-SE

硬件平臺(tái):

1、FPGA型號(hào):XC6SLX45-2CSG324

二、 原理介紹

我的開發(fā)板上有4個(gè)LED燈,原理圖如下:

c466b6e8-f0aa-11ed-90ce-dac502259ad0.png

由原理圖可知僅當(dāng)FPGA的對(duì)應(yīng)管腳輸入低電平時(shí)LED才會(huì)亮,流水燈的效果可以輪流讓四個(gè)對(duì)應(yīng)管腳輸出低電平來(lái)產(chǎn)生。

三、 目標(biāo)任務(wù)

編寫四個(gè)LED流水的Verilog代碼并用ModelSim進(jìn)行仿真,仿真通過(guò)以后下載到開發(fā)板進(jìn)行測(cè)試,要求開發(fā)板上每個(gè)LED亮的時(shí)間為1s。

四、 設(shè)計(jì)思路與Verilog代碼編寫

由于每個(gè)LED亮的時(shí)間為1s,所以首先很自然想到產(chǎn)生一個(gè)1s的時(shí)鐘用來(lái)驅(qū)動(dòng)后續(xù)邏輯,有了這個(gè)1s的時(shí)鐘以后,就可以在這個(gè)1s時(shí)鐘的節(jié)拍下對(duì)LED的輸出進(jìn)行以移位操作來(lái)產(chǎn)生流水燈的效果。

1、1s時(shí)鐘的分頻邏輯

由于主時(shí)鐘是50MHz,周期為20ns,所以可以利用50MHz主時(shí)鐘驅(qū)動(dòng)一個(gè)計(jì)數(shù)器,當(dāng)計(jì)數(shù)器的值每次到達(dá)24999999時(shí),消耗的時(shí)間為25000000*20ns=0.5s,這時(shí)把分頻器的輸出反轉(zhuǎn),并把計(jì)數(shù)值清0,這樣分頻器的輸出就會(huì)每隔0.5s翻轉(zhuǎn)一次,產(chǎn)生了一個(gè)1s的時(shí)鐘。

Verilog代碼如下:

//////////////////////////////////////////////////////////////////
// 功能:產(chǎn)生1s的時(shí)鐘
//////////////////////////////////////////////////////////////////
always @(posedge I_clk or negedge I_rst_n)
begin
    if(!I_rst_n)
        begin
            R_cnt_ls        <= 32'd0 ;
            R_clk_ls_reg    <= 1'b1  ;
        end 
    else if(R_cnt_ls == 32'd24_999_999)
        begin
            R_cnt_ls        <= 32'd0          ;
            R_clk_ls_reg    <= ~R_clk_ls_reg  ;
        end
    else
        R_cnt_ls <= R_cnt_ls + 1'b1 ;
end

assign W_clk_ls = R_clk_ls_reg ;

2、移位邏輯

有了1s的時(shí)鐘信號(hào)以后,就在這個(gè)1s時(shí)鐘信號(hào)的驅(qū)動(dòng)下對(duì)輸出的LED寄存器進(jìn)行移位操作產(chǎn)生流水效果。

Verilog代碼如下:

//////////////////////////////////////////////////////////////////
// 功能:對(duì)輸出寄存器進(jìn)行移位產(chǎn)生流水效果
//////////////////////////////////////////////////////////////////
always @(posedge W_clk_ls or negedge I_rst_n)
begin
    if(!I_rst_n)
        R_led_out_reg <= 4'b0001 ;
    else if(R_led_out_reg == 4'b1000)
        R_led_out_reg <= 4'b0001 ;
    else    
        R_led_out_reg <= R_led_out_reg << 1 ;
end

assign O_led_out = ~R_led_out_reg ;

五、 ModelSim仿真

寫好邏輯以后,為了確定時(shí)序是正確的,最好寫一個(gè)測(cè)試文件對(duì)功能進(jìn)行仿真,為了加快仿真速度,修改分頻邏輯計(jì)數(shù)器的計(jì)數(shù)值為24,然后編寫測(cè)試文件,測(cè)試文件中激勵(lì)產(chǎn)生的Verilog代碼如下:

initial begin
    // Initialize Inputs
    I_clk = 0;
    I_rst_n = 0;

    // Wait 100 ns for global reset to finish
    #100;
    I_rst_n = 1;
    
    // Add stimulus here

end

always #10 I_clk = ~I_clk ;

仿真的時(shí)序圖如下圖所示:

c4e260fe-f0aa-11ed-90ce-dac502259ad0.jpg

可以看到時(shí)序完全正確,接下來(lái)就是綁定管腳,生成bit文件下載到開發(fā)板測(cè)試了。

六、 進(jìn)一步思考——C語(yǔ)言流水燈與Verilog流水燈區(qū)別

看完網(wǎng)上《Verilog那些事》系列博文以后,作者提出了一種“仿順序操作”方法,其實(shí)以前自己寫代碼的時(shí)候無(wú)形之中一直在用這種思想,但是一直沒有提煉出來(lái),看完作者的介紹以后才發(fā)現(xiàn)確實(shí)是有那個(gè)“仿順序”的味道。詳細(xì)的博文請(qǐng)參考博客園博主akuei2的系列博文。這里我在總結(jié)一遍,給以后留個(gè)印象。

C語(yǔ)言實(shí)現(xiàn)流水燈的大致代碼框架如下:

while(1)

{

1、讓第1個(gè)LED亮,其他的滅;

2、延時(shí)1s

3、讓第2個(gè)LED亮,其他的滅

4、延時(shí)1s

5、讓第3個(gè)LED亮,其他的滅;

6、延時(shí)1s

7、讓第4個(gè)LED亮,其他的滅

8、延時(shí)1s

}

在while(1)里面代碼是一行一行的執(zhí)行,最后一行執(zhí)行完畢以后在回到第一行重新開始新一輪的執(zhí)行。就這樣產(chǎn)生了流水的效果。

看到這里,有人應(yīng)該突然明白了吧,這不正好就是Verilog中的一個(gè)狀態(tài)機(jī)么。對(duì)應(yīng)的Verilog代碼也可以寫出來(lái)了

always @(posedge I_clk)

begin

case(R_state)

第1個(gè)狀態(tài):讓第1個(gè)LED亮,其他的滅,下一狀態(tài)是第2個(gè)狀態(tài);

第2個(gè)狀態(tài):延時(shí)1s,下一狀態(tài)是第3個(gè)狀態(tài);

第3個(gè)狀態(tài):讓第2個(gè)LED亮,其他的滅,下一狀態(tài)是第4個(gè)狀態(tài);

第4個(gè)狀態(tài):延時(shí)1s,下一狀態(tài)是第5個(gè)狀態(tài);

第5個(gè)狀態(tài):讓第3個(gè)LED亮,其他的滅,下一狀態(tài)是第6個(gè)狀態(tài);

第6個(gè)狀態(tài):延時(shí)1s,下一狀態(tài)是第7個(gè)狀態(tài);

第7個(gè)狀態(tài):讓第4個(gè)LED亮,其他的滅,下一狀態(tài)是第8個(gè)狀態(tài);

第8個(gè)狀態(tài):延時(shí)1s,下一狀態(tài)是第1個(gè)狀態(tài);

default :;

endcase

end

具體的代碼如下:

//////////////////////////////////////////////////////////////////
// 功能:“仿順序操作”
//////////////////////////////////////////////////////////////////
always @(posedge I_clk or negedge I_rst_n)
begin
    if(!I_rst_n)
        begin
            R_state  <= 3'b000 ;
            R_cnt_ls <= 32'd0  ;
        end
    else
        begin    
            case(R_state)
                C_S0:
                    begin
                        R_led_out_reg <= 4'b0001 ;
                        R_state       <= C_S1    ;
                    end
                C_S1:
                    begin
                        if(R_cnt_ls == C_CNT_1S)
                            begin
                                R_cnt_ls <= 32'd0 ;
                                R_state  <= C_S2  ;
                            end
                        else
                            R_cnt_ls <= R_cnt_ls + 1'b1 ;
                    end
                C_S2:
                    begin
                        R_led_out_reg <= 4'b0010 ;
                        R_state       <= C_S3    ;
                    end
                C_S3:
                    begin
                        if(R_cnt_ls == C_CNT_1S)
                            begin
                                R_cnt_ls <= 32'd0 ;
                                R_state  <= C_S4  ;
                            end
                        else
                            R_cnt_ls <= R_cnt_ls + 1'b1 ;
                    end
                C_S4:
                    begin
                        R_led_out_reg <= 4'b0100 ;
                        R_state       <= C_S5    ;
                    end
                C_S5:
                    begin
                        if(R_cnt_ls == C_CNT_1S)
                            begin
                                R_cnt_ls <= 32'd0 ;
                                R_state  <= C_S6  ;
                            end
                        else
                            R_cnt_ls <= R_cnt_ls + 1'b1 ;
                    end
                C_S6:
                    begin
                        R_led_out_reg <= 4'b1000 ;
                        R_state <= C_S7 ;
                    end
                C_S7:
                    begin
                        if(R_cnt_ls == C_CNT_1S)
                            begin
                                R_cnt_ls <= 32'd0 ;
                                R_state  <= C_S0  ;
                            end
                        else
                            R_cnt_ls <= R_cnt_ls + 1'b1 ;
                    end 
                default: R_state <= 3'b000 ;
            endcase 
        end                  
end

assign O_led_out = ~R_led_out_reg ;

時(shí)序圖如下圖:

c5178982-f0aa-11ed-90ce-dac502259ad0.jpg

時(shí)序圖仍然正確,實(shí)現(xiàn)了流水燈的效果

七、 總結(jié)

1、所謂的“仿順序操作”實(shí)際上就是一個(gè)狀態(tài)機(jī),通過(guò)狀態(tài)的跳變實(shí)現(xiàn)“順序執(zhí)行”的效果。這種思想在后面寫接口時(shí)序的時(shí)候還是挺管用的,今后可以多多琢磨琢磨。

2、 C語(yǔ)言的while(1)和Verilog語(yǔ)言的always @(posedge I_clk)有類似的地方,只要CPU的時(shí)鐘存在,它們就一直執(zhí)行下去。書上都說(shuō)C語(yǔ)言是一種串行語(yǔ)言,Verilog是一種并行語(yǔ)言,實(shí)際上這里也能有體會(huì):C語(yǔ)言里只能有1個(gè)while(1)語(yǔ)句,進(jìn)入while(1)以后CPU就出不來(lái)了,而Verilog中可以有多個(gè)always @(posedge I_clk)語(yǔ)句,并且每個(gè)always @(posedge I_clk)同時(shí)運(yùn)行的,這就是兩種語(yǔ)言最大的區(qū)別吧。

八、 附錄

1、分頻1s產(chǎn)生流水燈的完整代碼

module led_work_top
(
    input           I_clk       ,
    input           I_rst_n     ,
    output  [3:0]   O_led_out
);

reg  [31:0]  R_cnt_ls      ;
wire         W_clk_ls      ;
reg          R_clk_ls_reg  ;
reg  [3:0]   R_led_out_reg ;

//////////////////////////////////////////////////////////////////
// 功能:產(chǎn)生1s的時(shí)鐘
//////////////////////////////////////////////////////////////////
always @(posedge I_clk or negedge I_rst_n)
begin
    if(!I_rst_n)
        begin
            R_cnt_ls        <= 32'd0 ;
            R_clk_ls_reg    <= 1'b1  ;
        end 
    else if(R_cnt_ls == 32'd24_999_999)
        begin
            R_cnt_ls        <= 32'd0          ;
            R_clk_ls_reg    <= ~R_clk_ls_reg  ;
        end
    else
        R_cnt_ls <= R_cnt_ls + 1'b1 ;
end

assign W_clk_ls = R_clk_ls_reg ;

//////////////////////////////////////////////////////////////////
// 功能:對(duì)輸出寄存器進(jìn)行移位產(chǎn)生流水效果
//////////////////////////////////////////////////////////////////
always @(posedge W_clk_ls or negedge I_rst_n)
begin
    if(!I_rst_n)
        R_led_out_reg <= 4'b0001 ;
    else if(R_led_out_reg == 4'b1000)
        R_led_out_reg <= 4'b0001 ;
    else    
        R_led_out_reg <= R_led_out_reg << 1 ;
end

assign O_led_out = ~R_led_out_reg ;

endmodule

2、 “仿順序操作”產(chǎn)生流水燈完整代碼

module led_work_top
(
    input           I_clk         ,
    input           I_rst_n       ,
    output  [3:0]   O_led_out
);
                                  
reg  [31:0]  R_cnt_ls             ;
reg  [3:0]   R_led_out_reg        ;
reg  [2:0]   R_state              ;

parameter    C_CNT_1S =   32'd49_999_999  ;

parameter    C_S0     =   3'b000  ,
             C_S1     =   3'b001  ,
             C_S2     =   3'b010  ,
             C_S3     =   3'b011  ,
             C_S4     =   3'b100  ,
             C_S5     =   3'b101  ,
             C_S6     =   3'b110  ,
             C_S7     =   3'b111  ;

//////////////////////////////////////////////////////////////////
// 功能:仿順序操作
//////////////////////////////////////////////////////////////////
always @(posedge I_clk or negedge I_rst_n)
begin
    if(!I_rst_n)
        begin
            R_state  <= 3'b000 ;
            R_cnt_ls <= 32'd0  ;
        end
    else
        begin    
            case(R_state)
                C_S0:
                    begin
                        R_led_out_reg <= 4'b0001 ;
                        R_state       <= C_S1    ;
                    end
                C_S1:
                    begin
                        if(R_cnt_ls == C_CNT_1S)
                            begin
                                R_cnt_ls <= 32'd0 ;
                                R_state  <= C_S2  ;
                            end
                        else
                            R_cnt_ls <= R_cnt_ls + 1'b1 ;
                    end
                C_S2:
                    begin
                        R_led_out_reg <= 4'b0010 ;
                        R_state       <= C_S3    ;
                    end
                C_S3:
                    begin
                        if(R_cnt_ls == C_CNT_1S)
                            begin
                                R_cnt_ls <= 32'd0 ;
                                R_state  <= C_S4  ;
                            end
                        else
                            R_cnt_ls <= R_cnt_ls + 1'b1 ;
                    end
                C_S4:
                    begin
                        R_led_out_reg <= 4'b0100 ;
                        R_state       <= C_S5    ;
                    end
                C_S5:
                    begin
                        if(R_cnt_ls == C_CNT_1S)
                            begin
                                R_cnt_ls <= 32'd0 ;
                                R_state  <= C_S6  ;
                            end
                        else
                            R_cnt_ls <= R_cnt_ls + 1'b1 ;
                    end
                C_S6:
                    begin
                        R_led_out_reg <= 4'b1000 ;
                        R_state <= C_S7 ;
                    end
                C_S7:
                    begin
                        if(R_cnt_ls == C_CNT_1S)
                            begin
                                R_cnt_ls <= 32'd0 ;
                                R_state  <= C_S0  ;
                            end
                        else
                            R_cnt_ls <= R_cnt_ls + 1'b1 ;
                    end 
                default: R_state <= 3'b000 ;
            endcase 
        end                  
end

assign O_led_out = ~R_led_out_reg ;

endmodule

3、測(cè)試記錄文件完整代碼

module tb_led_work_top;

    // Inputs
    reg I_clk;
    reg I_rst_n;

    // Outputs
    wire [3:0] O_led_out;

    // Instantiate the Unit Under Test (UUT)
    led_work_top U_led_work_top (
        .I_clk(I_clk),
        .I_rst_n(I_rst_n),
        .O_led_out(O_led_out)
    );

    initial begin
        // Initialize Inputs
        I_clk = 0;
        I_rst_n = 0;

        // Wait 100 ns for global reset to finish
        #100;
        I_rst_n = 1;
        
        // Add stimulus here

    end
    
    always #5 I_clk = ~I_clk ;
      
endmodule

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1629

    文章

    21738

    瀏覽量

    603459
  • led
    led
    +關(guān)注

    關(guān)注

    242

    文章

    23278

    瀏覽量

    660939
  • Verilog
    +關(guān)注

    關(guān)注

    28

    文章

    1351

    瀏覽量

    110106
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7604

    瀏覽量

    136860
  • 流水燈
    +關(guān)注

    關(guān)注

    21

    文章

    433

    瀏覽量

    59718

原文標(biāo)題:【接口時(shí)序】2、Verilog實(shí)現(xiàn)流水燈及與C語(yǔ)言的對(duì)比

文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于Verilog FPGA 流水燈設(shè)計(jì)_流水燈源碼_明德?lián)P資料

    LED流水廣告燈工程說(shuō)明在本案例中,使用常用的verilog語(yǔ)言完成該程序,設(shè)計(jì)并控制8個(gè)燈的花式或循環(huán)點(diǎn)亮;即上電后,實(shí)現(xiàn)左移和右移交替的流水燈
    發(fā)表于 08-02 17:56

    如何使用c語(yǔ)言實(shí)現(xiàn)LED流水燈

    單片機(jī)實(shí)驗(yàn):使用c語(yǔ)言實(shí)現(xiàn)LED流水燈目的:實(shí)現(xiàn)一個(gè)簡(jiǎn)單的流水燈程序仿真軟件:Portues編程軟件:KeilPortues 原理圖繪制:需
    發(fā)表于 11-30 07:52

    LED流水燈程序【C語(yǔ)言版】

    LED流水燈程序【C語(yǔ)言版】LED流水燈程序【C語(yǔ)言版】LED
    發(fā)表于 12-29 11:05 ?0次下載

    LED流水燈程序【C語(yǔ)言+匯編版】

    LED流水燈程序【C語(yǔ)言+匯編版】,感興趣的朋友可以學(xué)習(xí)。
    發(fā)表于 12-31 10:36 ?0次下載

    關(guān)于C語(yǔ)言流水燈驗(yàn)證的介紹

    使用C語(yǔ)言編寫流水燈程序。
    的頭像 發(fā)表于 07-10 06:01 ?3247次閱讀
    關(guān)于<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>的<b class='flag-5'>流水燈</b>驗(yàn)證的介紹

    C語(yǔ)言的基礎(chǔ)知識(shí)及流水燈實(shí)現(xiàn)程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是C語(yǔ)言的基礎(chǔ)知識(shí)及流水燈實(shí)現(xiàn)程序免費(fèi)下載。
    發(fā)表于 04-15 18:24 ?2次下載
    <b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>的基礎(chǔ)知識(shí)及<b class='flag-5'>流水燈</b>的<b class='flag-5'>實(shí)現(xiàn)</b>程序免費(fèi)下載

    使用單片機(jī)實(shí)現(xiàn)流水燈C語(yǔ)言程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用單片機(jī)實(shí)現(xiàn)流水燈C語(yǔ)言程序免費(fèi)下載。
    發(fā)表于 08-15 17:32 ?1次下載
    使用單片機(jī)<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>流水燈</b>的<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>程序免費(fèi)下載

    使用51單片機(jī)實(shí)現(xiàn)流水燈C語(yǔ)言的程序?qū)嵗赓M(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)實(shí)現(xiàn)流水燈C語(yǔ)言的程序?qū)嵗赓M(fèi)下載。
    發(fā)表于 07-19 17:38 ?9次下載
    使用51單片機(jī)<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>流水燈</b><b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>的程序?qū)嵗赓M(fèi)下載

    使用51單片機(jī)實(shí)現(xiàn)流水燈C語(yǔ)言程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)實(shí)現(xiàn)流水燈C語(yǔ)言程序免費(fèi)下載。
    發(fā)表于 05-27 08:00 ?2次下載
    使用51單片機(jī)<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>流水燈</b>的<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>程序免費(fèi)下載

    LED流水燈Verilog設(shè)計(jì)實(shí)例資料合集免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是LED流水燈Verilog設(shè)計(jì)實(shí)例資料合集免費(fèi)下載。
    發(fā)表于 04-16 18:02 ?20次下載
    LED<b class='flag-5'>流水燈</b>的<b class='flag-5'>Verilog</b>設(shè)計(jì)實(shí)例資料合集免費(fèi)下載

    使用verilog HDL實(shí)現(xiàn)狀態(tài)機(jī)8位流水燈的程序和工程文件免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用verilog HDL實(shí)現(xiàn)狀態(tài)機(jī)8位流水燈的程序和工程文件免費(fèi)下載。
    發(fā)表于 10-16 16:20 ?23次下載
    使用<b class='flag-5'>verilog</b> HDL<b class='flag-5'>實(shí)現(xiàn)</b>狀態(tài)機(jī)8位<b class='flag-5'>流水燈</b>的程序和工程文件免費(fèi)下載

    使用單片機(jī)實(shí)現(xiàn)24C02存儲(chǔ)花樣流水燈C語(yǔ)言實(shí)例免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用單片機(jī)實(shí)現(xiàn)24C02存儲(chǔ)花樣流水燈C語(yǔ)言實(shí)例免費(fèi)下載。
    發(fā)表于 03-24 13:52 ?20次下載

    基于AT89C51的單片機(jī)簡(jiǎn)易流水燈設(shè)計(jì)(C語(yǔ)言

    基于AT89C51的單片機(jī)簡(jiǎn)易流水燈設(shè)計(jì)(C語(yǔ)言)文章目錄一、功能介紹二、代碼展示三、仿真四、總結(jié)(一)思考題(二)注意的問題文章目錄一、功能介紹此程序是基于
    發(fā)表于 11-05 11:06 ?19次下載
    基于AT89<b class='flag-5'>C</b>51的單片機(jī)簡(jiǎn)易<b class='flag-5'>流水燈</b>設(shè)計(jì)(<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>)

    單片機(jī)實(shí)驗(yàn):使用c語(yǔ)言實(shí)現(xiàn)LED流水燈

    單片機(jī)實(shí)驗(yàn):使用c語(yǔ)言實(shí)現(xiàn)LED流水燈目的:實(shí)現(xiàn)一個(gè)簡(jiǎn)單的流水燈程序仿真軟件:Portues編程軟件:KeilPortues 原理圖繪制:需
    發(fā)表于 11-21 10:51 ?11次下載
    單片機(jī)實(shí)驗(yàn):使用<b class='flag-5'>c</b><b class='flag-5'>語(yǔ)言實(shí)現(xiàn)</b>LED<b class='flag-5'>流水燈</b>

    C語(yǔ)言查詢按鍵控制8個(gè)流水燈

    C語(yǔ)言查詢按鍵控制8個(gè)流水燈一.仿真電路圖注意發(fā)光二極管的方向以及接的電阻的大小。二.C語(yǔ)言代碼
    發(fā)表于 11-21 16:51 ?14次下載
    <b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>查詢按鍵控制8個(gè)<b class='flag-5'>流水燈</b>