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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5705|回復: 0
收起左側

單片機+lcd1602顯示溫度匯編語言程序-精確到0.0625度

[復制鏈接]
ID:263238 發表于 2017-12-18 17:26 | 顯示全部樓層 |閱讀模式

單片機匯編源程序如下:
  1. ;這是關于單個DS18B20的測溫程序,數據腳為P3.3,晶振是11.059MHZ
  2. ;溫度傳感器18B20采用器件默認的12位轉化,最大轉化時間要750毫秒
  3. ;用1602液晶屏顯示,顯示溫度從00到99度,精確到0.0625度
  4. ;內存分配聲明
  5. TEMPER_L EQU 29H;用于保存讀出溫度的低字節
  6. TEMPER_H EQU 28H;用于保存讀出溫度的高字節
  7. T_DF EQU 27H ;FORMAT后的小數部分(decimal fraction),半字節的溫度小數(存在低四位)
  8. T_INTEGER EQU 26H ;FORMAT后的整數部分(integer),將兩字節的溫度整合成1字節
  9. FLAG1 BIT 50H;位地址50H是字節2AH的最低位,用作是否檢測到DS18B20的標志位

  10. A_BIT EQU 20h ;液晶十位數存放內存位置
  11. B_BIT EQU 21h ;液晶個位數存放內存位置
  12. C_BIT EQU 22H ;個位小數
  13. D_BIT EQU 23H ;十位小數
  14. E_BIT EQU 24H ;百位小數
  15. F_BIT EQU 25H ;千位小數


  16. RS BIT P2.0 ;這3位是液晶屏的控制信號,連接方式由具體硬件而定
  17. RW BIT P2.1
  18. E  BIT P2.2

  19. ORG 0000H
  20.             LJMP MAIN
  21. ORG 0100H
  22. MAIN:   
  23.            LCALL   INIT_RS232
  24.            CLR P1.3
  25.            LCALL T_CONVERSION;調用讀溫度子程序
  26.            LCALL T_FORMAT;將讀出的2字節溫度格式化
  27.            LCALL DISPLAY;調用液晶顯示子程序
  28.            LCALL D1S;延時1秒后再測
  29.            LJMP MAIN

  30. ;--------------DS18B20的溫度轉換子程序,具體時序請參考資料-------------------
  31. T_CONVERSION:        LCALL INIT_1820;先復位DS18B20
  32.                      JB FLAG1,T_C0
  33.                      RET ; 判斷DS1820是否存在  若DS18B20不存在則返回

  34. T_C0:                MOV A,#0CCH ; 跳過ROM匹配
  35.                      LCALL WRITE_1820
  36.                      MOV A,#44H ; 發出溫度轉換命令
  37.                      LCALL WRITE_1820
  38.                      LCALL D1S   ;這里等待AD轉換結束,12位的話要延時750m秒
  39.                      LCALL INIT_1820;準備讀溫度前先復位
  40.                      MOV A,#0CCH ; 跳過ROM匹配
  41.                      LCALL WRITE_1820
  42.                      MOV A,#0BEH ; 發出讀溫度命令
  43.                      LCALL WRITE_1820
  44.                      LCALL READ_1820; 將讀出的溫度數據保存到28H(TEMPER_H)和29H(TEMPER_L)處
  45.                      RET

  46. ;------DS18B20復位初始化程序-----------------------------------------
  47. INIT_1820:   SETB P3.3
  48.                    NOP
  49.                    CLR P3.3
  50.                    MOV R0,#2 ;主機發出延時500微秒的復位低脈沖
  51. INIT0:         MOV R1,#250
  52.                    DJNZ R1,$
  53.                    DJNZ R0,INIT0

  54.                    SETB P3.3;然后拉高數據線
  55.                    NOP

  56.                    MOV R0, #15
  57. INIT1:         JNB P3.3, INIT3;延時60us等待DS18B20回應
  58.                    DJNZ R0, INIT1
  59.                    LJMP INIT4 ; 超時而沒有響應
  60. INIT3:         SETB FLAG1 ; 置標志位,表示DS1820存在
  61.                    LJMP INIT5
  62. INIT4:         CLR FLAG1 ; 清標志位,表示DS1820不存在
  63.                    LJMP INIT6
  64. INIT5:         MOV R0, #120
  65.                    DJNZ R0, $ ; 延時240us
  66. INIT6:         SETB P3.3
  67.                    RET

  68. ;---------寫DS18B20的子程序(有具體的時序要求)-------------------------------------
  69. WRITE_1820:   MOV R2,#8;一共8位數據
  70. WR0:              CLR P3.3
  71.                      MOV R3,#6
  72.                      DJNZ R3,$
  73.                      RRC A
  74.                      MOV P3.3,C
  75.                      MOV R3,#20
  76.                      DJNZ R3,$
  77.                      SETB P3.3
  78.                      NOP
  79.                      NOP
  80.                      DJNZ R2,WR0
  81.                      SETB P3.3
  82.                      RET

  83. ;------讀DS18B20的程序,從DS18B20中讀出兩個字節的溫度數據--------------------------
  84. READ_1820:      MOV R4,#2 ; 將溫度高位和低位從DS18B20中讀出
  85.                 MOV R1,#TEMPER_L ; 低位存入29H(TEMPER_L)
  86. RE0:            MOV R2,#8
  87. RE1:            SETB P3.3
  88.                    NOP
  89.                    NOP
  90.                    CLR P3.3
  91.                    NOP
  92.                    NOP
  93.                    SETB P3.3
  94.                    MOV R3,#5
  95.                    DJNZ R3, $
  96.                    MOV C,P3.3
  97.                    MOV R3,#20
  98.                    DJNZ R3, $
  99.                    RRC A
  100.                    DJNZ R2,RE1
  101.                    MOV @R1,A
  102.                    DEC R1            ; 高位存入28H(TEMPER_H)
  103.                    DJNZ R4,RE0
  104.                    RET

  105. ;-----整合讀出的兩字節溫度(關于DS18B20讀出的2字節溫度格式請參考資料)----------
  106. T_FORMAT:         MOV A, #0FH
  107.                   ANL A, TEMPER_L
  108.                   MOV T_DF, A           ;獲得小數部分(4位)

  109.                   MOV A, TEMPER_L
  110.                   SWAP A
  111.                   MOV TEMPER_L, A

  112.                   MOV A, TEMPER_H
  113.                   SWAP A
  114.                   MOV R0, #TEMPER_L
  115.                   XCHD A, @R0

  116.                   MOV T_INTEGER, A       ;獲得整數部分(1字節)
  117.                   RET

  118. ;-------液晶顯示的子程序(顯示前先格式轉換)---------------------------------------
  119. DISPLAY:             mov a, T_INTEGER
  120.                      mov b,#10
  121.                      div ab
  122.                      mov A_BIT,a ;十位存在A_BIT
  123.                                               mov B_BIT,b ;個位存在B_BIT
  124.                      MOV A, T_DF
  125.                      MOV R0, #C_BIT
  126.                     MOV R2, #4
  127.                        D0: MOV B, #10
  128.                      MUL AB
  129.                      MOV B, #16
  130.                      DIV AB
  131.                      MOV @R0, A      ;從個位小數C_BIT,到十位D_BIT,百位E_BIT,千位F_BIT
  132.                      INC R0
  133.                      MOV A, B
  134.                      DJNZ R2, D0
  135.                      ;----二進制到ASCII碼轉換--------------
  136.                      MOV A, #30H
  137.                      ORL A_BIT, A
  138.                      ORL B_BIT, A
  139.                      ORL C_BIT, A
  140.                      ORL D_BIT, A
  141.                      ORL E_BIT, A
  142.                      ORL F_BIT, A
  143.                      ;-------------------------------------
  144.                      LCALL INITIAL
  145.                      MOV A, #10000000B                ; LINE1: DB 'Now is:',00H
  146.                      LCALL   WRITE_INSTRUCTION
  147.                      MOV   DPTR, #LINE1
  148.                      LCALL   PR_STRING
  149.                      MOV A, A_BIT
  150.                      LCALL TX_CHAR
  151.                      LCALL   WRITE_LCDDATA
  152.                      MOV A, B_BIT
  153.                                LCALL TX_CHAR
  154.                      LCALL   WRITE_LCDDATA
  155.                      MOV A, #2EH
  156.                      LCALL TX_CHAR;'.'字符
  157.                      LCALL   WRITE_LCDDATA
  158.                      MOV A, C_BIT
  159.                                LCALL TX_CHAR
  160.                      LCALL   WRITE_LCDDATA
  161.                      MOV A, D_BIT
  162.                                LCALL TX_CHAR
  163.                      LCALL   WRITE_LCDDATA
  164.                      MOV A, E_BIT
  165.                                LCALL TX_CHAR
  166.                      LCALL   WRITE_LCDDATA
  167.                      MOV A, F_BIT
  168.                                LCALL TX_CHAR
  169.                      LCALL   WRITE_LCDDATA
  170.                      MOV A, #0DFH                        ;下面兩個是攝氏度的數字符號
  171.                                LCALL TX_CHAR
  172.                      LCALL   WRITE_LCDDATA
  173.                      MOV A, #43H
  174.                                LCALL TX_CHAR
  175.                      LCALL   WRITE_LCDDATA
  176.                      MOV A, #0AH
  177.                                LCALL TX_CHAR
  178.                      
  179.                      mov a, #11000000B                 ; LINE2: DB 'WANG XUE MIN!',00H
  180.                      Lcall write_instruction
  181.                      MOV   DPTR, #LINE2
  182.                      LCALL   PR_STRING
  183.                      RET

  184. ;---液晶屏初始化,具體請參考資料-------------------------------------------------
  185. initial:         MOV   A, #01H
  186.                        LCALL WRITE_INSTRUCTION
  187.                        MOV   A, #38H
  188.                        LCALL WRITE_instruction
  189.                        MOV   A, #0FH
  190.                        LCALL WRITE_instruction
  191.                        MOV   A, #06H
  192.                        LCALL WRITE_instruction
  193.                        RET

  194. ;----寫液晶指令的子程序------------------------------------------
  195. WRITE_instruction: MOV P0, A
  196.                                CLR RS ;寫入控制命令
  197.                                CLR RW
  198.                                CLR E
  199.                                LCALL DELAY
  200.                                SETB E
  201.                                RET

  202. ;----寫液晶數據的子程序---------------------------------------------
  203. write_lcddata:   MOV P0, A
  204.                           SETB RS ;寫入數據
  205.                           CLR RW
  206.                           CLR E
  207.                           LCALL DELAY ;判斷液晶模塊是否忙  
  208.                           SETB E
  209.                           RET

  210. ;-----寫行字符的子程序---------------------------------------------------------------
  211. PR_STRING:   CLR    A
  212.                    MOVC   A, @A+DPTR
  213.                    JZ      END_PR
  214.                    LCALL WRITE_LCDDATA
  215.                    INC    DPTR
  216.                    LJMP   PR_STRING
  217. END_PR:       RET

  218. ;----查看液晶忙碌信號的子程序---------------------------------------------------------
  219. DELAY:   MOV P0,#0FFH ;判斷液晶顯示器是否忙的子程序
  220.              CLR RS
  221.              SETB RW
  222.              CLR E
  223.              NOP
  224.              SETB E
  225.              JB P0.7,DELAY ;如果P1.7為高電平表示忙就循環等待
  226. ……………………

  227. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
95060445lcd1602-18B20.rar (15.69 KB, 下載次數: 72)


回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品黑人 | 在线看h| 久久看精品 | 一区二区视频在线观看 | 久久精品毛片 | 97免费在线视频 | 免费在线观看av片 | a毛片 | 欧美一a| 日本精品视频在线 | 97精品超碰一区二区三区 | 亚洲综合第一页 | 精品国产一区二区在线 | 拍戏被cao翻了h承欢 | 成人黄色三级毛片 | 在线成人| 中文字幕国产视频 | 色橹橹欧美在线观看视频高清 | 国产精品久久精品 | 国产在线观| 久草色播 | 国产精品一区二区福利视频 | 欧美日韩视频在线播放 | 四虎影院新地址 | 盗摄精品av一区二区三区 | 国产中文字幕在线 | 免费成人高清 | 欧美一二精品 | 午夜视频免费在线观看 | 中文一区二区视频 | 精品久久久久久久人人人人传媒 | 久久99精品久久久久久青青日本 | 精品国产31久久久久久 | 男女视频在线观看网站 | 中文字幕一区在线观看视频 | 黄色高清视频 | 久久久一区二区三区 | 日本国产高清 | 成人一区二区三区 | 一级做受毛片免费大片 | 久久久噜噜噜www成人网 |