找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2228|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)串口驅(qū)動(dòng)LCD12864反白程序調(diào)試問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
為什么我這個(gè)12864串口驅(qū)動(dòng) 反白程序不對(duì)并口是可以的 顯示除了需要需要的全部反白了 求 大神解答一下
/******************************************************                        
帶中文12864 內(nèi)置數(shù)字,字母,漢字反白               
y反白行 x反白列 sv你想反白多少個(gè)字符?可設(shè)置1~16字符(一個(gè)漢字等于2個(gè)字符)
fb=0反白 fb=1不反白
******************************************************/
void Lcd12864_Set(unsigned char y,unsigned char x,unsigned char sv,unsigned char fb)
{
unsigned char i,s,white_x,white_y,white_endx;
white_endx=x;
x=x/2;
switch(y)
  {
   case 1:white_y=0x80;white_x=0x80+x;break;
   case 2:white_y=0x90;white_x=0x80+x;break;
   case 3:white_y=0x80;white_x=0x88+x;break;
   case 4:white_y=0x90;white_x=0x88+x;break;
  }
        
LCD12864_COM_Write(0x36);                   //開繪圖顯示
for(i=0;i<16;i++)
  {
   LCD12864_COM_Write(white_y+i);
   LCD12864_COM_Write(white_x);
         if(fb==0)                              //fb=0反白
         {
    if(white_endx%2)LCD12864_Data_Write(0x00); //如果開始被2整除,就說明他開始是從0開始,可以寫入0xff,否則寫0x00
                for(s=0;s<sv;s++)
                 {
                  LCD12864_Data_Write(0xff);
                 }               
   }
         
  if(fb==1)                               //fb=1不反白
         {
    if(white_endx%2)LCD12864_Data_Write(0x00); //如果開始被2整除,就說明他開始是從0開始,寫入0x00
                for(s=0;s<sv;s++)
                 {
                  LCD12864_Data_Write(0x00);
                 }                 
         }               
}
LCD12864_COM_Write(0x30);                    //回到基本指令
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:265485 發(fā)表于 2022-7-21 16:11 | 只看該作者
求大神講解一下
回復(fù)

使用道具 舉報(bào)

板凳
ID:584814 發(fā)表于 2022-7-22 08:12 | 只看該作者
所謂反白,就是原先打點(diǎn)的不打點(diǎn),原先不打點(diǎn)的打點(diǎn)。
回復(fù)

使用道具 舉報(bào)

地板
ID:265485 發(fā)表于 2022-7-22 09:30 | 只看該作者
man1234567 發(fā)表于 2022-7-22 08:12
所謂反白,就是原先打點(diǎn)的不打點(diǎn),原先不打點(diǎn)的打點(diǎn)。

具體內(nèi)容?
回復(fù)

使用道具 舉報(bào)

5#
ID:195496 發(fā)表于 2022-7-22 18:47 | 只看該作者
按位置,把數(shù)據(jù)取反,這個(gè)與具體的應(yīng)用程序有關(guān)系
回復(fù)

使用道具 舉報(bào)

6#
ID:44037 發(fā)表于 2022-7-23 18:49 | 只看該作者

我看網(wǎng)上的程序是 正常程序 取值時(shí) 取反
  1. void LCD12864_Display(u8 y,u8 x,u8 px,u8 py,u8 *pp)
  2. {
  3.    u8 i,j,k;

  4.    LCD12864_Clear();         //清屏
  5.    if(y<32)                  //如果起始行在上半屏
  6.    {
  7.       k = 32-y;              //算出上半屏的行數(shù)
  8.       for(i=0;i<k;i++,y++)   //上半屏行數(shù)
  9.       {
  10.          LCD12864_WCMD(0x80|y);  //寫行地址(垂直地址)
  11.          LCD12864_WCMD(0x80|x);  //寫列地址(水平地址)
  12.          for(j=0;j<px/8;j++)
  13.             LCD12864_WDAT(pp[i*px/8+j]);  //寫圖片數(shù)據(jù)

  14.       }
  15.       y=0;                    //下半屏起始行,接上半屏繼續(xù)寫數(shù)據(jù)
  16.       for(;i<py;i++,y++)//下半屏剩下的行數(shù)
  17.       {
  18.          LCD12864_WCMD(0x80|y);//寫行地址(垂直地址)
  19.          LCD12864_WCMD(0x80|(8+x));//寫列地址(水平地址)
  20.             for(j=0;j<px/8;j++)
  21.               LCD12864_WDAT(pp[i*px/8+j]);//寫圖片數(shù)據(jù)
  22.       }
  23.    }
  24.    else //如果起始行在下半屏
  25.    {
  26.       for(i=0;i<py;i++,y++)//行數(shù)
  27.       {
  28.          LCD12864_WCMD(0x80|(y-32));//寫行地址(垂直地址)
  29.          LCD12864_WCMD(0x80|(8+x));//寫列地址(水平地址)
  30.             for(j=0;j<px/8;j++)
  31.                LCD12864_WDAT(pp[i*px/8+j]);//寫圖片數(shù)據(jù)
  32.       }  
  33.          }
  34. }   
  35. // 反白程序  同上一函數(shù)一樣 <span style="background-color: rgb(255, 255, 255);">取值時(shí) </span><span style="background-color: rgb(255, 255, 255); color: red;">取反</span>
  36. void LCD12864_DisplayFb(u8 y,u8 x,u8 px,u8 py,u8 *pp)
  37. {
  38.    u8 i,j,k;

  39.    LCD12864_Clear();         //清屏
  40.    if(y<32)                  //如果起始行在上半屏
  41.    {
  42.       k = 32-y;              //算出上半屏的行數(shù)
  43.       for(i=0;i<k;i++,y++)   //上半屏行數(shù)
  44.       {
  45.          LCD12864_WCMD(0x80|y);  //寫行地址(垂直地址)
  46.          LCD12864_WCMD(0x80|x);  //寫列地址(水平地址)
  47.          for(j=0;j<px/8;j++)
  48.             LCD12864_WDAT(~pp[i*px/8+j]);  //寫圖片數(shù)據(jù) 取反

  49.       }
  50.       y=0;                    //下半屏起始行,接上半屏繼續(xù)寫數(shù)據(jù)
  51.       for(;i<py;i++,y++)//下半屏剩下的行數(shù)
  52.       {
  53.          LCD12864_WCMD(0x80|y);//寫行地址(垂直地址)
  54.          LCD12864_WCMD(0x80|(8+x));//寫列地址(水平地址)
  55.             for(j=0;j<px/8;j++)
  56.               LCD12864_WDAT(~pp[i*px/8+j]);//寫圖片數(shù)據(jù) 取反
  57.       }
  58.    }
  59.    else //如果起始行在下半屏
  60.    {
  61.       for(i=0;i<py;i++,y++)//行數(shù)
  62.       {
  63.          LCD12864_WCMD(0x80|(y-32));//寫行地址(垂直地址)
  64.          LCD12864_WCMD(0x80|(8+x));//寫列地址(水平地址)
  65.             for(j=0;j<px/8;j++)
  66.                LCD12864_WDAT(~pp[i*px/8+j]);//寫圖片數(shù)據(jù) 取反
  67.       }  
  68.          }
  69. }   
復(fù)制代碼

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表