<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 數字萬(wàn)年歷設計

數字萬(wàn)年歷設計

作者: 時(shí)間:2023-12-15 來(lái)源:電子森林 收藏
  • 普通列表項目任務(wù):基于核心板 和 底板 完成數字設計并觀(guān)察調試結果
  • 普通列表項目要求:驅動(dòng)底板上的實(shí)時(shí)時(shí)鐘芯片DS1340Z獲取時(shí)間信息(年、月、日、周、時(shí)、分、秒),顯示在8位數碼管上,分兩頁(yè)顯示,第一頁(yè)顯示年月日周信息,第二頁(yè)顯示時(shí)分秒信息,通過(guò)旋轉編碼器調節數字和控制顯示,具體控制如下:
    • 有8個(gè)狀態(tài)(常態(tài)、調年、調月、調日、調周、調時(shí)、調分、調秒)
    • 按動(dòng)旋轉編碼器在8個(gè)狀態(tài)中依次循環(huán)切換
    • 常態(tài)下,轉動(dòng)編碼器切換顯示頁(yè),逆時(shí)針轉顯示第一頁(yè),順時(shí)針轉顯示第二頁(yè)
    • 調節狀態(tài)下,旋轉調節時(shí)間,逆時(shí)針轉減,順時(shí)針轉加
    • 調節狀態(tài)下,顯示被調節選項所在頁(yè),同時(shí)被調節選項閃爍顯示
  • 普通列表項目解析:通過(guò)編程驅動(dòng)實(shí)時(shí)時(shí)鐘芯片DS1340Z,實(shí)現時(shí)間寫(xiě)入和讀出的功能,驅動(dòng)旋轉編碼器獲取操作信息,設計一個(gè)控制模塊根據編碼器操作信息控制數字萬(wàn)年歷的邏輯(包括時(shí)間調節,顯示控制),最后驅動(dòng)數碼管顯示數字萬(wàn)年歷信息。

前面的章節中我們學(xué)習了掃描式數碼管模塊和旋轉編碼器模塊的工作原理及驅動(dòng)方法,也對I2C總線(xiàn)協(xié)議及相關(guān)知識,本實(shí)驗主要對I2C總線(xiàn)驅動(dòng)方法加以練習,同時(shí)完成數字萬(wàn)年歷時(shí)間調節和顯示控制的邏輯,最終完成數字萬(wàn)年歷總體設計。

本文引用地址:http://dyxdggzs.com/article/202312/453964.htm
  • 復習I2C總線(xiàn)工作原理及通信協(xié)議
  • 練習I2C接口驅動(dòng)設計方法,完成實(shí)時(shí)時(shí)鐘芯片DS1340Z驅動(dòng)設計
  • 根據要求完成數字萬(wàn)年歷調時(shí)和顯示控制的邏輯
  • 完成數字萬(wàn)年歷設計實(shí)現

根據前面的實(shí)驗解析我們可以得知,該設計可以拆分成幾個(gè)功能模塊實(shí)現,

  • Encoder:驅動(dòng)旋轉編碼器旋轉功能實(shí)現,獲取轉動(dòng)信息
  • Debounce:驅動(dòng)旋轉編碼器按鍵功能實(shí)現,實(shí)現按鍵消抖
  • modectrl:根據編碼器操作信息控制萬(wàn)年歷時(shí)間調節和顯示控制邏輯 * DS1340Zdriver:驅動(dòng)實(shí)時(shí)時(shí)鐘芯片DS1340Z完成時(shí)間寫(xiě)入和讀出功能
  • Segment_scan:通過(guò)驅動(dòng)掃描式數碼管將萬(wàn)年歷信息顯示出來(lái)。

Top-Down層次設計

 

模塊結構設計

實(shí)驗原理

DS1340Z模塊介紹

從DS1340Z芯片手冊可以得到如下信息,DS1340Z芯片典型電路連接如下:

典型電路連接

DS1340Z芯片管腳功能描述如下(SO-8封裝):

管腳功能描述

DS1340Z芯片內部結構圖如下:

芯片內部結構圖

DS1340Z模塊連接

