|
本帖最后由 yekai_yh 于 2018-9-20 19:39 編輯
單片機(jī)入門新手,最近在學(xué)習(xí)制作菜單,遇到反白問題,在網(wǎng)上搜 了個(gè)反白函數(shù),看不明白函數(shù)怎么用,convertChar (uchar CX, CY, width,YN,f),其中YN和f參數(shù)有什么作用,還有就是這個(gè)不能正常反白,請(qǐng)高手指點(diǎn)下,這個(gè)的效果是比如我要反白第一行,結(jié)果是第一行從上部分到下部分逐步反白,而且保持不了,一直流動(dòng)反白。具體程序如下,沒有引用別的頭文件。
函數(shù)如下:
- void Disp_black() //在反白之前先清繪圖存儲(chǔ)區(qū),將繪圖存儲(chǔ)區(qū)的參數(shù)全設(shè)為不反白0x00.
- {
- unsigned char i,j;
- lcd_w_com(0x36); //圖形方式
- for(i=0;i<32;i++)
- {
- lcd_w_com(0x80+i);
- lcd_w_com(0x80);
- for(j=0;j<16;j++)
- {
- lcd_w_data(0x00);
- }
- }
- for(i=0;i<32;i++)
- {
- lcd_w_com(0x80+i);
- lcd_w_com(0x88);
- for(j=0;j<16;j++)
- {
- lcd_w_data(0x00);
- }
- }
- }
- void convertChar (uchar CX, CY, width,YN,f)
- {
- unsigned char halfLineCnt, basicBlock,lcdPosX,lcdPosY;
- if(f==1)
- Disp_black(); //清繪圖區(qū)
- lcdPosY = 0x80;
- if (CX == 0)
- {
- CX = 0x80;
- halfLineCnt = 16;
- }
- else if (CX == 1)
- {
- CX = 0x80;
- halfLineCnt = 32;
- }
- else if (CX == 2)
- {
- CX = 0x88;
- halfLineCnt = 16;
- }
- else if (CX == 3)
- {
- CX = 0x88;
- halfLineCnt = 32;
- }
- lcdPosX = CX + CY;
- for (; halfLineCnt != 0; halfLineCnt--)
- {
- basicBlock = width;
- lcd_w_com(0x34);
- lcd_w_com(lcdPosY);
- lcd_w_com(lcdPosX);
- lcd_w_com(0x30);
- for (;basicBlock != 0; basicBlock--)
- {
- if (halfLineCnt > 16)
- {
- lcd_w_data(0x00);
- }
- else
- {
- if(YN==1) lcd_w_data(0xff);
- else lcd_w_data(0x00);
- }
- }
- lcdPosY++;
- }
- lcd_w_com(0x36);
- lcd_w_com(0x30);
- }
復(fù)制代碼
|
|