中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

成都廣告公司排名前十名蘇州首頁(yè)排名關(guān)鍵詞優(yōu)化

成都廣告公司排名前十名,蘇州首頁(yè)排名關(guān)鍵詞優(yōu)化,dz還是wordpress,雄安免費(fèi)網(wǎng)站建設(shè)🎉歡迎來(lái)到FPGA專(zhuān)欄~三線制數(shù)碼管驅(qū)動(dòng) ☆* o(≧▽≦)o *☆嗨~我是小夏與酒🍹 ?博客主頁(yè):小夏與酒的博客 🎈該系列文章專(zhuān)欄:FPGA學(xué)習(xí)之旅 文章作者技術(shù)和水平有限,如果文中出現(xiàn)錯(cuò)誤,希望大家能指…

🎉歡迎來(lái)到FPGA專(zhuān)欄~三線制數(shù)碼管驅(qū)動(dòng)


  • ☆* o(≧▽≦)o *☆~我是小夏與酒🍹
  • ?博客主頁(yè):小夏與酒的博客
  • 🎈該系列文章專(zhuān)欄:FPGA學(xué)習(xí)之旅
  • 文章作者技術(shù)和水平有限,如果文中出現(xiàn)錯(cuò)誤,希望大家能指正🙏
  • 📜 歡迎大家關(guān)注! ??
    FPGQ2

CSDN

🎉 目錄-三線制數(shù)碼管驅(qū)動(dòng)

  • 一、效果演示
  • 二、電路結(jié)構(gòu)
  • 三、代碼詳解
    • 3.1 總體結(jié)構(gòu)設(shè)計(jì)
    • 3.2 驅(qū)動(dòng)74HC595芯片
    • 3.3 HEX8模塊
    • 3.4 頂層模塊
  • 四、按鍵控制改變數(shù)據(jù)值

遇見(jiàn)未來(lái)

一、效果演示

🥝ISSP調(diào)試演示:
程序配置完成:
程序配置

調(diào)試:
測(cè)試結(jié)果

🥝按鍵控制演示:
按鍵控制

二、電路結(jié)構(gòu)

三線制的數(shù)碼管驅(qū)動(dòng)中,使用74HC595芯片來(lái)減少FPGA的管腳數(shù)量使用。

關(guān)于74HC595芯片的介紹和時(shí)序圖,參考文章:74HC595介紹 和 74HC595 驅(qū)動(dòng)。

在AC620開(kāi)發(fā)板上的數(shù)碼管驅(qū)動(dòng)電路:
電路1
AC620開(kāi)發(fā)板使用的是74HC595芯片的級(jí)聯(lián)來(lái)驅(qū)動(dòng)顯示:
電路2

三、代碼詳解

3.1 總體結(jié)構(gòu)設(shè)計(jì)

先上RTL視圖:
RTL
HEX8模塊將segsel信號(hào)傳給m74HC595_Driver模塊,然后將接收到的信號(hào)轉(zhuǎn)換為DS、SH_CP和ST_CP信號(hào);ISSP模塊用于調(diào)試。

3.2 驅(qū)動(dòng)74HC595芯片

關(guān)于74HC595芯片的驅(qū)動(dòng),主要參考該時(shí)序圖進(jìn)行代碼編寫(xiě):
時(shí)序圖

74HC595是8位串行移位寄存器,帶有存儲(chǔ)寄存器和三態(tài)寄存器,其中移位寄存器和存儲(chǔ)寄存器分別采用不同的時(shí)鐘。其可以把串行的信號(hào)轉(zhuǎn)為并行的信號(hào),因此常用做各種數(shù)碼管以及點(diǎn)陣屏的驅(qū)動(dòng)芯片。

該芯片的主要IO:

IO名稱(chēng)功能
DS / SER串行數(shù)據(jù)輸入端
STCP / RCK存儲(chǔ)寄存器的時(shí)鐘輸入。上升沿時(shí)移位寄存器中的數(shù)據(jù)進(jìn)入存儲(chǔ)寄存器,下降沿時(shí)存儲(chǔ)寄存器中的數(shù)據(jù)保持不變。應(yīng)用時(shí)通常將 ST_CP 置為低點(diǎn)平,移位結(jié)束后再在 ST_CP 端產(chǎn)生一個(gè)正脈沖更新顯示數(shù)據(jù)。
SHCP / SCK移位寄存器的時(shí)鐘輸入。上升沿時(shí)移位寄存器中的數(shù)據(jù)依次移動(dòng)一位,即 Q0 中的數(shù)據(jù)移到 Q1 中,Q1 中的數(shù)據(jù)移到 Q2 中,依次類(lèi)推;下降沿時(shí)移位寄存器中的數(shù)據(jù)保持不變。

