📄 lcd.lst
字号:
C51 COMPILER V8.08 LCD 03/01/2008 06:32:25 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN LCD.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LCD.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /***************************************************************
2 功能:实现液晶显示LCD 122*32点阵驱动器为0713
3 作者:MB
4 时间:2005-02-28
5 版本:V1.0
6 /*---------------------------------------------------------------------------------
7 CPU 端口定义
8 ---------------------------------------------------------------------------------*/
9 sfr LCD_PORT = 0x80;
10 sbit LCD_DI = 0xb3;
11 sbit LCD_ENA2 = 0xb4;
12 sbit LCD_ENA1 = 0xb5;
13 /*---------------------------------------------------------------------------------
14 西文字库点阵
15 ---------------------------------------------------------------------------------*/
16 unsigned char code Large_DianZen[]={
17 //;-- 0123456789 -- ** 宋体, 12 **
18 //; 当前所选字体下一个汉字对应的点阵为: 宽度x高度=80x16, 调整后为: 80x16
19 0x00,0x00,0xE0,0x0F,0x10,0x10,0x08,0x20,0x08,0x20,0x10,0x10,0xE0,0x0F,0x00,0x00, //0
20 0x00,0x00,0x10,0x20,0x10,0x20,0xF8,0x3F,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00, //1
21 0x00,0x00,0x70,0x30,0x08,0x28,0x08,0x24,0x08,0x22,0x88,0x21,0x70,0x30,0x00,0x00, //2
22 0x00,0x00,0x30,0x18,0x08,0x20,0x88,0x20,0x88,0x20,0x48,0x11,0x30,0x0E,0x00,0x00, //3
23 0x00,0x00,0x00,0x07,0xC0,0x04,0x20,0x24,0x10,0x24,0xF8,0x3F,0x00,0x24,0x00,0x00, //4
24 0x00,0x00,0xF8,0x19,0x08,0x21,0x88,0x20,0x88,0x20,0x08,0x11,0x08,0x0E,0x00,0x00, //5
25 0x00,0x00,0xE0,0x0F,0x10,0x11,0x88,0x20,0x88,0x20,0x18,0x11,0x00,0x0E,0x00,0x00, //6
26 0x00,0x00,0x38,0x00,0x08,0x00,0x08,0x3F,0xC8,0x00,0x38,0x00,0x08,0x00,0x00,0x00, //7
27 0x00,0x00,0x70,0x1C,0x88,0x22,0x08,0x21,0x08,0x21,0x88,0x22,0x70,0x1C,0x00,0x00, //8
28 0x00,0x00,0xE0,0x00,0x10,0x31,0x08,0x22,0x08,0x22,0x10,0x11,0xE0,0x0F,0x00,0x00, //9
29
30 //;-- ABCDEF -- ** 宋体, 12 **
31 //; 当前所选字体下一个汉字对应的点阵为: 宽度x高度=48x16, 调整后为: 48x16
32 0x00,0x20,0x00,0x3C,0xC0,0x23,0x38,0x02,0xE0,0x02,0x00,0x27,0x00,0x38,0x00,0x20, //A
33 0x08,0x20,0xF8,0x3F,0x88,0x20,0x88,0x20,0x88,0x20,0x70,0x11,0x00,0x0E,0x00,0x00, //B
34 0xC0,0x07,0x30,0x18,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x10,0x38,0x08,0x00,0x00, //C
35 0x08,0x20,0xF8,0x3F,0x08,0x20,0x08,0x20,0x08,0x20,0x10,0x10,0xE0,0x0F,0x00,0x00, //D
36 0x08,0x20,0xF8,0x3F,0x88,0x20,0x88,0x20,0xE8,0x23,0x08,0x20,0x10,0x18,0x00,0x00, //E
37 0x08,0x20,0xF8,0x3F,0x88,0x20,0x88,0x00,0xE8,0x03,0x08,0x00,0x10,0x00,0x00,0x00, //F
38 //;-- : -- ** 宋体, 12 **
39 //; 当前所选字体下一个汉字对应的点阵为: 宽度x高度=8x16, 调整后为: 8x16
40 0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x30,0xC0,0x30,0x00,0x00,0x00,0x00,0x00,0x00,//:
41 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //NULL
-
42 };
43
44 /*---------------------------------------------------------------------------------
45 汉字字库点阵
46 ---------------------------------------------------------------------------------*/
47 unsigned char code HanZi[]={
48 //;-- ★电子工作室★ -- ** 宋体, 12 **
49 //; 当前所选字体下一个汉字对应的点阵为: 宽度x高度=112x16, 调整后为: 112x16
50 0x00,0x00,0x00,0x00,0x40,0x20,0x42,0x22,0x5C,0x22,0x48,0x22,0x40,0x22,0x40,0x22,
51 0x7F,0x22,0x40,0x22,0x50,0x22,0x4E,0x22,0x44,0x22,0xC0,0x7F,0x00,0x00,0x00,0x00,
52
53 0x08,0x00,0x08,0x00,0xE8,0x7F,0xA8,0x04,0xA9,0x24,0xAE,0x44,0xEA,0x3F,0x08,0x00,
54 0x08,0x00,0xC8,0x1F,0x0C,0x40,0x0B,0x80,0xEA,0x7F,0x08,0x00,0x08,0x00,0x00,0x00,
C51 COMPILER V8.08 LCD 03/01/2008 06:32:25 PAGE 2
55
56 0x10,0x02,0x21,0xFE,0x86,0x01,0x70,0x40,0x00,0x7F,0x7E,0x41,0x4A,0x41,0x4A,0x7F,
57 0x4A,0x41,0x4A,0x41,0x4A,0x7F,0x7E,0x41,0x00,0x41,0x00,0x7F,0x00,0x40,0x00,0x00,
58
59 0x00,0x80,0x00,0x60,0xFC,0x1F,0x04,0x80,0x24,0x80,0x24,0x42,0xFC,0x46,0xA5,0x2A,
60 0xA6,0x12,0xA4,0x12,0xFC,0x2A,0x24,0x26,0x24,0x42,0x24,0xC0,0x04,0x40,0x00,0x00,
61
62 0x80,0x00,0x80,0x40,0x80,0x20,0x80,0x10,0xBE,0x0E,0xAA,0x10,0xAA,0x20,0xAA,0x3F,
63 0xAA,0x44,0xAA,0x44,0xAA,0x44,0xBE,0x44,0x80,0x44,0x80,0x40,0x80,0x40,0x00,0x00,
64
65 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
66 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
67
68
69 //;-- 现在是: : : -- ** 宋体, 12 **
70 //; 当前所选字体下一个汉字对应的点阵为: 宽度x高度=104x16, 调整后为: 104x16
71 0x00,0x80,0x00,0x60,0xFC,0x1F,0x04,0x80,0x24,0x80,0x24,0x42,0xFC,0x46,0xA5,0x2A,
72 0xA6,0x12,0xA4,0x12,0xFC,0x2A,0x24,0x26,0x24,0x42,0x24,0xC0,0x04,0x40,0x00,0x00,
73
74 0x00,0x00,0xFC,0x07,0x44,0x04,0x44,0x04,0x44,0x04,0xFC,0x07,0x10,0x00,0x90,0x00,
75 0x10,0x03,0x10,0x40,0x10,0x80,0xFF,0x7F,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,
76
77 0x00,0x00,0xF8,0xFF,0x01,0x00,0x06,0x00,0x00,0x00,0xF0,0x07,0x92,0x04,0x92,0x04,
78 0x92,0x04,0x92,0x04,0xF2,0x07,0x02,0x40,0x02,0x80,0xFE,0x7F,0x00,0x00,0x00,0x00,
79
80 0x80,0x00,0x80,0x40,0x80,0x20,0x80,0x10,0xBE,0x0E,0xAA,0x10,0xAA,0x20,0xAA,0x3F,
81 0xAA,0x44,0xAA,0x44,0xAA,0x44,0xBE,0x44,0x80,0x44,0x80,0x40,0x80,0x40,0x00,0x00,
82
83 0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x30,0xC0,0x30,0x00,0x00,0x00,0x00,0x00,0x00,
84
85 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
86 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
87
88 0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x30,0xC0,0x30,0x00,0x00,0x00,0x00,0x00,0x00,
89
90 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
91 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
92
93 0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x30,0xC0,0x30,0x00,0x00,0x00,0x00,0x00,0x00,
94 };
95
96
97 unsigned char code LCD_Show_Tab[]={
98 0x90,0x00,0x90,0x01,0x90,0x02,0x90,0x03,0x90,0x04,0x90,0x05,0x90,0x06,0x11,0x11, //★电子工作室★
99 0x90,0x07,0x90,0x08,0x90,0x09,0x90,0x0a,0x90,0x0b,0x90,0x0c,0x90,0x0d,0x11,0x11, //现在是 ::。
100 };
101
102
103 /*-----------------------------------------------
104 LCD接收命令子程序:F为主/从选择0主模块被选中
105 ------------------------------------------------*/
106
107 void LCD_Write_Set( unsigned char Com,bit F )
108 {
109 1 LCD_PORT = Com;
110 1 LCD_DI = 0;
111 1 if ( F )
112 1 {
113 2 LCD_ENA2 = 1;
114 2 LCD_ENA2 = 0;
115 2 }
116 1 else
C51 COMPILER V8.08 LCD 03/01/2008 06:32:25 PAGE 3
117 1 {
118 2 LCD_ENA1 = 1;
119 2 LCD_ENA1 = 0;
120 2 }
121 1 }
122
123 /*-----------------------------------------------
124 LCD接收数据子程序:F为主/从选择0主模块被选中
125 ------------------------------------------------*/
126 void LCD_Write_Data( unsigned char Com,bit F )
127 {
128 1 LCD_PORT = Com;
129 1 LCD_DI = 1;
130 1 if ( F )
131 1 {
132 2 LCD_ENA2 = 1;
133 2 LCD_ENA2 = 0;
134 2 }
135 1 else
136 1 {
137 2 LCD_ENA1 = 1;
138 2 LCD_ENA1 = 0;
139 2 }
140 1 }
141
142
143 /*--------------------------------------------------------------
144 //设置xPos,yPos(x,y行列坐标)
145 ------------------------------------------------------------*/
146 void Set_xyPos_LCD(unsigned char xPos,unsigned char yPos) //112*32 0713 xPos(0---112) yPos(0---3)
147 {
148 1 unsigned char i;
149 1 if ( yPos < 2 )
150 1 i = 0xBA;
151 1 else
152 1 i = 0xB6;
153 1 if ( xPos > 60 )
154 1 {
155 2
156 2 LCD_Write_Set(yPos + i,1); //Page_LCD[i] i=0 first page i=7 seventh page
157 2 // LCD_Write_Set(((xPos - 57)>>4)&0x0F|0x10,1); //set col address msb
158 2 LCD_Write_Set(xPos - 61,1); //set col address lsb
159 2 }
160 1 else
161 1 {
162 2 LCD_Write_Set(yPos + i,0); //Page_LCD[i] i=0 first page i=7 seventh page
163 2 // LCD_Write_Set((xPos>>4)&0x0F|0x10,0); //set col address msb
164 2 LCD_Write_Set(xPos,0); //set col address lsb
165 2 }
166 1 }
167
168 /*--------------------------------------------------------------
169 //清除一行子程序
170 ------------------------------------------------------------*/
171 void Clear_H_LCD(unsigned char H)
172 {
173 1 unsigned char i,j;
174 1 Set_xyPos_LCD(0, H << 1 ); //set col address lsb
175 1 for( i = 0;i < 2;i++ )
176 1 {
177 2 for( j = 0;j < 61;j++ )
178 2 LCD_Write_Data( 0x00,0 );
C51 COMPILER V8.08 LCD 03/01/2008 06:32:25 PAGE 4
179 2 Set_xyPos_LCD(0, (H << 1) + 1); //set col address lsb
180 2 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -