BUPT数电实验 电子宠物孵化器
引脚设置(以上)
allcode顶层模块
module allcode(sw7,sw0,BTN0,clk,row,red,green,LD0,LD2,cat,bin);
input sw7,sw0,BTN0;
input clk;
output reg [7:0]row;
output [7:0] green,red;
output LD0,LD2;
output [7:0] cat; // 数码管的位选信号
output [6:0] bin; // 数码管的段选信号
reg startreg;
wire clkout;
wire temp;
reg rst;
reg [3:0] random = 4'b0011;
reg [4:0] pic = 5'b00000;
reg [4:0] freezecount=5'b00000;
reg [4:0] count=5'b00000;
initial begin
row=8'b11111110;
startreg = 0;
count = 0;
count = 0;
end
always @(posedge clk)begin
case (row)
8'b11111110:row<=8'b11111101;
8'b11111101:row<=8'b11111011;
8'b11111011:row<=8'b11110111;
8'b11110111:row<=8'b11101111;
8'b11101111:row<=8'b11011111;
8'b11011111:row<=8'b10111111;
8'b10111111:row<=8'b01111111;
8'b01111111:row<=8'b11111110;
endcase
end
always @(posedge clkout) begin
if (startreg) begin // 当孵化启动
if (temp) begin
if (pic < 5'b00101) begin // 当pic小于5时,每次增加1
pic <= pic + 1;
end else if (pic == 5'b00101) begin // 当pic等于5时,直接跳到12
pic <= 5'b01100;
end else if (pic > 5'b00101 && pic < 5'b01101) begin // 当pic大于5且小于13时,增加到13
pic <= 5'b01101;
end else if (pic == 5'b01101) begin // 当pic等于13时,随机选择14, 15, 16, 或 17
pic <= 5'b01110 + random[1:0];
end
// 注意: 如果pic大于等于14,保持不变
end else begin
if (freezecount == 5'b00011) begin
pic <= pic + 5'b00110;
end else begin
pic <= pic;
end
end
end else begin
pic <= 5'b00000; // 如果孵化没有启动,重置pic为0
end
end
// LFSR更新逻辑保持不变
always @(posedge clk) begin
if (startreg) begin
random <= {random[2:0], random[3] ^ random[2]}; // 线性反馈移位寄存器逻辑
end else begin
random <= 4'b0011; // 复位时重设为初始值
end
end
always@(posedge clk)begin
if(BTN0)
startreg<=1;
if(pic==5'b10001 || pic==5'b10000 || pic==5'b01111 || pic==5'b01110 ||pic==5'b00110||pic==5'b00111||pic==5'b01000||pic==5'b01001||pic==5'b01010||pic==5'b01011)
startreg<=0;
end
always@(posedge clk)begin
if(pic<=5'd00000)
rst<=1;
else
rst<=0;
end
//计时器
always@(posedge clkout)begin
if (startreg)begin
count<=count+1;
end
else begin
count<=count;
end
end
//冷冻计时器
always@(posedge clkout)begin
if(~temp)begin//温度不合适
if(startreg)begin//开始计时时
freezecount<=freezecount+1;//冷冻计时+1
end
else begin//没有开始计时时
freezecount<=0;//冷冻计时归零
end
end
else begin
freezecount<=0;//温度合适,冷冻计时归零
end
end
temp u1(.sw7(sw7),.sw0(sw0), .clk(clk), .temp(temp), .LD0(LD0), .LD2(LD2));
counter u3(.temp(temp), .clk(clk), .startreg(startreg), .clkout(clkout));
showpic u5(.clk(clk),.pic(pic), .sw7(sw7), .row(row), .red(red), .green(green));
numcnt u6(.sw7(sw7),.startreg(startreg),.clk(clk), .BTN0(BTN0), .rst(rst),.cat(cat),.bin(bin));
endmodule
八位数码管显示模块
// 顶层模块,实现数字计数器和数码管显示的功能
module numcnt (
input sw7,
input startreg,
input clk, // 时钟信号
input BTN0, // 按钮信号
input rst, // 复位信号
output reg[7:0] cat, // 数码管的位选信号
output reg[6:0] bin // 数码管的段选信号
);
reg pause; // 暂停标志位
reg [3:0] cnt1; // 个位计数器
reg [3:0] cnt2; // 十位计数器
reg [9:0] counter; // 计数器
reg [2:0] select; // 位选控制信号
reg [3:0] number; // 数码管的数字
reg BTN0_d_1; // 按钮信号消抖前一状态
reg BTN0_d; // 消抖后的按钮信号
// 主时钟边沿触发的逻辑
always @(posedge clk) begin//时钟上升沿开始动作
if (rst)
begin//复位有效则
cnt1 <= 0;
cnt2 <= 0;
counter <= 0;
pause <= 0;//个位十位,总计数器,暂停都赋值为0
end else begin//复位无效
if (startreg) begin//BTN0消抖前为0且消抖后为1开始动作
pause <= 0; // 暂停/继续控制pause反
end
else begin
pause<=1;
end
if (pause)
begin
cnt1<=cnt1;
cnt2<=cnt2;
end
else
begin//暂停键没有按下
if (counter == 10'd999)
begin
counter <= 0;//计数器到100复位到0
if (cnt1 == 4'b1001) //检测个位数是否为9
begin
cnt1 <= 0;//是9的话将各位复为零,检测十位数是否为0,是0进一,不是0复位0
if (cnt2 == 0)
cnt2 <= cnt2 + 1;
else cnt2 <= 0;
end
else
begin
cnt1 <= cnt1 + 1;//个位不是9就进一
end
end
else
begin
counter <= counter + 1;//执行完以上总计数器加一
end
end
BTN0_d_1 <= BTN0_d;
end
end
// 段选和位选控制逻辑
always @(posedge clk) begin
if(sw7)begin
if (rst) begin
number <= 0; // 数码管数字复位
end else begin
if (select == 3'b000) begin
select <= 3'd1; // 切换到十位
number <= cnt2; // 数码管显示十位数字
end else begin
select = 3'd0; // 切换到个位
number <= cnt1; // 数码管显示个位数字
end//一直在个位和十位之间选择,当选择个位时,将位选信号赋值为十位,将个位的数值赋值给段选信号,十位时相反
end
end else begin
number <=4'b1010;
end
end
reg r_key_1;
reg r_key_2;
//消抖模块
always @(negedge clk) begin
r_key_2 <= r_key_1;
r_key_1 <= BTN0;
if (r_key_1 == ~r_key_2 ==clk ) begin
BTN0_d <= r_key_1 ; // 按钮信号消抖
end
end
// 数码管段选位选模块
// 位选控制逻辑
always @(posedge clk, posedge rst) begin
if (rst)
begin//复位信号有效
cat <= 8'b1111_1111; // 位选复位,一位都不选
end
else //复位信号无效,实现位选
begin
case(select)//位选8选1
3'b000: cat <= 8'b1111_1110;
3'b001: cat <= 8'b1111_1101;
3'b010: cat <= 8'b1111_1011;
3'b011: cat <= 8'b1111_0111;
3'b100: cat <= 8'b1110_1111;
3'b101: cat <= 8'b1101_1111;
3'b110: cat <= 8'b1011_1111;
3'b111: cat <= 8'b0111_1111;
endcase
// 根据数码管数字选择段选信号
case(number)
4'b0000: bin <= 7'b1111110;
4'b0001: bin <= 7'b0110000;
4'b0010: bin <= 7'b1101101;
4'b0011: bin <= 7'b1111001;
4'b0100: bin <= 7'b0110011;
4'b0101: bin <= 7'b1011011;
4'b0110: bin <= 7'b1011111;
4'b0111: bin <= 7'b1110000;
4'b1000: bin <= 7'b1111111;
4'b1001: bin <= 7'b1111011;
4'b1010: bin <= 7'b0000000;
default: bin <= 7'b0000000;
endcase
end
end
endmodule
// 按钮消抖模块
counter计数模块
module counter (temp, clk, startreg, clkout);
input temp;
input clk;
input startreg;
output reg clkout;
reg [10:0] timer; // 输出以便于观察
wire startreg;
initial begin
clkout = 1'b0;
timer = 0;
end
always @(posedge clk) begin
if (timer >= 10'd999) // 更快的重置条件//修改2,499改为了999
timer <= 0;
else
timer <= timer + 1;
end
always @(posedge clk) begin
if (timer >= 10'd999)//修改3,499改为了999
clkout <= ~clkout;
end
endmodule
showpic显示图像的模块
module showpic (clk,pic,sw7,row,red,green);
input clk;
input [4:0]pic;
input sw7;
input [7:0]row;
output reg [7:0] red;
output reg [7:0] green;
always@(*)
begin
if(sw7)begin
case(pic)
5'b00000://0
begin
case(row)
8'b1111_1110:begin red<=8'b0000_0000;green<=8'b0000_0000;end
8'b1111_1101:begin red<=8'b0000_0000;green<=8'b0000_0000;end
8'b1111_1011:begin red<=8'b0001_1000;green<=8'b0001_1000;end
8'b1111_0111:begin red<=8'b0011_1100;green<=8'b0011_1100;end
8'b1110_1111:begin red<=8'b0011_1100;green<=8'b0011_1100;end
8'b1101_1111:begin red<=8'b0001_1000;green<=8'b0001_1000;end
8'b1011_1111:begin red<=8'b0000_0000;green<=8'b0000_0000;end
8'b0111_1111:begin red<=8'b0000_0000;green<=8'b0000_0000;end
endcase
end
5'b00001://1
begin
case(row)
8'b1111_1110:begin red<=8'b0000_0000;green<=8'b0000_0000;end
8'b1111_1101:begin red<=8'b0000_0000;green<=8'b0000_0000;end
8'b1111_1011:begin red<=8'b0001_1100;green<=8'b0001_1100;end
8'b1111_0111:begin red<=8'b0011_1110;green<=8'b0011_1110;end
8'b1110_1111:begin red<=8'b0011_1110;green<=8'b0011_1110;end
8'b1101_1111:begin red<=8'b0001_1100;green<=8'b0001_1100;end
8'b1011_1111:begin red<=8'b0000_0000;green<=8'b0000_0000;end
8'b0111_1111:begin red<=8'b0000_0000;green<=8'b0000_0000;end
endcase
end
5'b00010://2
begin
case(row)
8'b1111_1110:begin red<=8'b0000_0000;green<=8'b0000_0000;end
8'b1111_1101:begin red<=8'b0000_0000;green<=8'b0000_0000;end
8'b1111_1011:begin red<=8'b0011_1100;green<=8'b0011_1100;end
8'b1111_0111:begin red<=8'b0111_1110;green<=8'b0111_1110;end
8'b1110_1111:begin red<=8'b0111_1110;green<=8'b0111_1110;end
8'b1101_1111:begin red<=8'b0011_1100;green<=8'b0011_1100;end
8'b1011_1111:begin red<=8'b0000_0000;green<=8'b0000_0000;end
8'b0111_1111:begin red<=8'b0000_0000;green<=8'b0000_0000;end
endcase
end
5'b00011://3
begin
case(row)
8'b1111_1110:begin red<=8'b0000_0000;green<=8'b0000_0000;end
8'b1111_1101:begin red<=8'b0011_1100;green<=8'b0011_1100;end
8'b1111_1011:begin red<=8'b0111_1110;green<=8'b0111_1110;end
8'b1111_0111:begin red<=8'b0111_1110;green<=8'b0111_1110;end
8'b1110_1111:begin red<=8'b0111_1110;green<=8'b0111_1110;end
8'b1101_1111:begin red<=8'b0111_1110;green<=8'b0111_1110;end
8'b1011_1111:begin red<=8'b0011_1100;green<=8'b0011_1100;end
8'b0111_1111:begin red<=8'b0000_0000;green<=8'b0000_0000;end
endcase
end
5'b00100://4
begin
case(row)
8'b1111_1110:begin red<=8'b0011_1100;green<=8'b0011_1100;end
8'b1111_1101:begin red<=8'b0111_1110;green<=8'b0111_1110;end
8'b1111_1011:begin red<=8'b1111_1111;green<=8'b1111_1111;end
8'b1111_0111:begin red<=8'b1111_1111;green<=8'b1111_1111;end
8'b1110_1111:begin red<=8'b1111_1111;green<=8'b1111_1111;end
8'b1101_1111:begin red<=8'b1111_1111;green<=8'b1111_1111;end
8'b1011_1111:begin red<=8'b0111_1110;green<=8'b0111_1110;end
8'b0111_1111:begin red<=8'b0011_1100;green<=8'b0011_1100;end
endcase
end
5'b00101://5
begin
case(row)
8'b1111_1110:begin red<=8'b1111_1111;green<=8'b1111_1111;end
8'b1111_1101:begin red<=8'b1111_1111;green<=8'b1111_1111;end
8'b1111_1011:begin red<=8'b1111_1111;green<=8'b1111_1111;end
8'b1111_0111:begin red<=8'b1111_1111;green<=8'b1111_1111;end
8'b1110_1111:begin red<=8'b1111_1111;green<=8'b1111_1111;end
8'b1101_1111:begin red<=8'b1111_1111;green<=8'b1111_1111;end
8'b1011_1111:begin red<=8'b1111_1111;green<=8'b1111_1111;end
8'b0111_1111:begin red<=8'b1111_1111;green<=8'b1111_1111;end
endcase
end
5'b00110://6
begin
case(row)
8'b1111_1110:begin red<=8'b0000_0000;green<=8'b0000_0000;end
8'b1111_1101:begin red<=8'b0000_0000;green<=8'b0000_0000;end
8'b1111_1011:begin red<=8'b0000_0000;green<=8'b0001_1000;end
8'b1111_0111:begin red<=8'b0000_0000;green<=8'b0011_1100;end
8'b1110_1111:begin red<=8'b0000_0000;green<=8'b0011_1100;end
8'b1101_1111:begin red<=8'b0000_0000;green<=8'b0001_1000;end
8'b1011_1111:begin red<=8'b0000_0000;green<=8'b0000_0000;end
8'b0111_1111:begin red<=8'b0000_0000;green<=8'b0000_0000;end
endcase
end
5'b00111://7
begin
case(row)
8'b1111_1110:begin red<=8'b0000_0000;green<=8'b0000_0000;end
8'b1111_1101:begin red<=8'b0000_0000;green<=8'b0000_0000;end
8'b1111_1011:begin red<=8'b0000_0000;green<=8'b0001_1100;end
8'b1111_0111:begin red<=8'b0000_0000;green<=8'b0011_1110;end
8'b1110_1111:begin red<=8'b0000_0000;green<=8'b0011_1110;end
8'b1101_1111:begin red<=8'b0000_0000;green<=8'b0001_1100;end
8'b1011_1111:begin red<=8'b0000_0000;green<=8'b0000_0000;end
8'b0111_1111:begin red<=8'b0000_0000;green<=8'b0000_0000;end
endcase
end
5'b01000://8
begin
case(row)
8'b1111_1110:begin red<=8'b0000_0000;green<=8'b0000_0000;end
8'b1111_1101:begin red<=8'b0000_0000;green<=8'b0000_0000;end
8'b1111_1011:begin red<=8'b0000_0000;green<=8'b0011_1100;end
8'b1111_0111:begin red<=8'b0000_0000;green<=8'b0111_1110;end
8'b1110_1111:begin red<=8'b0000_0000;green<=8'b0111_1110;end
8'b1101_1111:begin red<=8'b0000_0000;green<=8'b0011_1100;end
8'b1011_1111:begin red<=8'b0000_0000;green<=8'b0000_0000;end
8'b0111_1111:begin red<=8'b0000_0000;green<=8'b0000_0000;end
endcase
end
5'b01001://9
begin
case(row)
8'b1111_1110:begin red<=8'b0000_0000;green<=8'b0000_0000;end
8'b1111_1101:begin red<=8'b0000_0000;green<=8'b0011_1100;end
8'b1111_1011:begin red<=8'b0000_0000;green<=8'b0111_1110;end
8'b1111_0111:begin red<=8'b0000_0000;green<=8'b0111_1110;end
8'b1110_1111:begin red<=8'b0000_0000;green<=8'b0111_1110;end
8'b1101_1111:begin red<=8'b0000_0000;green<=8'b0111_1110;end
8'b1011_1111:begin red<=8'b0000_0000;green<=8'b0011_1100;end
8'b0111_1111:begin red<=8'b0000_0000;green<=8'b0000_0000;end
endcase
end
5'b01010://10
begin
case(row)
8'b1111_1110:begin red<=8'b0000_0000;green<=8'b0011_1100;end
8'b1111_1101:begin red<=8'b0000_0000;green<=8'b0111_1110;end
8'b1111_1011:begin red<=8'b0000_0000;green<=8'b1111_1111;end
8'b1111_0111:begin red<=8'b0000_0000;green<=8'b1111_1111;end
8'b1110_1111:begin red<=8'b0000_0000;green<=8'b1111_1111;end
8'b1101_1111:begin red<=8'b0000_0000;green<=8'b1111_1111;end
8'b1011_1111:begin red<=8'b0000_0000;green<=8'b0111_1110;end
8'b0111_1111:begin red<=8'b0000_0000;green<=8'b0011_1100;end
endcase
end
5'b01011://11
begin
case(row)
8'b1111_1110:begin red<=8'b0000_0000;green<=8'b1111_1111;end
8'b1111_1101:begin red<=8'b0000_0000;green<=8'b1111_1111;end
8'b1111_1011:begin red<=8'b0000_0000;green<=8'b1111_1111;end
8'b1111_0111:begin red<=8'b0000_0000;green<=8'b1111_1111;end
8'b1110_1111:begin red<=8'b0000_0000;green<=8'b1111_1111;end
8'b1101_1111:begin red<=8'b0000_0000;green<=8'b1111_1111;end
8'b1011_1111:begin red<=8'b0000_0000;green<=8'b1111_1111;end
8'b0111_1111:begin red<=8'b0000_0000;green<=8'b1111_1111;end
endcase
end
5'b01100://12
begin
case(row)
8'b1111_1110:begin red<=8'b1100_0011;green<=8'b1100_0011;end
8'b1111_1101:begin red<=8'b1110_0011;green<=8'b1110_0011;end
8'b1111_1011:begin red<=8'b1111_0001;green<=8'b1111_0001;end
8'b1111_0111:begin red<=8'b1110_0011;green<=8'b1110_0011;end
8'b1110_1111:begin red<=8'b1100_0111;green<=8'b1100_0111;end
8'b1101_1111:begin red<=8'b1110_0111;green<=8'b1110_0111;end
8'b1011_1111:begin red<=8'b1111_0111;green<=8'b1111_0111;end
8'b0111_1111:begin red<=8'b1111_1011;green<=8'b1111_1011;end
endcase
end
5'b01101://13
begin
case(row)
8'b1111_1110:begin red<=8'b0000_0000;green<=8'b0000_0000;end
8'b1111_1101:begin red<=8'b0000_0001;green<=8'b0000_0001;end
8'b1111_1011:begin red<=8'b1000_0001;green<=8'b1000_0001;end
8'b1111_0111:begin red<=8'b1100_0011;green<=8'b1100_0011;end
8'b1110_1111:begin red<=8'b1000_0011;green<=8'b1000_0011;end
8'b1101_1111:begin red<=8'b1100_0111;green<=8'b1100_0111;end
8'b1011_1111:begin red<=8'b1110_0111;green<=8'b1110_0111;end
8'b0111_1111:begin red<=8'b1111_0011;green<=8'b1111_0011;end
endcase
end
5'b01110://14
begin
case(row)
8'b1111_1110:begin red<=8'b0000_0000;green<=8'b0000_0000;end
8'b1111_1101:begin red<=8'b0011_1000;green<=8'b0000_0000;end
8'b1111_1011:begin red<=8'b0100_0100;green<=8'b0000_0000;end
8'b1111_0111:begin red<=8'b0101_1010;green<=8'b0000_0000;end
8'b1110_1111:begin red<=8'b0100_1010;green<=8'b0000_0000;end
8'b1101_1111:begin red<=8'b0011_0010;green<=8'b0000_0000;end
8'b1011_1111:begin red<=8'b1100_0100;green<=8'b0000_0000;end
8'b0111_1111:begin red<=8'b0011_1000;green<=8'b0000_0000;end
endcase
end
//begin
//case(row)
//8'b1111_1110:begin red<=8'b0000_0000;green<=8'b0000_0000;end
//8'b1111_1101:begin red<=8'b0110_0110;green<=8'b0000_0000;end
//8'b1111_1011:begin red<=8'b1110_0111;green<=8'b0000_0000;end
//8'b1111_0111:begin red<=8'b1111_1111;green<=8'b0000_0000;end
//8'b1110_1111:begin red<=8'b1111_1111;green<=8'b0000_0000;end
//8'b1101_1111:begin red<=8'b0111_1110;green<=8'b0000_0000;end
//8'b1011_1111:begin red<=8'b0011_1100;green<=8'b0000_0000;end
//8'b0111_1111:begin red<=8'b0001_1000;green<=8'b0000_0000;end
//endcase
//end
5'b01111://15
begin
case(row)
8'b1111_1110:begin red<=8'b0000_0000;green<=8'b0000_0000;end
8'b1111_1101:begin red<=8'b0000_0000;green<=8'b0000_0000;end
8'b1111_1011:begin red<=8'b0110_0000;green<=8'b0110_0000;end
8'b1111_0111:begin red<=8'b1111_1100;green<=8'b1111_1100;end
8'b1110_1111:begin red<=8'b0011_1111;green<=8'b0011_1111;end
8'b1101_1111:begin red<=8'b0011_1110;green<=8'b0011_1110;end
8'b1011_1111:begin red<=8'b0001_1100;green<=8'b0001_1100;end
8'b0111_1111:begin red<=8'b0000_0000;green<=8'b0000_0000;end
endcase
end
5'b10000://16
begin
case(row)
8'b1111_1110:begin red<=8'b0000_0000;green<=8'b0000_0000;end
8'b1111_1101:begin red<=8'b0000_0000;green<=8'b0000_0000;end
8'b1111_1011:begin red<=8'b0000_0000;green<=8'b0001_1000;end
8'b1111_0111:begin red<=8'b0000_0000;green<=8'b0011_1100;end
8'b1110_1111:begin red<=8'b0000_0000;green<=8'b0111_1110;end
8'b1101_1111:begin red<=8'b0000_0000;green<=8'b0111_1110;end
8'b1011_1111:begin red<=8'b0000_0000;green<=8'b0010_0100;end
8'b0111_1111:begin red<=8'b0000_0000;green<=8'b0000_0000;end
endcase
end
5'b10001://17
begin
case(row)
8'b1111_1110:begin red<=8'b1110_0000;green<=8'b0000_0000;end
8'b1111_1101:begin red<=8'b0110_0000;green<=8'b0000_0000;end
8'b1111_1011:begin red<=8'b1110_0000;green<=8'b0000_0000;end
8'b1111_0111:begin red<=8'b0011_0000;green<=8'b0000_0000;end
8'b1110_1111:begin red<=8'b0011_0001;green<=8'b0000_0000;end
8'b1101_1111:begin red<=8'b0011_0011;green<=8'b0000_0000;end
8'b1011_1111:begin red<=8'b0011_1110;green<=8'b0000_0000;end
8'b0111_1111:begin red<=8'b0001_1100;green<=8'b0000_0000;end
endcase
end
endcase
end
else begin//空白
case(row)
8'b1111_1110:begin red<=8'b0000_0000;green<=8'b0000_0000;end
8'b1111_1101:begin red<=8'b0000_0000;green<=8'b0000_0000;end
8'b1111_1011:begin red<=8'b0000_0000;green<=8'b0000_0000;end
8'b1111_0111:begin red<=8'b0000_0000;green<=8'b0000_0000;end
8'b1110_1111:begin red<=8'b0000_0000;green<=8'b0000_0000;end
8'b1101_1111:begin red<=8'b0000_0000;green<=8'b0000_0000;end
8'b1011_1111:begin red<=8'b0000_0000;green<=8'b0000_0000;end
8'b0111_1111:begin red<=8'b0000_0000;green<=8'b0000_0000;end
endcase
end
end
endmodule
温度模块
module temp(sw7,sw0,clk,temp,LD0,LD2);
input sw7;
input sw0;
input clk;
output reg temp;
output reg LD0;
output reg LD2;
always@(posedge clk)begin
if(sw7)begin//控制显示
if(sw0)begin
temp<=1;
LD0<=0;
LD2<=1;
end
else begin
temp<=0;
LD0<=1;
LD2<=0;
end
end
else begin
LD0<=0;
LD2<=0;
end
end
endmodule
相关知识
Grumbach孵化器
【电商信息图】宠物电商:悄然兴起的新宠儿 网经社 电子商务研究中心 电商门户 互联网+智库
从宠物社区到宠物上门,这次“好狗狗”要做狗狗网红孵化器
在家里制作一个鸟蛋孵化器并完成蛋的孵化
搭建线上线下赋能矩阵,联合利华U创孵化器携天猫与新国货“共舞”
【电子宠物表】
动物电子体温计厂家
2021年创业孵化器行业市场调研前景分析.pdf
宠物爬虫大棚养殖育苗专用优质电子数显湿度计深圳生产厂家 直销
如何用ARDUINO制作一个鸟蛋孵化器
网址: BUPT数电实验 电子宠物孵化器 https://www.mcbbbk.com/newsview509972.html
上一篇: 《柯学宠物模拟器》卟卟芭咕 |
下一篇: 宠物对话翻译器2024官方下载 |
推荐分享

- 1我的狗老公李淑敏33——如何 5096
- 2南京宠物粮食薄荷饼宠物食品包 4363
- 3家养水獭多少钱一只正常 3825
- 4豆柴犬为什么不建议养?可爱的 3668
- 5自制狗狗辅食:棉花面纱犬的美 3615
- 6狗交配为什么会锁住?从狗狗生 3601
- 7广州哪里卖宠物猫狗的选择性多 3535
- 8湖南隆飞尔动物药业有限公司宠 3477
- 9黄金蟒的价格 3396
- 10益和 MATCHWELL 狗 3352