由于在AC620開(kāi)發(fā)板中芯片采用3.3V供電,這樣在設(shè)計(jì)74HC595工作頻率時(shí),直接使用50M晶振四分頻后的時(shí)鐘作為其工作時(shí)鐘。

74HC595的驅(qū)動(dòng)代碼,由于模塊命名不能以數(shù)字開(kāi)頭,所以加了個(gè)m:

m74HC595_Driver.v:

module m74HC595_Driver(Clk,Rst_n,Data,S_EN,SH_CP,ST_CP,DS);parameter DATA_WIDTH = 16;input 		Clk;input 		Rst_n;input 		[DATA_WIDTH-1 : 0] Data;	//data to sendinput 		S_EN;						//send enoutput reg 	SH_CP;						//shift clockoutput reg 	ST_CP;						//latch data clockoutput reg 	DS;							//shift serial dataparameter CNT_MAX = 4;reg [15:0] divider_cnt;//分頻計(jì)數(shù)器wire sck_pluse;reg [4:0]SHCP_EDGE_CNT;//SH_CP EDGE counterreg [15:0]r_data;always@(posedge Clk or negedge Rst_n)beginif(!Rst_n)r_data <= 16'd0;else if(S_EN)r_data <= Data;elser_data <= r_data;end//clock dividealways@(posedge Clk or negedge Rst_n)beginif(!Rst_n)divider_cnt <= 16'd0;else if(divider_cnt == CNT_MAX)divider_cnt <= 16'd0;elsedivider_cnt <= divider_cnt + 1'b1;endassign sck_pluse = (divider_cnt == CNT_MAX);always@(posedge Clk or negedge Rst_n)beginif(!Rst_n)SHCP_EDGE_CNT <= 5'd0;else if(sck_pluse)beginif(SHCP_EDGE_CNT ==  5'd31)SHCP_EDGE_CNT <= 5'd0;elseSHCP_EDGE_CNT <= SHCP_EDGE_CNT + 1'b1;endelseSHCP_EDGE_CNT <= SHCP_EDGE_CNT;end	always@(posedge Clk or negedge Rst_n)beginif(!Rst_n)beginSH_CP <= 1'b0;ST_CP <= 1'b0;DS <= 1'b0;	endelse begincase(SHCP_EDGE_CNT)5'd0: begin SH_CP <= 1'b0; ST_CP <= 1'b1; DS <= r_data[15]; end5'd1: begin SH_CP <= 1'b1; ST_CP <= 1'b0;end5'd2: begin SH_CP <= 1'b0; DS <= r_data[14];end5'd3: begin SH_CP <= 1'b1; end5'd4: begin SH_CP <= 1'b0; DS <= r_data[13];end5'd5: begin SH_CP <= 1'b1; end5'd6: begin SH_CP <= 1'b0; DS <= r_data[12];end5'd7: begin SH_CP <= 1'b1; end5'd8: begin SH_CP <= 1'b0; DS <= r_data[11];end5'd9: begin SH_CP <= 1'b1; end5'd10:begin SH_CP <= 1'b0; DS <= r_data[10];end5'd11:begin SH_CP <= 1'b1; end5'd12:begin SH_CP <= 1'b0; DS <= r_data[9];end5'd13:begin SH_CP <= 1'b1; end5'd14:begin SH_CP <= 1'b0; DS <= r_data[8];end5'd15:begin SH_CP <= 1'b1; end5'd16:begin SH_CP <= 1'b0; DS <= r_data[7];end5'd17:begin SH_CP <= 1'b1; end5'd18:begin SH_CP <= 1'b0; DS <= r_data[6];end5'd19:begin SH_CP <= 1'b1; end5'd20:begin SH_CP <= 1'b0; DS <= r_data[5];end5'd21:begin SH_CP <= 1'b1; end5'd22:begin SH_CP <= 1'b0; DS <= r_data[4];end5'd23:begin SH_CP <= 1'b1; end5'd24:begin SH_CP <= 1'b0; DS <= r_data[3];end5'd25:begin SH_CP <= 1'b1; end5'd26:begin SH_CP <= 1'b0; DS <= r_data[2];end5'd27:begin SH_CP <= 1'b1; end5'd28:begin SH_CP <= 1'b0; DS <= r_data[1];end5'd29:begin SH_CP <= 1'b1; end5'd30:begin SH_CP <= 1'b0; DS <= r_data[0];end5'd31:begin SH_CP <= 1'b1; enddefault:begin SH_CP <= 1'b0;ST_CP <= 1'b0;DS <= 1'b0;	endendcase	endendendmodule

