精品国产成人一区二区三区-女子十八毛片-欧洲性猛交-无码不卡一区二区三区在线观看-www.四虎在线-伊人网国产-国精产品自偷自偷综合下载-不卡av网站-俄罗斯黄色大片-一本久久知道综合久久-国产精品日韩一区二区-日韩精品色-免费人成网ww555kkk在线-黄色在线观看免费-日韩在线免费-久久久久99人妻一区二区三区-十八禁真人啪啪免费网站

機電之家資源網(wǎng)
單片機首頁|單片機基礎|單片機應用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓信息
贊助商
利用AT89C2051單片機與DS18B20和兩個數(shù)碼管顯示溫度
利用AT89C2051單片機與DS18B20和兩個數(shù)碼管顯示溫度
 更新時間:2009-12-15 14:02:44  點擊數(shù):0
【字體: 字體顏色

;這是關于DS18B20的讀寫程序,數(shù)據(jù)腳P3.4,晶振12MHZ
;溫度傳感器18B20匯編程序,采用器件默認的12位轉化,最大轉化時間750微秒
;可以將檢測到的溫度直接顯示到連接到AT89C2051的兩個數(shù)碼管上
;顯示溫度00到99度,很準確哦~~無需校正!

  ORG  0000H

;單片機內存分配申明!
TEMPER_L  EQU  29H  ;用于保存讀出溫度的低8位
TEMPER_H  EQU  28H  ;用于保存讀出溫度的高8位
FLAG1   EQU  38H  ;是否檢測到DS18B20標志位
A_BIT   EQU  20H   ;數(shù)碼管個位數(shù)存放內存位置
B_BIT   EQU  21H   ;數(shù)碼管十位數(shù)存放內存位置

MAIN:   LCALL  GET_TEMPER ;調用讀溫度子程序

;顯示范圍00到99度,顯示精度為1度
;因為12位轉化時每一位的精度為0.0625度,我們不要求顯示小數(shù)所以可以拋棄29H的低4位
;將28H中的低4位移入29H中的高4位,這樣獲得一個新字節(jié),這個字節(jié)就是實際測量獲得的溫度
;這個轉化溫度的方法非常簡潔,無需乘于0.0625系數(shù)

  MOV  A,29H
  MOV  C,40  ;將28H中的最低位移入C
  RRC  A
  MOV  C,41H
  RRC  A
  MOV  C,42H
  RRC  A
  MOV  C,43H
  RRC  A
  MOV  29H,A

  LCALL  DISPLAY  ;調用數(shù)碼管顯示子程序

  AJMP  MAIN

;這是DS18B20復位初始化子程序
INIT_1820: SETB  P3.4
  NOP
  CLR  P3.4
;主機發(fā)出延時537微秒的復位低脈沖
  MOV  R1,#3
TSR1:  MOV  R0,#107
  DJNZ  R0,$
  DJNZ  R1,TSR1
  SETB  P3.4  ;然后拉高數(shù)據(jù)線
  NOP
  NOP
  NOP
  MOV  R0,#25H
TSR2:  JNB  P3.4,TSR3 ;等待DS18B20回應
  DJNZ  R0,TSR2  ;延時
  LJMP  TSR4   
TSR3:  SETB  FLAG1   ;置標志位,表示DS1820存在
  LJMP  TSR5
TSR4:  CLR  FLAG1   ;清標志位,表示DS1820不存在
  LJMP  TSR7

TSR5:  MOV  R0,#117
TSR6:  DJNZ  R0,TSR6  ;時序要求延時一段時間
TSR7:  SETB  P3.4
  RET

;讀出轉換后的溫度值

GET_TEMPER: SETB  P3.4
  LCALL  INIT_1820 ;先復位DS18B20
  JB  FLAG1,TSS2
  RET    ;判斷DS1820是否存在?若DS18B20不存在則返回
  
TSS2:  MOV  A,#0CCH  ;跳過ROM匹配
  LCALL  WRITE_1820
  MOV  A,#44H   ;發(fā)出溫度轉換命令
  LCALL  WRITE_1820

