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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于18b20溫度帶上限程序-LCD1602液晶顯示篇

[復制鏈接]
跳轉到指定樓層
樓主
ID:105323 發表于 2016-2-22 01:43 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
下圖為圖片:具體說明看前一篇的,這是用1602來顯示的,程序是修改前面幾個實驗的,當溫度<40度時電風扇不轉,當>=40度時電風扇轉動.下面實驗做的截圖,為參加電子比賽做的單片機系統實驗.












全部程序:
  1. ORG 0000H
  2. ;單片機內存分配申明!
  3. TEMPER_L EQU 29H;用于保存讀出溫度的低8位
  4. TEMPER_H EQU 28H;用于保存讀出溫度的高8位
  5. FLAG1       EQU 38H;是否檢測到DS18B20標志位
  6. a_bit       equ 20h ;數碼管個位數存放內存位置
  7. b_bit       equ 21h ;數碼管十位數存放內存位置
  8. RS EQU P3.7;確定具體硬件的連接方式
  9. RW EQU P3.6 ;確定具體硬件的連接方式
  10. E EQU P3.5 ;確定具體硬件的連接方式
  11. ;主程序
  12. MAIN:
  13.           LCALL GET_TEMPER;調用讀溫度子程序
  14.           MOV A,29H
  15.           MOV C,40H;將28H中的最低位移入C
  16.           RRC A
  17.           MOV C,41H
  18.           RRC A
  19.           MOV C,42H
  20.           RRC A
  21.           MOV C,43H
  22.           RRC A
  23.           MOV 29H,A
  24.           clr c
  25.           setb p3.0;zhelikais從這里開始是我填加的溫度控制
  26.           CJNE A,#28H,FIT
  27.           SETB P3.0
  28.           AJMP DISLED
  29.       FIT:CPL C
  30.           MOV P3.0,C;jiesu到這里結束
  31. DISLED:LCALL DISPLAY;調用數碼管顯示子程序
  32.           AJMP MAIN
  33. ;DS18B20復位初始化子程序
  34. INIT_1820:SETB P2.2
  35.              NOP
  36.              CLR P2.2;主機發出延時537微秒的復位低脈沖
  37.              MOV R1,#3
  38.         TSR1:MOV R0,#107
  39.              DJNZ R0,$
  40.              DJNZ R1,TSR1
  41.              SETB P2.2;然后拉高數據線
  42.              NOP
  43.              NOP
  44.              NOP
  45.              MOV R0,#25H
  46.         TSR2:JNB P2.2,TSR3;等待DS18B20回應
  47.              DJNZ R0,TSR2
  48.              LJMP TSR4 ; 延時
  49.         TSR3:SETB FLAG1 ; 置標志位,表示DS1820存在
  50.              CLR P1.7;檢查到DS18B20就點亮P1.7LED,與傳感器通信成功
  51.              LJMP TSR5
  52.         TSR4:CLR FLAG1 ; 清標志位,表示DS1820不存在
  53.              CLR P1.1;未檢查到DS18B20就點亮P1.1LED,與傳感器通信失敗
  54.              LJMP TSR7
  55.         TSR5:MOV R0,#117
  56.         TSR6:DJNZ R0,TSR6 ; 時序要求延時一段時間
  57.         TSR7:SETB P2.2
  58.              RET
  59. ;讀出轉換后的溫度值的子程序
  60. GET_TEMPER:SETB P2.2
  61.               LCALL INIT_1820;先復位DS18B20
  62.               JB FLAG1,TSS2
  63.               CLR P1.2
  64.               RET ; 判斷DS1820是否存在?若DS18B20不存在則返回
  65.          TSS2:CLR P1.3;DS18B20已經被檢測到!
  66.               MOV A,#0CCH ; 跳過ROM匹配
  67.               LCALL WRITE_1820
  68.               MOV A,#44H ; 發出溫度轉換命令
  69.               LCALL WRITE_1820
  70.               LCALL DISPLAY;這里通過調用顯示子程序實現延時一段時間,等待AD轉換結束,12位的話750微秒
  71.               LCALL INIT_1820;準備讀溫度前先復位
  72.               MOV A,#0CCH ; 跳過ROM匹配
  73.               LCALL WRITE_1820
  74.               MOV A,#0BEH ; 發出讀溫度命令
  75.               LCALL WRITE_1820
  76.               LCALL READ_18200; 將讀出的溫度數據保存到35H/36H
  77.               CLR P1.4
  78.               RET
  79. ;寫DS18B20的子程序(有具體的時序要求)
  80. WRITE_1820:MOV R2,#8;一共8位數據
  81.               CLR C
  82.           WR1:CLR P2.2
  83.               MOV R3,#6
  84.               DJNZ R3,$
  85.               RRC A
  86.               MOV P2.2,C
  87.               MOV R3,#23
  88.               DJNZ R3,$
  89.               SETB P2.2
  90.               NOP
  91.               DJNZ R2,WR1
  92.               SETB P2.2
  93.               RET
  94. ; 讀DS18B20的程序,從DS18B20中讀出兩個字節的溫度數據
  95. READ_18200:MOV R4,#2 ; 將溫度高位和低位從DS18B20中讀出
  96.               MOV R1,#29H ; 低位存入29H(TEMPER_L),高位存入28H(TEMPER_H)
  97.          RE00:MOV R2,#8;數據一共有8位
  98.          RE01:CLR C
  99.               SETB P2.2
  100.               NOP
  101.               NOP
  102.               CLR P2.2
  103.               NOP
  104.               NOP
  105.               NOP
  106.               SETB P2.2
  107.               MOV R3,#9
  108.          RE10:DJNZ R3,RE10
  109.               MOV C,P2.2
  110.               MOV R3,#23
  111.          RE20:DJNZ R3,RE20
  112.               RRC A
  113.               DJNZ R2,RE01
  114.               MOV @R1,A
  115.               DEC R1
  116.               DJNZ R4,RE00
  117.               RET
  118. ;顯示子程序
  119. display: acall DL100MS
  120.             acall DL100MS
  121.             mov a,29H;將29H中的十六進制數轉換成10進制
  122.             mov b,#10 ;10進制/10=10進制
  123.             div ab
  124.             mov b_bit,a ;十位在a
  125.             mov a_bit,b ;個位在b
  126.             add a,#00110000b
  127.             mov b_bit,a
  128.             mov a,b
  129.             add a,#00110000b
  130.             mov a_bit,a
  131.             MOV P1,#00000001B; ;清屏并光標復位
  132.             ACALL ENABLE;調用寫入命令子程序
  133.             MOV P1,#00111000B ;;設置顯示模式:8位2行5x7點陣
  134.             ACALL ENABLE ;調用寫入命令子程序
  135.             MOV P1,#00001111B ;;顯示器開、光標開、光標允許閃爍
  136.             ACALL ENABLE ;調用寫入命令子程序
  137.             MOV P1,#00000110B ;;文字不動,光標自動右移
  138.             ACALL ENABLE ;調用寫入命令子程序
  139.             MOV P1,#80H ;;寫入顯示起始地址(第二行第一個位置)
  140.             ACALL ENABLE ;調用寫入命令子程序
  141.             MOV P1,b_bit ;;A十位送出去

  142.             SETB RS; ;RS=1
  143.             CLR RW; ;RW=0 ;準備寫入數據
  144.             CLR E; ;E=0 ;執行顯示命令
  145.             ACALL DELAY ;判斷液晶模塊是否忙?
  146.             SETB E ;;E=1 ;顯示完成,程序停車

  147.             MOV P1,#00000110B ;;文字不動,光標自動右移
  148.             ACALL ENABLE ;調用寫入命令子程序
  149.             MOV P1,#81H ;;寫入顯示起始地址(第二行第2個位置)
  150.             ACALL ENABLE ;調用寫入命令子程序
  151.             MOV P1,a_bit;;字母A的代碼

  152.             SETB RS; ;RS=1
  153.             CLR RW; ;RW=0 ;準備寫入數據
  154.             CLR E; ;E=0 ;執行顯示命令
  155.             ACALL DELAY ;判斷液晶模塊是否忙?
  156.             SETB E ;;E=1 ;顯示完成,程序停車
  157.             ret
  158.             ENABLE:
  159.             CLR RS; ;寫入控制命令的子程序
  160.             CLR RW
  161.             CLR E
  162.             ACALL DELAY
  163.             SETB E
  164.             RET
  165.       DELAY:
  166.             MOV P1,#0FFH ;;判斷液晶顯示器是否忙的子程序
  167.             CLR RS
  168.             SETB RW
  169.             CLR E
  170.             NOP
  171.             SETB E
  172.             JB P1.7,DELAY; ;如果P1.7為高電平表示忙就循環等待
  173.             RET
  174. DL100MS:      MOV R7,#02H
  175. DL1:          MOV R6,#0C8H
  176. DL2:          MOV R5,#0FAH
  177.               DJNZ R5,$
  178.               DJNZ R6,DL2
  179.               DJNZ R7,DL1
  180.               RET

  181.             end