RTL視圖:

RTL74

3.3 HEX8模塊

該模塊的設(shè)計(jì)是在該文章的講解基礎(chǔ)之上進(jìn)行修改:【FPGA零基礎(chǔ)學(xué)習(xí)之旅#11】數(shù)碼管動(dòng)態(tài)掃描。

上述參考文章中的模塊可以稱(chēng)為HEX6,驅(qū)動(dòng)了6個(gè)數(shù)碼管,在此我們需要驅(qū)動(dòng)8個(gè)數(shù)碼管,故可以將模塊命名為HEX8。

需要注意的是,在設(shè)計(jì)數(shù)碼管位選的時(shí)候,一定要看清使用板子的電路結(jié)構(gòu),弄清楚是高電平位選還是低電平位選!

HEX8.v:

module HEX8(input 					Clk,		//50Minput 					Rst_n,		//復(fù)位input 					En,			//數(shù)碼管顯示使能input 		[31:0]		disp_data,	//8 × 4 = 32(8個(gè)數(shù)碼管,數(shù)據(jù)格式為hex,總共輸32位)output reg 	[7:0]		seg, 		//數(shù)碼管段選output 		[7:0]		sel	 		//數(shù)碼管位選(數(shù)碼管選擇)
);reg [7:0]sel_r;//--------<分頻器>--------reg [14:0]divider_cnt;//25000-1reg clk_1K;reg [3:0]data_tmp;//待顯示數(shù)據(jù)緩存//1KHz分頻計(jì)數(shù)器always@(posedge Clk or negedge Rst_n)beginif(!Rst_n)divider_cnt <= 15'd0;else if(!En)divider_cnt <= 15'd0;else if(divider_cnt == 24999)divider_cnt <= 15'd0;elsedivider_cnt <= divider_cnt + 1'b1;end//1KHz掃描時(shí)鐘always@(posedge Clk or negedge Rst_n)beginif(!Rst_n)clk_1K <= 1'b0;else if(divider_cnt == 24999)clk_1K <= ~clk_1K;elseclk_1K <= clk_1K;end//--------<6位循環(huán)移位寄存器>--------	always@(posedge clk_1K or negedge Rst_n)beginif(!Rst_n)sel_r <= 8'b0000_0001;else if(sel_r == 8'b1000_0000)sel_r <= 8'b0000_0001;elsesel_r <= sel_r << 1;end	//--------<6選1多路器>--------		always@(*)begincase(sel_r)8'b0000_0001:data_tmp = disp_data[3:0];8'b0000_0010:data_tmp = disp_data[7:4];8'b0000_0100:data_tmp = disp_data[11:8];8'b0000_1000:data_tmp = disp_data[15:12];8'b0001_0000:data_tmp = disp_data[19:16];8'b0010_0000:data_tmp = disp_data[23:20];8'b0100_0000:data_tmp = disp_data[27:24];8'b1000_0000:data_tmp = disp_data[31:28];default:data_tmp = 4'b0000;endcaseend//--------<LUT>--------		always@(*)begincase(data_tmp)4'h0:seg = 8'hc0;4'h1:seg = 8'hf9;4'h2:seg = 8'ha4;4'h3:seg = 8'hb0;4'h4:seg = 8'h99;4'h5:seg = 8'h92;4'h6:seg = 8'h82;4'h7:seg = 8'hf8;4'h8:seg = 8'h80;4'h9:seg = 8'h90;4'ha:seg = 8'h88;4'hb:seg = 8'h83;4'hc:seg = 8'hc6;4'hd:seg = 8'ha1;4'he:seg = 8'h86;4'hf:seg = 8'h8e;endcaseend//--------<2選1多路器>--------		assign sel = (En)?(sel_r):8'b1111_1111;endmodule

3.4 頂層模塊

