【正文】
), .sys_rstn(rst), .led(led), .data(temperature), .t(timed), .s_time(set_time), .s_tmp(set_tmp) )。 reg rst_n。 always(posedge clk) begin if(count2039。 count=count+1。h8ffff) begin rst_n=0。 end else rst_n=1。 // 計(jì)數(shù)子always (posedge clk, negedge rst_n) if (!rst_n) t = 0。 else t = t + 139。reg clk_1us。 else if (t = 24) // 24 = 50/2 1 clk_1us = 0。 //// 分頻器50MHz1MHz 結(jié)束////延時(shí)模塊的使用//++++++++++++++++++++++++++++++++++++++// 延時(shí)模塊 開始//++++++++++++++++++++++++++++++++++++++reg [19:0] t_1us。 // 請1us延時(shí)計(jì)數(shù)子always (posedge clk_1us) if (t_1us_clear) t_1us = 0。b1。h00。h01。h03。h02。h06。h07。h05。h04。h0C。h0D。h0F。h0E。h0A。h0B。h09。h08。h18。 // 狀態(tài)寄存器//reg one_wire_buf。 // 采集到的溫度值緩存器(未處理)reg [5:0] step。 // 有效位 always (posedge clk_1us, negedge rst_n)begin if (!rst_n) begin one_wire_buf = 139。 step = 0。 end else begin case (state) S00 : begin temperature_buf = 1639。 state = S0。 one_wire_buf = 0。 end S1 : begin t_1us_clear = 0。 one_wire_buf = 139。 // 釋放總線 state = S2。 if (t_1us == 100) // 等待100us begin t_1us_clear = 1。 end end S3 : if (~one_wire) // 若18b20拉低總線,初始化成功 state = S4。 S4 : begin t_1us_clear = 0。 state = S5。b1。 end else if (step == 1) begin step = step + 139。 state = WRITE0。 step = step + 139。 state = WRITE01。 step = step + 139。 state = WRITE01。b1。 end else if (step == 5) begin step = step + 139。 state = WRITE0。 step = step + 139。 state = WRITE01。 step = step + 139。 state = WRITE01。b1。 end else if (step == 9) begin step = step + 139。 state = WRITE0。 step = step + 139。 state = WRITE01。b1。 end else if (step == 12) begin step = step + 139。 state = WRITE0。b1。 end else if (step == 14) begin one_wire_buf = 0。b1。 end else if (step == 15) begin step = step + 139。 state = WRITE0。bZ。b1。 end // 再次置數(shù)0xCC和0xBE else if (step == 17) // 0xCC begin step = step + 139。 state = WRITE0。b1。 end else if (step == 19) begin one_wire_buf = 0。b1。 end else if (step == 20) begin step = step + 139。 state = WRITE01。 end else if (step == 21) begin step = step + 139。 state = WRITE0。b1。 end else if (step == 23) begin one_wire_buf = 0。b1。 end else if (step == 24) begin one_wire_buf = 0。b1。 end else if (step == 25) // 0xBE begin step = step + 139。 state = WRITE0。 step = step + 139。 state = WRITE01。 step = step + 139。 state = WRITE01。 step = step + 139。 state = WRITE01。 step = step + 139。 state = WRITE01。 step = step + 139。 state = WRITE01。b1。 end else if (step == 32) begin one_wire_buf = 0。b1。 end // 第二次寫完,跳到S7,直接開始讀數(shù)據(jù) else if (step == 33) begin step = step + 139。 state = S7。 if (t_1us == 750000 | one_wire) // 延時(shí)750ms!!!! begin t_1us_clear = 1。 // 跳回S0,再次初始化 end end S7 : begin // 讀數(shù)據(jù) if (step == 34) begin bit_valid = 0。 step = step + 139。 state = READ0。b1。 step = step + 139。 state = READ0。b1。 step = step + 139。 state = READ0。b1。 step = step + 139。 state = READ0。b1。 step = step + 139。 state = READ0。b1。 step = step + 139。 state = READ0。b1。 step = step + 139。 state = READ0。b1。 step = step + 139。 state = RE