DISPLAY3: ;第三行显示5个中文字符
MOV LCDYADD,#01000100B ;
MOV LCDXADD,#10000000B ;扫描初始位置设置
CLR A ;
MOV DPTR,#TABLE2 ;
MOV R6,#7 ;
DISP3: ACALL DISP_C ;
DJNZ R6,DISP3 ;
RET ; ;
;*************************************************************************************************************************************
;子程序名:DISP_C 功能:在LCD上显示一个12x12点阵的中文字符。12x12点阵中文字符共24个字节,每次提取12字节扫描,分两次扫描完成
;入口条件:DPTR(数据表)、A(数据指针)、50H、51H(扫描初始地址存储单元)
;使用资源:A、R5
;子程序嵌套:调用SENDDC/SENDDC1子程序
;*************************************************************************************************************************************
DISP_C: ;
PUSH ACC ;保护A中的数据指针
MOV A,LCDXADD ;扫描初始地址
ACALL SENDDC ;
MOV A,LCDYADD ;
ACALL SENDDC ;
POP ACC ;
MOV R5,#12 ;本次循环取12字节的数据,显示中文字符的上半部分
LOOP: PUSH ACC ;保护A中的数据指针
MOVC A,@A+DPTR ;
ACALL SENDDC1 ;传送数据给LCD
POP ACC ;取出数据指针
INC A ;数据指针加1
DJNZ R5,LOOP ;循环次数未到12,继续取数
INC LCDYADD ;扫描Y地址加1,移动到下一行继续扫描
PUSH ACC ;
MOV A,LCDXADD ;
ACALL SENDDC ;设置新的扫描地址
MOV A,LCDYADD ;
ACALL SENDDC ;
POP ACC ;
MOV R5,#12 ;本次循环显示中文字符的下半部分
LOOP11: PUSH ACC ;
MOVC A,@A+DPTR ;
ACALL SENDDC1 ;
POP ACC ;
INC A ;数据指针加1
INC LCDXADD ;X地址加1,为下一个字符的扫描做准备
DJNZ R5,LOOP11 ;循环次数未到12,继续取数
DEC LCDYADD ;Y地址减1,回到初始位置
RET ;
;************************************************************************************************************************************
;子程序名:DISP_E 功能:在LCD上显示一个6x12点阵的英文或数字字符。6x12字符共12个字节,每次提取6字节数据,分两次扫描完成
;入口条件:DPTR(数据表)、A(数据指针)、50H、51H(扫描初始地址存储单元)
;使用资源:A、R5
;子程序嵌套:调用SENDDC/SENDDC1子程序
;************************************************************************************************************************************
DISP_E: ;
PUSH ACC ;
MOV A,LCDXADD ;扫描初始地址
ACALL SENDDC ;
MOV A,LCDYADD ;
ACALL SENDDC ;
POP ACC ;
MOV R5,#6 ;本次循环取6字节的数据,显示字符的上半部分
LOOP22: PUSH ACC ;保护A中的数据指针
MOVC A,@A+DPTR ;
ACALL SENDDC1 ;传送数据给LCD
POP ACC ;取出数据指针
INC A ;数据指针加1
DJNZ R5,LOOP22 ;循环次数未到6,继续取数
INC LCDYADD ;扫描Y地址加1
PUSH ACC ;
MOV A,LCDXADD ;
ACALL SENDDC ;设置新的扫描地址
MOV A,LCDYADD ;
ACALL SENDDC ;
POP ACC ;
MOV R5,#6 ;本次循环显示字符的下半部分
LOOP33: PUSH ACC ;
MOVC A,@A+DPTR ;
ACALL SENDDC1 ;传送数据给LCD
POP ACC ;
INC A ;
INC LCDXADD ;X地址加1,为下一个字符的扫描做准备
DJNZ R5,LOOP33 ;循环次数未到6,继续取数
DEC LCDYADD ;Y地址减1,回到初始位置
RET
;**********************************************************
;子程序名:LCDRESET 功能:LCD复位
;入口条件:无
;使用资源:LCD_RES
;子程序嵌套:无
;**********************************************************
LCDRESET:
CLR LCD_RES ;LCD_RES位置0
NOP ;延时
NOP ;
NOP ;
SETB LCD_RES ;LCD_RES位置1
RET ;
;***************************************************************************************************
;子程序名:LCDCLR 功能:LCD清屏。5110LCD没有专用的清屏指令,采用全部写0的方式清屏
;入口条件:无
;使用资源:A、R2、R3
;子程序嵌套:调用SENDDC1子程序
;***************************************************************************************************
LCDCLR:
MOV R3,#84 ;x地址的循环次数
LCDCLR1: MOV R2,#6 ;y地址的循环次数
LCDCLR2: MOV A,#00H ;要写入LCD的数据
ACALL SENDDC1 ;
DJNZ R2,LCDCLR2 ;
DJNZ R3,LCDCLR1 ;
RET
;****************************************************************************************************
;子程序名:SENDDC/SENDDC1 功能:给LCD传送数据或指令。SENDDC:传送命令;SENDDC1:传送数据
;入口条件:A(数据或指令)
;使用资源:A;R7;LCD_DC;LCD_CE;LCD_CLK;LCD_DIN;
;子程序嵌套:无
;****************************************************************************************************
SENDDC:
CLR LCD_DC ;DC置0,传送指令
SENDDC1:
CLR LCD_CE ;芯片使能
MOV R7,#08H ;每次次传送8位数据
SENDDC2:
CLR LCD_CLK ;时钟信号
RLC A ;数据每次从高位移动到CY位
MOV LCD_DIN,C ;传送数据
SETB LCD_CLK ;
DJNZ R7,SENDDC2 ;
SETB LCD_DC ;DC置1,为下一次传送做准备
SETB LCD_CE ;
RET
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
TABLE:
;-- 文字: 0 --
;-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --
;-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --;
DB 0F8H,004H,004H,004H,0F8H,000H,001H,002H,002H,002H,001H,000H
;-- 文字: 1 --
;-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --
;-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --;
DB 000H,008H,0FCH,000H,000H,000H,000H,002H,003H,002H,000H,000H
;-- 文字: 2 --
;-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --
;-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --;
DB 018H,084H,044H,024H,018H,000H,003H,002H,002H,002H,002H,000H
;-- 文字: 3 --
;-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --
;-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --;
DB 008H,004H,024H,024H,0D8H,000H,001H,002H,002H,002H,001H,000H
;-- 文字: 4 --
;-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --
;-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --;
DB 040H,0B0H,088H,0FCH,080H,000H,000H,000H,000H,003H,002H,000H
;-- 文字: 5 --
;-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --
;-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --;
DB 03CH,024H,024H,024H,0C4H,000H,001H,002H,002H,002H,001H,000H
;-- 文字: 6 --
;-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --
;-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --;
DB 0F8H,024H,024H,02CH,0C0H,000H,001H,002H,002H,002H,001H,000H
;-- 文字: 7 --
;-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --
;-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --;
DB 00CH,004H,0E4H,01CH,004H,000H,000H,000H,003H,000H,000H,000H
;-- 文字: 8 --
;-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --
;-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --;
DB 0D8H,024H,024H,024H,0D8H,000H,001H,002H,002H,002H,001H,000H
;-- 文字: 9 --
;-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --
;-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --;
DB 038H,044H,044H,044H,0F8H,000H,000H,003H,002H,002H,001H,000H
;-- 文字: a --
;-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --
;-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --;
DB 000H,040H,0A0H,0A0H,0C0H,000H,000H,001H,002H,002H,003H,002H
;-- 文字: b --
;-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --
;-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --;
DB 004H,0FCH,020H,020H,0C0H,000H,000H,003H,002H,002H,001H,000H
;-- 文字: c --
;-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --
;-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --;
DB 000H,0C0H,020H,020H,060H,000H,000H,001H,002H,002H,002H,000H
;-- 文字: d --
;-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --
;-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --;
DB 000H,0C0H,020H,024H,0FCH,000H,000H,001H,002H,002H,003H,002H
TABLE1:
;-- 文字: 当 --
;-- 宋体9; 此字体下对应的点阵为:宽x高=12x12 --
;-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --;
DB 010H,092H,094H,090H,090H,09FH,090H,098H,094H,0F2H,000H,000H,004H,004H,004H,004H
DB 004H,004H,004H,004H,004H,007H,000H,000H
;-- 文字: 前 --
;-- 宋体9; 此字体下对应的点阵为:宽x高=12x12 --
;-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --;
DB 004H,0F4H,054H,055H,0F6H,004H,006H,0F5H,004H,0F6H,004H,000H,000H,007H,001H,005H
DB 007H,000H,000H,005H,004H,007H,000H,000H
;-- 文字: 温 --
;-- 宋体9; 此字体下对应的点阵为:宽x高=12x12 --
;-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --;
DB 089H,072H,000H,0C0H,05FH,0D5H,055H,0D5H,055H,0DFH,000H,000H,007H,000H,004H,007H
DB 004H,007H,004H,007H,004H,007H,004H,000H
;-- 文字: 度 --
;-- 宋体9; 此字体下对应的点阵为:宽x高=12x12 --
;-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --;
DB 000H,0FEH,00AH,08AH,0BEH,0AAH,0ABH,0AAH,0BEH,00AH,00AH,000H,006H,001H,004H,004H
DB 004H,003H,002H,003H,004H,004H,004H,000H
;-- 文字: : --
;-- 宋体9; 此字体下对应的点阵为:宽x高=12x12 --
;-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --;
DB 000H,000H,000H,000H,08CH,08CH,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 001H,001H,000H,000H,000H,000H,000H,000H
TABLE2:
;-- 文字: 任 --
;-- 宋体9; 此字体下对应的点阵为:宽x高=12x12 --
;-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --;
DB 020H,010H,0FCH,023H,024H,024H,024H,0FEH,022H,022H,020H,000H,000H,000H,007H,000H
DB 004H,004H,004H,007H,004H,004H,004H,000H
;-- 文字: 卫 --
;-- 宋体9; 此字体下对应的点阵为:宽x高=12x12 --
;-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --;
DB 000H,001H,001H,001H,001H,0FFH,001H,041H,041H,07FH,000H,000H,004H,004H,004H,004H
DB 004H,007H,004H,004H,004H,004H,004H,000H
;-- 文字: 东 --
;-- 宋体9; 此字体下对应的点阵为:宽x高=12x12 --
;-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --;
DB 002H,022H,032H,0AAH,026H,0FBH,022H,062H,0A2H,022H,002H,000H,002H,002H,001H,000H
DB 004H,007H,000H,000H,000H,001H,002H,000H
;-- 文字: 设 --
;-- 宋体9; 此字体下对应的点阵为:宽x高=12x12 --
;-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --;
DB 010H,011H,0F2H,020H,010H,06FH,0A1H,021H,0AFH,068H,008H,000H,000H,000H,003H,005H
DB 004H,004H,002H,001H,002H,004H,004H,000H
;-- 文字: 计 --
;-- 宋体9; 此字体下对应的点阵为:宽x高=12x12 --
;-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --;
DB 010H,0F1H,002H,000H,010H,010H,010H,0FFH,010H,010H,010H,000H,000H,007H,002H,001H
DB 000H,000H,000H,007H,000H,000H,000H,000H
;-- 文字: 制 --
;-- 宋体9; 此字体下对应的点阵为:宽x高=12x12 --
;-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --;
DB 018H,0D6H,054H,0FFH,054H,056H,0D4H,000H,0FCH,000H,0FFH,000H,000H,003H,000H,007H
DB 000H,002H,003H,000H,004H,004H,007H,000H
;-- 文字: 造 --
;-- 宋体9; 此字体下对应的点阵为:宽x高=12x12 --
;-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --;
DB 010H,0F1H,002H,010H,0D8H,056H,054H,05FH,054H,0D4H,010H,000H,006H,001H,002H,002H
DB 005H,005H,005H,005H,005H,005H,004H,000H
TABLE3:
;-- 文字: . --
;-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --
;-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --;
DB 000H,000H,000H,000H,000H,000H,000H,002H,000H,000H,000H,000H
;-- 文字: - --
;-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --
;-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --;
DB 020H,020H,020H,020H,020H,000H,000H,000H,000H,000H,000H,000H
TABLE4:
;-- 文字: ℃ --
;-- 宋体9; 此字体下对应的点阵为:宽x高=12x12 --
;-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --;
DB 00EH,00AH,00EH,0F8H,004H,002H,002H,002H,004H,08EH,000H,000H,000H,000H,000H,000H
DB 001H,002H,002H,002H,002H,001H,000H,000H
END
硬件电路很简单,也就是单片机最小系统+18b20+5110LCD的连接,就不画出来了