📄 lcm_drive.lst
字号:
C51 COMPILER V7.09 LCM_DRIVE 09/17/2004 11:31:15 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE LCM_DRIVE
OBJECT MODULE PLACED IN LCM_DRIVE.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE LCM_DRIVE.c OPTIMIZE(2,SPEED) BROWSE DEFINE(MONITOR51) DEBUG OBJECTEXTEND
line level source
1 /***********************************************************************
2 * 文件名:LCM_DRIVE.C
3 * 功能:图形液晶TG12864B-2驱动程序。
4 * 说明:在LCM_DRIVE.H文件中定义了LCM操作地址,左半屏的写命令操作地址为2004H,写
5 * 数据操作地址为2005H,右半屏的写命令操作地址为2000H,写数据操作地址为2001H;
6 * 由于GRAPHICS.C中使用了disp_buf作为作图缓冲区,所以LCM_WriteByte()、LCM_
7 * DispFill()均要更新disp_buf。
8 ***********************************************************************/
9 #include "CONFIG.H"
10
11 /* LCM复位控制脚定义 */
12 sbit LCM_RST = P1^0;
13
14 /***********************************************************************
15 * 名称:LCM_Wr1Command()
16 * 功能:写命令子程序,所选屏为左半屏(CS1)。
17 * 入口参数:command 要写入LCM的命令字
18 ***********************************************************************/
19 #define LCM_Wr1Command(command) LCMCS1W_COM = command
20
21 /***********************************************************************
22 * 名称:LCM_Wr2Command()
23 * 功能:写命令子程序,所选屏为右半屏(CS2)。
24 * 入口参数:command 要写入LCM的命令字
25 ***********************************************************************/
26 #define LCM_Wr2Command(command) LCMCS2W_COM = command
27
28 /***********************************************************************
29 * 名称:LCM_Wr1Data()
30 * 功能:写数据子程序,所选屏为左半屏(CS1)。
31 * 入口参数:wrdata 要写入LCM的数据
32 ***********************************************************************/
33 #define LCM_Wr1Data(wrdata) LCMCS1W_DAT = wrdata
34
35 /***********************************************************************
36 * 名称:LCM_Wr2Data()
37 * 功能:写数据子程序,所选屏为右半屏(CS2)。
38 * 入口参数:wrdata 要写入LCM的数据
39 ***********************************************************************/
40 #define LCM_Wr2Data(wrdata) LCMCS2W_DAT = wrdata
41
42
43 /***********************************************************************
44 * 名称:LCM_DispIni()
45 * 功能:LCM显示初始化。使能显示,设置显示起始行为0并清屏。
46 * 入口参数:无
47 * 出口参数:无
48 ***********************************************************************/
49 void LCM_DispIni(void)
50 { uint16 i;
51 1
52 1 LCM_RST = 0; // 复位驱动芯片
53 1 for(i=0; i<500; i++);
54 1 LCM_RST = 1;
55 1
C51 COMPILER V7.09 LCM_DRIVE 09/17/2004 11:31:15 PAGE 2
56 1 LCM_Wr1Command(LCM_DISPON); // 打开显示
57 1 LCM_Wr1Command(LCM_STARTROW); // 设置显示起始行为0
58 1 LCM_Wr2Command(LCM_DISPON);
59 1 LCM_Wr2Command(LCM_STARTROW);
60 1 LCM_DispClr(); // 清屏
61 1
62 1 LCM_Wr1Command(LCM_ADDRSTRY+0); // 设置页(行)地址
63 1 LCM_Wr1Command(LCM_ADDRSTRX+0); // 设置列地址,即列
64 1 LCM_Wr2Command(LCM_ADDRSTRY+0);
65 1 LCM_Wr2Command(LCM_ADDRSTRX+0);
66 1 }
67
68
69 /***********************************************************************
70 * 名称:LCM_WriteByte()
71 * 功能:向指定点写数据(一字节)。
72 * 入口参数:x x坐标值(0-127)
73 * y y坐标值(0-63)
74 * wrdata 所要写的数据
75 * 出口参数:无
76 * 说明:会更新disp_buf相应存储单元
77 ***********************************************************************/
78 void LCM_WriteByte(uint8 x, uint8 y, uint8 wrdata)
79 { x = x&0x7f; // 参数过滤
80 1 y = y&0x3f;
81 1
82 1 y = y>>3;
83 1 disp_buf[y][x] = wrdata;
84 1 if(x<64) // 选择液晶控制芯片(即CS1--控制前64个点,CS2--控制后64个点)
85 1 { LCM_Wr1Command(LCM_ADDRSTRX+x); // 设置当前列地址,即x坐标
86 2 LCM_Wr1Command(LCM_ADDRSTRY+y); // 设置当前页地址,即y坐标
87 2 for(x=0; x<5; x++); // 短延时
88 2 LCM_Wr1Data(wrdata);
89 2 }
90 1 else
91 1 { x = x-64; // 调整x变量值
92 2 LCM_Wr2Command(LCM_ADDRSTRX+x);
93 2 LCM_Wr2Command(LCM_ADDRSTRY+y);
94 2 for(x=0; x<5; x++);
95 2 LCM_Wr2Data(wrdata);
96 2 }
97 1 }
98
99
100 /***********************************************************************
101 * 名称:LCM_DispFill()
102 * 功能:向显示屏填充数据
103 * 入口参数:filldata 要写入LCM的填充数据
104 * 出口参数:无
105 * 说明:会更新disp_buf相应存储单元
106 ***********************************************************************/
107 void LCM_DispFill(uint8 filldata)
108 { uint8 x, y;
109 1
110 1 LCM_Wr1Command(LCM_STARTROW); // 设置显示起始行为0
111 1 LCM_Wr2Command(LCM_STARTROW);
112 1
113 1 for(y=0; y<8; y++)
114 1 { LCM_Wr1Command(LCM_ADDRSTRY+y); // 设置页(行)地址
115 2 LCM_Wr1Command(LCM_ADDRSTRX); // 设置列地址
116 2 LCM_Wr2Command(LCM_ADDRSTRY+y);
117 2 LCM_Wr2Command(LCM_ADDRSTRX);
C51 COMPILER V7.09 LCM_DRIVE 09/17/2004 11:31:15 PAGE 3
118 2
119 2 for(x=0; x<64; x++)
120 2 { LCM_Wr1Data(filldata);
121 3 LCM_Wr2Data(filldata);
122 3 disp_buf[y][x] = filldata;
123 3 disp_buf[y][x+64] = filldata;
124 3 }
125 2 }
126 1 }
127
128
129 /* ASCII码对应的点阵数据表 */
130 uint8 code ASCII_TAB20[80] = { 0x00, 0x00, 0x00, 0x00, 0x00,
131 0x00, 0x00, 0x9e, 0x00, 0x00,
132 0x00, 0x0e, 0x00, 0x0e, 0x00,
133 0x28, 0xfe, 0x28, 0xfe, 0x28,
134 0x48, 0x54, 0xfe, 0x54, 0x24,
135 0x46, 0x26, 0x10, 0xc8, 0xc4,
136 0x6c, 0x92, 0xaa, 0x44, 0xa0,
137 0x00, 0x0a, 0x06, 0x00, 0x00,
138 0x00, 0x38, 0x44, 0x82, 0x00,
139 0x00, 0x82, 0x44, 0x38, 0x00,
140 0x28, 0x10, 0x7c, 0x10, 0x28,
141 0x10, 0x10, 0x7c, 0x10, 0x10,
142 0x00, 0xa0, 0x60, 0x00, 0x00,
143 0x10, 0x10, 0x10, 0x10, 0x10,
144 0x00, 0xc0, 0xc0, 0x00, 0x00,
145 0x40, 0x20, 0x10, 0x08, 0x04
146 };
147
148 uint8 code ASCII_TAB30[80] = { 0x7C, 0xA2, 0x92, 0x8A, 0x7C,
149 0x00, 0x84, 0xFE, 0x80, 0x00,
150 0x84, 0xC2, 0xA2, 0x92, 0x8C,
151 0x42, 0x82, 0x8A, 0x96, 0x62,
152 0x30, 0x28, 0x24, 0xFE, 0x20,
153 0x4E, 0x8A, 0x8A, 0x8A, 0x72,
154 0x78, 0x94, 0x92, 0x92, 0x60,
155 0x02, 0xE2, 0x12, 0x0A, 0x06,
156 0x6C, 0x92, 0x92, 0x92, 0x6C,
157 0x0C, 0x92, 0x92, 0x52, 0x3C,
158 0x00, 0x6C, 0x6C, 0x00, 0x00,
159 0x00, 0xAC, 0x6C, 0x00, 0x00,
160 0x10, 0x28, 0x44, 0x82, 0x00,
161 0x28, 0x28, 0x28, 0x28, 0x28,
162 0x00, 0x82, 0x44, 0x28, 0x10,
163 0x04, 0x02, 0xA2, 0x12, 0x0C
164 };
165
166 uint8 code ASCII_TAB40[80] = { 0x64, 0x92, 0xF2, 0x82, 0x7C,
167 0xFC, 0x22, 0x22, 0x22, 0xFC,
168 0xFE, 0x92, 0x92, 0x92, 0x6C,
169 0x7C, 0x82, 0x82, 0x82, 0x44,
170 0xFE, 0x82, 0x82, 0x44, 0x38,
171 0xFE, 0x92, 0x92, 0x92, 0x82,
172 0xFE, 0x12, 0x12, 0x12, 0x02,
173 0x7C, 0x82, 0x92, 0x92, 0xF4,
174 0xFE, 0x10, 0x10, 0x10, 0xFE,
175 0x00, 0x82, 0xFE, 0x82, 0x00,
176 0x40, 0x80, 0x82, 0x7E, 0x02,
177 0xFE, 0x10, 0x28, 0x44, 0x82,
178 0xFE, 0x80, 0x80, 0x80, 0x80,
179 0xFE, 0x04, 0x18, 0x04, 0xFE,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -