關于匯編語言與程序設計——單總線溫度采集與顯示的應用

一、實驗要求


(1)握碼管的使用方式

(2)掌握DS18B20溫度傳感器的工作原理

(3)掌握單總線通信方式實現 MCU與DS18B20數據傳輸

二、設計思路


1.整體思路

? 通過編寫數碼管顯示程序和單總線溫度采集程序,結合溫度傳感報警,利用手指觸碰傳感器,當溫度超過閾值時開啟蜂鳴器報警。

2.流程圖

3.主要模塊設計思路及分析

1判斷溫度是否達到閾值

(2)蜂鳴器子程序

三、?實現效果

室溫時顯示26度

當升溫至30度則會報警

四、總結


在這次實驗中,我學習了如何通過DS18B20溫度傳感器來采集和顯示溫度。我了解到,DS18B20是一種常用的數字溫度傳感器,它可以通過單總線通信方式與MCU進行數據傳輸。這種方式相比于傳統的模擬溫度傳感器,具有更高的精度和可靠性。

在實驗過程中,我遇到了一些困難,例如如何正確地連接編碼器和DS18B20傳感器,以及如何編寫相應的程序來讀取和顯示溫度。最開始當達到設置的閾值時,蜂鳴器不會報警響應,在詢問同學后我添加了一個DEL子程序來控制蜂鳴子程序的響應。

附錄:


DAT		BIT		P3.7  ;定義DQ線
swpH	EQU		0D2H	
swpL	EQU		0EFH	
WDLSB	DATA	30H		;定義溫度低字節
WDMSB	DATA	31H		;定義溫度高字節
ORG		0000H
LJMP	MAIN
ORG		000BH
LJMP	T0_INT
ORG		0100HVALUE:	DB 3FH, 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H, 7FH, 6FH ;共陰極
T0_INT: MOV	TH0, #swpHMOV	TL0, #swpLPUSH ACC 		 ;A進棧保護LCALL ALARM 		 ;判斷是否達到溫度閾值JB	21H,dsl 	 ;判斷輸出溫度高位還是低位MOV	R1,42H		 ;高位溫度放至R1MOV DPTR, #100HLCALL LOOP2 	 ;循環,使DPTR變為相應溫度位的值,再通過查表形式獲得對應溫度段碼MOV A, #0HMOVC A, @A+DPTRMOV P0, A		 ;將高位溫度傳至P0MOV P2, #1CHPOP ACC 		 ;出棧ACC完成對ACC的保護SJMP kkk
dsl:MOV R1,43H		 ;低位溫度放至R1MOV DPTR, #100HLCALL LOOP2MOV A, #0HMOVC A, @A+DPTRMOV P0, A		 ;低位溫度傳至R2MOV P2, #18HPOP ACC 		
LOOP2:				 ;將DPTR變至響應溫度的值DEC R1INC DPTRCJNE R1, #0FFH, LOOP2 RET
kkk:CPL	21H 			;21H取反RETI 				;中斷返回
MAIN:CLR EA				;關中斷MOV TMOD,#01H		;設置T0初始化MOV TH0,#swpH		;裝入定時器10ms中斷的定時常數MOV TL0,#swpL		;SETB EA		  		;開中斷SETB ET0	  		;允許定時器T0中斷SETB TR0	  		;啟動定時器T0計數MOV R2,#2			;MOV R0,#42H			;2個顯示緩沖單元42H和43H清0
OVER:			  MOV @R0,#00H		INC R0				;指針R0指向43HDJNZ R2,OVER
LOOP:				LCALL DSWD			;調用讀出溫度子程序SJMP LOOP
DSWD:LCALL RSTSNR		;調用復位子程序JNB F0,KEND			;未應答則跳轉KENDMOV R0,#0CCH   		;跳過ROM匹配指令LCALL SEND_BYTE	 	;發送一字節跳過ROM匹配命令MOV R0,#44H	   		;溫度轉換命令LCALL SEND_BYTE		;發送一字節溫度轉換指令SETB EAMOV 48H,#1		 	;延時75ms以上準備讀
SS2:MOV 49H,#255
SS1:MOV 4AH,#255
SS0:DJNZ 4AH,SS0		DJNZ 49H,SS1DJNZ 48H,SS2CLR EALCALL RSTSNRJNB F0,KENDMOV R0,#0CCH		 ;跳過ROM匹配命令LCALL SEND_BYTEMOV R0,#0BEH	 	 ;溫度命令BEHLCALL SEND_BYTE		 ;發出一字節讀溫度命令LCALL READ_BYTE	 	 ;讀一字節的溫度值MOV WDLSB,A			 ;讀一字節的溫度值(低字節)LCALL READ_BYTE	 	 ;讀一字節的溫度值MOV WDMSB,A			 ;讀一字節的溫度值(高字節)LCALL TRANS12	 	 ;調用溫度轉換子程序
KEND:SETB EARET
TRANS12:		  MOV A,30H			 ;溫度轉換子程序ANL A,#0F0HMOV 3AH,AMOV A,31HANL A,#0FHORL A,3AHSWAP AMOV B,#10DIV ABMOV 43H,BMOV B,#10DIV ABMOV 42H,BMOV 41H,ARETSEND_BYTE:MOV A,R0			 ;發送一個字節的子程序MOV R5,#8
SEN3:CLR CRRC AJC SEN1LCALL WRITE_0SJMP SEN2
SEN1:LCALL WRITE_1
SEN2:DJNZ R5,SEN3		 ;循環八次發送一個字節 RETREAD_BYTE:MOV R5,#8			 ;讀一個字節的子程序
READ1:LCALL READRRC ADJNZ R5,READ1		 ;循環八次讀一個字節MOV R0,ARET
RSTSNR:SETB DAT			 ;復位程序NOPNOPCLR DATMOV R6,#250			 DJNZ R6,$MOV R6,#50DJNZ R6,$SETB DAT			 ;主機釋放總線,IO口改為輸入MOV R6,#15DJNZ R6,$CALL CHCK			 ;調用應答子程序MOV R6,#60DJNZ R6,$SETB DATRET
CHCK:MOV C,DATJC RST0SETB F0				 ;檢測到信號置為F0SJMP CHCK0
RST0:CLR F0				 
CHCK0:RET
WRITE_0:CLR DAT				 ;寫0子程序MOV R6,#30DJNZ R6,$SETB DATRET
WRITE_1:				 ;寫1子程序CLR DATNOPNOPNOPNOPNOPSETB DATMOV R6,#30DJNZ R6,$RETREAD:					 ;讀一位數據子程序SETB DATNOPNOPCLR DATNOPNOPSETB DAT			 ;置位DAT準備接收數據NOPNOPNOPNOPNOPNOPNOPMOV C,DATMOV R6,#23DJNZ R6,$RETALARM:					;判斷溫度是否達到閾值,設置溫度閾值為30MOV A, 43HSUBB A, #00HMOV A, 42HSUBB A, #03H	   JNC BUZZER 			CLR CRETBUZZER: 				;蜂鳴器響應子程序MOV R1,#0FFHCPL P2.5LCALL DELRET

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/80289.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/80289.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/80289.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

