• 方案介紹
    • 1實(shí)驗(yàn)簡介
    • 2實(shí)驗(yàn)原理
    • 3程序設(shè)計(jì)
    • 4實(shí)驗(yàn)現(xiàn)象
  • 附件下載
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

LM75溫度傳感器數(shù)碼管顯示溫度verilog代碼

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

1-231030224622533.docx

共1個(gè)文件

名稱:LM75溫度傳感器數(shù)碼管顯示溫度(代碼在文末付費(fèi)下載)

軟件:VIVADO

語言:Verilog

代碼功能:

使用verilog編寫代碼,讀取IICI2C)接口的LM75溫度傳感器數(shù)據(jù),并在數(shù)碼管顯示,代碼兼容LM75A,LM75BD,tmp1075

本代碼已在開發(fā)板驗(yàn)證,開發(fā)板資料:

FPGA代碼Verilog/VHDL代碼資源下載網(wǎng):www.hdlcode.com

部分代碼展示

//?*************************************************************/
`define?????SCL_POS??????????(cnt==3'd0)??????
`define?????SCL_HIG??????????(cnt==3'd1)
`define?????SCL_NEG??????????(cnt==3'd2)?????
`define?????SCL_LOW??????????(cnt==3'd3)??
`define????DEVICE_READ????????8'b1001_0001????//read?device?addr
//************************************************************/
module?i2c_read_lm75
(
?input??????????????sys_clk,
?input??????????????rst_n,
?output?????????????scl,?
?inout??????????????sda,??????
?output?reg[16:0]???????data
??);???????????????????????
//--------------------------------------------???????
reg[2:0]?cnt;??
reg[7:0]?cnt_delay;????
reg?scl_r;??????
always?@?(posedge?sys_clk?or?negedge?rst_n)
????if(!rst_n)?cnt_delay?<=?8'd0;
????else?if(cnt_delay?==?8'd199)?cnt_delay?<=?8'd0;???
????else?cnt_delay?<=?cnt_delay+1'b1;
always?@?(posedge?sys_clk?or?negedge?rst_n)?
begin
????if(!rst_n)?cnt?<=?3'd5;
????else?begin
????????case?(cnt_delay)
????????????9'd49:?????cnt?<=?3'd1;
????????????9'd99:?????cnt?<=?3'd2;?
????????????9'd149:????cnt?<=?3'd3;??
????????????9'd199:????cnt?<=?3'd0;?
????????????default:???cnt?<=?3'd5;
????????????endcase
????????end
end
?
always?@?(posedge?sys_clk?or?negedge?rst_n)
????if(!rst_n)?scl_r?<=?1'b0;
????else?if(cnt==3'd0)?scl_r?<=?1'b1;
???????else?if(cnt==3'd2)?scl_r?<=?1'b0;
assign?scl?=?scl_r;???
//---------------------------------------------???????????????
reg[7:0]?db_r;????
(*mark_debug="TRUE"*)?reg[15:0]?read_data;??
//---------------------------------------------
parameter?????IDLE??????=?4'd0;
parameter?????START?????=?4'd1;
parameter?????ADDR??????=?4'd2;
parameter?????ACK1??????=?4'd3;
parameter?????DATA1?????=?4'd4;
parameter?????ACK2??????=?4'd5;
parameter?????DATA2?????=?4'd6;
parameter?????NACK??????=?4'd7;
parameter?????STOP??????=?4'd8;
(*mark_debug="TRUE"*)reg[3:0]?cstate;????
reg?sda_r;?
reg?sda_link;?????????
reg[3:0]?num;??
reg[25:0]?tim;
always?@?(posedge?sys_clk?or?negedge?rst_n)?
????if(!rst_n)?tim<=26'd0;
????else?tim<=tim+1'b1;
always?@?(posedge?sys_clk?or?negedge?rst_n)?begin
????if(!rst_n)?begin
????????????cstate?<=?IDLE;
????????????sda_r?<=?1'b1;
????????????sda_link?<=?1'b0;
????????????num?<=?4'd0;
????????????read_data?<=?16'd0;
????????end
????else???????
????????case?(cstate)

設(shè)計(jì)文檔:

1實(shí)驗(yàn)簡介

本教程介紹使用溫度傳感器 LM75 來進(jìn)行溫度測試,例程中主要介紹溫度傳感器的 ?FPGA 驅(qū)動(dòng)和數(shù)碼管顯示。

2實(shí)驗(yàn)原理

2.1 LM75原理介紹

LM75BD 是一個(gè)高速 I2C 接口的溫度傳感器,可以在-55℃~+125℃的溫度范圍內(nèi)將溫度直接轉(zhuǎn)換為數(shù)字信號,并可實(shí)現(xiàn) 0.125℃的精度。

控制器可以通過 I2C 總線直接讀取其內(nèi)部寄存器中的數(shù)據(jù),并可通過 I2C 對 4 個(gè)數(shù)據(jù)寄存器進(jìn)行操作,以設(shè)置成不同的工作式。

LM75BD有 3 個(gè)可選的邏輯地址管腳,使得同一總線上可同時(shí)連接 8 個(gè)器件而不發(fā)生地址沖突。

LM75BD 可配置成不同的工作模式。它可設(shè)置成在正常工作方式下周期性地對環(huán)境溫度進(jìn)行監(jiān)控,或進(jìn)入關(guān)斷模式來將器 件功耗降至最低。

OS 輸出有 2 種可選的工作模式:OS 比較器模式和 OS 中斷方式,OS 輸出可選擇高電平或低電平有效。

正常工作模式下,當(dāng)器件上電時(shí),OS 工作在比較器模式,溫度閾值為80℃,滯后閾值為 75℃。

低功耗設(shè)計(jì),工作電流典型值為 250uA,掉電模式為 3.5uA;寬工作電壓范圍:2.8V~5.5V。

LM75BD 管腳說明如下圖:

引腳名稱

引腳序號

說明

SDA

1

I2C串行雙向數(shù)據(jù)線,開漏口

SCL

2

I2C串行時(shí)鐘輸入,開漏口

OS

3

過熱關(guān)斷輸出,開漏輸出

GND

4

地,連接到系統(tǒng)地

A2

5

用戶定義的地址2

A1

6

用戶定義的地址1

A0

7

用戶定義的地址0

VCC

8

a)溫度寄存器Temp(地址0x00)

溫度寄存器是一個(gè)只讀寄存器,包含?2?個(gè)?8?位的數(shù)據(jù)字節(jié),由一個(gè)高數(shù)據(jù)字節(jié)(MS)和一個(gè)低數(shù)據(jù)字節(jié)(LS)組成。這兩個(gè)字節(jié)中只有?11?位用來存放分辨率為?0.125℃的?Temp?數(shù)據(jù)(以二進(jìn)制補(bǔ)碼數(shù)據(jù)的形式),如下表所示。對于?8?位的?I2C?總線來說,只要從?LM75BD?的“00地址”連續(xù)讀兩個(gè)字節(jié)即可(溫度的高?8?位在前)。

下表給出了一些 Temp 數(shù)據(jù)和溫度值的例子。

b)配置寄存器(地址 0x01)

配置寄存器為 8 位可讀寫寄存器,其位功能分配如下表所示。

B7-B5: 保留,默認(rèn)為 0。

B4-B3: 用來編程 OS 故障隊(duì)列。00 到 11 代表的值為 1、2、4、6,默認(rèn)值為 0。

B2: 用來選擇 OS 極性。B2=0,OS 低電平有效(默認(rèn));B2=1,OS 高電平有效。

B1: 選擇 OS 工作模式。B1=0,配置成比較器模式,直接控制外圍電路;B1=1,OS 控制輸出功能配置成中斷模式,以通知 MCU 進(jìn)行相應(yīng)處理。

B0: 選擇器件工作模式。B0=0,LM75A 處于正常工作模式(默認(rèn));B0=1,LM75A 進(jìn)入關(guān)斷模式。

c)滯后寄存器 Thyst(0x02)

滯后寄存器是讀/寫寄存器,也稱為設(shè)定點(diǎn) ? ?存器,提供了溫度控制范圍的下限溫度。每次轉(zhuǎn)換結(jié)束后,Temp 數(shù)據(jù)(取其高 9 位)將會(huì)與存放在該寄存器中的數(shù)據(jù)相比較,當(dāng)環(huán)境溫度低于此溫度的時(shí)候,LM75BD 將根據(jù)當(dāng)前模式(比較、中斷)控制 ?OS ?引腳作出相應(yīng)反應(yīng)。該寄存器都包含 2 個(gè) 8 位的數(shù)據(jù)字節(jié),但 2 個(gè)字節(jié)中,只有 9 位用來存儲(chǔ)設(shè)定點(diǎn)數(shù)據(jù)(分辨率為 0.5℃的二進(jìn)制補(bǔ)碼),其數(shù)據(jù)格式如下表所示,默認(rèn)為 75℃。

d)超過溫關(guān)斷閾值寄存器 Tos(0x03)

超溫關(guān)斷寄存器提供了溫度控制范圍的上限溫度。每次轉(zhuǎn)換結(jié)束后,Temp 數(shù)據(jù)(取其高 9 位)將會(huì)與存放在該寄存器中的數(shù)據(jù)相比較,當(dāng)環(huán)境溫度高于此溫度的時(shí)候,LM75BD將根據(jù)當(dāng)前模式(比較、中斷)控制 OS 引腳作出相應(yīng)反應(yīng)。其數(shù)據(jù)格式如表 4 所示,默認(rèn)為 80℃。

e)OS 輸出

OS ?輸出為開漏輸出口。為了觀察到這個(gè)輸出的狀態(tài),需要接一個(gè)外部上拉電阻,其阻值應(yīng)當(dāng)足夠大(高達(dá) 200kΩ),以減少溫度讀取誤差。OS 輸出可通過編程配置寄存器的 B2 位設(shè)置為高或低有效。如下圖所示,為 LM75BD在不同模式下 OS 引腳對溫度作出的響應(yīng)。OS 設(shè)為低有效。

可以看出,當(dāng) LM75BD工作在比較器模式時(shí),當(dāng)溫度高于 Tos 時(shí),OS 輸出低電平。此時(shí)采取了降溫措施,啟動(dòng)降溫設(shè)備(如風(fēng)扇),直到溫度再降 ? ?Thyst,則停止降溫,因此在這 ? ?式下,LM75BD可以直接控制外部電路來保持環(huán)境溫度;而在中斷模式,則在溫度高于 Tos 或低于Thyst 時(shí)產(chǎn)生中斷。注意:在中斷式下,只有當(dāng) MCU 對 LM75BD進(jìn)行讀操作后,其中斷信號才會(huì)消失(圖中 OS 變?yōu)楦唠娖剑?/p>

f)I2C 串行接口

在主控器的控制下,LM75BD可以通過 SCL 和 SDA 作為從器件連接到 I2C 總線上。主控器必須提供 SCL 時(shí)鐘信號,可以通過 SDA 讀出器件數(shù)據(jù)或?qū)?shù)據(jù)寫入到器件中。LM75BD從地址(7 位地址)的低 3 位可由地址引腳 A2、A1 和 A0 的邏輯電平來決定。地址的高 4 位預(yù)先設(shè)置為‘1001’。

2.2 ? ?硬件原理圖

如下為開發(fā)板的溫度傳感器 LM75BD 部分原理圖

LM75 部分原理圖

3程序設(shè)計(jì)

程序設(shè)計(jì)比較簡單,功能是 FPGA 驅(qū)動(dòng) LM75 溫度傳感器不斷地讀取溫度值并送到數(shù)碼管進(jìn)行顯示。

代碼說明:

temp_test.v 是頂層模塊,包含了 i2c_read_lm75,hextobcd 和 smg_interface 模塊;

i2c_read_lm75.v 是 LM75 的溫度讀取模塊,實(shí)時(shí)讀取溫度值;

hextobcd.v 為十六進(jìn)制轉(zhuǎn) BCD 模塊;

smg_interface.v 為數(shù)碼管顯示模塊,在數(shù)碼管上顯示 LM75 的溫度。

信號名

方向

管腳

BANK

端口說明

TEM_SCL

output

N2

BANK34

IIC時(shí)鐘信號線

TEM_SDA

inout

M3

BANK34

IIC雙向數(shù)據(jù)線

TEM_OS

input

P2

BANK34

超溫輸出

4實(shí)驗(yàn)現(xiàn)象

將工程目錄下的bit文件下載至開發(fā)板,8位數(shù)碼管顯示實(shí)際采集到板卡溫度,如下圖所示:

點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=223

  • 1-231030224622533.docx
    下載

相關(guān)推薦