名称:蔬菜大棚自动控温系统(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
阅读全文
575