📄 lcm320240-function.lst
字号:
182 wrdata(addrl); // 写入参数CSRL设置参数光标指针低8位
183 wrdata(addrh); // 写入参数CSRH设置参数光标指针高8位
184 wrcmd(mRead); // 读数据命令0x43
185 m = rddata();
186 m = m|dotdata;
187 wrcmd(CsrDirR); // 光标移动方向定义:自动右移
188 wrcmd(CsrW); // 光标Locate,定位0x46
189 wrdata(addrl); // 写入参数CSRL设置参数光标指针低8位
190 wrdata(addrh); // 写入参数CSRH设置参数光标指针高8位
191 wrcmd( mWrite ); // 数据写入指令,代码0x42
192 wrdata(m); // 写入数据
193 wrcmd(CsrDirR);
194 }*/
195
196
197 /* ------------------汉字字符串写入子程序--------------------------*/
198 void LCM_gb(uint x, uint y, uchar n, uchar *p)
199 {
200 1 uint addr;
201 1 uchar i, j;
202 1 addr = 0x4000 + x + y*AP; //第二显示区为图形属性,计算显示ram地址
203 1 for(i=0; i<n*2; i++) //16*16点阵,每个字占用32字节,一个字分两次写入
204 1 {
205 2 wrcmd(CsrW); // 光标Locate,定位0x46
206 2 wrdata(addr); // 写入参数CSRL设置参数光标指针低8位
207 2 wrdata(addr>>8); // 写入参数CSRH设置参数光标指针高8位
208 2 wrcmd(CsrDirD); // 光标移动方向定义:自动下移
209 2 wrcmd(mWrite); // 数据写入指令,代码0x42
210 2 for(j=0; j<16; j++)
211 2 {
212 3 wrdata(*(p + 2*j + 32*(i/2) + i%2)); // 写入数据,左半边为0,右半边为1
213 3 } // 先写左半部分,表内偶数部分,地址addr
214 2 addr = addr + 1; // 再写右半部分,表内奇数部分,地址addr+1,右移一字节
215 2 }
216 1 wrcmd(CsrDirR);
217 1 }
218
219
220 /* ------------------ASCII字符串写入子程序--------------------------*/
221 void LCM_ASC(uint x, uint y, uchar n, uchar *p)
222 {
223 1 uint addr;
224 1 uchar i, j;
225 1 uint temp;
226 1 addr = 0x4000 + x + y*AP; //第二显示区为图形属性,计算显示ram地址
227 1 for(i=0; i<n; i++) //8*16点阵,每个字占用16字节,一个字一次写入
228 1 {
229 2 temp=*(p+i)-0x20;
230 2 wrcmd(CsrW); // 光标Locate,定位0x46
231 2 wrdata(addr); // 写入参数CSRL设置参数光标指针低8位
232 2 wrdata(addr>>8); // 写入参数CSRH设置参数光标指针高8位
233 2 wrcmd(CsrDirD); // 光标移动方向定义:自动下移
234 2 wrcmd(mWrite); // 数据写入指令,代码0x42
235 2 for(j=0; j<16; j++)
236 2 {
237 3 wrdata(ASC_MSK[temp*16+j]);// 写入数据,从上到下的顺序写入
238 3 }
239 2 addr = addr + 1; // 每次写入一个数据,地址addr+1,右移一字节的位置
240 2 }
241 1 wrcmd(CsrDirR);
C51 COMPILER V7.20 LCM320240_FUNCTION 03/19/2009 15:59:28 PAGE 5
242 1 }
243
244
245 /* ------------------ASCII字符串写入子程序--------------------------
246 void LCM_ascii(uint x, uint y, uchar *p)
247 {
248 uint addr;
249 addr = x + y * AP;//第一显示区为文本属性,计算显示ram地址
250 wrcmd(CsrW); // 光标Locate,定位0x46
251 wrdata(addr); // 写入参数CSRL设置参数光标指针低8位
252 wrdata(addr>>8); // 写入参数CSRH设置参数光标指针高8位
253 wrcmd(CsrDirR); // 光标移动方向定义:自动右移
254 wrcmd(mWrite); // 数据写入指令,代码0x42
255 while(*p>0)
256 {
257 wrdata(*p++); // 写入数据0x00
258 }
259 wrcmd(CsrDirR);
260 }
261 */
262
263 /* ------------------清屏子程序--------------------------*/
264 void Lcm_clear(void)
265 {
266 1 uint i=32768;
267 1 wrcmd(CsrW ); // 光标Locate,定位
268 1 wrdata(0); // 写入参数CSRL设置参数光标指针低8位
269 1 wrdata(0); // 写入参数CSRH设置参数光标指针高8位
270 1 wrcmd(CsrDirR); // 光标移动方向定义:自动右移
271 1 wrcmd(mWrite); // 数据写入指令,代码0x42
272 1 while(i--)
273 1 {
274 2 wrdata(0x00); // 写入数据0x00
275 2 }
276 1 }
277
278
279 /* -------------------全显示子程序-----------------------*/
280 void Lcm_on(void)
281 {
282 1 uint i=32768;
283 1 wrcmd(CsrW); // 光标Locate,定位
284 1 wrdata(0); // 写入参数CSRL设置参数光标指针低8位
285 1 wrdata(0); // 写入参数CSRH设置参数光标指针高8位
286 1 wrcmd(CsrDirR); // 光标移动方向定义:自动右移
287 1 wrcmd(mWrite); // 数据写入指令,代码0x42
288 1 while(i--)
289 1 {
290 2 wrdata(0xff); // 写入数据0xff
291 2 }
292 1 }
293
294
295 /* ---------------------读数据子程序-------------------
296 uchar rddata(void)
297 {
298 uchar num = 0xff;
299 a0=1;
300 cs_=0;
301 databus=0xff;
302 _nop_();
303 rd_=0;
C51 COMPILER V7.20 LCM320240_FUNCTION 03/19/2009 15:59:28 PAGE 6
304 _nop_();
305 _nop_();
306 num=databus;
307 _nop_();
308 _nop_();
309 rd_=1;
310 cs_=1;
311 return num;
312 }*/
313
314
315 /* ---------------------写数据子程序-------------------*/
316 void wrdata(uchar num)
317 {
318 1 databus=0xff;
319 1 a0=0;
320 1 _nop_();
321 1 databus=num;
322 1 _nop_();
323 1 _nop_();
324 1 cs_=0;
325 1 wr_=0;
326 1 _nop_();
327 1 _nop_();
328 1 wr_=1;
329 1 cs_=1;
330 1 }
331
332
333 /* ---------------------写指令子程序-------------------*/
334 void wrcmd(uchar cmd)
335 {
336 1 databus=0xff;
337 1 a0=1;
338 1 _nop_();
339 1 databus=cmd;
340 1 _nop_();
341 1 _nop_();
342 1 cs_=0;
343 1 wr_=0;
344 1 _nop_();
345 1 _nop_();
346 1 wr_=1;
347 1 cs_=1;
348 1 }
349
350
351 /*----------------------延时子程序----------------------*/
352 void delay(ulong n)
353 {
354 1 while(n--);
355 1 }
356
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1003 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- 49
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
C51 COMPILER V7.20 LCM320240_FUNCTION 03/19/2009 15:59:28 PAGE 7
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -