FPGA输出lvds信号点亮液晶屏

news2024/11/24 16:11:48

概述

        该方案用于生成RGB信号,通过lvds接口驱动逻辑输出,点亮并驱动BP101WX-206液晶屏幕。

参考:下面为参考文章,内容非常详细。Xilinx LVDS Output——原语调用_vivado原语_ShareWow丶的博客icon-default.png?t=N7T8http://t.csdn.cn/Zy37p

功能描述

顶层逻辑结构简略图

        MMCM模块为时钟模块,负责将系统时钟变频与输出,产生各模块所需要的时钟;data_generator模块用于生成各种数据与信号,并传输给lvds_output_driver模块,lvds_output_driver模块将这些数据进行并串转换并按指定的lvds格式输出给液晶屏。

3 模块详细设计

        MMCM模块用于时钟的变频与输出,data_generator模块用于生成8bit RGB数据,行场同步信号(h_sync、v_sync)和数据使能信号data_en,并传输给lvds_output_driver模块,该模块将这些数据进行并串转换并按指定格式输出给液晶屏。具体详细设计图如下:

逻辑顶层详细结构图

        3.1 MMCM模块

        以下为时钟模块MMCM的接口示意图输出65Mhz和455Mhz的时钟,输出locked作为其他模块的复位信号,改模块采用IP核实现。

MMCM模块接口示意图

        3.2 Data_generator模块设计

        手册中给出的时序信息如下图:

手册时序信息

        依照这样的逻辑,画出大致的设计时序图:

时序图01

时序图02

        3.3 lvds_output_driver模块设计

        该模块的详细设计如下:

lvds_output_driver模块逻辑结构图

        手册中的输出逻辑时序如下:

4 详细代码设计

        4.1 data_generator模块详细设计

/* 
    this module is used for data generation
    BP101WX1-206
    1280 * 800 pixel
*/
//count H_SYNC
always @(posedge i_clk_65mhz or posedge i_rst) begin
    if (i_rst) begin
        cnt_h <= 0;
    end
    else if (end_cnt_h) begin
        cnt_h <= 0;
    end
    else begin
        cnt_h <= cnt_h + 1;
    end
end
assign end_cnt_h = cnt_h == (H_TOTAL - 1);

//count V_SYNC
always @(posedge i_clk_65mhz or posedge i_rst) begin
    if (i_rst) begin
        cnt_v <= 0;
    end
    else if (end_cnt_h) begin
        if (end_cnt_v) begin
            cnt_v <= 0;
        end
        else begin
            cnt_v <= cnt_v + 1;
        end
    end
end
assign end_cnt_v = end_cnt_h && (cnt_v == (V_TOTAL - 1));

//OUTPUT h_sync v_sync DE
always @(posedge i_clk_65mhz or posedge i_rst) begin
    if (i_rst) begin
        o_h_sync <= 1;
    end
    else if ((cnt_h == H_FRONT - 1) || (cnt_h == H_FRONT + H_SYNC - 1)) begin
        o_h_sync <= ~o_h_sync;
    end
end

always @(posedge i_clk_65mhz or posedge i_rst) begin
    if (i_rst) begin
        o_v_sync <= 1;
    end
    else if ((cnt_v == V_FRONT - 1 && end_cnt_h) || (cnt_v == V_FRONT + V_SYNC - 1 && end_cnt_h)) begin
        o_v_sync <= ~o_v_sync;
    end
end

always @(posedge i_clk_65mhz or posedge i_rst) begin
    if (i_rst) begin
        o_data_en <= 0;
    end
    else if ((cnt_h == H_BLANK - 1 && cnt_v >= V_BLANK) || (cnt_h == H_TOTAL - 1 && cnt_v >= V_BLANK)) begin
        o_data_en <= ~o_data_en;
    end
end


//RGB data generation
assign x_cnt = (cnt_h >= H_BLANK)? cnt_h - (H_BLANK - 1) : 0;
assign y_cnt = (cnt_v >= V_BLANK)? cnt_v - (V_BLANK) : 0;
always @(posedge i_clk_65mhz or posedge i_rst) begin
    if (i_rst) begin
        rgb_data <= 0;
    end
    /* else if (x_cnt == h_vo || y_cnt == v_vo) begin
        rgb_data <= 24'hff_00_00;
    end */

    else if (x_cnt == 0 || x_cnt == 639 || x_cnt == 1279) begin
        rgb_data <= 24'hff_00_00;
    end
    else if (y_cnt == 0 || y_cnt == 20 || y_cnt == 40) begin
        rgb_data <= 24'hff_00_00;
    end


    else begin
        rgb_data <= 24'hffffff;
    end
end
assign {o_red_data, o_gre_data, o_blu_data} = rgb_data;

        4.2 lvds_output_driver详细设计

// CLK
OSERDESE2 #(
      .DATA_RATE_OQ     ("SDR"      ),          // DDR, SDR
      .DATA_RATE_TQ     ("SDR"      ),          // DDR, BUF, SDR
      .DATA_WIDTH       (7          ),          // Parallel data width (2-8,10,14)
      .INIT_OQ          (1'b0       ),          // Initial value of OQ output (1'b0,1'b1)
      .INIT_TQ          (1'b0       ),          // Initial value of TQ output (1'b0,1'b1)
      .SERDES_MODE      ("MASTER"   ),          // MASTER, SLAVE
      .SRVAL_OQ         (1'b0       ),          // OQ output value when SR is used (1'b0,1'b1)
      .SRVAL_TQ         (1'b0       ),          // TQ output value when SR is used (1'b0,1'b1)
      .TBYTE_CTL        ("FALSE"    ),          // Enable tristate byte operation (FALSE, TRUE)
      .TBYTE_SRC        ("FALSE"    ),          // Tristate byte source (FALSE, TRUE)
      .TRISTATE_WIDTH   (1          )           // 3-state converter width (1,4)
   )
   OSERDES_clk_inst (
      .OFB          (               ),          // 1-bit output: Feedback path for data
      .OQ           (oserdes_clk    ),          // 1-bit output: Data path output
      // SHIFTOUT1 / SHIFTOUT2: 1-bit (each) output: Data output expansion (1-bit each)
      .SHIFTOUT1    (               ),
      .SHIFTOUT2    (               ),
      .TBYTEOUT     (               ),          // 1-bit output: Byte group tristate
      .TFB          (               ),          // 1-bit output: 3-state control
      .TQ           (               ),          // 1-bit output: 3-state control
      .CLK          (i_clk_455mhz   ),          // 1-bit input: High speed clock
      .CLKDIV       (i_clk_65mhz    ),          // 1-bit input: Divided clock
      // D1 - D8: 1-bit (each) input: Parallel data inputs (1-bit each)
      .D1           (CLK_PATTERN[0] ),
      .D2           (CLK_PATTERN[1] ),
      .D3           (CLK_PATTERN[2] ),
      .D4           (CLK_PATTERN[3] ),
      .D5           (CLK_PATTERN[4] ),
      .D6           (CLK_PATTERN[5] ),
      .D7           (CLK_PATTERN[6] ),
      .D8           (               ),
      .OCE          (1'b1           ),             // 1-bit input: Output data clock enable
      .RST          (i_rst          ),             // 1-bit input: Reset
      // SHIFTIN1 / SHIFTIN2: 1-bit (each) input: Data input expansion (1-bit each)
      .SHIFTIN1     (1'b0           ),
      .SHIFTIN2     (1'b0           ),
      // T1 - T4: 1-bit (each) input: Parallel 3-state inputs
      .T1           (1'b0           ),
      .T2           (1'b0           ),
      .T3           (1'b0           ),
      .T4           (1'b0           ),
      .TBYTEIN      (1'b0           ),     // 1-bit input: Byte group tristate
      .TCE          (1'b0           )              // 1-bit input: 3-state clock enable
   );

OBUFDS #(
      .IOSTANDARD   ("DEFAULT"      ), // Specify the output I/O standard
      .SLEW         ("SLOW"         )           // Specify the output slew rate
   ) OBUFDS_CLK_inst (
      .O            (tx_clk_p       ),     // Diff_p output (connect directly to top-level port)
      .OB           (tx_clk_n       ),   // Diff_n output (connect directly to top-level port)
      .I            (oserdes_clk    )      // Buffer input 
   );

// 1 PAIR
OSERDESE2 #(
      .DATA_RATE_OQ     ("SDR"      ),          // DDR, SDR
      .DATA_RATE_TQ     ("SDR"      ),          // DDR, BUF, SDR
      .DATA_WIDTH       (7          ),          // Parallel data width (2-8,10,14)
      .INIT_OQ          (1'b0       ),          // Initial value of OQ output (1'b0,1'b1)
      .INIT_TQ          (1'b0       ),          // Initial value of TQ output (1'b0,1'b1)
      .SERDES_MODE      ("MASTER"   ),          // MASTER, SLAVE
      .SRVAL_OQ         (1'b0       ),          // OQ output value when SR is used (1'b0,1'b1)
      .SRVAL_TQ         (1'b0       ),          // TQ output value when SR is used (1'b0,1'b1)
      .TBYTE_CTL        ("FALSE"    ),          // Enable tristate byte operation (FALSE, TRUE)
      .TBYTE_SRC        ("FALSE"    ),          // Tristate byte source (FALSE, TRUE)
      .TRISTATE_WIDTH   (1          )           // 3-state converter width (1,4)
   )
   OSERDES_data_inst0 (
      .OFB          (               ),          // 1-bit output: Feedback path for data
      .OQ           (oserdes_data[0]),          // 1-bit output: Data path output
      // SHIFTOUT1 / SHIFTOUT2: 1-bit (each) output: Data output expansion (1-bit each)
      .SHIFTOUT1    (               ),
      .SHIFTOUT2    (               ),
      .TBYTEOUT     (               ),          // 1-bit output: Byte group tristate
      .TFB          (               ),          // 1-bit output: 3-state control
      .TQ           (               ),          // 1-bit output: 3-state control
      .CLK          (i_clk_455mhz   ),          // 1-bit input: High speed clock
      .CLKDIV       (i_clk_65mhz    ),          // 1-bit input: Divided clock
      // D1 - D8: 1-bit (each) input: Parallel data inputs (1-bit each)
      .D1           (i_gre_data[0]  ),
      .D2           (i_red_data[5]  ),
      .D3           (i_red_data[4]  ),
      .D4           (i_red_data[3]  ),
      .D5           (i_red_data[2]  ),
      .D6           (i_red_data[1]  ),
      .D7           (i_red_data[0]  ),
      .D8           (               ),
      .OCE          (1'b1           ),             // 1-bit input: Output data clock enable
      .RST          (i_rst          ),             // 1-bit input: Reset
      // SHIFTIN1 / SHIFTIN2: 1-bit (each) input: Data input expansion (1-bit each)
      .SHIFTIN1     (1'b0           ),
      .SHIFTIN2     (1'b0           ),
      // T1 - T4: 1-bit (each) input: Parallel 3-state inputs
      .T1           (1'b0           ),
      .T2           (1'b0           ),
      .T3           (1'b0           ),
      .T4           (1'b0           ),
      .TBYTEIN      (1'b0           ),     // 1-bit input: Byte group tristate
      .TCE          (1'b0           )              // 1-bit input: 3-state clock enable
   );

OBUFDS #(
      .IOSTANDARD   ("DEFAULT"      ), // Specify the output I/O standard
      .SLEW         ("SLOW"         )           // Specify the output slew rate
   ) OBUFDS_DATA_inst0 (
      .O            (lvds_data_p[0] ),     // Diff_p output (connect directly to top-level port)
      .OB           (lvds_data_n[0] ),   // Diff_n output (connect directly to top-level port)
      .I            (oserdes_data[0])      // Buffer input 
   );

// 2 PAIR
OSERDESE2 #(
      .DATA_RATE_OQ     ("SDR"      ),          // DDR, SDR
      .DATA_RATE_TQ     ("SDR"      ),          // DDR, BUF, SDR
      .DATA_WIDTH       (7          ),          // Parallel data width (2-8,10,14)
      .INIT_OQ          (1'b0       ),          // Initial value of OQ output (1'b0,1'b1)
      .INIT_TQ          (1'b0       ),          // Initial value of TQ output (1'b0,1'b1)
      .SERDES_MODE      ("MASTER"   ),          // MASTER, SLAVE
      .SRVAL_OQ         (1'b0       ),          // OQ output value when SR is used (1'b0,1'b1)
      .SRVAL_TQ         (1'b0       ),          // TQ output value when SR is used (1'b0,1'b1)
      .TBYTE_CTL        ("FALSE"    ),          // Enable tristate byte operation (FALSE, TRUE)
      .TBYTE_SRC        ("FALSE"    ),          // Tristate byte source (FALSE, TRUE)
      .TRISTATE_WIDTH   (1          )           // 3-state converter width (1,4)
   )
   OSERDES_data_inst1 (
      .OFB          (               ),          // 1-bit output: Feedback path for data
      .OQ           (oserdes_data[1]),          // 1-bit output: Data path output
      // SHIFTOUT1 / SHIFTOUT2: 1-bit (each) output: Data output expansion (1-bit each)
      .SHIFTOUT1    (               ),
      .SHIFTOUT2    (               ),
      .TBYTEOUT     (               ),          // 1-bit output: Byte group tristate
      .TFB          (               ),          // 1-bit output: 3-state control
      .TQ           (               ),          // 1-bit output: 3-state control
      .CLK          (i_clk_455mhz   ),          // 1-bit input: High speed clock
      .CLKDIV       (i_clk_65mhz    ),          // 1-bit input: Divided clock
      // D1 - D8: 1-bit (each) input: Parallel data inputs (1-bit each)
      .D1           (i_blu_data[1]  ),
      .D2           (i_blu_data[0]  ),
      .D3           (i_gre_data[5]  ),
      .D4           (i_gre_data[4]  ),
      .D5           (i_gre_data[3]  ),
      .D6           (i_gre_data[2]  ),
      .D7           (i_gre_data[1]  ),
      .D8           (               ),
      .OCE          (1'b1           ),             // 1-bit input: Output data clock enable
      .RST          (i_rst          ),             // 1-bit input: Reset
      // SHIFTIN1 / SHIFTIN2: 1-bit (each) input: Data input expansion (1-bit each)
      .SHIFTIN1     (1'b0           ),
      .SHIFTIN2     (1'b0           ),
      // T1 - T4: 1-bit (each) input: Parallel 3-state inputs
      .T1           (1'b0           ),
      .T2           (1'b0           ),
      .T3           (1'b0           ),
      .T4           (1'b0           ),
      .TBYTEIN      (1'b0           ),     // 1-bit input: Byte group tristate
      .TCE          (1'b0           )              // 1-bit input: 3-state clock enable
   );

OBUFDS #(
      .IOSTANDARD   ("DEFAULT"      ), // Specify the output I/O standard
      .SLEW         ("SLOW"         )           // Specify the output slew rate
   ) OBUFDS_DATA_inst1 (
      .O            (lvds_data_p[1] ),     // Diff_p output (connect directly to top-level port)
      .OB           (lvds_data_n[1] ),   // Diff_n output (connect directly to top-level port)
      .I            (oserdes_data[1])      // Buffer input 
   );

// 3 PAIR
OSERDESE2 #(
      .DATA_RATE_OQ     ("SDR"      ),          // DDR, SDR
      .DATA_RATE_TQ     ("SDR"      ),          // DDR, BUF, SDR
      .DATA_WIDTH       (7          ),          // Parallel data width (2-8,10,14)
      .INIT_OQ          (1'b0       ),          // Initial value of OQ output (1'b0,1'b1)
      .INIT_TQ          (1'b0       ),          // Initial value of TQ output (1'b0,1'b1)
      .SERDES_MODE      ("MASTER"   ),          // MASTER, SLAVE
      .SRVAL_OQ         (1'b0       ),          // OQ output value when SR is used (1'b0,1'b1)
      .SRVAL_TQ         (1'b0       ),          // TQ output value when SR is used (1'b0,1'b1)
      .TBYTE_CTL        ("FALSE"    ),          // Enable tristate byte operation (FALSE, TRUE)
      .TBYTE_SRC        ("FALSE"    ),          // Tristate byte source (FALSE, TRUE)
      .TRISTATE_WIDTH   (1          )           // 3-state converter width (1,4)
   )
   OSERDES_data_inst2 (
      .OFB          (               ),          // 1-bit output: Feedback path for data
      .OQ           (oserdes_data[2]),          // 1-bit output: Data path output
      // SHIFTOUT1 / SHIFTOUT2: 1-bit (each) output: Data output expansion (1-bit each)
      .SHIFTOUT1    (               ),
      .SHIFTOUT2    (               ),
      .TBYTEOUT     (               ),          // 1-bit output: Byte group tristate
      .TFB          (               ),          // 1-bit output: 3-state control
      .TQ           (               ),          // 1-bit output: 3-state control
      .CLK          (i_clk_455mhz   ),          // 1-bit input: High speed clock
      .CLKDIV       (i_clk_65mhz    ),          // 1-bit input: Divided clock
      // D1 - D8: 1-bit (each) input: Parallel data inputs (1-bit each)
      .D1           (i_data_en      ),
      .D2           (i_v_sync       ),
      .D3           (i_h_sync       ),
      .D4           (i_blu_data[5]  ),
      .D5           (i_blu_data[4]  ),
      .D6           (i_blu_data[3]  ),
      .D7           (i_blu_data[2]  ),
      .D8           (               ),
      .OCE          (1'b1           ),             // 1-bit input: Output data clock enable
      .RST          (i_rst          ),             // 1-bit input: Reset
      // SHIFTIN1 / SHIFTIN2: 1-bit (each) input: Data input expansion (1-bit each)
      .SHIFTIN1     (1'b0           ),
      .SHIFTIN2     (1'b0           ),
      // T1 - T4: 1-bit (each) input: Parallel 3-state inputs
      .T1           (1'b0           ),
      .T2           (1'b0           ),
      .T3           (1'b0           ),
      .T4           (1'b0           ),
      .TBYTEIN      (1'b0           ),     // 1-bit input: Byte group tristate
      .TCE          (1'b0           )              // 1-bit input: 3-state clock enable
   );

OBUFDS #(
      .IOSTANDARD   ("DEFAULT"      ), // Specify the output I/O standard
      .SLEW         ("SLOW"         )           // Specify the output slew rate
   ) OBUFDS_DATA_inst2 (
      .O            (lvds_data_p[2] ),     // Diff_p output (connect directly to top-level port)
      .OB           (lvds_data_n[2] ),   // Diff_n output (connect directly to top-level port)
      .I            (oserdes_data[2])      // Buffer input 
   );

// 4 PAIR
OSERDESE2 #(
      .DATA_RATE_OQ     ("SDR"      ),          // DDR, SDR
      .DATA_RATE_TQ     ("SDR"      ),          // DDR, BUF, SDR
      .DATA_WIDTH       (7          ),          // Parallel data width (2-8,10,14)
      .INIT_OQ          (1'b0       ),          // Initial value of OQ output (1'b0,1'b1)
      .INIT_TQ          (1'b0       ),          // Initial value of TQ output (1'b0,1'b1)
      .SERDES_MODE      ("MASTER"   ),          // MASTER, SLAVE
      .SRVAL_OQ         (1'b0       ),          // OQ output value when SR is used (1'b0,1'b1)
      .SRVAL_TQ         (1'b0       ),          // TQ output value when SR is used (1'b0,1'b1)
      .TBYTE_CTL        ("FALSE"    ),          // Enable tristate byte operation (FALSE, TRUE)
      .TBYTE_SRC        ("FALSE"    ),          // Tristate byte source (FALSE, TRUE)
      .TRISTATE_WIDTH   (1          )           // 3-state converter width (1,4)
   )
   OSERDES_data_inst3 (
      .OFB          (               ),          // 1-bit output: Feedback path for data
      .OQ           (oserdes_data[3]),          // 1-bit output: Data path output
      // SHIFTOUT1 / SHIFTOUT2: 1-bit (each) output: Data output expansion (1-bit each)
      .SHIFTOUT1    (               ),
      .SHIFTOUT2    (               ),
      .TBYTEOUT     (               ),          // 1-bit output: Byte group tristate
      .TFB          (               ),          // 1-bit output: 3-state control
      .TQ           (               ),          // 1-bit output: 3-state control
      .CLK          (i_clk_455mhz   ),          // 1-bit input: High speed clock
      .CLKDIV       (i_clk_65mhz    ),          // 1-bit input: Divided clock
      // D1 - D8: 1-bit (each) input: Parallel data inputs (1-bit each)
      .D1           (DON_CR         ),
      .D2           (i_blu_data[7]  ),
      .D3           (i_blu_data[6]  ),
      .D4           (i_gre_data[7]  ),
      .D5           (i_gre_data[6]  ),
      .D6           (i_red_data[7]  ),
      .D7           (i_red_data[6]  ),
      .D8           (               ),
      .OCE          (1'b1           ),             // 1-bit input: Output data clock enable
      .RST          (i_rst          ),             // 1-bit input: Reset
      // SHIFTIN1 / SHIFTIN2: 1-bit (each) input: Data input expansion (1-bit each)
      .SHIFTIN1     (1'b0           ),
      .SHIFTIN2     (1'b0           ),
      // T1 - T4: 1-bit (each) input: Parallel 3-state inputs
      .T1           (1'b0           ),
      .T2           (1'b0           ),
      .T3           (1'b0           ),
      .T4           (1'b0           ),
      .TBYTEIN      (1'b0           ),     // 1-bit input: Byte group tristate
      .TCE          (1'b0           )              // 1-bit input: 3-state clock enable
   );

OBUFDS #(
      .IOSTANDARD   ("DEFAULT"      ), // Specify the output I/O standard
      .SLEW         ("SLOW"         )           // Specify the output slew rate
   ) OBUFDS_DATA_inst3 (
      .O            (lvds_data_p[3] ),     // Diff_p output (connect directly to top-level port)
      .OB           (lvds_data_n[3] ),   // Diff_n output (connect directly to top-level port)
      .I            (oserdes_data[3])      // Buffer input 
   );

        4.3 顶层设计

module a_top (
    input               clk             ,       // sys_clk

    output              pwm_pannel      ,       // backlight

    output              o_tx_clk_p      ,
    output              o_tx_clk_n      ,

    output  [3:0]       lvds_data_p     ,
    output  [3:0]       lvds_data_n      
);

wire clk_65mhz       ;
wire clk_455mhz      ;

wire rst             ;

wire [7:0]  red_data ; 
wire [7:0]  gre_data ; 
wire [7:0]  blu_data ; 
wire        h_sync   ; 
wire        v_sync   ; 
wire        data_en  ; 

assign pwm_pannel = 1;

// MMCM
clk_wiz_0 u_clk_wiz_0(
    /* output */              .clk_out1         (clk_65mhz  ),
    /* output */              .clk_out2         (clk_455mhz ),
    /* output */              .locked           (rst        ),
    /* input  */              .clk_in1          (clk        )
);


data_generator u_data_generator(
    /* input         */       .i_clk_65mhz      (clk_65mhz  ),   //input 65MHz clk, period : 15.38ns
    /* input         */       .i_rst            (!rst       ),

    /* output  [7:0] */       .o_red_data       (red_data   ),
    /* output  [7:0] */       .o_gre_data       (gre_data   ),
    /* output  [7:0] */       .o_blu_data       (blu_data   ),
    /* output  reg   */       .o_h_sync         (h_sync     ),
    /* output  reg   */       .o_v_sync         (v_sync     ),
    /* output  reg   */       .o_data_en        (data_en    ) 
);

lvds_output_driver u_lvds_output_driver(
    /* input         */       .i_clk_455mhz     (clk_455mhz ),
    /* input         */       .i_clk_65mhz      (clk_65mhz  ),
    /* input         */       .i_rst            (!rst       ),

    /* input   [7:0] */       .i_red_data       (red_data   ),
    /* input   [7:0] */       .i_gre_data       (gre_data   ),
    /* input   [7:0] */       .i_blu_data       (blu_data   ),
    /* input         */       .i_v_sync         (v_sync     ),
    /* input         */       .i_h_sync         (h_sync     ),
    /* input         */       .i_data_en        (data_en    ),
    /* output        */       .tx_clk_p         (o_tx_clk_p ),
    /* output        */       .tx_clk_n         (o_tx_clk_n ),
    /* output  [3:0] */       .lvds_data_p      (lvds_data_p),
    /* output  [3:0] */       .lvds_data_n      (lvds_data_n) 
);

endmodule //a_top

5 实现效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/970476.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从零开始学习 Java:简单易懂的入门指南之Collection集合及list集合(二十一)

Collection集合及list集合 1.Collection集合1.1数组和集合的区别1.2集合类体系结构1.3Collection 集合概述和使用1.4Collection集合的遍历1.4.1 迭代器遍历1.4.2 增强for1.4.3 lambda表达式 2.List集合2.1List集合的概述和特点2.2List集合的特有方法2.3List集合的五种遍历方式2…

JS动态计算自动滚动距离

先上效果 具体实现代码&#xff08;如果用到vue项目中的css要取消scoped否则不生效&#xff09; 在这里插入代码片<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible"…

基于STM32的厨房环境监测系统

前言 本篇文章将之前所有的文章进行整合&#xff0c;是之前几篇文章的综合版。 MQ-2烟雾传感器模块功能实现&#xff08;STM32&#xff09; MQ-7一氧化碳传感器模块功能实现&#xff08;STM32&#xff09; dht11温湿度模块功能实现&#xff08;STM32&#xff09; 0…

返回序列中最大值第一次出现时对应的索引(位置)Series.idxmax()

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 返回序列中最大值第一次 出现时对应的索引(位置) Series.idxmax() [太阳]选择题 以下说法错误的是? import pandas as pd apd.Series(data[1,6,None,5,6], index[A,B,C,D,E]) print(【显示】…

Spring MVC:域对象共享数据

Spring MVC 前言域对象共享数据使用 ModelAndView 向 request 域对象中共享数据使用 Map 、Model 或 ModelMap 向 request 域对象中共享数据使用 SesionAttributes 注解向 session 域对象中共享数据使用 Servlet API 向 application 域对象中共享数据 附 前言 在上一章中&…

发收一体的2.4G射频合封芯片Y62G,内置九齐MCU

宇凡微2.4GHz发收一体合封芯片Y62G是一款高度集成的系统芯片&#xff0c;融合了2.4G芯片G350和微控制器&#xff08;MCU&#xff09;功能&#xff0c;为开发人员提供了更好的设计自由度和成本效益的解决方案。以下是Y62G芯片的主要特点和优势&#xff1a; 高度合封集成 Y62G芯…

细说GNSS模拟器的RTK功能(二)应用实例01 — 硬件和软件设置

在之前的文章中&#xff0c;我们介绍了什么是RTK&#xff0c;接下来我们将为大家展示RTK使用实例&#xff0c;可以通过两种不同的方法来模拟RTCM的使用&#xff0c;一种是基于RTCM插件&#xff0c;另一种是基于多实例来模拟两个同步的射频信号。 RTK插件方法可以帮助没有基础接…

iOS系统下轻松构建自动化数据收集流程

在当今信息爆炸的时代&#xff0c;我们经常需要从各种渠道获取大量的数据。然而&#xff0c;手动收集这些数据不仅耗费时间和精力&#xff0c;还容易出错。幸运的是&#xff0c;在现代科技发展中有两个强大工具可以帮助我们解决这一问题——Python编程语言和iOS设备上预装的Sho…

RPC框架

博主介绍&#xff1a;✌全网粉丝3W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

将虚拟机网络适配器改为仅主机模式,Vmware弹出“仅主机模式适配器驱动程序似乎未运行

这个问题的原因是&#xff0c;主机上缺乏VMware安装后没有VMnet1和VMnet8网卡。 所以

2023年超爆火的15款AI设计软件

随着人工智能技术的快速发展&#xff0c;数字插画之外的“泛设计”行业的从业者也开始在AI中逐渐受益。可能很多设计师还停留在“AI设计软件只能做一些动漫风格插画”的认知中&#xff0c;实际上受到行业需求提升的刺激&#xff0c;软件厂商已经开始积极研究并发布更多针对特定…

uni——input的提示语(placeholder)修改样式等

案例说明 操控input的提示语 案例代码 <template><view><view><input type"text" placeholder"请输入内容" :placeholder-class"isDialogHidden?redColor:" /><button click"hideDialog">按钮</…

正中优配:股票k线图入门?

随着股票市场的不断发展&#xff0c;对股民们来说&#xff0c;了解股票行情变得越来越重要。而股票k线图能够帮助股民们更好地调查和剖析股票行情。但关于一些没有相关经历的新手来说&#xff0c;股票k线图可能会带来一些困惑。那么&#xff0c;股票k线图入门应该从哪些方面着手…

蓝牙资讯|2023Q2全球TWS耳机出货量同比增长15%

TechInsights 报告指出&#xff0c;2023 年二季度全球 TWS 耳机出货量同比增长 15%&#xff0c;收益同比增长 5.1%。 苹果仍以 17% 出货量份额和 43% 的收益份额主导 TWS 市场&#xff0c;但来自印度和中国厂商的竞争&#xff0c;使苹果的份额有所下降。 在收益方面&#x…

浏览器是如何验证SSL证书的?

事实上&#xff0c;SSL证书作为目前网站数据安全的第一道防线&#xff0c;已被大部分企业所熟知。然而&#xff0c;这份认知主要是关于SSL证书可以实现网站HTTPS加密保护及身份的可信认证&#xff0c;防止传输数据的泄露或篡改方面&#xff0c;对于浏览器到底是如何验证SSL证书…

python安装wind10

一、下载: 官网:Python Releases for Windows | Python.org 二、安装 双击下载的安装程序文件。这将打开安装向导。安装界面图下方两个框的" Use admin privileges wheninstalling py. exe和” Add python. exe to PATH"都要勾选,一定要勾选!一定要勾选!一定要勾选…

昆明Sectigo dv通配符https证书

Sectigo是近些年发展比较快速的CA认证机构&#xff0c;Sectigo比较重视国际发展&#xff0c;先后成立了亚太审核中心等机构&#xff0c;是一家全球知名的数字证书颁发机构&#xff0c;Sectigo成立几十年来在全球范围内都受到信任。 1.Sectigo旗下的通配符https证书是市场占有率…

商城结算系统_商户结算_商户结算流程_OctShop

商城财务系统是商城比较重要的大系统&#xff0c;主要管理着所有交易、结算、对账、清分、支付等的资金出入&#xff0c;如&#xff1a;商家结算&#xff0c;商家抽成、扫码收款、用户分润与账户余额&#xff0c;用户分润与账户积分&#xff0c;下单支付&#xff0c;订单退款&a…

el-dialog设置高度、使用resetFields清除表单项无效问题

初学者容易踩坑的的el-dialog、el-form问题 1. el-dialog设置高度2. el-form中表单项对不齐3. 使用resetFields清除表单项无效 1. el-dialog设置高度 在el-dialog中里面添加一个div设置固定高度&#xff0c;或者限制最小的高度。 <el-dialogtitle"选择图标"v-mod…

台灯显色指数多少好?挑选护眼台灯需要注意什么

台灯可以说家家必备&#xff01;家中有上学的小孩更是需要一款好台灯&#xff0c;因为看书、写字、做作业都离不开台灯&#xff0c;一款好的台灯不仅会提供明亮的学习环境&#xff0c;而且还能保护视力&#xff0c;预防近视&#xff0c;因此&#xff0c;挑选台灯绝对不可以马虎…