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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于51單片機的DS18b20數字溫度計(匯編)(原程序+protues仿真)

[復制鏈接]
跳轉到指定樓層
樓主
ID:551052 發表于 2019-6-10 11:20 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
程序編寫使用的是匯編語言,還有一些小問題,就是調溫之后顯示的溫度值不改變,需要按幾下復位鍵之后顯示才會改變。


單片機源程序如下:
  1. TEMPER_L         EQU         36H        ;存放讀出溫度低位數據
  2.         TEMPER_H         EQU         35H        ;存放讀出溫度高位數據
  3.         TEMPER_NUM         EQU         60H        ;存放轉換后的溫度值
  4.         FLAG1                 BIT        00H
  5.         DQ                 BIT         P3.2        ;一線總線控制端口

  6.         ORG                0000H
  7.         LJMP        MAIN
  8.         ORG                0100H
  9. MAIN:
  10.         MOV         SP,#70H        
  11.         LCALL         GET_TEMPER        ;從DS18B20讀出溫度數據         
  12.         LCALL        TEMPER_COV        ;轉換讀出的溫度數據并保存
  13.      
  14.         LCALL   SHUJU
  15.         LCALL   HEX2BCD
  16.         LCALL   LOOP
  17.         LCALL   DISPLAY
  18.         LCALL   TAB   
  19.         SJMP         [        DISCUZ_CODE_3        ]nbsp;             ;完成一次數字溫度采集
  20.         
  21. ;-------讀出轉換后的溫度值
  22. GET_TEMPER:
  23.         SETB         DQ                 ; 定時入口
  24. BCD:        LCALL         INIT_1820
  25.         JB         FLAG1,S22
  26.         LJMP         BCD                ; 若DS18B20不存在則返回
  27. S22:        LCALL         DELAY1
  28.         MOV         A,#0CCH         ; 跳過ROM匹配------0CC
  29.         LCALL         WRITE_1820
  30.         MOV         A,#44H                 ; 發出溫度轉換命令
  31.         LCALL         WRITE_1820
  32.         NOP
  33.         LCALL         DELAY
  34.         LCALL         DELAY
  35. CBA:        LCALL         INIT_1820
  36.         JB         FLAG1,ABC               
  37.         LJMP         CBA
  38. ABC:        LCALL         DELAY1
  39.         MOV         A,#0CCH         ; 跳過ROM匹配
  40.         LCALL         WRITE_1820
  41.         MOV         A,#0BEH         ; 發出讀溫度命令
  42.         LCALL         WRITE_1820
  43.         LCALL         READ_18200         ;READ_1820
  44.         RET

  45. ;-------讀DS18B20的程序,從DS18B20中讀出一個字節的數據
  46. READ_1820:
  47.         MOV         R2,#8
  48. RE1:        CLR         C
  49.         SETB         DQ
  50.         NOP
  51.         NOP
  52.         CLR         DQ
  53.         NOP
  54.         NOP
  55.         NOP
  56.         SETB         DQ
  57.         MOV         R3,#7
  58.         DJNZ         R3,$
  59.         MOV         C,DQ
  60.         MOV         R3,#23
  61.         DJNZ         R3,$
  62.         RRC         A
  63.         DJNZ         R2,RE1
  64.         RET

  65. ;-------寫DS18B20的程序
  66. WRITE_1820:
  67.         MOV         R2,#8
  68.         CLR         C
  69. WR1:        CLR         DQ
  70.         MOV         R3,#6
  71.         DJNZ         R3,$
  72.         RRC         A
  73.         MOV         DQ,C
  74.         MOV         R3,#23
  75.         DJNZ         R3,$
  76.         SETB         DQ
  77.         NOP
  78.         DJNZ         R2,WR1
  79.         SETB         DQ
  80.         RET

  81. ;-------讀DS18B20的程序,從DS18B20中讀出兩個字節的溫度數據
  82. READ_18200:
  83.         MOV         R4,#2         ; 將溫度高位和低位從DS18B20中讀出
  84.         MOV         R1,#36H ; 低位存入36H(TEMPER_L),高位存入35H(TEMPER_H)
  85. RE00:        MOV         R2,#8
  86. RE01:        CLR         C
  87.         SETB         DQ
  88.         NOP
  89.         NOP
  90.         CLR         DQ
  91.         NOP
  92.         NOP
  93.         NOP
  94.         SETB         DQ
  95.         MOV         R3,#7
  96.         DJNZ         R3,$
  97.         MOV         C,DQ
  98.         MOV         R3,#23
  99.         DJNZ         R3,$
  100.         RRC         A
  101.         DJNZ         R2,RE01
  102.         MOV         @R1,A
  103.         DEC         R1
  104.         DJNZ         R4,RE00
  105.         RET

  106. ;-------將從DS18B20中讀出的溫度數據進行轉換
  107. TEMPER_COV:
  108.         MOV         A,#0F0H
  109.         ANL         A,TEMPER_L ; 舍去溫度低位中小數點后的四位溫度數值
  110.         SWAP         A
  111.         MOV         TEMPER_NUM,A
  112.         MOV         A,TEMPER_L
  113.         JNB         ACC.3,TEMPER_COV1 ; 四舍五入去溫度值
  114.         INC         TEMPER_NUM
  115.         
  116. TEMPER_COV1:
  117.         MOV         A,TEMPER_H
  118.         ANL         A,#07H
  119.         SWAP         A
  120.         ADD         A,TEMPER_NUM
  121.         MOV         TEMPER_NUM,A ; 保存變換后的溫度數據

  122.         RET

  123. ;-------DS18B20初始化程序
  124. INIT_1820:
  125.         CLR         DQ
  126.         MOV         R0,#0FBH
  127. TSR1:        DJNZ         R0,TSR1 ; 延時
  128.         SETB         DQ
  129.         MOV         R0,#25H ;96US-25H
  130. TSR2:        DJNZ         R0,TSR2

  131. TSR3:        SETB         FLAG1         ; 置標志位,表示DS1820存在
  132. TSR6:        DJNZ         R0,TSR6 ; 延時
  133. TSR7:        SETB         DQ
  134.         RET

  135. ;-------重新寫DS18B20暫存存儲器設定值
  136. RE_CONFIG:
  137.         JB         FLAG1,RE_CONFIG1 ; 若DS18B20存在,轉RE_CONFIG1
  138.         RET
  139. RE_CONFIG1:
  140.         MOV         A,#0CCH ; 發SKIP ROM命令
  141.         LCALL         WRITE_1820
  142.         MOV         A,#4EH ; 發寫暫存存儲器命令
  143.         LCALL         WRITE_1820
  144.         
  145.         MOV         A,#00H ; TH(報警上限)中寫入00H
  146.         LCALL         WRITE_1820
  147.         MOV         A,#00H ; TL(報警下限)中寫入00H
  148.         LCALL         WRITE_1820
  149.         MOV         A,#7FH ; 選擇12位溫度分辨率
  150.         LCALL         WRITE_1820
  151.         RET

  152. ;------------------延時子程序
  153. DELAY:
  154.         MOV         R7,#00H

  155. MIN:        DJNZ         R7,YS500
  156.         RET
  157. YS500:        LCALL         YS500US
  158.         LJMP         MIN
  159. YS500US:MOV         R6,#00H
  160.         DJNZ         R6,$
  161.         RET
  162. DELAY1:        MOV         R7,#20H
  163.         DJNZ         R7,$
  164.         RET        

  165. SHUJU:      
  166.          MOV R0,    #0H   
  167.              MOV R1, TEMPER_NUM   
  168.              CALL HEX2BCD      ;調用子程序把R0 R1中的數字,轉換成BCD碼,送到R2 R3 R4;-------下面,把萬千百十個位,分別存入R4 R3 R2 R1 R0     
  169.              MOV A,   R4     
  170.              MOV B,   #16   
  171.              DIV AB                ;除以16,目的是分離出高、低四位     
  172.              MOV 42H, A            ;存放十位     
  173.              MOV 43H, B            ;存放個位;   
  174.              MOV A,   R2     
  175.              MOV R4, A            ;存放萬位;     
  176.              MOV A,   R3     
  177.              MOV B,   #16     
  178.              DIV AB     
  179.              MOV 40H, A   
  180.              MOV 41H, B     
  181.              SJMP  DISPLAY               
  182. HEX2BCD:     CLR A     ;把R0 R1中的數字,轉換成BCD碼,送到R2 R3 R4     
  183.              MOV R2, A            ;先清零   
  184.              MOV R3, A      
  185.              MOV R4, A      
  186.              MOV R5, #16       ;共轉換十六位數
  187. LOOP:        CLR C     
  188.              MOV A,R1           ;從待轉換數的高端移出一位到Cy     
  189.              RLC A     
  190.              MOV R1,A     
  191.              MOV A, R0     ;搜索
  192.              RLC A     
  193.              MOV R0,A     
  194.              MOV A,R4           ;送到BCD碼的低端     
  195.              ADDC A,R4           ;帶進位加。自身相加,相當于左移一位     
  196.              DA   A                 ;十進制調整,變成BCD碼     
  197.              MOV R4,A     
  198.              MOV A,R3     
  199.              ADDC A,R3     
  200.              DA   A     
  201.              MOV R3,A                     
  202.              MOV A,R2     
  203.              ADDC A,R2   
  204.              MOV R2, A     
  205.              DJNZ R5, LOOP         ;共轉換十六位數
  206.                 RET
  207.             
  208.         
  209. DISPLAY:MOV R1,#40H
  210.         INC R1
  211.         INC R1
  212.         MOV R5,#0F1H
  213.         MOV A,R5
  214.         MOV P0,#0FFH
  215.         MOV P2,A
  216.         MOV A,@R1
  217.         MOV DPTR,#TAB
  218.         MOVC A,@A+DPTR
  219.         MOV P0,A
  220.         NOP
  221.         NOP
  222.         NOP
  223.         NOP
  224.         NOP
  225.         NOP        
  226.         NOP   
  227.         NOP
  228.         NOP
  229.         NOP
  230.         NOP
  231.         NOP
  232.         NOP
  233.         NOP
  234.         NOP
  235.         NOP
  236.         NOP
  237.         NOP
  238.         NOP
  239.         NOP
  240.         NOP
  241.         NOP
  242.         NOP
  243.         NOP
  244.         NOP
  245.         NOP
  246.         NOP
  247.         NOP
  248.         NOP
  249.         INC R1
  250.         MOV R5,#0F2H
  251.         MOV A,R5
  252.         MOV P0,#0FFH
  253.         MOV P2,A
  254.         MOV A,@R1
  255.         MOV DPTR,#TAB
  256.         MOVC A,@A+DPTR
  257.         MOV R2,#80H
  258.         ADD A,R2
  259.         MOV P0,A
  260.         NOP
  261.         NOP
  262.         NOP
  263.         NOP
  264.         NOP
  265.         NOP        
  266.         NOP   
  267.         NOP
  268.         NOP
  269.         NOP
  270.         NOP
  271.         NOP
  272.         NOP
  273.         NOP
  274.         NOP
  275.         NOP
  276.         NOP
  277.         NOP
  278.         NOP
  279.         NOP
  280.         NOP
  281.         NOP
  282.         NOP
  283.         NOP
  284.         NOP
  285.         NOP
  286.         NOP
  287.         NOP
  288.         NOP
  289.         
  290.         
  291.         AJMP DISPLAY

  292.       
  293.       
  294. TAB:    DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,88H,0BFH
  295.       

  296.        END
  297.             