;這里通過調用顯示子程序實現(xiàn)延時一段時間,等待AD轉換結束,12位的話750微秒

  LCALL  DISPLAY

  LCALL  INIT_1820 ;準備讀溫度前先復位

  MOV  A,#0CCH  ;跳過ROM匹配
  LCALL  WRITE_1820

  MOV  A,#0BEH  ;發(fā)出讀溫度命令
  LCALL  WRITE_1820

  LCALL  READ_18200 ;將讀出的溫度數(shù)據(jù)保存到35H/36H

  RET

;寫DS18B20的子程序(有具體的時序要求)
WRITE_1820: MOV  R2,#8  ;一共8位數(shù)據(jù)
  CLR  C
WR1:  CLR  P3.4
  MOV  R3,#6
  DJNZ  R3,$
  RRC  A
  MOV  P3.4,C
  MOV  R3,#23
  DJNZ  R3,$
  SETB  P3.4
  NOP
  DJNZ  R2,WR1
  SETB  P3.4
  RET

;讀DS18B20的程序,從DS18B20中讀出兩個字節(jié)的溫度數(shù)據(jù)
 
READ_18200: MOV  R4,#2   ;將溫度高位和低位從DS18B20中讀出
  MOV  R1,#29H  ;低位存入29H(TEMPER_L),高位存入28H(TEMPER_H)
RE00:  MOV  R2,#8  ;數(shù)據(jù)一共有8位
RE01:  CLR  C
  SETB  P3.4
  NOP
  NOP
  CLR  P3.4
  NOP
  NOP
  NOP
  SETB  P3.4

  MOV  R3,#9
RE10:   DJNZ  R3,RE10

  MOV  C,P3.4

  MOV  R3,#23
RE20:   DJNZ  R3,RE20

  RRC  A
  DJNZ  R2,RE01
  MOV  @R1,A
  DEC  R1
  DJNZ  R4,RE00
  RET

;顯示子程序

DISPLAY:  MOV  A,29H  ;將29H中的十六進制數(shù)轉換成10進制
  MOV  B,#10   ;10進制/10=10進制
  DIV  AB
  MOV  B_BIT,A  ;十位在a
  MOV  A_BIT,B  ;個位在b
  MOV  DPTR,#NUMTAB  ;指定查表啟始地址
  MOV  R0,#4
DPL1:   MOV  R1,#250  ;顯示1000次
DPLOP:   MOV  A,A_BIT  ;取個位數(shù)
  MOVC  A,@A+DPTR  ;查個位數(shù)的7段代碼
  MOV  P1,A   ;送出個位的7段代碼
  CLR  P3.7   ;開個位顯示
  ACALL  D1MS   ;顯示1ms
  SETB  P3.7
  MOV  A,B_BIT  ;取十位數(shù)
  MOVC  A,@A+DPTR  ;查十位數(shù)的7段代碼
  MOV  P1,A   ;送出十位的7段代碼
  CLR  P3.5   ;開十位顯示
  ACALL  D1MS   ;顯示1ms
  SETB  P3.5
  DJNZ  R1,DPLOP  ;250次沒完循環(huán)
  DJNZ  R0,DPL1  ;4個250次沒完循環(huán)
  RET

;1MS延時(按12MHZ算)

D1MS:   MOV  R7,#80
  DJNZ  R7,$
  RET

;7段數(shù)碼管0~9數(shù)字的共陽顯示代碼

NUMTAB:  DB 081H,0CFH,092H,086H,0CCH,0A4H,0A0H,08FH,080H,084H

  END

  • 上一篇: 89C2051單片機在鍵盤顯示裝置中的應用
  • 下一篇: 沒有了
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關文章
    網(wǎng)友評論:(只顯示最新5條。)
    關于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責信息內容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學會
    中國行業(yè)電子商務100強網(wǎng)站

    網(wǎng)站經營許可證:浙B2-20080178-1
    南宫市| 宕昌县| 长乐市| 宁陵县| 株洲县| 盐山县| 莱阳市| 镇坪县| 大同市| 荥阳市| 江门市| 禹州市| 陆丰市| 桂东县| 楚雄市| 闽侯县| 大关县| 托里县| 犍为县| 泗阳县| 扶余县| 雅安市| 田阳县| 延津县| 长兴县| 新竹市| 柳州市| 安图县| 霍林郭勒市| 邯郸市| 六枝特区| 浙江省| 屏山县| 高邑县| 齐齐哈尔市| 策勒县| 钦州市| 南投县| 崇文区| 夏津县| 淳化县|