用html+js+css實現的戰略小游戲

效果圖: 兄弟們&#xff0c;話不多說&#xff0c;直接上代碼 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">…

Navicat BI 數據分析功能上線 | 數據洞察新方法

Navicat 17.2 版本一經發布&#xff0c;便以 AI 助手賦能智能交互、Snowflake 支持拓展數據連接版圖、拓展對關系型、維度以及數據倉庫 2.0 建模方法的支持等新特性與功能抓住了用戶的目光&#xff0c;但其中一項低調且實用的更新 - 在 BI 數據預覽中深度集成數據分析工具&…

【ts】defineProps數組的類型聲明

第一種&#xff1a;使用Record<string, unknown> Record<string, unknown>表示一個對象&#xff0c;鍵是string類型&#xff0c;值是未知的 import { defineProps, PropType } from vue;const props defineProps({dataList: {type: Array as PropType<Record…

OpenCv實戰筆記(4)基于opencv實現ORB特征匹配檢測

一、原理作用 ORB 原理&#xff08;Oriented FAST and Rotated BRIEF&#xff09;&#xff1a; 特征點檢測&#xff1a;使用 FAST 算法檢測角點&#xff08;關鍵點&#xff09;。 方向計算&#xff1a;為每個關鍵點分配主方向&#xff0c;增強旋轉不變性。 特征描述&#xff1a…

Unreal 從入門到精通之VR常用操作

文章目錄 前言1.如何設置VRPawn視角的位置。2.如何播放視頻3.如何播放VR全景視頻。4.如何打開和關閉VR模式。前言 我們使用Unreal5 開發VR 項目的時候,會遇到很多常見問題。 比如: 1.如何設置VRPawn視角的位置。 2.如何播放視頻。 3.如何播放VR全景視頻。 4.如何打開和關閉V…

[論文閱讀]Deep Cross Network for Ad Click Predictions

摘要 特征工程是許多預測模型成功的關鍵。然而&#xff0c;這個過程是困難的&#xff0c;甚至需要手動特征工程或窮舉搜索。DNN能夠自動學習特征交互&#xff1b;然而&#xff0c;它們隱式地生成所有的交互&#xff0c;并且不一定有效地學習所有類型的交叉特征。在本文中&…

數據庫(MySQL)基礎

一、登錄數據庫 在linux系統中登錄數據庫的指令 mysql -h 127.48.0.236 -P 3306 -u root -p -h&#xff1a;填寫IP地址&#xff0c;指明要連接的主機。如果不加該字段表示本地主機-P&#xff1a;填寫端口號&#xff0c;指明進程。 如果不加該字段會使用默認的端口號。-u&…

遠程調試---在電腦上devtools調試運行在手機上的應用

1、啟動項目–以vite項目為例:先ipconfig查看ip地址 ,然后在vite中配置host為ip地址 2、手機上查看項目:保證手機和電腦在同一局域網, 在手機瀏覽器打開我們vite啟動的項目地址, 3、使用chii進行遠程調試 (1) 安裝 npm install chii -g (2)啟動 chii start -p 8080 (3)在…

