• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

蔬菜大棚自动控温系统(DS18B20)设计Verilog代码Quartus仿真

08/14 11:29
769
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-240RGR454E9.doc

共1个文件

名称:蔬菜大棚自动控温系统(DS18B20)设计Verilog代码Quartus仿真

软件:Quartus

语言:Verilog

代码功能:

蔬菜大棚自动控温系统(DS18B20)

1、使用DS18B20作为温度传感器

2、若检测到温度低于20度,则加热(电热棒)。

3、若检测到温度高于30度,则启动电机(空调压缩机)降温。

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

演示视频:

设计文档:

1. 工程文件

2. 程序文件

原理图

代码

3. 程序编译

4. RTL图

5. 仿真

5.1 加热模块仿真

//若检测到温度低于20度,则加热

5.2 电机(PWM)模块仿真

//若检测到温度高于30度,则降温,启动电机

部分代码展示:

//ds18b20驱动模块
module ds18b20_drive(
  input         clk,                    // 50MHz时钟
  input         rst_n,                  // 异步复位
  inout         one_wire,               // One-Wire总线
  output [15:0] temperature             // 输出温度值
);
//++++++++++++++++++++++++++++++++++++++
// 分频器50MHz->1MHz 开始
//++++++++++++++++++++++++++++++++++++++
reg [5:0] cnt;                         // 计数子
always @ (posedge clk, negedge rst_n)
  if (!rst_n)
    cnt <= 0;
  else
    if (cnt == 49)
      cnt <= 0;
    else
      cnt <= cnt + 1'b1;
reg clk_1us;                            // 1MHz 时钟
always @ (posedge clk, negedge rst_n)
  if (!rst_n)
    clk_1us <= 0;
  else
    if (cnt <= 24)                      // 24 = 50/2 - 1
      clk_1us <= 0;
    else
      clk_1us <= 1;      
//--------------------------------------
// 分频器50MHz->1MHz 结束
//--------------------------------------
//++++++++++++++++++++++++++++++++++++++
// 延时模块 开始
//++++++++++++++++++++++++++++++++++++++
reg [19:0] cnt_1us;                      // 1us延时计数子
reg cnt_1us_clear;                       // 请1us延时计数子
always @ (posedge clk_1us)
  if (cnt_1us_clear)
    cnt_1us <= 0;
  else
    cnt_1us <= cnt_1us + 1'b1;
//--------------------------------------
// 延时模块 结束
//--------------------------------------
//++++++++++++++++++++++++++++++++++++++
// DS18B20状态机 开始
//++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++
// 格雷码
parameter S00     = 5'h00;
parameter S0      = 5'h01;
parameter S1      = 5'h03;
parameter S2      = 5'h02;
parameter S3      = 5'h06;
parameter S4      = 5'h07;
parameter S5      = 5'h05;
parameter S6      = 5'h04;
parameter S7      = 5'h0C;
parameter WRITE0  = 5'h0D;
parameter WRITE1  = 5'h0F;
parameter WRITE00 = 5'h0E;
parameter WRITE01 = 5'h0A;
parameter READ0   = 5'h0B;
parameter READ1   = 5'h09;
parameter READ2   = 5'h08;
parameter READ3   = 5'h18;

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=976

  • 2-240RGR454E9.doc
    下载

相关推荐