久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4549|回復: 0
打印 上一主題 下一主題
收起左側

DS18B20溫度傳感器多點測溫Proteus仿真+單片機匯編語言程序

[復制鏈接]
跳轉到指定樓層
樓主
溫度傳感器是ds1621的
多點測溫是ds18B20的
希望對大家有所幫助
另外,求ds1621的多點測溫
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機匯編語言源程序如下:
  1. DQ                  BIT        P1.0
  2. FLAG                 BIT        00H        
  3. FLAG_NEG        BIT        01H
  4. TEMP_L                EQU 30H
  5. TEMP_H                EQU        31H
  6. TEMP_INT        EQU 32H
  7. TEMP_DP                EQU 33H
  8. TEMP_100        EQU        34H
  9. TEMP_10                EQU        35H
  10. TEMP_1                EQU        36H

  11. WR_LCD                BIT P3.6
  12. RD_LCD                BIT        P3.7
  13.                 ORG 0000H
  14.                 LJMP START
  15.                 ORG 1000H
  16. START:        MOV SP,#60H
  17.                 LCALL INIT
  18. MAIN:        LCALL READ_TEMP
  19.                 LCALL PROC_TEMP
  20.                 LJMP MAIN
  21. ;*********************************
  22. READ_TEMP:
  23.                 SETB        DQ
  24.                 LCALL INI_DQ
  25.                 JB         FLAG,RE_0
  26.                   RET
  27. RE_0:        MOV A,#0CCH
  28.                 LCALL WRITE_DQ
  29.                 MOV A,#44H
  30.                 LCALL WRITE_DQ
  31.                 LCALL DISPLAY                        ;調用lcd顯示程序,并起延時作用

  32.                 LCALL INI_DQ
  33.                 MOV A,#0CCH
  34.                 LCALL WRITE_DQ
  35.                 MOV A,#0BEH
  36.                 LCALL WRITE_DQ
  37.                 LCALL READ_DQ
  38.                 RET
  39.                
  40. ;************DS18B20初始化程序***************
  41. INI_DQ:        
  42.         SETB        DQ
  43.         NOP
  44.         NOP
  45.         CLR        DQ
  46.         MOV          R1,#3
  47. INI_0:          MOV          R0,#80
  48.           DJNZ          R0,$
  49.           DJNZ          R1,INI_0
  50.         SETB         DQ
  51.         NOP
  52.         NOP
  53.         NOP
  54.         MOV        R7,        #25
  55. INI_1:  JNB          DQ,INI_2
  56.                   DJNZ          R7,INI_1  ;延時
  57.                   LJMP         INI_3
  58. INI_2:                  SETB          FLAG   ;標志位
  59.                   LJMP          INI_4
  60. INI_3:                  CLR          FLAG   
  61.                   LJMP          INI_5

  62. INI_4:  MOV          R0,#80
  63.                  DJNZ          R0,[        DISCUZ_CODE_1        ]nbsp; ;時序要求延時一段時間
  64. INI_5:  SETB          DQ
  65.                   RET
  66. ;**************DS18B20寫命令******************
  67. WRITE_DQ:
  68.         MOV        R6,        #8
  69.         CLR C
  70. Tloop:        CLR        DQ                        
  71.         MOV R2,#6
  72.         DJNZ R2,$
  73.         RRC        A                        ;最低位移到C中
  74.         MOV DQ,C
  75.         MOV R2,#23
  76.         DJNZ R2,$
  77.         SETB DQ
  78.         NOP
  79.         DJNZ R6,Tloop
  80.         SETB DQ
  81.         RET

  82. ;**************讀DS18B20數據函數*************
  83. READ_DQ:        
  84.         MOV R5,        #2
  85.         MOV R0,        #30H
  86. READ_0:        MOV         R6,        #8
  87. READ_1:        CLR                C
  88.         SETB DQ
  89.         NOP
  90.         NOP
  91.         CLR        DQ
  92.         NOP
  93.         NOP
  94.         NOP
  95.         NOP
  96.         SETB        DQ
  97.         MOV         R2,#9
  98.         DJNZ         R2,$
  99.         MOV         C,DQ
  100.         MOV         R3,#23
  101.         DJNZ         R3,$
  102.         RRC                A
  103.         DJNZ        R6,        READ_1
  104.         MOV         @R0,A
  105.         INC         R0
  106.         DJNZ         R5,READ_0
  107.         SETB         DQ
  108.         RET
  109. ;***************溫度數據處理程序*****************
  110. PROC_TEMP:
  111.         CLR FLAG_NEG
  112.         MOV A,TEMP_L
  113.         SWAP A
  114.         ORL A,#0F0H
  115.         MOV TEMP_INT,A
  116.         MOV A,TEMP_H
  117.         SWAP A
  118.         ORL A,#0FH
  119.         ANL TEMP_INT,A
  120.         MOV A,TEMP_H
  121.         JB        ACC.7,NEGTIVE
  122.         MOV A,TEMP_L
  123.         ANL A,#0FH
  124.         MOV DPTR,#TAB3
  125.         MOVC A,@A+DPTR
  126.         MOV TEMP_DP,A
  127.         LJMP PRO_0
  128. NEGTIVE:                                        ;溫度值為負時處理程序,按實際情況,處理過程比較復雜
  129.         SETB FLAG_NEG
  130.         MOV A,TEMP_L
  131.         CPL A
  132.         ANL A,#0FH
  133.         MOV R1,A
  134.         CJNE R1,#0FH,PRO_1
  135.         PUSH ACC
  136.         MOV A,TEMP_INT
  137.         SUBB A,#1
  138.         MOV TEMP_INT,A
  139.         POP ACC
  140.         MOV TEMP_DP,#00H
  141.         LJMP PRO_2
  142. PRO_1:        ADD A,#1
  143.         MOV DPTR,#TAB3
  144.         MOVC A,@A+DPTR
  145.         MOV TEMP_DP,A
  146. PRO_2:        MOV A,TEMP_INT
  147.         CPL A
  148.         MOV TEMP_INT,A
  149. PRO_0:        MOV A,TEMP_INT
  150.         MOV B,#100
  151.         DIV AB
  152.         MOV TEMP_100,A
  153.         MOV A,B
  154.         MOV B,#10
  155.         DIV AB
  156.         MOV TEMP_10,A
  157.         MOV TEMP_1,B
  158.         RET

  159. ;**************LED顯示***********************

  160. ;**************LCD初始化**********************
  161. INIT:        MOV DPTR,#8000H
  162.                 SETB        WR_LCD
  163.                 SETB        RD_LCD
  164.                
  165.                 MOV A,#01H
  166.                 ACALL F_BUSY
  167.                 MOVX @DPTR,A
  168.                 ACALL F_BUSY
  169.                 MOV A,#38H
  170.                 MOVX @DPTR,A
  171.                 ACALL F_BUSY
  172.                 MOV A,0EH
  173.                 MOVX @DPTR,A
  174.                 ACALL F_BUSY
  175.                 MOV A,#0CH
  176.                 MOVX @DPTR,A
  177.                 RET
  178. ;***********寫LCD函數*************************
  179. DISPLAY:        MOV DPTR,#8000H                ;寫第一行數據
  180.                 MOV A,#80H
  181.                 ACALL F_BUSY
  182.                 MOVX @DPTR,A
  183.                 MOV DPTR,#8100H
  184.                 MOV R1,#0
  185. D1:                LCALL TRANS1;
  186.                 ACALL F_BUSY
  187.                 MOVX @DPTR,A
  188.                 INC R1
  189.                 CJNE R1,#16,D1
  190.                
  191.                 MOV DPTR,#8000H                ;寫第二行數據
  192.                 MOV A,#0C0H
  193.                 ACALL F_BUSY
  194.                 MOVX @DPTR,A
  195.                 MOV DPTR,#8100H
  196.                 LCALL WRITE_NEGTIVE
  197.                 ACALL F_BUSY
  198.                 MOVX @DPTR,A
  199.                
  200.                 MOV A,TEMP_100
  201.                 LCALL WRITE_INT
  202.                 ACALL F_BUSY
  203.                 MOVX @DPTR,A
  204.                
  205.                 MOV A,TEMP_10
  206.                 LCALL WRITE_INT
  207.                 ACALL F_BUSY
  208.                 MOVX @DPTR,A
  209.                
  210.                 MOV A,TEMP_1
  211.                 LCALL WRITE_INT
  212.                 ACALL F_BUSY
  213.                 MOVX @DPTR,A
  214.                
  215.                 MOV A,#2EH
  216.                 ACALL F_BUSY
  217.                 MOVX @DPTR,A
  218.                
  219.                 MOV A,TEMP_DP
  220.                 LCALL WRITE_INT
  221.                 ACALL F_BUSY
  222.                 MOVX @DPTR,A
  223.                
  224.                 MOV A,#20H
  225.                 ACALL F_BUSY
  226.                 MOVX @DPTR,A
  227.                
  228.                 MOV A,#0DFH
  229.                 ACALL F_BUSY
  230.                 MOVX @DPTR,A
  231.                
  232.                 MOV A,#43H
  233.                 ACALL F_BUSY
  234.                 MOVX @DPTR,A
  235.                
  236.                 RET
  237. ;**************顯示第一行******************
  238. TRANS1:        PUSH DPH
  239.                 PUSH DPL
  240.                 MOV A,R1
  241.                 MOV DPTR,#TAB1;
  242.                 MOVC A,@A+DPTR
  243.                 POP DPL
  244.                 POP DPH
  245.                 RET
  246. ;**************顯示第二行******************
  247. WRITE_NEGTIVE:
  248.                 JB FLAG_NEG,WN
  249.                 MOV A,#20H
  250.                 RET
  251. WN:                MOV A,#2DH
  252.                 RET
  253. WRITE_INT:
  254.                 PUSH DPH
  255.                 PUSH DPL
  256.                 MOV DPTR,#TAB2
  257.                 MOVC A,@A+DPTR
  258.                 POP DPL
  259.                 POP DPH
  260.                 RET
  261.                
  262. ;***********判斷LCD是否忙******************
  263. F_BUSY:        PUSH DPH
  264.                 PUSH DPL
  265.                 PUSH PSW
  266.                 PUSH Acc
  267. LOOP:        MOV DPTR,#8200H
  268.                 MOVX A,@DPTR
  269.                 JB Acc.7,LOOP
  270.                 POP Acc
  271.                 POP PSW
  272.                 POP DPL
  273.                 POP DPH
  274.                 RET
  275.                
  276. DELAY_10MS:
  277.                 MOV R3,#20
  278. DEL_1:        MOV R4,#248
  279.                 DJNZ R4,$
  280.                 DJNZ R3,DEL_1
  281.                 RET
  282. TAB1:         DB  20H,20H,20H,'T','e','m','p','r','e','t','u','r','e',20H,20H,20H
  283. ;**************LCD數字字模
  284. TAB2:         DB  30H,31H,32H,33H,34H,35H,36H,37H,38H,39H
  285. ;**********小數位轉換********************
  286. TAB3:        DB        00H,01H,01H,02H
  287.                 DB        02H,03H,04H,04H
  288.                 DB        05H,06H,06H,07H
  289.                 DB        07H,08H,09H,09H
  290. ;************無小數點位的段碼******************
  291. TAB4:        DB        0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
  292. ;*****************有小數點**********************
  293. TAB5:        DB        40H,79H,24H,30H,19H,12H,02H,78H,00H,10H
  294. END