底板上的實(shí)時(shí)時(shí)鐘芯片DS1340Z模塊電路圖如下(上拉電阻未顯示):

DS1340Z模塊電路

我們的實(shí)時(shí)時(shí)鐘芯片為DS1340Z-33,模塊電路中有電池座,電池電壓范圍為1.3V~5.5V,當安裝電池后底板掉電不影響實(shí)時(shí)時(shí)鐘芯片的運行,重新上電后讀取實(shí)時(shí)時(shí)鐘數據。

DS1340Z電壓范圍

實(shí)時(shí)時(shí)鐘芯片DS1340Z需要外置32.768KHz的晶體,芯片內部集成起振電阻電容等電路,晶體直接連接即可。

DS1340Z晶振連接

DS1340Z驅動(dòng)設計

前面實(shí)驗中我們已經(jīng)講述學(xué)習過(guò)I2C總線(xiàn)驅動(dòng)的設計,本實(shí)驗可以上原來(lái)的基礎上調整,首先來(lái)了解DS1340Z時(shí)序中的參數要點(diǎn)。

DS1340Z時(shí)序圖

DS1340Z時(shí)序參數

通過(guò)DS1340Z時(shí)序參數了解,DS1340Z支持I2C通信400KHz快速模式同時(shí)兼容100KHz的標準模式,還有兩種模式下時(shí)序中的各種時(shí)間參數,所以通信速度不需要調整。

  • 普通列表項目分頻得到400KHz的時(shí)鐘,程序實(shí)現同智能接近系統設計實(shí)驗。

I2C時(shí)序基本單元(啟動(dòng)、停止、發(fā)送、接收、發(fā)應答、讀應答)協(xié)議里統一的,所以所以基本單元狀態(tài)的設計也是不需要調整的。

  • 啟動(dòng)時(shí)序狀態(tài)設計程序實(shí)現同智能接近系統設計實(shí)驗。
  • 發(fā)送單元和讀應答單元合并,時(shí)序狀態(tài)設計程序實(shí)現同智能接近系統設計實(shí)驗。
  • 接收單元和寫(xiě)應答單元合并,時(shí)序狀態(tài)設計程序實(shí)現同智能接近系統設計實(shí)驗。
  • 停止時(shí)序狀態(tài)設計程序實(shí)現同智能接近系統設計實(shí)驗。

DS1340Z芯片有很多寄存器,用于存儲實(shí)時(shí)時(shí)鐘的時(shí)間信息,例如地址為00H的寄存器中,bit7為晶體使能控制位,低有效,默認使能,bit6~bit0為秒鐘數據,且是BCD碼的格式(bit6~bit4代表秒鐘的十位,bit3~bit0代表秒鐘的個(gè)位),當需要調整秒鐘時(shí)間時(shí),對00H寄存器寫(xiě)操作,當讀取秒鐘時(shí)間時(shí), 對00H寄存器讀操作。其他寄存器也是一樣,詳細請參考每個(gè)寄存器的功能說(shuō)明。

DS1340Z寄存器布局

本實(shí)驗涉及DS1340Z的寫(xiě)寄存器和讀寄存器操作,查看手冊給出的操作時(shí)序流程。

芯片支持連續寫(xiě)寄存器操作(寄存器地址自加1),時(shí)序流程如下:

DS1340Z連續寫(xiě)操作

根據連續寫(xiě)寄存器時(shí)序流程,其設計程序實(shí)現如下:

