第一范文网 - 专业文章范例文档资料分享平台

基于FPGA的温度监控系统 - 图文

来源:用户分享 时间:2025/5/15 16:52:38 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

山东科技大学学士学位论文 附录

附录

附录A系统总体电路图

附录B 系统总程序

DS18B20驱动: module ds18b20( input clk, //50M input rst, //复位 output [7:0] seg, //数码管 output [1:0] en, //数码管使能 inout dq //ds18b20 数据线 );

37

山东科技大学学士学位论文 附录

wire clk_1k; //数码管扫描时钟 wire clk_1m; //1us 时钟,用于控制传感器读写时序 reg[15:0] temp; //16位温度数据 wire[15:0] disp_dat; reg[8:0] state; reg[19:0] cnt; reg[2:0] cnt_bit; reg[7:0] data_w; //写到传感器的数据 reg[7:0] data_r; //从传感器读入的数据 reg link; reg dq_out; wire dq_in; wire[11:0] bcd;

assign dq = (link)? dq_out : 1'bz; assign dq_in = dq;

parameter RESET1 = 9'b0_0000_0001, // 复位1 RESET2 = 9'b0_0000_0010, // 复位2

WRITE_CC1 = 9'b0_0000_0100, // 第一次写入跳过rom命令 WRITE_44 = 9'b0_0000_1000, // 写入温度转换命令WRITE_CC2 = 9'b0_0001_0000, // 第二次写入跳过rom命令 WRITE_BE = 9'b0_0010_0000, // 写入读命令 READ1 = 9'b0_0100_0000, // 读入第一个字节 READ2 = 9'b0_1000_0000, // 读入第二个字节 WAIT_800MS = 9'b1_0000_0000; // 等待800ms

clk_gen uu0( .rst(rst), .clk(clk), //产生1k 和 1m时钟 .clk_1k(clk_1k), .clk_1m(clk_1m) );

bin2bcd uu1( .data(disp_dat), //二进制转bcd码,从传感器读入的数据是二进制的,转换为bcd后才能显示 .bcd_out(bcd)

38

山东科技大学学士学位论文 附录

); disp uu2( .rst(rst), //数码管显示 .clk(clk_1k), .data(bcd), .seg(seg), .en(en) );

assign disp_dat =(temp[15])? (~temp+1) : temp; 度为负,取反加1

always @(posedge clk_1m or negedge rst) begin if(~rst) begin cnt <= 0; state <= RESET1; end else case(state) RESET1: begin cnt <= cnt + 1; if(cnt < 'd500) begin link <= 1; dq_out <= 0; end else if(cnt < 'd1000) begin link <= 0; end else begin cnt <= 0; state <= WRITE_CC1; data_w <= 8'hcc;

39

//若最高位为1,则温 //第一次复位 山东科技大学学士学位论文 附录

cnt_bit <= 0; end end

WRITE_CC1: begin //写入跳过rom命令 cnt <= cnt + 1; if(cnt < 'd5) begin link <= 1; dq_out <= 0; end else if(cnt < 'd60) begin dq_out <= data_w[cnt_bit]; end else if(cnt < 'd65) begin link <= 0; end else begin cnt <= 0; cnt_bit <= cnt_bit + 1; if(cnt_bit == 'd7) begin state <= WRITE_44; cnt_bit <= 0; data_w <= 8'h44; end end end

WRITE_44: begin cnt <= cnt + 1; if(cnt < 'd5) begin link <= 1; dq_out <= 0; end else if(cnt < 'd60)

begin

40

//写入温度转换命令

搜索更多关于: 基于FPGA的温度监控系统 - 图文 的文档
基于FPGA的温度监控系统 - 图文.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c9id076s1no4oweh0piu0_11.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top