復制代碼








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

使用道具 舉報

沙發
ID:106195 發表于 2016-2-24 20:16 | 只看該作者
求此電路圖。。。謝謝。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩欧美久久 | 亚洲精品久久久蜜桃网站 | 欧美久久精品一级黑人c片 91免费在线视频 | 久久综合久久综合久久综合 | 亚洲精品乱码久久久久久按摩观 | 国产精品亚洲成在人线 | 91九色porny首页最多播放 | 日日操操| 成人在线观看免费观看 | 中文字幕高清免费日韩视频在线 | 国产精品久久久久久网站 | 国外成人在线视频网站 | 精品国产不卡一区二区三区 | 日韩在线免费看 | 日韩成人影院 | 99精品一级欧美片免费播放 | 香蕉视频一区二区 | 成人欧美日韩一区二区三区 | 国产一区二区黑人欧美xxxx | 国产九九九九 | 国产激情精品一区二区三区 | 99免费在线观看 | 成人区精品一区二区婷婷 | 国产精品不卡一区 | 亚洲一区二区久久 | 欧美日韩a | 国产精品视频一 | 亚洲精品91 | 国产精品久久久久久52avav | 欧美一级欧美三级在线观看 | av一级在线观看 | 欧美日日| 日韩中文在线 | 午夜伦4480yy私人影院 | 欧美日韩在线综合 | 羞羞的视频在线看 | 在线看成人av | 91精品一区 | 一区二区三区免费 | av在线天堂 | 成人免费xxxxx在线视频 |