復制代碼

所有資料51hei提供下載:
由于有會員測試打不開,已經被管理刪除


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

使用道具 舉報

沙發
ID:236933 發表于 2019-11-15 13:58 | 只看該作者
給的仿真文件打開之后是損壞的,資料無用
回復

使用道具 舉報

板凳
ID:855478 發表于 2021-3-23 16:14 | 只看該作者
可惜沒有仿真圖
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 二区视频 | 高清18麻豆 | 9191av| 日韩欧美国产一区二区三区 | 一级片免费视频 | 中文字幕一区二区在线观看 | 亚洲在线观看视频 | 午夜精品福利视频 | 国产又色又爽又黄又免费 | 日韩在线中文字幕 | 亚洲一区二区三区在线 | www.久久国产精品 | 欧美成年视频 | 亚洲欧美日韩精品久久亚洲区 | 日韩免费在线 | 国产精品一区二区日韩 | 天天干狠狠操 | 成人免费视频网站在线看 | 亚洲色欧美另类 | 一级做a爰片性色毛片16美国 | 男女视频在线观看网站 | 国产精品高清一区二区三区 | 国产精品久久久久久久久久久久冷 | 视频三区 | 成人性视频免费网站 | 久久国产综合 | 欧美色综合一区二区三区 | 仙人掌旅馆在线观看 | 91在线视频免费观看 | 黄色网址在线免费播放 | 亚洲精品视频一区 | 能看的av | 午夜影院| 91九色在线观看 | 毛片一区| 国产成人精品一区二区三区四区 | av大片| 中文字幕一区二区在线观看 | 久草中文网 | 91av在线视频观看 | 日本一区二区高清不卡 |