基于AT89C51单片机和DS18B20温度传感器、LCD1602液晶显示的数字温度计 汇编程序及电路图
发布网友
发布时间:2022-05-08 11:25
我来回答
共3个回答
热心网友
时间:2024-01-24 03:15
只是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
热心网友
时间:2024-01-24 03:15
偷懒!!!
热心网友
时间:2024-01-24 03:16
邮箱给我,给你发去。追问hero819@163.com
追答不好意思啊,没看见,我用的是C。汇编没怎么用。