新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于ds18b20溫度帶上限程序--LCD1602液晶顯示

基于ds18b20溫度帶上限程序--LCD1602液晶顯示

作者: 時間:2016-11-30 來源:網(wǎng)絡(luò) 收藏
;寫DS18B20的子程序(有具體的時序要求)WRITE_1820:MOV R2,#8;一共8位數(shù)據(jù)CLR CWR1:CLR P2.2MOV R3,#6DJNZ R3,$RRC AMOV P2.2,CMOV R3,#23DJNZ R3,$SETB P2.2NOPDJNZ R2,WR1SETB P2.2RET; 讀DS18B20的程序,從DS18B20中讀出兩個字節(jié)的溫度數(shù)據(jù)READ_18200:MOV R4,#2 ; 將溫度高位和低位從DS18B20中讀出MOV R1,#29H ; 低位存入29H(TEMPER_L),高位存入28H(TEMPER_H)RE00:MOV R2,#8;數(shù)據(jù)一共有8位RE01:CLR CSETB P2.2NOPNOPCLR P2.2NOPNOPNOPSETB P2.2MOV R3,#9RE10:DJNZ R3,RE10MOV C,P2.2MOV R3,#23RE20:DJNZ R3,RE20RRC ADJNZ R2,RE01MOV @R1,ADEC R1DJNZ R4,RE00RET;顯示子程序display: acall DL100MSacall DL100MSmov a,29H;將29H中的十六進制數(shù)轉(zhuǎn)換成10進制mov b,#10 ;10進制/10=10進制div abmov b_bit,a ;十位在amov a_bit,b ;個位在badd a,#00110000bmov b_bit,amov a,badd a,#00110000bmov a_bit,aMOV P1,#00000001B; ;清屏并光標復(fù)位ACALL ENABLE;調(diào)用寫入命令子程序MOV P1,#00111000B ;;設(shè)置顯示模式:8位2行5x7點陣ACALL ENABLE ;調(diào)用寫入命令子程序MOV P1,#00001111B ;;顯示器開、光標開、光標允許閃爍ACALL ENABLE ;調(diào)用寫入命令子程序MOV P1,#00000110B ;;文字不動,光標自動右移ACALL ENABLE ;調(diào)用寫入命令子程序MOV P1,#80H ;;寫入顯示起始地址(第二行第一個位置)ACALL ENABLE ;調(diào)用寫入命令子程序MOV P1,b_bit ;;A十位送出去SETB RS; ;RS=1CLR RW; ;RW=0 ;準備寫入數(shù)據(jù)CLR E; ;E=0 ;執(zhí)行顯示命令A(yù)CALL DELAY ;判斷液晶模塊是否忙?SETB E ;;E=1 ;顯示完成,程序停車MOV P1,#00000110B ;;文字不動,光標自動右移ACALL ENABLE ;調(diào)用寫入命令子程序MOV P1,#81H ;;寫入顯示起始地址(第二行第2個位置)ACALL ENABLE ;調(diào)用寫入命令子程序MOV P1,a_bit;;字母A的代碼SETB RS; ;RS=1CLR RW; ;RW=0 ;準備寫入數(shù)據(jù)CLR E; ;E=0 ;執(zhí)行顯示命令A(yù)CALL DELAY ;判斷液晶模塊是否忙?SETB E ;;E=1 ;顯示完成,程序停車retENABLE:CLR RS; ;寫入控制命令的子程序CLR RWCLR EACALL DELAYSETB ERETDELAY:MOV P1,#0FFH ;;判斷液晶顯示器是否忙的子程序CLR RSSETB RWCLR ENOPSETB EJB P1.7,DELAY; ;如果P1.7為高電平表示忙就循環(huán)等待RETDL100MS: MOV R7,#02HDL1: MOV R6,#0C8HDL2: MOV R5,#0FAHDJNZ R5,$DJNZ R6,DL2DJNZ R7,DL1RETEND
上一頁 1 2 下一頁

關(guān)鍵詞: ds18b20LCD1602液晶顯

評論


技術(shù)專區(qū)

關(guān)閉