復制代碼

所有資料51hei提供下載:
rogerjordan-5028051-多點測溫.rar (50.47 KB, 下載次數: 41)
hs07zdhgj-3012459-24 DS1621溫度傳感器實驗.rar (40.63 KB, 下載次數: 35)



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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久精品无码一区二区三区 | 成人不卡 | 黄色毛片视频 | 欧美色综合一区二区三区 | 欧美成人激情视频 | 国产91久久精品一区二区 | 日韩一区二区av | 99热国产在线播放 | 久久鲁视频 | 久久青青 | 91精品国产91久久久久久吃药 | 欧美久久天堂 | 日韩一区二区在线免费观看 | 国产精品毛片一区二区在线看 | 日韩在线欧美 | 国产一区二区三区四区hd | 久久国产欧美日韩精品 | 成年人网站免费视频 | 成人一区二区电影 | 日韩影音 | 在线一区 | 日本一区二区三区四区 | 国产精品毛片一区二区在线看 | 中文字幕一区在线 | 成人国产精品一级毛片视频毛片 | 激情91| 激情婷婷成人 | 成人av高清| 日韩国产高清在线观看 | 成人性视频免费网站 | 国产精品久久久免费 | 亚洲精品国产电影 | 成人在线中文 | 国产一区 在线视频 | 国产精品视频在线播放 | 在线国产视频观看 | 男女av| 国产ts人妖一区二区三区 | 91xxx在线观看 | 日韩中文字幕2019 | 久久aⅴ乱码一区二区三区 亚洲国产成人精品久久久国产成人一区 |