找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2813|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)溫度上下限監(jiān)控警報(bào)系統(tǒng)設(shè)計(jì) 帶課設(shè)論文 仿真 源碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
利用AT89S2051采用DS18B20作為測(cè)溫傳感器,用AT89C2051作處理器,用數(shù)碼管顯示,并用LED燈作報(bào)警器。當(dāng)測(cè)量溫度高于100℃或低于-20℃時(shí),發(fā)出警報(bào)。

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載):




單片機(jī)源程序如下:
  1.       ORG   0000H
  2.       LJMP  MAIN
  3.       ORG   0030H
  4. MAIN:LCALL  CSH0    ;DS18B20初始化
  5.      MOV    A,#0CCH ;單點(diǎn)測(cè)溫時(shí)執(zhí)行跳過(guò)ROM命令節(jié)省訪問(wèn)時(shí)間
  6.      LCALL  WRITE
  7.      MOV    A,#44H  ;發(fā)開(kāi)始溫度轉(zhuǎn)換命令
  8.      LCALL  WRITE
  9.      LCALL  CSH0    ;DS18B20初始化                                 
  10.      MOV    A,#0CCH ;單點(diǎn)測(cè)溫時(shí)執(zhí)行跳過(guò)ROM命令節(jié)省訪問(wèn)時(shí)間         
  11.      LCALL  WRITE                                                   
  12.      MOV  A,#0BEH ;讀存儲(chǔ)器命令(讀的字節(jié)暫存存儲(chǔ)器,此后讀操作)
  13.      LCALL  WRITE   
  14.      LCALL  READ   ;讀出已轉(zhuǎn)換的溫度值低字節(jié)
  15.      MOV    2BH,A
  16.      LCALL  READ   ;讀出已轉(zhuǎn)換的溫度值高字節(jié)
  17.      MOV    2CH,A
  18.      LCALL  ERSH    ;二進(jìn)制轉(zhuǎn)化成十進(jìn)制
  19.      LCALL  DISPL   ;調(diào)用動(dòng)態(tài)顯示的子程序
  20.          LCALL  MAXorMIN;***判斷是否超出上下限***
  21.      LJMP   MAIN   
  22. ;******************第一個(gè)DS18B20初始化子程序*******************
  23. CSH0:CLR    P3.0           
  24.      MOV    R2,#250
  25. CSH1:DJNZ   R2, CSH1  ;主機(jī)發(fā)置位脈沖持續(xù)2μs*240=480μs
  26.      SETB   P3.0      ;主機(jī)釋放總線控制P3.2口改為輸入
  27.      MOV    R2,#30
  28. CSH4:DJNZ   R2, CSH4  ;DS18B20等待2μs*30=60μs
  29.      JB     P3.0,CSH0 ;DS18B20沒(méi)準(zhǔn)備好,重來(lái)
  30.      MOV    R3,#120     ;DS18B20數(shù)據(jù)線變低
  31. CSH5:DJNZ   R3,CSH5   ;DS18B20數(shù)據(jù)線低電平狀態(tài)可持續(xù)2μs*120=240us
  32.      JB     P3.0,CSH3 ;18B20數(shù)據(jù)線變高,初始化成功
  33.      LJMP   CSH0       ;初始化失敗,重來(lái)
  34. CSH3:MOV   R2,#240
  35. CSH2:DJNZ  R2, CSH2;18B20應(yīng)答過(guò)程最少2μs*240=480μs
  36.       RET
  37. ;******************寫DS18B20子程序**********************
  38. WRITE:MOV   R3,#8
  39. WR1: SETB   P3.0  ;保證連續(xù)寫2位間的間隙大于1μs
  40.       MOV   R4,#7
  41.      
  42.       CLR   P3.0
  43.       RRC   A
  44. WR2: DJNZ   R4,WR2 ;18B20數(shù)據(jù)線變低后2μs*7+1=15μs開(kāi)始采樣數(shù)據(jù)
  45.      MOV    P3.0,C ;將命令字從低位按位依次送18B20
  46.      MOV    R4,#22
  47. WR3: DJNZ   R4,WR3;保證整個(gè)寫過(guò)程持續(xù)2μs*22+1=45μS
  48.      DJNZ   R3,WR1;送完整個(gè)命令字
  49.      SETB   P3.0
  50.      RET
  51. ;********************讀DS18B20子程序*********************
  52. READ:MOV   R3,#8
  53. RE1: CLR   P3.0
  54.      MOV   R4,#4
  55.      NOP          ;低電平持續(xù)2μs
  56.      SETB  P3.0   ;P3.0口設(shè)為輸入口
  57. RE2: DJNZ  R4,RE2 ;等待2μs*4=8μs
  58.      MOV   C,P3.0  ;主機(jī)(從低位)按位讀入18B20數(shù)據(jù)
  59.      RRC   A       ;數(shù)據(jù)逐位(先低位后高位)送入A
  60.      MOV   R4,#30
  61. RE3: DJNZ  R4,RE3 ;保證讀數(shù)據(jù)過(guò)程持續(xù)2μs*30=60μs
  62.      DJNZ  R3,RE1 ;讀完整個(gè)轉(zhuǎn)換值(不含符號(hào)位)并存21H中
  63.      RET
  64. ;************判斷是否為負(fù)、溫度精度轉(zhuǎn)換********************
  65. ERSH: MOV   A,2CH  ;把溫度的高字節(jié)給了A
  66.       JB    ACC.7,BB ;溫度為負(fù)轉(zhuǎn)變補(bǔ)(BB)程序段
  67.           SETB         F0 ;F0作為是否為負(fù)數(shù)的標(biāo)志
  68.       MOV   R7,#0FFH ;溫度為正不點(diǎn)亮
  69. ZHCH: MOV   A,2BH   ;屏蔽溫度低字節(jié)的小數(shù)位        
  70.       ANL   A,#0F0H
  71.       SWAP  A     
  72.       MOV   2DH,A
  73.       MOV   A,2CH    ;屏蔽溫度高字節(jié)的符號(hào)位
  74.       ANL   A,#07H
  75.       SWAP  A
  76.       ADD   A,2DH         
  77. CFZH: MOV   B,#10
  78.       DIV   AB
  79.       MOV   41H,B    ;41H中為個(gè)位

  80.       MOV   B,#10
  81.       DIV   AB
  82.       MOV   42H,B    ;42H中存放十位

  83.       MOV   B,#10
  84.       DIV   AB
  85.       MOV   43H,B    ;43H中為百位

  86. ESHD: MOV   A,2BH    ;低精度二十進(jìn)制轉(zhuǎn)換小數(shù)處理程序
  87.       JB    ACC.3,XS ;小數(shù)十分位為1,則跳轉(zhuǎn)到XS
  88.       MOV   40H,#00H      
  89.       RET
  90. XS:   MOV   40H,#05H ;43H中存放小數(shù)位
  91.       RET

  92. BB:   CLR F0
  93.       MOV   R7,#0BFH ;負(fù)數(shù)讓第1個(gè)數(shù)碼管顯示為"-"
  94.       MOV   A,2BH    ;負(fù)數(shù)補(bǔ)碼求補(bǔ)
  95.       CPL   A
  96.       ADD   A,#1
  97.       MOV   2BH,A   ;負(fù)溫度低字節(jié)求補(bǔ)后送2BH
  98.       MOV   A,2CH        
  99.       CPL   A              
  100.       ADDC  A,#0
  101.       MOV   2CH,A   ;負(fù)溫度高字節(jié)求補(bǔ)后送2CH      
  102.       LJMP  ZHCH    ;負(fù)數(shù)求補(bǔ)后轉(zhuǎn)到ZHCH
  103. ;*************************顯示子程序**************************
  104. DISPL:MOV   A,R7      ;取顯示的正負(fù)號(hào)
  105.       MOV    P1,A      ;發(fā)送字段代碼
  106.       CLR    P3.5      ;Y5=0, K5=1
  107.       ACALL  DL2MS     ;符號(hào)位
  108.       SETB   P3.5      ;138A腳置1,關(guān)閉所有位碼              

  109.       MOV    DPTR,#CSTAB;字段碼表首址送DPTR     
  110.       MOV    R1,#40H
  111.       MOV    A,@R1
  112.       MOVC   A,@A+DPTR
  113.       MOV    P1,A
  114.       CLR    P3.4
  115.       CLR    P3.7       ;Y2=0,K1=1
  116.       ACALL  DL2MS      ;小數(shù)
  117.       SETB   P3.4
  118.       SETB   P3.7   

  119.       INC    R1
  120.       MOV    A,@R1
  121.       MOVC   A,@A+DPTR
  122.       ANL    A,#7FH    ;個(gè)位小數(shù)點(diǎn)亮 數(shù)碼管的Dp段點(diǎn)亮,其他段跟隨A中的值

  123.       MOV    P1,A
  124.       CLR    P3.7     ;Y3=0,K2=1
  125.       ACALL  DL2MS    ;個(gè)位
  126.       SETB   P3.7        
  127.       
  128.       INC    R1
  129.       MOV    A,@R1
  130.       MOVC   A,@A+DPTR     
  131.       MOV    P1,A
  132.       CLR    P3.4      ;Y3=0,K3=1
  133.       CLR    P3.5
  134.       ACALL  DL2MS     ;十位
  135.       SETB   P3.4
  136.       SETB   P3.5

  137.       INC    R1
  138.       MOV    A,@R1
  139.       MOVC   A,@A+DPTR   
  140.       MOV    P1,A   
  141.       CLR    P3.4      ;Y6=0,K4=1
  142.       ACALL  DL2MS     ;百位
  143.       SETB   P3.4        
  144.       RET
  145. ;*************************上下限判斷子程序**************************
  146. MAXorMIN: PUSH ACC
  147.           JNB F0,MIN                        
  148.      MAX: MOV A,43H                 ;正溫度時(shí),判斷是否超過(guò)上限100℃
  149. ……………………

  150. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
溫度上下限 (4).zip (2.29 MB, 下載次數(shù): 58)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2017-7-4 01:37 | 只看該作者
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表