; 1.- NC ; 2.- Vou Contrast ; 3.- RST reset ; 4.- CS3 Chip select, columns 101-150 ; 5.- CS2 Chip select, columns 51-100 ; 6.- CS1 Chip select, columns 1-50 ; 7.- VLED Connected to VDD ; 8.- D7 ; 9.- D6 ; 10.- D5 ; 11.- D4 ; 12.- D3 ; 13.- D2 ; 14.- D1 ; 15.- D0 ; 16.- VDD Logic Power Supply 5V ; 17.- D/I ; 18.- /RW(RD) ; 19.- /WR--------E ; 20.- GND ; ***************************************************************** ; *LM7221SGL点阵液晶驱动程序[column driver:T7932;row driver:T7933]* ; ***************************************************************** E_T7932 BIT P2.0; 片使能信号,下降沿写数据锁存;高电平时输出给单片机 RW_T7932 BIT P2.1; 读写控制信号,H:读;L:写 DI_T7932 BIT P2.2; H:数据;L:指令 CS3A_T7932 BIT P2.6; T7932(IC1)片选信号,H:使能 CS3B_T7932 BIT P2.5; T7932(IC2)片选信号,H:使能 CS3C_T7932 BIT P2.4; T7932(IC3)片选信号,H:使能 RST_T7932 BIT P2.3; T7932复位信号,低电平有效 LED_T7932 BIT P2.7; 背光控制,低电平有效 Busy_T7932 BIT P0.7; 液晶忙标志 Data_t7932 EQU P0; 液晶数据IO使用P0口 SelectFlag BIT 20H.0; 反白标志,高电平有效 IntFlag BIT 20H.1; 数据类型标志,高电平表示有符号数,低电平表示无符号数 Databuf EQU 21H; 通用数据缓存 Address EQU 22H; 液晶绘图起始地址 ByteCount EQU 23H; 通用读写字节数(液晶,DS1302)计数 EndAdr EQU 24H; 液晶绘图结束地址 Chip EQU 25H; 液晶片选 PageN EQU 26H; 液晶页选 DPLbuf EQU 27H; DPTR低位地址缓存 DPHbuf EQU 28H; DPTR高位地址缓存 ORG 0000H SJMP Main Main: MOV R7,#09; MOV R0,#20H; ClearMemory: MOV @R0,#00H; INC R0; DJNZ R7,ClearMemory; CALL T7932_Init; 初始化 CALL T7932_Clear; 清屏 CLR LED_T7932; 开背光 ; 液晶驱动使用示例一 ;/************************************************* ; 8*16字体字符串 enjoydiy SETB SelectFlag; MOV DPTR,#Table_Str; MOV PageN,#00H; 显示页的地址(0-3) MOV Address,#00; 显示地址0-149(00H-95H) CALL T7932_WriStr8_16; ; 紧接着是6*8字体字符串 enjoydiy SETB SelectFlag; MOV DPTR,#Table_Str CALL T7932_WriStr6_8; 调用显示字符串子程序 ; 单个ASCLL码字符 a MOV A,#61H; CALL T7932_WriSigalASCLL8_16; MOV A,#61H; CALL T7932_WriSigalASCLL6_8; MOV Address,#00; MOV PageN,#02H; ; 整型数据显示,方法一 255 MOV A,#0FFH; CALL Hex_Num2ASCLL; MOV A,R7; CALL T7932_WriSigalASCLL6_8; MOV A,R6; CALL T7932_WriSigalASCLL6_8; MOV A,R5; CALL T7932_WriSigalASCLL6_8; ; 整型数据显示,方法二 MOV A,#0FFH; 255 CALL Display_INT_Number; SETB IntFlag; 声明为有符号数 MOV A,#0FFH; -127 CALL Display_INT_Number; ;*********************************************/ AJMP $; ; ************ ; *读忙子程序* ; ************ ; 功能: ; 液晶读忙 ; 入口参数: ; 无 ; 出口参数: ; 无 ; 占用资源: ; 无 T7932_busy: CLR DI_T7932; SETB RW_T7932; MOV Data_t7932,#0FFH; SETB E_T7932; JB Busy_T7932,T7932_busy; RET ; ****************** ; *液晶初始化子程序* ; ****************** ; 功能: ; 液晶初始化,液晶开,设定起始页PageN0-3循环 ; 入口参数: ; 无 ; 出口参数: ; 无 ; 占用资源: ; 无 T7932_Init: CLR E_T7932; 液晶复位 CLR RST_T7932; SETB RST_T7932; CLR DI_T7932; 判断复位是否成功 SETB RW_T7932; MOV Data_t7932,#0FFH; SETB E_T7932; JB Data_t7932.4,$; SETB CS3A_T7932; 显示开(详见T7932的Datasheet) SETB CS3B_T7932; CLR CS3C_T7932; CALL T7932_busy; CLR DI_T7932; CLR RW_T7932; SETB E_T7932; MOV Data_t7932,#39H; CLR E_T7932; CALL T7932_busy; 设置起始页(详见T7932的Datasheet) CLR DI_T7932; CLR RW_T7932; SETB E_T7932; MOV Data_t7932,#3EH; CLR E_T7932; RET ; **************************** ; *液晶显示起始地址设定子程序* ; **************************** ; 功能: ; 设定液晶显示起始地址,根据片选值设定片选 ; 入口参数: ; Chip. 片选值(Chip = 00 or 01 or 10) ; PageN. 页地址 ; Address. 显示地址(0-49) ; 出口参数: ; 无 ; 占用资源: ; A,Chip,PageN,Address T7932_SetAddress: MOV A,Chip; 设置片选 JNB ACC.1,Chip_10; 若Chip为10,则IC3=1,IC1=IC2=0 CLR CS3A_T7932; CLR CS3B_T7932; SETB CS3C_T7932; SJMP ChipSetEnd; Chip_10: CLR CS3C_T7932; 否则IC3=0 Chip_01: JNB ACC.0,Chip_00; 若Chip为01,则IC2=1,IC3=IC1=0 CLR CS3A_T7932; SETB CS3B_T7932; SJMP ChipSetEnd; Chip_00: SETB CS3A_T7932; 否则IC1=1,IC3=IC2=0 CLR CS3B_T7932; ChipSetEnd: MOV A,PageN; RL A; RL A; SWAP A; ADD A,Address; 合成页地址和显示起始地址(详见T7932的Datasheet) CALL T7932_busy; CLR DI_T7932; CLR RW_T7932; SETB E_T7932; 写入显示起始地址 MOV Data_t7932,A; CLR E_T7932; RET ; ************ ; *清屏子程序* ; ************ ; 功能: ; 液晶清屏,先使能片选1再逐页清屏,接着是片2和片3,方法同样 ; 入口参数: ; 无 ; 出口参数: ; 无 ; 占用资源: ; A,R7,R6,R5,Chip,PageN,Address T7932_Clear: MOV R7,#32H; MOV R6,#04H; MOV R5,#03; MOV Chip,#00H; MOV PageN,#00H; ClearNextPage: MOV Address,#00H; CALL T7932_SetAddress; Next: CALL T7932_busy; SETB DI_T7932; CLR RW_T7932; SETB E_T7932; MOV Data_t7932,#00H; CLR E_T7932; DJNZ R7,Next; MOV R7,#32H; INC PageN; 清下一页 DJNZ R6,ClearNextPage; MOV PageN,#00H; MOV R6,#04H; INC Chip; 清下一片 DJNZ R5,ClearNextPage; RET ; ********************* ; *自定义字符,字符串表* ; ********************* ; 功能: ; 在此定义将要显示的字符串 ; 入口参数: ; DPTR ; 出口参数: ; 返回字符在ASCLL码表中的值 Table_Str: DB "enjoydiy",0; ; ********************************8*6LCD点阵字库************************ ; 包括以下ASCII字符: ; !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` ; abcdefghijklmnopqrstuvwxyz{|} ; ********************************************************************** Table_ASCLL6_8: DB 0x00,0x00,0x00,0x00,0x00,0x00 ; DB 0x00,0xBE,0x00,0x00,0x00,0x00 ; ! DB 0x07,0x00,0x07,0x00,0x00,0x00 ; " DB 0x24,0xFE,0x24,0xFE,0x24,0x00 ; # DB 0x4C,0x92,0xFF,0x92,0x64,0x00 ; $ DB 0x8E,0x6E,0x10,0xEC,0xE2,0x00 ; % DB 0x60,0x94,0x9A,0x64,0xA0,0x00 ; & DB 0x04,0x03,0x00,0x00,0x00,0x00 ; ' DB 0x00,0x3C,0x42,0x81,0x00,0x00 ; ( DB 0x81,0x42,0x3C,0x00,0x00,0x00 ; ) DB 0x12,0x0C,0x3F,0x0C,0x12,0x00 ; * DB 0x00,0x08,0x3E,0x08,0x00,0x00 ; + DB 0xA0,0x60,0x00,0x00,0x00,0x00 ; , DB 0x08,0x08,0x08,0x08,0x00,0x00 ; - DB 0x40,0x40,0x00,0x00,0x00,0x00 ; . DB 0xC0,0x30,0x0C,0x03,0x00,0x00 ; / DB 0x3E,0x41,0x41,0x3E,0x00,0x00 ; 0 DB 0x00,0x02,0x7F,0x00,0x00,0x00 ; 1 DB 0x62,0x51,0x49,0x46,0x00,0x00 ; 2 DB 0x22,0x49,0x49,0x36,0x00,0x00 ; 3 DB 0x30,0x2C,0x23,0x7F,0x20,0x00 ; 4 DB 0x27,0x45,0x45,0x39,0x00,0x00 ; 5 DB 0x3E,0x49,0x49,0x32,0x00,0x00 ; 6 DB 0x01,0x71,0x0D,0x03,0x00,0x00 ; 7 DB 0x36,0x49,0x49,0x36,0x00,0x00 ; 8 DB 0x26,0x49,0x49,0x3E,0x00,0x00 ; 9 DB 0x00,0x48,0x48,0x00,0x00,0x00 ; : DB 0x00,0xA2,0x62,0x00,0x00,0x00 ; ; DB 0x08,0x14,0x22,0x41,0x00,0x00 ; < DB 0x14,0x14,0x14,0x14,0x00,0x00 ; = DB 0x41,0x22,0x14,0x08,0x00,0x00 ; > DB 0x02,0x01,0xD9,0x06,0x00,0x00 ; ? DB 0x3E,0x41,0x5D,0x55,0x1E,0x00 ; @ DB 0x7C,0x13,0x13,0x7C,0x00,0x00 ; A DB 0x7F,0x49,0x49,0x36,0x00,0x00 ; B DB 0x3E,0x41,0x41,0x22,0x00,0x00 ; C DB 0x7F,0x41,0x41,0x3E,0x00,0x00 ; D DB 0x7F,0x49,0x49,0x41,0x00,0x00 ; E DB 0x7F,0x09,0x09,0x01,0x00,0x00 ; F DB 0x3E,0x41,0x49,0x7A,0x00,0x00 ; G DB 0x7F,0x08,0x08,0x7F,0x00,0x00 ; H DB 0x00,0x7F,0x00,0x00,0x00,0x00 ; I DB 0x20,0x40,0x40,0x3F,0x00,0x00 ; J DB 0x7F,0x08,0x14,0x63,0x00,0x00 ; K DB 0x7F,0x40,0x40,0x40,0x00,0x00 ; L DB 0x7F,0x0C,0x70,0x0C,0x7F,0x00 ; M DB 0x7F,0x0C,0x30,0x7F,0x00,0x00 ; N DB 0x3E,0x41,0x41,0x3E,0x00,0x00 ; O DB 0x7F,0x11,0x11,0x0E,0x00,0x00 ; P DB 0x3E,0x51,0x21,0x5E,0x00,0x00 ; Q DB 0x7F,0x09,0x09,0x76,0x00,0x00 ; R DB 0x26,0x49,0x49,0x32,0x00,0x00 ; S DB 0x01,0x01,0x7F,0x01,0x01,0x00 ; T DB 0x3F,0x40,0x40,0x3F,0x00,0x00 ; U DB 0x07,0x18,0x60,0x18,0x07,0x00 ; V DB 0x0F,0x70,0x0F,0x70,0x0F,0x00 ; W DB 0x63,0x1C,0x1C,0x63,0x00,0x00 ; X DB 0x03,0x04,0x78,0x04,0x03,0x00 ; Y DB 0x61,0x51,0x4D,0x43,0x00,0x00 ; Z DB 0x00,0x00,0xFF,0x81,0x00,0x00 ; [ DB 0x03,0x0C,0x70,0x80,0x00,0x00 ; \ DB 0x81,0xFF,0x00,0x00,0x00,0x00 ; ] DB 0x02,0x01,0x02,0x00,0x00,0x00 ; ^ DB 0x80,0x80,0x80,0x80,0x80,0x00 ; _ DB 0x01,0x02,0x00,0x00,0x00,0x00 ; ` DB 0x24,0x54,0x54,0x78,0x00,0x00 ; a DB 0x7F,0x44,0x44,0x38,0x00,0x00 ; b DB 0x38,0x44,0x44,0x28,0x00,0x00 ; c DB 0x38,0x44,0x44,0x7F,0x00,0x00 ; d DB 0x38,0x54,0x54,0x58,0x00,0x00 ; e DB 0x04,0x7E,0x05,0x04,0x00,0x00 ; f DB 0x6C,0x92,0xAC,0x62,0x00,0x00 ; g DB 0x7F,0x04,0x04,0x78,0x00,0x00 ; h DB 0x00,0x00,0x7D,0x00,0x00,0x00 ; i DB 0x80,0x80,0x7D,0x00,0x00,0x00 ; j DB 0x7F,0x10,0x18,0x64,0x00,0x00 ; k DB 0x00,0x00,0x7F,0x00,0x00,0x00 ; l DB 0x7C,0x04,0x78,0x04,0x78,0x00 ; m DB 0x7C,0x04,0x04,0x78,0x00,0x00 ; n DB 0x38,0x44,0x44,0x38,0x00,0x00 ; o DB 0xFC,0x24,0x24,0x18,0x00,0x00 ; p DB 0x18,0x24,0x24,0xFC,0x00,0x00 ; q DB 0x7C,0x08,0x04,0x00,0x00,0x00 ; r DB 0x48,0x54,0x54,0x24,0x00,0x00 ; s DB 0x04,0x3F,0x44,0x44,0x00,0x00 ; t DB 0x3C,0x40,0x40,0x7C,0x00,0x00 ; u DB 0x1C,0x60,0x60,0x1C,0x00,0x00 ; v DB 0x1C,0x60,0x1C,0x60,0x1C,0x00 ; w DB 0x64,0x18,0x18,0x64,0x00,0x00 ; x DB 0x0C,0x90,0x60,0x1C,0x00,0x00 ; y DB 0x64,0x54,0x4C,0x44,0x00,0x00 ; z DB 0x00,0x08,0x76,0x81,0x00,0x00 ; { DB 0x00,0x00,0xFF,0x00,0x00,0x00 ; | DB 0x81,0x76,0x08,0x00,0x00,0x00 ; } ; ********************************8*16LCD点阵字库******************** ; 包括以下ASCII字符: ; !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` ; abcdefghijklmnopqrstuvwxyz{|} ; ******************************************************************* Table_ASCLL8_16: /*- 文字: -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /*- 文字: ! -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x00,0x70,0xF8,0xF8,0x70,0x00,0x00,0x00,0x00,0x00,0x0D,0x0D,0x00,0x00,0x00 /*- 文字: " -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x38,0x38,0x00,0x00,0x38,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /*- 文字: # -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x20,0xF8,0xF8,0x20,0xF8,0xF8,0x20,0x00,0x02,0x0F,0x0F,0x02,0x0F,0x0F,0x02 /*- 文字: $ -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x30,0x78,0xCE,0x8E,0x18,0x10,0x00,0x00,0x04,0x0C,0x38,0x39,0x0F,0x06,0x00 /*- 文字: % -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x18,0x3C,0x24,0xBC,0xD8,0x60,0x30,0x00,0x00,0x06,0x03,0x0D,0x1E,0x12,0x1E,0x0C /*- 文字: & -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xB0,0xF8,0x48,0x78,0x30,0x00,0x00,0x00,0x07,0x0F,0x08,0x09,0x07,0x0F,0x09 /*- 文字: ' -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x00,0x00,0x38,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /*- 文字: ( -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x00,0xC0,0xF0,0x38,0x08,0x00,0x00,0x00,0x00,0x07,0x1F,0x38,0x20,0x00,0x00 /*- 文字: ) -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x00,0x08,0x38,0xF0,0xC0,0x00,0x00,0x00,0x00,0x20,0x38,0x1F,0x07,0x00,0x00 /*- 文字: * -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x80,0xA0,0xE0,0xC0,0xE0,0xA0,0x80,0x00,0x00,0x02,0x03,0x01,0x03,0x02,0x00 /*- 文字: + -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x80,0x80,0xE0,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x03,0x03,0x00,0x00,0x00 /*- 文字: , -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2C,0x3C,0x1C,0x00,0x00 /*- 文字: - -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /*- 文字: . -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x0C,0x0C,0x00,0x00 /*- 文字: / -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x00,0x00,0x80,0xE0,0x78,0x18,0x00,0x00,0x18,0x1E,0x07,0x01,0x00,0x00,0x00 /*- 文字: 0 -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x00,0xF0,0xF8,0x08,0x68,0xF8,0xF0,0x00,0x00,0x07,0x0F,0x0B,0x08,0x0F,0x07 /*- 文字: 1 -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x20,0x20,0x30,0xF8,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x00,0x00 /*- 文字: 2 -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x30,0x38,0x08,0x88,0xF8,0x70,0x00,0x00,0x0C,0x0E,0x0B,0x09,0x08,0x08,0x00 /*- 文字: 3 -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x30,0x38,0x88,0x88,0xF8,0x70,0x00,0x00,0x06,0x0E,0x08,0x08,0x0F,0x07,0x00 /*- 文字: 4 -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x00,0xF8,0xF8,0x00,0xE0,0xE0,0x00,0x00,0x03,0x03,0x02,0x02,0x0F,0x0F,0x02 /*- 文字: 5 -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xF8,0xF8,0x88,0x88,0x88,0x08,0x00,0x00,0x08,0x08,0x08,0x0C,0x07,0x03,0x00 /*- 文字: 6 -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xC0,0xE0,0x78,0x58,0xC8,0x80,0x00,0x00,0x07,0x0F,0x08,0x08,0x0F,0x07,0x00 /*- 文字: 7 -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x08,0x08,0x88,0xE8,0x78,0x18,0x00,0x00,0x00,0x0E,0x0F,0x01,0x00,0x00,0x00 /*- 文字: 8 -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x70,0xF8,0xC8,0x88,0xF8,0x70,0x00,0x00,0x07,0x0F,0x08,0x09,0x0F,0x07,0x00 /*- 文字: 9 -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xF0,0xF8,0x08,0x08,0xF8,0xF0,0x00,0x00,0x00,0x09,0x0D,0x0F,0x03,0x01,0x00 /*- 文字: : -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x00,0x00,0x60,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x0C,0x0C,0x0C,0x00,0x00 /*- 文字: ; -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x00,0x00,0x60,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x2C,0x3C,0x1C,0x00,0x00 /*- 文字: < -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x80,0xC0,0x60,0x30,0x18,0x08,0x00,0x00,0x00,0x01,0x03,0x06,0x0C,0x08,0x00 /*- 文字: = -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00 /*- 文字: > -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x08,0x18,0x30,0x60,0xC0,0x80,0x00,0x00,0x08,0x0C,0x06,0x03,0x01,0x00,0x00 /*- 文字: ? -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x30,0x38,0x88,0xC8,0x78,0x30,0x00,0x00,0x00,0x00,0x0D,0x0D,0x00,0x00,0x00 /*- 文字: @ -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0xF0,0xF8,0x08,0x88,0xC8,0x48,0xF8,0xF0,0x07,0x0F,0x08,0x09,0x0B,0x0A,0x0B,0x0B /*- 文字: A -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xE0,0xF0,0x18,0x18,0xF0,0xE0,0x00,0x00,0x0F,0x0F,0x01,0x01,0x0F,0x0F,0x00 /*- 文字: B -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xF8,0xF8,0x88,0x88,0xF8,0x70,0x00,0x00,0x0F,0x0F,0x08,0x08,0x0F,0x07,0x00 /*- 文字: C -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xF0,0xF8,0x08,0x08,0x38,0x30,0x00,0x00,0x07,0x0F,0x08,0x08,0x0E,0x06,0x00 /*- 文字: D -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xF8,0xF8,0x08,0x18,0xF0,0xE0,0x00,0x00,0x0F,0x0F,0x08,0x0C,0x07,0x03,0x00 /*- 文字: E -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xF8,0xF8,0x88,0x88,0x88,0x08,0x00,0x00,0x0F,0x0F,0x08,0x08,0x08,0x08,0x00 /*- 文字: F -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xF8,0xF8,0x88,0x88,0x88,0x08,0x00,0x00,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00 /*- 文字: G -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xF0,0xF8,0x08,0x08,0x38,0x30,0x00,0x00,0x07,0x0F,0x08,0x09,0x0F,0x0F,0x00 /*- 文字: H -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xF8,0xF8,0x80,0x80,0xF8,0xF8,0x00,0x00,0x0F,0x0F,0x00,0x00,0x0F,0x0F,0x00 /*- 文字: I -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x00,0x08,0xF8,0xF8,0x08,0x00,0x00,0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00 /*- 文字: J -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0x00,0x00,0x06,0x0E,0x08,0x08,0x0F,0x07,0x00 /*- 文字: K -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xF8,0xF8,0x80,0xE0,0x78,0x18,0x00,0x00,0x0F,0x0F,0x00,0x03,0x0F,0x0C,0x00 /*- 文字: L -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xF8,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x08,0x08,0x08,0x08,0x00 /*- 文字: M -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xF8,0xF8,0x20,0xC0,0x20,0xF8,0xF8,0x00,0x0F,0x0F,0x00,0x01,0x00,0x0F,0x0F /*- 文字: N -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xF8,0xF8,0x60,0xC0,0x80,0xF8,0xF8,0x00,0x0F,0x0F,0x00,0x00,0x01,0x0F,0x0F /*- 文字: O -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xF0,0xF8,0x08,0x08,0xF8,0xF0,0x00,0x00,0x07,0x0F,0x08,0x08,0x0F,0x07,0x00 /*- 文字: P -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xF8,0xF8,0x88,0x88,0xF8,0x70,0x00,0x00,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00 /*- 文字: Q -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xF0,0xF8,0x08,0x08,0xF8,0xF0,0x00,0x00,0x07,0x0F,0x08,0x18,0x3F,0x27,0x00 /*- 文字: R -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xF8,0xF8,0x88,0x88,0xF8,0x70,0x00,0x00,0x0F,0x0F,0x00,0x01,0x0F,0x0E,0x00 /*- 文字: S -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x30,0x78,0xC8,0x88,0x18,0x10,0x00,0x00,0x04,0x0C,0x08,0x09,0x0F,0x06,0x00 /*- 文字: T -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x08,0x08,0xF8,0xF8,0x08,0x08,0x00,0x00,0x00,0x00,0x0F,0x0F,0x00,0x00,0x00 /*- 文字: U -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xF8,0xF8,0x00,0x00,0xF8,0xF8,0x00,0x00,0x07,0x0F,0x08,0x08,0x0F,0x07,0x00 /*- 文字: V -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xF8,0xF8,0x00,0x00,0xF8,0xF8,0x00,0x00,0x03,0x07,0x0C,0x0C,0x07,0x03,0x00 /*- 文字: W -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xF8,0xF8,0x00,0xC0,0x00,0xF8,0xF8,0x00,0x01,0x0F,0x0E,0x01,0x0E,0x0F,0x01 /*- 文字: X -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x18,0x38,0xE0,0xC0,0x38,0x18,0x00,0x00,0x0E,0x0F,0x00,0x01,0x0F,0x0E,0x00 /*- 文字: Y -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x78,0xF8,0x80,0x80,0xF8,0x78,0x00,0x00,0x00,0x00,0x0F,0x0F,0x00,0x00,0x00 /*- 文字: Z -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x08,0x08,0x88,0xC8,0x78,0x38,0x00,0x00,0x0E,0x0F,0x09,0x08,0x08,0x08,0x00 /*- 文字: [ -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x00,0xF8,0xF8,0x08,0x08,0x00,0x00,0x00,0x00,0x7F,0x7F,0x40,0x40,0x00,0x00 /*- 文字: \ -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x18,0x78,0xE0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x07,0x1E,0x18,0x00 /*- 文字: ] -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x00,0x08,0x08,0xF8,0xF8,0x00,0x00,0x00,0x00,0x40,0x40,0x7F,0x7F,0x00,0x00 /*- 文字: ^ -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x08,0x0C,0x06,0x06,0x0C,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /*- 文字: _ -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40 /*- 文字: ` -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x00,0x02,0x06,0x0E,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /*- 文字: a -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x00,0x20,0x20,0x20,0xE0,0xC0,0x00,0x00,0x06,0x0F,0x09,0x09,0x0F,0x0F,0x00 /*- 文字: b -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xF8,0xF8,0x20,0x20,0xE0,0xC0,0x00,0x00,0x0F,0x0F,0x08,0x08,0x0F,0x07,0x00 /*- 文字: c -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xC0,0xE0,0x20,0x20,0x60,0x40,0x00,0x00,0x07,0x0F,0x08,0x08,0x0C,0x04,0x00 /*- 文字: d -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xC0,0xE0,0x20,0x20,0xF8,0xF8,0x00,0x00,0x07,0x0F,0x08,0x08,0x0F,0x0F,0x00 /*- 文字: e -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xC0,0xE0,0x20,0x20,0xE0,0xC0,0x00,0x00,0x07,0x0F,0x09,0x09,0x09,0x01,0x00 /*- 文字: f -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x80,0xF0,0xF8,0x88,0x88,0x88,0x00,0x00,0x00,0x0F,0x0F,0x00,0x00,0x00,0x00 /*- 文字: g -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xC0,0xE0,0x20,0x20,0xE0,0xE0,0x00,0x00,0x47,0x4F,0x48,0x48,0x7F,0x3F,0x00 /*- 文字: h -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xF8,0xF8,0x20,0x20,0xE0,0xC0,0x00,0x00,0x0F,0x0F,0x00,0x00,0x0F,0x0F,0x00 /*- 文字: i -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x20,0x20,0xEC,0xEC,0x00,0x00,0x00,0x00,0x08,0x08,0x0F,0x0F,0x08,0x08,0x00 /*- 文字: j -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x00,0x20,0x20,0xEC,0xEC,0x00,0x00,0x00,0x40,0x40,0x40,0x7F,0x3F,0x00,0x00 /*- 文字: k -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xF8,0xF8,0x00,0x80,0xE0,0x60,0x00,0x00,0x0F,0x0F,0x01,0x03,0x0E,0x0C,0x00 /*- 文字: l -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x08,0x08,0xF8,0xF8,0x00,0x00,0x00,0x00,0x08,0x08,0x0F,0x0F,0x08,0x08,0x00 /*- 文字: m -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xE0,0xE0,0x20,0xE0,0x20,0xE0,0xC0,0x00,0x0F,0x0F,0x00,0x07,0x00,0x0F,0x0F /*- 文字: n -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xE0,0xE0,0x20,0x20,0xE0,0xC0,0x00,0x00,0x0F,0x0F,0x00,0x00,0x0F,0x0F,0x00 /*- 文字: o -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xC0,0xE0,0x20,0x20,0xE0,0xC0,0x00,0x00,0x07,0x0F,0x08,0x08,0x0F,0x07,0x00 /*- 文字: p -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xE0,0xE0,0x20,0x20,0xE0,0xC0,0x00,0x00,0x7F,0x7F,0x08,0x08,0x0F,0x07,0x00 /*- 文字: q -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xC0,0xE0,0x20,0x20,0xE0,0xE0,0x00,0x00,0x07,0x0F,0x08,0x08,0x7F,0x7F,0x00 /*- 文字: r -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xE0,0xE0,0x80,0x40,0x60,0x60,0x00,0x00,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00 /*- 文字: s -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xC0,0xE0,0x20,0x20,0x20,0x20,0x00,0x00,0x08,0x09,0x09,0x09,0x0F,0x06,0x00 /*- 文字: t -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x20,0xF8,0xF8,0x20,0x20,0x20,0x00,0x00,0x00,0x07,0x0F,0x08,0x08,0x08,0x00 /*- 文字: u -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xE0,0xE0,0x00,0x00,0xE0,0xE0,0x00,0x00,0x07,0x0F,0x08,0x08,0x0F,0x0F,0x00 /*- 文字: v -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xE0,0xE0,0x00,0x00,0xE0,0xE0,0x00,0x00,0x03,0x07,0x0C,0x0C,0x07,0x03,0x00 /*- 文字: w -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xE0,0xE0,0x00,0xC0,0x00,0xE0,0xE0,0x00,0x03,0x0F,0x0C,0x03,0x0C,0x0F,0x03 /*- 文字: x -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x60,0xE0,0x80,0x80,0xE0,0x60,0x00,0x00,0x0C,0x0E,0x03,0x03,0x0E,0x0C,0x00 /*- 文字: y -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0xE0,0xE0,0x00,0x00,0xE0,0xE0,0x00,0x40,0x47,0x4F,0x68,0x38,0x1F,0x07,0x00 /*- 文字: z -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x20,0x20,0x20,0xA0,0xE0,0x60,0x00,0x00,0x0C,0x0E,0x0B,0x09,0x08,0x08,0x00 /*- 文字: { -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x00,0x80,0xF0,0x78,0x08,0x00,0x00,0x00,0x01,0x03,0x1E,0x3C,0x20,0x00,0x00 /*- 文字: | -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x00,0x00,0xF8,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x7F,0x00,0x00,0x00 /*- 文字: } -*/ /*- Fixedsys7; 此字体下对应的点阵为:宽x高=8x16 -*/ DB 0x00,0x00,0x08,0x78,0xF0,0x80,0x00,0x00,0x00,0x00,0x20,0x3C,0x1E,0x03,0x01,0x00 ; **************************************** ; *循环查字符串表写字符或字符串数据子程序* ; **************************************** ; 功能: ; 循环查字符串表,显示字符串或字符,调用一次显示一个字符 ; 入口参数: ; DPTR. 读ASCLL点阵表的指针 ; ByteCount. 写入字节数 ; 出口参数: ; DPTR. ; 占用资源: ; A,DPTR,ByteCount,SelectFlag. T7932_Write: CLR A; MOVC A,@A+DPTR; CALL T7932_busy; SETB DI_T7932; CLR RW_T7932; SETB E_T7932; JNB SelectFlag,SkipSelect; CPL A; SkipSelect: MOV Data_t7932,A; 字符点阵数据送P0口 CLR E_T7932; INC DPTR; DJNZ ByteCount,T7932_Write; RET ; ************************ ; *液晶绘图显示字符子程序* ; ************************ ; 功能: ; 绘制8*ByteCount(1-150)的图形,完美跨片,无跨页处理,调用了T7932_SetAddress和T7932_Write ; 入口参数: ; ByteCount. 写入字节数,即绘制8*ByteCount(1-150)的图 ; Address. 显示起始地址(0-149点)相对液晶屏,调用前请赋值 ; Chip. 显示起始片,调用前请赋值 ; PageN. 显示起始页,无跨页处理,PageN在子程序中没有出现,调用前请赋值 ; DPTR. 读ASCLL点阵表指针 ; 出口参数: ; EndAdr. 绘图结束地址,作为画下一图形的起始地址,连续显示时需要,当发生截断时不可用 ; DPTR. 读表结束的指针,作为写下一页的起始指针,连续显示时需要 ; Databuf. 返回写入液晶的字节数ByteCount ; 占用资源: ; A,B,C,DPTR,ByteCount,Address,Chip,PageN,EndAdr,Databuf,SelectFlag. T7932_WriteSpan8_: MOV A,ByteCount; MOV Databuf,A; 保存写入液晶的字节数 MOV B,#32H; MOV A,Address; 显示起始地址(0-149点)相对液晶屏 DIV AB; 将地址分割为片、页 MOV Chip,A; 片地址(0-2) MOV Address,B; 显示起始地址(0-49) MOV A,ByteCount; ADD A,Address; MOV EndAdr,A; 显示结束地址 CLR C; SUBB A,#32H; 减去50,判断是否跨片显示 JZ Write_8_; JC Write_8_; 判断是否跨片。是,则跳转 MOV A,#32H; 跨片处理 SUBB A,Address; MOV ByteCount,A; 跨片前写入液晶的字节数 CALL T7932_SetAddress; CALL T7932_Write; MOV A,EndAdr; CLR C; SUBB A,#32H; MOV ByteCount,A; 剩余的字节数 INC Chip; MOV Address,#00H; CALL T7932_SetAddress; 设定跨片后的地址 CALL T7932_Write; DEC Chip; SJMP LastAddress_8; Write_8_: CALL T7932_SetAddress; 无跨片模式 CALL T7932_Write; LastAddress_8: MOV B,#32H; 计算显示结束地址 MOV A,Chip; MUL AB; ADD A,EndAdr; MOV EndAdr,A; 返回显示结束地址,可作为画下一图形的起始地址 RET ; ******************************************************* ; *ASCLL码值转为该值在ASCLL点阵8*6中的起始指针转换子程序* ; ******************************************************* ; 功能: ; 将字符的ASCLL码转换为该字符在ASCLL点阵表中数据的起始地址 ; 入口参数: ; Databuf. 字符的ASCLL码值 ; 出口参数: ; DPTR. 字符在ASCLL点阵表中的首地址 ; 占用资源: ; A,B,C,DPTR,Databuf. T7932_ASCLL_2_ASCLL6_8: MOV A,Databuf; 读入字符在ASCLL码表中的值 MOV DPTR,#Table_ASCLL6_8; 读ASCLL点阵表的首地址 CLR C; SUBB A,#20H; 减去32,得到字符在ASCLL点阵表中的值 MOV B,#06H MUL AB; ADD A,DPL; MOV DPL,A; MOV A,B; ADDC A,DPH; MOV DPH,A; 加上偏移地址,得到字符在ASCLL点阵表中的首地址 RET ; ************************************************ ; *处理双重查表显示ASCLL点阵表8*6字符(串)子程序* ; ************************************************ ; 功能: ; 循环显示字符串表中的字符串 ; 入口参数: ; PageN. 显示的页地址(0-3) ; Address. 显示起始地址(0-149) ; DPTR. 要显示的字符串表的首地址 ; 出口参数: ; Address.显示结束地址,可作为画下一图形的起始地址 ; 占用资源: ; A,B,C,DPTR,ByteCount,Address,Chip,PageN,EndAdr,Databuf,DPLbuf,DPHbuf,SelectFlag. T7932_WriStr6_8: ; MOV PageN,#00H; 显示页的地址(0-3) ; MOV Address,#00H; 显示地址0-149 MOV ByteCount,#06H; ; MOV DPTR,#Table_Str; 读字符串表的首地址,若要显示其他字符串表,屏蔽这一句 MOV DPLbuf,DPL; MOV DPHbuf,DPH; 保存字符串表地址指针 LoopWrite6_8: CLR A; MOVC A,@A+DPTR; 读表,取得字符在ASCLL码表的值 MOV Databuf,A; JZ CharEND6_8; 判断将要显示的字符是不是结束标志/0(/0的ASCLL码是00) CALL T7932_ASCLL_2_ASCLL6_8; 字符ASCLL码值的转换为对应的ASCLL点阵表中的首地址 CALL T7932_WriteSpan8_; 调用绘图子程序 MOV A,Databuf; MOV ByteCount,A; 从Databuf中载入液晶的字节数 MOV Address,EndAdr; 绘图结束地址存入Address,作为画下一图形的起始地址 MOV DPL,DPLbuf; MOV DPH,DPHbuf; 读入字符串表地址指针 INC DPTR; 指针加1,以便读下一字符 MOV DPLbuf,DPL; MOV DPHbuf,DPH; 保存字符串表地址指针 SJMP LoopWrite6_8; CharEND6_8: CLR SelectFlag; RET ; ************************************ ; *ASCLL码表与ASCLL点阵8*16转换子程序* ; ************************************ ; 功能: ; 将字符的ASCLL码转换为该字符在ASCLL点阵表中数据的起始地址 ; 入口参数: ; Databuf. 字符的ASCLL码值 ; 出口参数: ; DPTR. 字符在ASCLL点阵表中的首地址 ; 占用资源: ; A,C,DPTR,Databuf T7932_ASCLL_2_ASCLL8_16: MOV A,Databuf; 读入字符在ASCLL码表中的值 MOV DPTR,#Table_ASCLL8_16; 读ASCLL点阵表的首地址 CLR C; SUBB A,#20H; 减去32,得到字符在ASCLL点阵表中的值 MOV Databuf,A; SWAP A; ANL A,#0F0H; 乘16,算出字符的地址在ASCLL点阵中的偏移量 ADD A,DPL; MOV DPL,A; MOV A,Databuf; SWAP A; ANL A,#0FH; ADDC A,DPH; MOV DPH,A; 加上偏移地址,得到字符在ASCLL点阵表的地址 RET ; ************************************************* ; *处理双重查表显示ASCLL点阵表8*16字符(串)子程序* ; ************************************************* ; 功能: ; 循环显示字符串表中的字符(串),调用了T7932_ASCLL_2_ASCLL8_16,T7932_WriteSpan8_ ; 入口参数: ; Address.显示地址(0-149) ; PageN. 显示页的地址(0-2) ; DPTR. 要显示的字符串表的首地址 ; 出口参数: ; Address.显示结束地址,可作为画下一图形的起始地址 ; 占用资源: ; A,B,C,DPTR,ByteCount,Address,Chip,PageN,EndAdr,Databuf,DPLbuf,DPHbuf,SelectFlag. T7932_WriStr8_16: ; MOV PageN,#00H; 显示页的地址(0-2) ; MOV Address,#00H; 显示地址(0-149) MOV ByteCount,#08H; ; MOV DPTR,#Table_Str; 读字符串表的首地址,若要显示其他字符串表,屏蔽这一句 MOV DPLbuf,DPL; MOV DPHbuf,DPH; 保存字符串表地址指针 LoopWrite8_16: CLR A; MOVC A,@A+DPTR; 字符串读表,取得字符在ASCLL码表的值 MOV Databuf,A; JZ CharEND8_16; 判断将要显示的字符是不是结束标志/0(/0的ASCLL码是00) CALL T7932_ASCLL_2_ASCLL8_16; ASCLL码值和指针值转换 CALL T7932_WriteSpan8_; 调用绘图子程序 INC PageN; 下一页 MOV ByteCount,Databuf; 从Databuf中载入液晶的字节数 CLR C; MOV A,EndAdr; SUBB A,ByteCount; 计算显示起始地址 MOV Address,A; CALL T7932_WriteSpan8_; 8*16象素,接着画下一页 MOV Address,EndAdr; 绘图结束地址存入Address,可作为画下一图形的起始地址 MOV ByteCount,Databuf; 从Databuf中载入液晶的字节数 DEC PageN; 返回上一页 MOV DPL,DPLbuf; MOV DPH,DPHbuf; 读入字符串表地址指针 INC DPTR; 指针加1,以便读下一字符 MOV DPLbuf,DPL; MOV DPHbuf,DPH; 保存字符串表地址指针 SJMP LoopWrite8_16; CharEND8_16: CLR SelectFlag; RET ; ****************************** ; *显示单个ASCLL码字符8*6子程序* ; ****************************** ; 功能: ; 根据ASCLL码值,显示对应的字符 ; 入口参数: ; A. 字符的ASCLL码值 ; Address.显示地址(0-149) ; PageN. 显示页的地址(0-3) ; 出口参数: ; Address.显示结束地址,可作为画下一图形的起始地址 ; 占用资源: ; A,B,C,DPTR,ByteCount,Address,Chip,PageN,EndAdr,Databuf. T7932_WriSigalASCLL6_8: ; MOV PageN,#00H; 显示页的地址(0-3) ; MOV Address,#00H; 显示地址0-149 MOV ByteCount,#06H; MOV Databuf,A; CALL T7932_ASCLL_2_ASCLL6_8; 字符ASCLL码值的转换为对应的ASCLL点阵表中的首地址 CALL T7932_WriteSpan8_; 调用绘图子程序 MOV ByteCount,Databuf; 从Databuf中载入液晶的字节数 MOV Address,EndAdr; 绘图结束地址存入Address,作为画下一图形的起始地址 CLR SelectFlag; RET ; ****************************** ; *显示单个ASCLL码字符8*16子程序* ; ****************************** ; 功能: ; 根据ASCLL码值,显示对应的字符 ; 入口参数: ; A. 字符的ASCLL码值 ; Address.显示地址(0-149) ; PageN. 显示页的地址(0-2) ; 出口参数: ; Address.显示结束地址,可作为画下一图形的起始地址 ; 占用资源: ; A,B,C,DPTR,ByteCount,Address,Chip,PageN,EndAdr,Databuf,DPLbuf,DPHbuf. T7932_WriSigalASCLL8_16: ; MOV PageN,#00H; 显示页的地址(0-2) ; MOV Address,#00H; 显示地址(0-149) MOV ByteCount,#08H; MOV Databuf,A; CALL T7932_ASCLL_2_ASCLL8_16; ASCLL码值和指针值转换 CALL T7932_WriteSpan8_; 调用绘图子程序 INC PageN; 下一页 MOV ByteCount,Databuf; 从Databuf中载入液晶的字节数 CLR C; MOV A,EndAdr; SUBB A,ByteCount; 计算显示起始地址 MOV Address,A; CALL T7932_WriteSpan8_; 8*16象素,接着画下一页 MOV Address,EndAdr; 绘图结束地址存入Address,可作为画下一图形的起始地址 MOV ByteCount,Databuf; 从Databuf中载入液晶的字节数 DEC PageN; 返回上一页 CLR SelectFlag; RET ; ********************* ; *十六进制数字转ASCLL* ; ********************* ; 功能: ; 从十六进制中分离出百位,十位,个位并作ASCLL码调整 ; 人口参数: ; IntFlag. 数据类型声明 ; A. 十六进制数范围(IntFlag=0):00H-OFFH ; (IntFlag=1):负数:80H-0FFH(-0~-127),正数:00H-7FH(+0~127) ; 出口参数: ; R7. 百位 ; R6. 十位 ; R5. 个位 ; 占用资源: ; A,B,R5,R6,R7,IntFlag. Hex_Num2ASCLL: JNB IntFlag,Unsigned_INT; /* CJNE A,#80H,Signed_INT; 18B20显示需要表示-0.xxxx,所以屏蔽这几句,这样80H表示-0. MOV A,#80H; SETB IntFlag; JMP Pro_Int_DONE; Signed_INT: */ JNB ACC.7,Unsigned_INT; SETB IntFlag; ANL A,#7FH; JMP Pro_Int_DONE; Unsigned_INT: CLR IntFlag; Pro_Int_DONE: MOV B,#64H; DIV AB; ADD A,#30H; MOV R7,A; MOV A,B; MOV B,#0AH; DIV AB; ADD A,#30H; MOV R6,A; MOV A,B; ADD A,#30H; MOV R5,A; RET ; ********************** ; *整型数据显示子子程序* ; ********************** ; 功能: ; 无自动缩进功能(自动缩进要清屏),固定占用8*6*4的显示空间,正数或百位或十位为零自动消隐负号和百位、十位的零 ; 显示整型数据,范围-127到127(IntFlag=1);80H表示-0.xxxx;0-255(IntFlag=0) ; 入口参数: ; Address.显示起始地址 ; PageN.显示页地址 ; IntFlag.数据类型 ; A.被显示数(二进制,十六进制) ; 出口参数: ; 无 ; 占用资源: ; A,B,C,R5,R6,R7,DPTR,Address,EndAdr,PageN,Chip,ByteCount,Databuf. Display_INT_Number: CALL Hex_Num2ASCLL; 数据转为ASCLL码的形式 MOV A,#20H; JNB IntFlag,Hide_NegMark; 判断是否负号消隐 MOV A,#2DH; Hide_NegMark: CALL T7932_WriSigalASCLL6_8; MOV A,R7; CJNE A,#30H,SkipHide_Hundred; CALL LastWordWri_zero; 百位等于零,消隐符号位 MOV A,#20H; JNB IntFlag,SkipHide_Hundred; 判断是否负号消隐 MOV A,#2DH; 在百位的位置显示负号(负号右移) SkipHide_Hundred: CALL T7932_WriSigalASCLL6_8; MOV A,R7; CJNE A,#30H,SkipHide_Tens; MOV A,R6; 百位为零 CJNE A,#30H,SkipHide_Tens; CALL LastWordWri_zero; 十位为零,消隐位于百位的负号 MOV A,#20H; 消隐十位 JNB IntFlag,SkipHide_TensDONE; MOV A,#2DH; 负号右移 JMP SkipHide_TensDONE; SkipHide_Tens: MOV A,R6; SkipHide_TensDONE: CALL T7932_WriSigalASCLL6_8; MOV A,R5; CALL T7932_WriSigalASCLL6_8; CLR IntFlag; RET LastWordWri_zero: CLR C; MOV A,Address; SUBB A,#06H; MOV Address,A; MOV A,#20H; CALL T7932_WriSigalASCLL6_8; RET END [code=asm]