【程序員AI入門:開發】11.從零構建智能問答引擎:LangChain + RAG 實戰手冊

1、技術選型 組件推薦方案說明文本嵌入模型sentence-transformers/all-MiniLM-L6-v2輕量級且效果較好的開源模型向量數據庫FAISS高效的本地向量檢索庫大語言模型GPT-3.5/開源LLM&#xff08;如ChatGLM3&#xff09;根據資源選擇云端或本地模型文檔處理框架LangChain簡化RAG流程…

【Linux基礎】文件查找和文本處理指令

目錄 grep命令 find命令 tar命令 head命令 tail命令 wc命令 tee命令 grep命令 作用&#xff1a;在文件中搜索匹配特定模式的文本行&#xff0c;并將結果輸出到標準輸出&#xff08;通常是終端&#xff09;。 基本用法&#xff1a; grep [選項] 搜索模式 [文件名] 常用…

云軸科技ZStack入選賽迪顧問2025AI Infra平臺市場發展報告代表廠商

DeepSeek憑借低成本、高性能、開源優勢帶來的蝴蝶效應依然在持續影響企業AI應用部署。尤其在數據安全備受關注的背景下&#xff0c;私有化部署已經成為企業應用AI大模型的優選方案。賽迪顧問在近期發布的《2025中國AI Infra平臺市場發展研究報告》中認為&#xff0c;在推理算力…

從零開始跑通3DGS教程:(四)修改(縮放、空間變換)colmap生成的sfm結果

寫在前面 本文內容 本文所屬《從零開始跑通3DGS教程》系列文章&#xff1b; 通過colmap進行的sfm的普通方式會丟失場景的物理尺度信息&#xff0c;并且并不在符合一般認知的坐標系下&#xff0c;本文將讀取colmap生成的點云和相機pose&#xff0c;將其進行空間變換和縮放之后&a…

RK3568-OpenHarmony(1) : OpenHarmony 5.1的編譯

概述: 本文主要描述了&#xff0c;如何在ubuntu-20.04操作系統上&#xff0c;編譯RK3568平臺的OpenHarmony 5.1版本。 搭建編譯環境 a. 安裝軟件包 sudo apt-get install git-lfs ruby genext2fs build-essential git curl libncurses5-dev libncursesw5-dev openjdk-11-jd…

vue+tsc+noEmit導致打包報TS類型錯誤問題及解決方法

項目場景&#xff1a; 提示&#xff1a;這里簡述項目相關背景&#xff1a; 當我們新建vue3項目,package.json文件會自動給我添加一些配置選項,這寫選項基本沒有問題,但是在實際操作過程中,當項目越來越復雜就會出現問題,本文給大家分享vuetscnoEmit導致打包報TS類型錯誤問題及…

Js 判斷瀏覽器cookie 是否啟用

驗證時 google瀏覽器 135.0.7049.117 不生效 cookie.html <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><title>Cookie 檢測</title> </head> <body><h1>檢測是否啟用 Cookie<…

Lambda表達式解讀

本文通過具體案例演示函數式接口Function<T,R>的三種實現方式演變過程。 一、傳統匿名內部類實現 Integer resInt1 t1(new Function<String, Integer>() {Overridepublic Integer apply(String s) {int i Integer.parseInt(s);return i;} });實現特點&#xff1…

等價無窮小代換

理解&#xff1a; 函數某一點的值可以使用泰勒展開式表示&#xff0c;&#xff08;低階無窮小 高階無窮小&#xff09;&#xff0c;主要有低階無窮小決定。 計算極限的時候&#xff1a; 乘除關系隨便換&#xff0c;不影響各個式子的低階無窮小加減關系&#xff1a; &#xf…

護網HVV初級藍隊面試題總結

struts2原理特征 原理:默認的content-type解析器會把用戶傳來的數據直接當成代碼執行&#xff0c;造成rce特征:ognl表達式&#xff0c;memberaccess字段&#xff0c;可以通過catalina日志過濾關鍵信息查找攻擊特征ongl表達式可以被當作代碼執行&#xff0c;其中的類為defaulta…

Web3 實戰項目項目部署到 GitHub 和上線預覽的完整指南

目錄 &#x1f680; 一、部署到 GitHub ? 前置準備 &#x1f9f1; 部署步驟&#xff1a; 1. 創建一個 GitHub 倉庫 2. 上傳項目文件 方法一&#xff1a;使用 Git 命令行 方法二&#xff1a;直接上傳 &#x1f310; 二、通過 GitHub Pages 免費上線 DApp&#xff08;前端…

3.優惠券秒殺

3.1 全局唯一 ID 當用戶搶購時&#xff0c;就會生成訂單并保存到 tb_voucher_order 這張表中&#xff0c;而訂單表如果使用數據庫自增 ID 就存在一些問題&#xff1a; id 的規律性太明顯 受單表數據量的限制 場景分析一&#xff1a;如果我們的 id 具有太明顯的規則&#xf…