在頂層模塊中需要調(diào)用ISSP這樣的一個(gè)IP核,操作過(guò)程和調(diào)試方法參考:【FPGA零基礎(chǔ)學(xué)習(xí)之旅#11】數(shù)碼管動(dòng)態(tài)掃描。

smg.v:

module smg(input 			Clk,		//50Minput 			Rst_n,//input [31:0] 	disp_data,output 			SH_CP,		//shift clockoutput 			ST_CP,		//latch data clockoutput 			DS			//shift serial data
);wire [7:0] sel;//數(shù)碼管位選(選擇當(dāng)前要顯示的數(shù)碼管)wire [7:0] seg;//數(shù)碼管段選(當(dāng)前要顯示的內(nèi)容)	wire  [31:0] disp_data;ISSP UISSP(.probe(),.source(disp_data));HEX8 UHEX8(.Clk(Clk),.Rst_n(Rst_n),.En(1'b1),.disp_data(disp_data),.sel(sel),.seg(seg));m74HC595_Driver Um74HC595_Driver(.Clk(Clk),.Rst_n(Rst_n),.Data({seg,sel}),.S_EN(1'b1),.SH_CP(SH_CP),.ST_CP(ST_CP),.DS(DS));endmodule

四、按鍵控制改變數(shù)據(jù)值

項(xiàng)目要求: 通過(guò)控制按鍵,使得數(shù)碼管顯示不同的數(shù)據(jù)內(nèi)容。

實(shí)現(xiàn)效果:
實(shí)現(xiàn)效果
先看RTL視圖來(lái)理解整體框架:
RTL3
按下按鍵1,數(shù)碼管顯示12345678;按下按鍵2,數(shù)碼管顯示89abcdef。

按鍵消抖模塊的設(shè)計(jì)參考該文章:【FPGA零基礎(chǔ)學(xué)習(xí)之旅#10】按鍵消抖模塊設(shè)計(jì)與驗(yàn)證(一段式狀態(tài)機(jī)實(shí)現(xiàn))。

在此貼出按鍵消抖的代碼:

KeyFilter.v:

//
//模塊:按鍵消抖模塊
//key_state:輸出消抖之后按鍵的狀態(tài)
//key_flag:按鍵消抖結(jié)束時(shí)產(chǎn)生一個(gè)時(shí)鐘周期的高電平脈沖
//
module KeyFilter(input Clk,input Rst_n,input key_in,output reg key_flag,output reg key_state
);//按鍵的四個(gè)狀態(tài)localparamIDLE 		= 4'b0001,FILTER1 	= 4'b0010,DOWN 		= 4'b0100,FILTER2 	= 4'b1000;//狀態(tài)寄存器reg [3:0] curr_st;//邊沿檢測(cè)輸出上升沿或下降沿wire pedge;wire nedge;//計(jì)數(shù)寄存器reg [19:0]cnt;//使能計(jì)數(shù)寄存器reg en_cnt;//計(jì)數(shù)滿標(biāo)志信號(hào)reg cnt_full;//計(jì)數(shù)滿寄存器//------<邊沿檢測(cè)電路的實(shí)現(xiàn)>------//邊沿檢測(cè)電路寄存器reg key_tmp0;reg key_tmp1;//邊沿檢測(cè)always@(posedge Clk or negedge Rst_n)beginif(!Rst_n)beginkey_tmp0 <= 1'b0;key_tmp1 <= 1'b0;endelse beginkey_tmp0 <= key_in;key_tmp1 <= key_tmp0;end	endassign nedge = (!key_tmp0) & (key_tmp1);assign pedge = (key_tmp0)  & (!key_tmp1);//------<狀態(tài)機(jī)主程序>------	//狀態(tài)機(jī)主程序always@(posedge Clk or negedge Rst_n)beginif(!Rst_n)begincurr_st <= IDLE;en_cnt <= 1'b0;key_flag <= 1'b0;key_state <= 1'b1;endelse begincase(curr_st)IDLE:beginkey_flag <= 1'b0;if(nedge)begincurr_st <= FILTER1;en_cnt <= 1'b1;endelsecurr_st <= IDLE;endFILTER1:beginif(cnt_full)beginkey_flag <= 1'b1;key_state <= 1'b0;curr_st <= DOWN;en_cnt <= 1'b0;end	else if(pedge)begincurr_st <= IDLE;en_cnt <= 1'b0;endelsecurr_st <= FILTER1;endDOWN:beginkey_flag <= 1'b0;if(pedge)begincurr_st <= FILTER2;en_cnt <= 1'b1;endelsecurr_st <= DOWN;endFILTER2:beginif(cnt_full)beginkey_flag <= 1'b1;key_state <= 1'b1;curr_st <= IDLE;en_cnt <= 1'b0;end	else if(nedge)begincurr_st <= DOWN;en_cnt <= 1'b0;endelsecurr_st <= FILTER2;enddefault:begincurr_st <= IDLE;en_cnt <= 1'b0;key_flag <= 1'b0;key_state <= 1'b1;endendcaseendend//------<20ms計(jì)數(shù)器>------		//20ms計(jì)數(shù)器//Clk 50_000_000Hz//一個(gè)時(shí)鐘周期為20ns//需要計(jì)數(shù)20_000_000 / 20 = 1_000_000次always@(posedge Clk or negedge Rst_n)beginif(!Rst_n)cnt <= 20'd0;else if(en_cnt)cnt <= cnt + 1'b1;elsecnt <= 20'd0;endalways@(posedge Clk or negedge Rst_n)beginif(!Rst_n)cnt_full <= 1'b0;else if(cnt == 999_999)cnt_full <= 1'b1;elsecnt_full <= 1'b0;endendmodule

