📄 main.lst
字号:
180 4 }
181 3 }
182 2 n++; //超时计时加一
183 2 if(n>100000)return(0x00);//超时返回0
184 2 }
185 1
186 1 }
187
188 //取符合拼音字符串的10个汉字,page是取第几页
189 //返回的汉字串在hz[21];
190 void lcd_pinyin2hz(uchar page, uchar *pinyin,uchar *hz)
191 {
192 1 uchar i,ch;
193 1 ulong n=0;
194 1 while(inbufsign)getbyte(); //清空串口缓冲区
195 1 putbyte(0x1b);
196 1 putbyte(0x48);
197 1 putbyte(10);//在这里修改你需要返回几个汉字
198 1 putbyte(page);
199 1 putstring(pinyin);
200 1 putbyte(0x00);
201 1 while(1)
202 1 {
203 2 if(inbufsign)//串口接收到了数据
204 2 {
205 3 if(getbyte()==0x1b)
206 3 {
207 4 for(i=0;;i++)
208 4 {
209 5 ch=getbyte();
210 5 *(hz+i)=ch;
211 5 if(ch==0)break;
212 5 }
213 4 getbyte();getbyte();
214 4
215 4 return;
216 4 }
217 3
218 3 }
219 2 n++; //超时计时加一
220 2 if(n>100000)
221 2 return;//超时返回
222 2 }
223 1
224 1 }
225
226 void delay(void)
227 {
228 1 ulong n;
229 1 uchar i;
230 1 //for(i=0;i<2;i++)
231 1 for(n=0;n<60000;n++);
232 1 }
*** WARNING C280 IN LINE 229 OF MAIN.C: 'i': unreferenced local variable
233
234 //定义一个图片
235 uchar code pic[]={
236 0x48, 0x1c, //这两个字节是图形块的长和宽,下面的才是图形数据
237 0x00, 0x4E, 0x20, 0x00, 0x00, 0xF0, 0x40, 0x00, 0x00, 0x00, 0x7B, 0xE0, 0x01, 0x01, 0xF8, 0xC0,
238 0x00, 0x00, 0x01, 0xFF, 0x7C, 0xFF, 0xF1, 0xFD, 0xC0, 0x00, 0x00, 0x00, 0x7F, 0xC6, 0xFF, 0xC1,
239 0x9F, 0xC3, 0xF8, 0x00, 0x00, 0x7F, 0xFC, 0xFF, 0xF3, 0x0F, 0xBF, 0xC0, 0x00, 0x00, 0x7F, 0xE6,
240 0x1F, 0xFE, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x77, 0xFC, 0x07, 0xE7, 0x07, 0xFF, 0xC0, 0x00, 0x00,
C51 COMPILER V7.07 MAIN 11/19/2004 17:55:36 PAGE 5
241 0x77, 0xFB, 0x07, 0xFB, 0x87, 0xBF, 0x00, 0x00, 0x00, 0x67, 0xFF, 0xF7, 0xA7, 0x7E, 0x00, 0x00,
242 0x00, 0x00, 0x67, 0xFF, 0xF7, 0xFE, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x67, 0xFF, 0xEF, 0xE1, 0xFF,
243 0x98, 0x00, 0x00, 0x00, 0x63, 0xFF, 0xEF, 0xFF, 0xFF, 0xB8, 0x00, 0x44, 0x00, 0x03, 0xFF, 0xEF,
244 0xFF, 0xFF, 0xFC, 0x08, 0xC6, 0x04, 0x01, 0xFF, 0xEF, 0xFF, 0xFF, 0xF4, 0x04, 0x8E, 0x0C, 0x43,
245 0xFE, 0x6F, 0xFF, 0xFF, 0xE6, 0x05, 0x9F, 0x98, 0x43, 0xFF, 0x8F, 0xFF, 0xFB, 0xC3, 0xC7, 0x9F,
246 0x99, 0xE7, 0x7F, 0xFF, 0xFF, 0xFD, 0xC1, 0xE7, 0xFF, 0xD9, 0xE6, 0xFD, 0xFF, 0xFF, 0xDF, 0xF0,
247 0x0F, 0xFF, 0xFF, 0xA7, 0xE1, 0x9F, 0xFF, 0x0F, 0xF8, 0x5B, 0xFF, 0xEE, 0x8F, 0x81, 0x87, 0xE0,
248 0x00, 0x0C, 0x00, 0x00, 0x00, 0x1E, 0x01, 0x8F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x3C, 0x01,
249 0x9E, 0xF3, 0xC4, 0x15, 0xE2, 0x08, 0x00, 0xF8, 0x00, 0xF8, 0x91, 0x24, 0xFC, 0x02, 0x08, 0x03,
250 0x98, 0x00, 0xE0, 0x93, 0xD4, 0x90, 0x77, 0x88, 0x7E, 0x30, 0x01, 0x80, 0xF8, 0x94, 0xEA, 0x22,
251 0x88, 0x38, 0x30, 0x07, 0x00, 0x0B, 0xD4, 0xAC, 0x2A, 0x80, 0x00, 0x60, 0x3C, 0x01, 0xE8, 0x84,
252 0xAC, 0x36, 0x88, 0x00, 0x40, 0x38, 0x00, 0x1B, 0xED, 0x76, 0x6D, 0x80
253 };
254
255 void main(void)
256 {
257 1 char i,j;
258 1 uint n;
259 1 uchar code string_num[]="7426";
260 1
261 1 uchar pinyin_buf[6][8];
262 1 serial_init();
263 1 for(n=0;n<60000;n++);
264 1
265 1
266 1 while(1)
267 1 {
268 2
269 2 lcd_cls();
270 2 lcd_string(0,"您好!欢迎使用汉显液晶模块!");
271 2 delay();
272 2
273 2 lcd_string(1,"反显效果");
274 2 delay();
275 2
276 2 lcd_cls();
277 2 lcd_string(0,"现在打开光标闪烁:");
278 2 lcd_showcursor(0x01);
279 2 delay();
280 2
281 2 lcd_cls();
282 2 lcd_string(0,"现在将光标移到(8,3)位置:");
283 2 lcd_cursor(8, 3);
284 2 delay();
285 2
286 2 lcd_string(0,"您好!");
287 2 delay();
288 2
289 2 lcd_cls();
290 2 lcd_string(0,"现在关闭光标闪烁:");
291 2 lcd_showcursor(0x00);
292 2 delay();
293 2
294 2 lcd_cls();
295 2 lcd_string(0,"在(20,40)位置画一个点:");
296 2 lcd_dot(1,20,40);
297 2 delay();
298 2
299 2 lcd_cursor(0, 0);
300 2 lcd_string(0,"再以直径为15画一个圆: ");
301 2 lcd_circle(1,20,40,15);
302 2 delay();
C51 COMPILER V7.07 MAIN 11/19/2004 17:55:36 PAGE 6
303 2
304 2 lcd_cursor(0, 0);
305 2 lcd_string(0,"再画两条线,一条实线,一条虚线:");
306 2 lcd_line(1,10,5,100,60);
307 2 lcd_line(2,10,55,100,10);
308 2 delay();
309 2
310 2 lcd_cls();
311 2 lcd_string(0,"画一个图片'马到成功'");
312 2 lcd_picture(0,30,20,pic);
313 2 delay();
314 2
315 2 lcd_cls();
316 2 lcd_string(0,"现在取'7426'的拼音串");
317 2 while(inbufsign) getbyte(); //清空接收缓冲区
318 2 lcd_string(0,"返回的结果:");
319 2 j=lcd_num2pinyin(string_num, pinyin_buf);
320 2
321 2 lcd_cursor(0, 3);
322 2 for(i=0;i<j;i++)
323 2 {
324 3 if(i==0) lcd_string(1,pinyin_buf[i]);//默认反显第一个拼音
325 3 else lcd_string(0,pinyin_buf[i]);
326 3 lcd_string(0," ");
327 3 }
328 2 delay();
329 2
330 2 lcd_cls();
331 2 lcd_cursor(0, 0);
332 2 lcd_string(0,"反显第二个拼音:");//比如通过按键选到了第二个
333 2 lcd_cursor(0, 3);
334 2 for(i=0;i<j;i++)
335 2 {
336 3 if(i==1) lcd_string(1,pinyin_buf[i]);//反显第一个拼音
337 3 else lcd_string(0,pinyin_buf[i]);
338 3 lcd_string(0," ");
339 3 }
340 2 delay();
341 2
342 2 lcd_cls();
343 2 lcd_string(0,"取这个拼音的汉字串:\r\n");
344 2
345 2 while(inbufsign) getbyte(); //清空接收缓冲区
346 2 lcd_pinyin2hz(1, pinyin_buf[1],pinyin_buf);//借用拼音的缓冲区pinyin_buf放汉字串,以节省内存
*** WARNING C182 IN LINE 346 OF MAIN.C: pointer to different objects
347 2 lcd_cursor(0, 4);
348 2 lcd_string(0,pinyin_buf[0]);
349 2 delay();delay();delay();
350 2 }
351 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1390 ----
CONSTANT SIZE = 546 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 109
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 2 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -