- 1、本文档共27页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
module temper(input clk,input rst_n,inout one_wire,output [15:0] temperature);
// 分频器20MHz-1MHz 开始
reg [3:0] cnt;
reg clk_1us;
always @ (posedge clk, negedge rst_n)
if (!rst_n)
cnt = 0;
else
if (cnt == 9)
begin cnt = 0;clk_1us= ~ clk_1us;end
else
cnt = cnt + 4d1;
// 1MHz 时钟
//延时模块的使用
reg [19:0] cnt_1us;
reg cnt_1us_clear;
always @ (posedge clk_1us)
if (cnt_1us_clear)
cnt_1us = 0;
else
cnt_1us = cnt_1us + 1b1;
// DS18B20状态机开始
// 格雷码
parameter S00 = 5h00;
parameter S0 = 5h01;
parameter S1 = 5h03;
parameter S2 = 5h02;
parameter S3 = 5h06;
parameter S4 = 5h07;
parameter S5 = 5h05;
parameter S6 = 5h04;
parameter S7 = 5h0C;
parameter WRITE0 = 5h0D;
parameter WRITE1 = 5h0F;
parameter WRITE00 = 5h0E;
parameter WRITE01 = 5h0A;
parameter READ0 = 5h0B;
parameter READ1 = 5h09;
parameter READ2 = 5h08;
parameter READ3 = 5h18;
reg [4:0] state; // 状态寄存器
//-------------------------------------
reg one_wire_buf; // One-Wire总线缓存寄存器reg [15:0] temperature_buf; // 采集到的温度值缓存器
reg [5:0] step; // 子状态寄存器0~50
reg [3:0] bit_valid; // 有效位
always @(posedge clk_1us, negedge rst_n)
begin
if (!rst_n)
begin
one_wire_buf = 1bZ;
step = 0;
state = S00;
end
else
begin
case (state)
S00 : begin
temperature_buf = 16h001F;
state = S0;
end
S0 : begin // 初始化
cnt_1us_clear = 1;
one_wire_buf = 0;
state = S1;
end
S1 : begin
cnt_1us_clear = 0;
if (cnt_1us == 500) // 延时500us
begin
cnt_1us_clear = 1;
one_wire_buf = 1bZ; // 释放总线
state = S2;
end
end
S2 : begin
cnt_1us_clear = 0;
if (cnt_1us == 100) // 等待100us
begin
cnt_1us_clear = 1;
state = S3;
end
end
S3 : if (~one_wire) // 若18b20拉低总线,初始化成功state = S4;
else if (one_wire) // 否则,初始化不成功,返回S0
state = S0;
S4 : begin
cnt_1us_clear = 0;
if (cnt_1us == 400) // 再延时400us
begin
cnt_1us_clear = 1;
state = S5;
end
end
S5 : begin // 写数据
if (step == 0) // 0xCC
begin
step = step + 1b1;
state = WRITE0;
end
else if (step == 1)
begin
step = step + 1b1;
state = WRITE0;
end
else if (s
您可能关注的文档
- 会计学原理复习00.doc
- 有助于实战的围棋脱先技巧讲义教程.doc
- 车道保持辅助系统.doc
- 高中信息技术课堂教学组织与引导——研修日志.doc
- 陋室铭阅读习题(带答案).doc
- 部编版小学六年级《道德与法治》上册第8课《我们受特殊保护》优质课件.pptx
- 12.1 全等三角形 (教学课件)— 初中数学人教版八年级上册.pptx
- 13.1.1 轴对称-初中数学人教版八年级上册课件.pptx
- 部编版小学五年级道德与法治上册第3课《主动拒绝烟酒与毒品》优质课件.pptx
- 小学道德与法治部编版六年级上册第一单元第1课《感受生活中的法律》.pptx
- 5.3.1函数的单调性(教学课件)--高中数学人教A版(2019)选择性必修第二册.pptx
- 部编版道德与法治2024三年级上册 《科技提升国力》PPT课件.pptx
- 2.7.2 抛物线的几何性质(教学课件)-高中数学人教B版(2019)选择性必修第一册.pptx
- 人教部编统编版小学六年级上册道德与法治9 知法守法 依法维权(第一课时)课件.pptx
- 三年级上册品德道德与法治《学习伴我成长》.pptx
- 部编版小学道德与法治六年级上册6 人大代表为人民 课件.pptx
- 部编版小学道德与法治六年级上册1感受生活中的法律第一课时课件.pptx
- 2.5.2圆与圆的位置关系(教学课件)-高中数学人教A版(2019)选择性必修第一册.pptx
- 2.5.1直线与圆的位置关系-(教学课件)--高中数学人教A版(2019)选择性必修第一册.pptx
- 14.1.1 同底数幂的乘法(教学课件)-初中数学人教版八年级上册.pptx
文档评论(0)