簡(jiǎn)單編寫(xiě)了一個(gè)KeyData模塊用于不同數(shù)據(jù)的輸入

KeyData.v:

module KeyData(input Clk,input Rst_n,input Key_state1,input Key_flag1,input Key_state2,input Key_flag2,output reg [31:0] dis_data
);always@(posedge Clk or negedge Rst_n)beginif(!Rst_n)dis_data <= 32'h00000000;else if(Key_flag1 && !Key_state1)dis_data <= 32'h12345678;else if(Key_flag2 && !Key_state2)dis_data <= 32'h89abcdef;else dis_data <= dis_data;endendmodule

頂層模塊KeyCtrlSmg.v:

module KeyCtrlSmg(input 	Clk,input 	Rst_n,input 	KeyIn1,input 	KeyIn2,output 	SH_CP,		//shift clockoutput 	ST_CP,		//latch data clockoutput 	DS			//shift serial data
);wire key_state1;wire key_flag1;wire key_state2;wire key_flag2;wire [7:0] sel;//數(shù)碼管位選(選擇當(dāng)前要顯示的數(shù)碼管)wire [7:0] seg;//數(shù)碼管段選(當(dāng)前要顯示的內(nèi)容)	wire  [31:0] dis_data;KeyFilter KeyFilter1(.Clk(Clk),.Rst_n(Rst_n),.key_in(KeyIn1),.key_flag(key_flag1),.key_state(key_state1));KeyFilter KeyFilter2(.Clk(Clk),.Rst_n(Rst_n),.key_in(KeyIn2),.key_flag(key_flag2),.key_state(key_state2));KeyData UKeyData(.Clk(Clk),.Rst_n(Rst_n),.Key_state1(key_state1),.Key_flag1(key_flag1),.Key_state2(key_state2),.Key_flag2(key_flag2),.dis_data(dis_data));HEX8 UHEX8(.Clk(Clk),.Rst_n(Rst_n),.En(1'b1),.disp_data(dis_data),.sel(sel),.seg(seg));m74HC595_Driver Um74HC595_Driver(.Clk(Clk),.Rst_n(Rst_n),.Data({seg,sel}),.S_EN(1'b1),.SH_CP(SH_CP),.ST_CP(ST_CP),.DS(DS));endmodule

測(cè)試激勵(lì)文件:

