基于AT89C51单片机和DS18B20温度传感器、LCD1602液晶显示的数字温度计 汇编程序及电路图

如题所述

只是LCD1602的代码
;多功能51单片机开发板
;LCD1602测试程序

RS EQU P2.0
RW EQU P2.1
E EQU P2.2
LDATA EQU P1

ORG 0000H
AJMP MAIN
ORG 0030H
MAIN: MOV R0,#00H ;R0:每行显示字符的个数
MOV R1,#80H ;寄存器地址
MOV A,#38H ;设置显示(16×2)
ACALL WIR
MOV A,#0EH ;开显示,显示光标,光标不闪烁
ACALL WIR
MOV A,#06H ;整屏显示不移动
ACALL WIR
MOV A,#01H ;显示清屏
ACALL WIR
MOV DPTR,#LCD
LOOP0: MOV A,R1 ;写地址
ACALL WIR
INC R1 ;地址加一
CJNE R1,#90H,TT ;判断第一行写完没有
MOV R1,#0C0H ;若写完,R1=第二行地址
TT: MOV A,R0
MOVC A,@A+DPTR
ACALL WDR
INC R0 ;计数R0加1
LCALL DELAY1
CJNE R0,#20H,LOOP0 ;R1不等于32则继续
RE: AJMP RE

WIR: ACALL BUSY ;写指令寄存器子程序
CLR E ;初始化
CLR RS
CLR RW
SETB E
MOV LDATA,A
CLR E
RET

WDR: ACALL BUSY ;写数据寄存器子程序
CLR E
SETB RS
CLR RW
SETB E
MOV LDATA,A
CLR E
RET

BUSY: PUSH ACC ;检测忙信号子程序
ISBUSY:CLR E
CLR RS
SETB RW
SETB E
MOV A,LDATA
JB ACC.7,ISBUSY ;ACC.7=1,说明忙
POP ACC
ACALL DELAY1
RET

DELAY1:MOV R6,#5 ;延时子程序
D0: MOV R7,#248
DJNZ R7,$
DJNZ R6,D0
RET

DELAY2:MOV R5,#2
D1: MOV R3,#245
D2: MOV R4,#245
DJNZ R4,$
DJNZ R3,D2
DJNZ R5,D1
RET

LCD:DB ' MCS-51 TEST '
DB ' Xu Rui Feng '
END
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-08-01
偷懒!!!
第2个回答  2011-07-29
邮箱给我,给你发去。追问

[email protected]

追答

不好意思啊,没看见,我用的是C。汇编没怎么用。

相似回答