小型风力发电充放电控制系统设计
TAB7
MOV A,#2
LCALL LCD_PRINT
MOV A,#0DFH ;选择要显示的字符
MOV B,#9 ;设置要显示的位置
LCALL LCDP1
MOV A,#0DFH ;选择要显示的字符
MOV B,#18 ;设置要显示的位置
LCALL LCDP1
MOV A,#0DFH ;选择要显示的字符
MOV B,#6 ;设置要显示的位置
LCALL LCDP2
MOV A,#0DFH ;选择要显示的字符
MOV B,#18 ;设置要显示的位置
LCALL LCDP2
RET
LCD_PRINT:
CJNE A,#1,LINE2
LINE1:
MOV A,#80H
LCALL WCOM
LCALL CLR_LINE
MOV A,#80H
LCALL WCOM
LJMP FILL
LINE2:
MOV A,#0C0H
LCALL WCOM
LCALL CLR_LINE
MOV A,#0C0H
LCALL WCOM
FILL:
CLR A
MOVC A,@A+DPTR
CJNE A,#0,L1
RET
L1:
LCALL WDATA
INC DPTR
LJMP FILL
RET
CLR_LINE:
MOV R0,#40
C1:
MOV A,#' '
LCALL WDATA
DJNZ R0,C1
RET
INIT_LCD:
MOV P0,#3CH
LCALL EN1
LCALL EN1
LCALL EN1
MOV P0,#2CH ; 设置工作方式*
LCALL EN1
LCALL INIT_LCD1
RET
EN1:
SETB E
LCALL DE
CLR E
LCALL DE
RET
DE:
MOV R7,#5
DJNZ R7,$
RET
INIT_LCD1: ;4 bit init
MOV A,#2CH ;双列显示 ,5*7点阵
LCALL WCOM
MOV A,#0CH ;光标出现不闪烁
LCALL WCOM
MOV A,#06H ;
LCALL WCOM
MOV A,#01H ;清
LCALL WCOM
RET
WCOM:; 写指令代码子程序
MOV COM,A
ORL A,#0FH
MOV P0,A ; 写入指令代码高 4位
CLR RS
LCALL EN1
MOV A,COM
SWAP A
ORL A,#0FH
MOV P0,A ; 写入指令代码低 4位
CLR RS
LCALL EN1
RET
WDATA: ;写显示数据子程序
MOV DAT,A
ORL A,#0FH
MOV P0,A
SETB RS
LCALL EN1
MOV A,DAT
SWAP A
ORL A,#0FH
MOV P0,A
SETB RS
LCALL EN1
RET
DELAY:
MOV R6,#50
D1:
MOV R7,#100
DJNZ R7,$
DJNZ R6,D1
DJNZ R5,DELAY
RET
DELAY2: MOV R5,#5 ;延时5ms
D2: MOV R6,#248
DJNZ R6,$
DJNZ R5,D2
RET
TAB1:
DB ' Welcome to use ',0 ;0表示光标不显示
TAB2:
DB "temperature CTRLLER ",0
TAB3:
DB ' AUTHOR ZHANG YADONG ',0
TAB4:
DB ' 1:SET,2:+,3:-,4:OK ' ,0
TAB5:
DB ' ',0
TAB6:
DB 'CT: . C RT: C',0
TAB7:
DB 'LT: C HT: C',0
END
7.2 程序2:读18b20序列号程序
;|----------------------------------------------------------------------------|
;| 读出ds1820序列号应用程序,DQ接ds1820 |
;|----------------------------------------------------------------------------|
DQ EQU P0.2
MAIN:
MOV SP,#60H
CLR EA ;使用ds1820一定要禁止任何中断产生
LCALL INT ;初始化ds1820
MOV A,#33H
LCALL WRITE ;送入读ds1820的ROM命令
LCALL READ ;开始读出当前ds1820序列号
MOV 40H,A
LCALL READ
MOV 41H,A
LCALL READ
MOV 42H,A
LCALL READ
MOV 43H,A
LCALL READ
MOV 44H,A
LCALL READ
MOV 45H,A
LCALL READ
MOV 46H,A
LCALL READ
MOV 47H,A
SETB EA
SJMP $
转换和读取
;|----------------------------------------------------------------------------------------------|
;| 获取单个ds1820转化的温度值的应用程序,DQ接ds1820 |
;|----------------------------------------------------------------------------------------------|
GET_TEMP:
CLR PSW.4
SETB PSW.3 ;设置工作寄存器当前所在的区域
CLR EA ;使用ds1820一定要禁止任何中断产生
LCALL INT ;调用初使化子程序
MOV A,#0CCH
LCALL WRITE ;送入跳过ROM命令
MOV A, #44H
LCALL WRITE ;送入温度转换命令
LCALL INT ;温度转换完全,再次初使化ds1820
MOV A,#0CCH
LCALL WRITE ;送入跳过ROM命令
MOV A,#0BEH
LCALL WRITE ;送入读温度暂存器命令
LCALL READ
MOV R7,A ;读出温度值低字节存入R7
LCALL READ
MOV R6,A ;读出谩度值高字节存入R6
SETB EA
RET