`timescale 1ns/1ns
`define clock_period 20module KeyCtrlSmg_tb;reg Clk;reg Rst_n;reg KeyIn1;reg KeyIn2;wire SH_CP;wire ST_CP;wire DS;KeyCtrlSmg UKeyCtrlSmg(.Clk(Clk),.Rst_n(Rst_n),.KeyIn1(KeyIn1),.KeyIn2(KeyIn2),.SH_CP(SH_CP),		//shift clock.ST_CP(ST_CP),		//latch data clock.DS(DS)				//shift serial data);initial Clk = 1;always#(`clock_period / 2) Clk = ~Clk;initial begin Rst_n = 0;KeyIn1 = 1;KeyIn2 = 1;#200;Rst_n = 1;#200;KeyIn1 = 0;KeyIn2 = 1;#(`clock_period*10000)KeyIn1 = 1;KeyIn2 = 1;#(`clock_period*10000)KeyIn1 = 1;KeyIn2 = 0;#(`clock_period*10000)$stop;endendmodule

仿真結(jié)果:

仿真結(jié)果

csdn

🧸結(jié)尾


  • ?? 感謝您的支持和鼓勵(lì)! 😊🙏
  • 📜您可能感興趣的內(nèi)容:
  • 【FPGA】串口通信講解-狀態(tài)機(jī)判斷數(shù)據(jù)值
  • 【Python】串口通信-與FPGA、藍(lán)牙模塊實(shí)現(xiàn)串口通信(Python+FPGA)
  • 【Arduino TinyGo】【最新】使用Go語(yǔ)言編寫(xiě)Arduino-環(huán)境搭建和點(diǎn)亮LED燈
  • 【全網(wǎng)首發(fā)開(kāi)源教程】【Labview機(jī)器人仿真與控制】Labview與Solidworks多路支配關(guān)系-四足爬行機(jī)器人仿真與控制
    遇見(jiàn)未來(lái)
http://www.risenshineclean.com/news/37647.html

相關(guān)文章:

  • 學(xué)做網(wǎng)站論壇vip賬戶蘇州網(wǎng)站建設(shè)書(shū)生
  • 無(wú)錫專(zhuān)業(yè)做網(wǎng)站站長(zhǎng)網(wǎng)站查詢工具
  • 高唐網(wǎng)站建設(shè)電子商務(wù)網(wǎng)站建設(shè)的步驟
  • 深圳微商城網(wǎng)站制作費(fèi)用網(wǎng)站seo排名優(yōu)化工具
  • 網(wǎng)站關(guān)鍵詞seo優(yōu)化怎么做怎樣進(jìn)行seo優(yōu)化
  • 個(gè)人軟件制作網(wǎng)站網(wǎng)站的優(yōu)化與推廣分析
  • 網(wǎng)站如果不在公安局備案怎樣百度seo關(guān)鍵詞排名查詢
  • 網(wǎng)頁(yè)抓取 wordpress西安自動(dòng)seo
  • php網(wǎng)站模塊如何編寫(xiě)一個(gè)網(wǎng)站
  • 尋找手機(jī)網(wǎng)站建設(shè)北京優(yōu)化seo排名
  • 官網(wǎng)做的好看的網(wǎng)站有哪些設(shè)計(jì)網(wǎng)站排行
  • 宜春做網(wǎng)站公司網(wǎng)站seo優(yōu)化工具
  • 網(wǎng)站開(kāi)發(fā)測(cè)試過(guò)程中文域名查詢官網(wǎng)
  • 阜寧做網(wǎng)站的公司新手怎么做電商
  • 自適應(yīng)網(wǎng)站做mip改造在哪里可以免費(fèi)自學(xué)seo課程
  • 哪家做公司網(wǎng)站互聯(lián)網(wǎng)廣告推廣好做嗎
  • 吧網(wǎng)站做軟件的軟件網(wǎng)絡(luò)銷(xiāo)售平臺(tái)怎么做
  • 做國(guó)際網(wǎng)站的流程廣州seo報(bào)價(jià)
  • java做網(wǎng)站百度客服怎么轉(zhuǎn)人工電話
  • 仿做唯品會(huì)網(wǎng)站黃岡便宜的網(wǎng)站推廣怎么做
  • pmp培訓(xùn)seo網(wǎng)站
  • 沈陽(yáng)網(wǎng)站搜索引擎優(yōu)化google推廣教程
  • 網(wǎng)頁(yè)版視頻網(wǎng)站建設(shè)需要多少錢(qián)百度sem推廣具體做什么
  • kol合作推廣seo外鏈?zhǔn)鞘裁?/a>
  • 自己創(chuàng)業(yè)做原公司一樣的網(wǎng)站網(wǎng)站seo設(shè)計(jì)
  • 公司做網(wǎng)站的步驟廣州seo關(guān)鍵字推廣
  • 做韋恩圖的網(wǎng)站怎么樣推廣自己的公司
  • wordpress 添加導(dǎo)航菜單成都seo招聘
  • 網(wǎng)站域名有什么用計(jì)算機(jī)培訓(xùn)
  • 大學(xué)新校區(qū)建設(shè)網(wǎng)站網(wǎng)站seo重慶