MAIN:begin
        if(cnt_main >= 6'd11) //對MAIN中的子狀態(tài)執行控制cnt_main
            cnt_main <= 6'd0;   //
        else cnt_main <= cnt_main + 1'b1;   
        case(cnt_main)
            6'd0:   begin state <= START; end   //I2C通信時(shí)序中的START
            6'd1:   begin data_wr <= 8'hd0; state <= WRITE; end     //寫(xiě)地址為8'hd0
            6'd2:   begin data_wr <= 8'h00; state <= WRITE; end     //8'h00,起始寄存器
            6'd3:   begin data_wr <= adj_sec; state <= WRITE; end   //00寄存器地址,寫(xiě)秒
            6'd4:   begin data_wr <= adj_min; state <= WRITE; end   //01寄存器地址,寫(xiě)分
            6'd5:   begin data_wr <= adj_hour; state <= WRITE; end  //02寄存器地址,寫(xiě)時(shí)
            6'd6:   begin data_wr <= adj_week; state <= WRITE; end  //03寄存器地址,寫(xiě)周
            6'd7:   begin data_wr <= adj_day; state <= WRITE; end   //04寄存器地址,寫(xiě)日
            6'd8:   begin data_wr <= adj_mon; state <= WRITE; end   //05寄存器地址,寫(xiě)月
            6'd9:   begin data_wr <= adj_year; state <= WRITE; end  //06寄存器地址,寫(xiě)年
            6'd10:  begin data_wr <= 8'h40; state <= WRITE; end   //07寄存器地址,8'h40
            6'd11:  begin state <= STOP; end    //I2C通信時(shí)序中的STOP
            default: state <= IDLE; //如果程序失控,進(jìn)入IDLE自復位狀態(tài)
        endcase
    end

芯片支持連續讀寄存器操作(寄存器地址自加1),時(shí)序流程如下:

DS1340Z連續讀操作

根據連續寫(xiě)寄存器時(shí)序流程,其設計程序實(shí)現如下:

MAIN:begin
        if(cnt_main >= 6'd32) //對MAIN中的子狀態(tài)執行控制cnt_main
            cnt_main <= 6'd12;         //否則只執行時(shí)間讀取操作
        else cnt_main <= cnt_main + 1'b1;   
        case(cnt_main)
            6'd12:  begin state <= START; end   //I2C通信時(shí)序中的START
            6'd13:  begin data_wr <= 8'hd0; state <= WRITE; end //寫(xiě)地址為8'hd0
            6'd14:  begin data_wr <= 8'h00; state <= WRITE; end //8'h00,寄存器初始地址
            6'd15:  begin state <= START; end   //I2C通信時(shí)序中的START
            6'd16:  begin data_wr <= 8'hd1; state <= WRITE; end //讀地址為8'hd1
            6'd17:  begin ack <= ACK; state <= READ; end    //讀秒
            6'd18:  begin rtc_sec <= rtc_data_r; end
            6'd19:  begin ack <= ACK; state <= READ; end    //讀分
            6'd20:  begin rtc_min <= rtc_data_r; end
            6'd21:  begin ack <= ACK; state <= READ; end    //讀時(shí)
            6'd22:  begin rtc_hour <= rtc_data_r; end
            6'd23:  begin ack <= ACK; state <= READ; end    //讀周
            6'd24:  begin rtc_week <= rtc_data_r; end
            6'd25:  begin ack <= ACK; state <= READ; end    //讀日
            6'd26:  begin rtc_day <= rtc_data_r; end
            6'd27:  begin ack <= ACK; state <= READ; end    //讀月
            6'd28:  begin rtc_mon <= rtc_data_r; end
            6'd29:  begin ack <= ACK; state <= READ; end    //讀年
            6'd30:  begin rtc_year <= rtc_data_r; end
            6'd31:  begin ack <= NACK; state <= READ; end   //控制
            6'd32:  begin state <= STOP; end    //I2C通信時(shí)序中的STOP,讀取完成標志
            default: state <= IDLE; //如果程序失控,進(jìn)入IDLE自復位狀態(tài)
        endcase
    end

上面兩段程序就是對于DS1340Z芯片的兩種操作,調時(shí)間和讀時(shí)間,對于萬(wàn)年歷來(lái)說(shuō)因為有電池供電,實(shí)時(shí)時(shí)鐘一直都處于工作狀態(tài),當給上電時(shí)只需要讀時(shí)間即可,只有遇到時(shí)間不對的時(shí)候才需要調時(shí)間,所以DS1340Z驅動(dòng)模塊平時(shí)都在循環(huán)讀取時(shí)間,所以如果將調時(shí)間和讀時(shí)間的時(shí)序操作融合到同一個(gè)狀態(tài)下時(shí),對于cntmain要加以控制,cntmain初值為12,且運行軌跡在12~32之間,控制程序調整如下:

if(cnt_main >= 6'd32) //對MAIN中的子狀態(tài)執行控制cnt_main
    if(set_flag)cnt_main <= 6'd0;   //當set_flag被置位時(shí)才會(huì )執行時(shí)間寫(xiě)入操作
    else cnt_main <= 6'd12;         //否則只執行時(shí)間讀取操作
    else cnt_main <= cnt_main + 1'b1;

上面setflag為時(shí)間調整標志位,只有按動(dòng)編碼器在調時(shí)間模式時(shí)需要用到寫(xiě)時(shí)間數據的操作流程,可以根據按鍵脈沖置位setflag并自鎖,每次完成寫(xiě)入操作后再將set_flag復位。程序實(shí)現如下:

reg                 set_flag;
always@(posedge clk or negedge rst_n) begin
    if(!rst_n) set_flag <= 1'b0;
    else if(cnt_main==5'd11) set_flag <= 1'b0;  //完成寫(xiě)入時(shí)間操作復位set_flag
    else if(key_set) set_flag <= 1'b1;          //按鍵脈沖控制set_flag置位
    else set_flag <= set_flag;
    end

模塊端口如下:

module DS1340Z_driver
(
input clk, rst_n, //系統時(shí)鐘和復位 
input key_set,  //按動(dòng)脈沖輸入
input [7:0] adj_hour, adj_min, adj_sec, //時(shí)分秒調整輸入
input [7:0] adj_year, adj_mon, adj_day, adj_week, //年份調整輸入 
output i2c_scl, //I2C總線(xiàn)SCLinout  i2c_sda, //I2C總線(xiàn)SDA 
output [7:0] rtc_hour, rtc_min, rtc_sec, //實(shí)時(shí)時(shí)鐘輸出
output [7:0] rtc_year, rtc_mon, rtc_day, rtc_week //實(shí)時(shí)年份輸出
);

到這里就完成了萬(wàn)年歷中DS1340Z模塊的驅動(dòng)設計,宏觀(guān)上講,該模塊的功能可以這樣描述:

  • 正常模式下循環(huán)讀取時(shí)間信息,并把時(shí)間數據輸出
  • 由旋轉編碼器按動(dòng)脈沖信號key_set觸發(fā)進(jìn)行一次寫(xiě)操作,用于調節時(shí)間
  • 每次寫(xiě)操作調節時(shí)間的時(shí)間數據由其他模塊提供

萬(wàn)年歷控制模塊實(shí)現

控制模塊包含多個(gè)功能的設計:模式控制、調時(shí)控制、顯示控制,可以細化成多個(gè)模塊實(shí)現,本實(shí)驗例程中就寫(xiě)在了一個(gè)模塊下,我們會(huì )針對這三個(gè)功能分別講解其實(shí)現方法及原理。

模式控制

項目要求設計成8個(gè)模式(常態(tài)、調年、調月、調日、調周、調時(shí)、調分、調秒),對8個(gè)狀態(tài)編碼,常態(tài)—0、調秒—1、調分—2、調時(shí)—3、調周—4、調日—5、調月—6、調年—7,通過(guò)按動(dòng)旋轉編碼器切換,按照常識調時(shí)間從大到小調節,先調節年份最后調秒鐘,所以我們這8個(gè)狀態(tài)的狀態(tài)機跳轉順序是固定的(0→7→6→5→4→3→2→1→0),依次循環(huán)跳轉,程序實(shí)現如下:

//時(shí)鐘運行狀態(tài)控制
always@(posedge clk or negedge rst_n )
    if(!rst_n) state <= 3'd0;
    else if(O_pulse) //按鍵脈沖控制時(shí)鐘運行狀態(tài)的跳變,
        if(state) state <= state - 3'd1;
        else state <= 3'd7;
    else state <= state;

調時(shí)控制

調時(shí)控制在不同的調節模式對不同時(shí)間進(jìn)行調整,我們分別以常態(tài)模式和調秒模式為例進(jìn)行分析。

萬(wàn)年歷時(shí)間調節要以當時(shí)的時(shí)間為基礎,常態(tài)模式下不需要調整任何時(shí)間,但是可以將實(shí)時(shí)時(shí)鐘讀出的時(shí)間數據賦給調節變量,這樣等跳轉到調節模式時(shí)對調節變量的控制就是以當時(shí)的時(shí)間為基礎了,程序實(shí)現如下:

3'd0:       //正常模式
    begin
        if(O_pulse)begin  //在常態(tài)下按動(dòng)編碼器將當前實(shí)時(shí)時(shí)間賦值給調節寄存器
            adj_sec  <= rtc_sec;
            adj_min  <= rtc_min;
            adj_hour <= rtc_hour;
            adj_week <= rtc_week;
            adj_day  <= rtc_day;
            adj_mon  <= rtc_mon;
            adj_year <= rtc_year;
        end
    end

調秒模式與其他調節模式操作一樣,不同的是調節的規則不同,例如秒和分的調節范圍為0~59,小時(shí)調節范圍0~11或0~23,日期調節范圍需要考慮年和月的值(1、3、5、7、8、10、12月范圍1~31,4、6、9、11月范圍1~30,2月平年范圍1~28,2月閏年范圍1~29),周調節范圍1~7,月調節范圍1~12,年調節范圍0~99。對秒鐘數據進(jìn)行調節,程序實(shí)現如下:

3'd1:       //調秒模式
    begin
        if(L_pulse) begin    //逆時(shí)針轉
            if(adj_sec[3:0]) adj_sec <= adj_sec - 1'h1;
            else if(adj_sec[7:4]) adj_sec <= {adj_sec[7:4]-1'h1,4'h9};
            else adj_sec <= 8'h59;
        end else if(R_pulse) begin    //順時(shí)針轉
            if(adj_sec[3:0]!=4'h9) adj_sec <= adj_sec + 1'h1;
            else if(adj_sec[7:4]!=4'h5) adj_sec <= {adj_sec[7:4]+1'h1,4'h0};
            else adj_sec <= 8'h00;
        end else adj_sec <= adj_sec;
    end

顯示控制

首先來(lái)看看一下數碼管要顯示的效果,8位數碼管分兩頁(yè)顯示萬(wàn)年歷數據,第一頁(yè)顯示年月日周,第二頁(yè)顯示時(shí)分秒。

萬(wàn)年歷頁(yè)碼規劃

我們看到任何一項時(shí)間選項都由兩位數碼管顯示,每頁(yè)最多顯示4個(gè)時(shí)間選項,我們可以使用4位的變量dispen[3:0]控制4個(gè)時(shí)間選項的點(diǎn)亮或熄滅,dispen[3]控制最左側兩個(gè)數碼管,disp_en[0]控制最右側兩個(gè)數碼管,我們分別以常態(tài)模式和調秒模式為例進(jìn)行顯示使能控制的分析。

常態(tài)模式下,轉動(dòng)編碼器控制顯示頁(yè)碼,兩個(gè)頁(yè)碼對應的顯示控制,程序實(shí)現如下:

3'd0:   //正常模式
    if(L_pulse) disp_en <= 4'b1111;   //逆時(shí)針轉顯示第一頁(yè),數碼管全亮
    else if(R_pulse) disp_en <= 4'b0111; //順時(shí)針轉顯示第二頁(yè),時(shí)分秒亮
    else disp_en <= disp_en;

調秒模式下,小時(shí)和分鐘數碼管點(diǎn)亮,秒鐘閃爍顯示,轉動(dòng)編碼器時(shí)秒鐘強制顯示,最后按動(dòng)旋轉編碼器切到常態(tài)模式時(shí),時(shí)分秒數碼管都回復顯示,程序實(shí)現如下:

3'd1: begin     //調秒模式
        disp_en[3:1] <= 3'b011; //時(shí)和分顯示
        if(L_pulse|R_pulse) disp_en[0] <= 1'b1; //轉動(dòng)時(shí)強制顯示
        else if(sec_pulse) disp_en[0] <= ~disp_en[0]; //秒鐘閃爍顯示
        else if(O_pulse) disp_en <= 4'b0111; //返回常態(tài)時(shí)顯示時(shí)分秒
        else disp_en[0] <= disp_en[0];
      end

系統總體實(shí)現

前面分析了顯示控制,主要對時(shí)間選項的點(diǎn)亮還是熄滅做控制,對應到數碼管上就轉化成數碼管位的點(diǎn)亮和熄滅控制。另外還包含顯示數據的控制,而這部分設計我們放到頂層模塊中實(shí)現了,我們來(lái)分析一下。

數碼管點(diǎn)亮控制

數碼管與時(shí)間選項是對應關(guān)系,每個(gè)選項對應兩位數碼管,程序實(shí)現如下:

wire [7:0] data_en = {{2{disp_en[3]}},{2{disp_en[2]}},{2{disp_en[1]}},{2{disp_en[0]}}};    //數碼管位選控制     
wire [7:0] dot_en  = {1'b0,disp_en[3],1'b0,disp_en[2],1'b0,disp_en[1],1'b0,disp_en[0]};    //數碼管小數點(diǎn)顯示控制

數碼管內容控制

萬(wàn)年歷的顯示分兩頁(yè)實(shí)現,我們以最右側兩個(gè)數碼管顯示內容為例,這兩位數碼管在第一頁(yè)中顯示周數據,在第二頁(yè)中顯示秒數據,那么我們怎么控制顯示內容呢?分析,萬(wàn)年歷8中模式,

1.常態(tài)模式下,顯示讀取的實(shí)時(shí)時(shí)鐘數據,具體顯示周還是秒再次細化

  • dispen等于4'b1111的時(shí)候,對應第一頁(yè),顯示周數據 * dispen等于4'b0111的時(shí)候,對應第二頁(yè),顯示秒數據

常態(tài)模式下,根據disp_en選擇顯示周數據還是秒數據,程序實(shí)現如下:

wire [7:0] data_rtc0 = disp_en[3]? rtc_week:rtc_sec; //常態(tài)下數碼管顯示數據

2.調節模式下,顯示寫(xiě)入的調節時(shí)鐘數據,具體顯示周還是秒再次細化

  • 調年、調月、調日、調周 狀態(tài)下(state>=3),對應第一頁(yè),顯示周數據
  • 調時(shí)、調分、調秒 狀態(tài)下(state<3),對應第二頁(yè),顯示秒數據

調節模式下,根據state選擇顯示周數據還是秒數據,程序實(shí)現如下:

wire [7:0] data_adj0 = state[2]? adj_week:adj_sec;  //調節狀態(tài)下數碼管顯示數據

3.最后根據常態(tài)模式還是調節模式控制數碼管顯示實(shí)時(shí)時(shí)鐘數據還是調節時(shí)鐘數據

根據state選擇顯示實(shí)時(shí)時(shí)鐘數據還是調節時(shí)鐘數據,程序實(shí)現如下:

assign {data_7,data_8} = state? data_adj0:data_rtc3;  //根據狀態(tài)選擇顯示常態(tài)數據還是調節狀態(tài)數據

綜合后的設計框圖如下:

RTL設計框圖

實(shí)驗步驟

  1. 雙擊打開(kāi)Quartus Prime工具軟件;
  2. 新建工程:File → New Project Wizard(工程命名,工程目錄選擇,設備型號選擇,EDA工具選擇);
  3. 新建文件:File → New → Verilog HDL File,鍵入設計代碼并保存;
  4. 設計綜合:雙擊Tasks窗口頁(yè)面下的Analysis & Synthesis對代碼進(jìn)行綜合;
  5. 管腳約束:Assignments → Assignment Editor,根據項目需求分配管腳;
  6. 設計編譯:雙擊Tasks窗口頁(yè)面下的Compile Design對設計進(jìn)行整體編譯并生成配置文件;
  7. 程序燒錄:點(diǎn)擊Tools → Programmer打開(kāi)配置工具,Program進(jìn)行下載;
  8. 觀(guān)察設計運行結果。

將程序下載到中,按照設計要求的功能操作調節萬(wàn)年歷的時(shí)間,觀(guān)察數碼管萬(wàn)年歷顯示,如圖時(shí)間為18年6月27日,周三,19點(diǎn)15分14秒。

實(shí)驗現象

 

實(shí)驗現象



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>