久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

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

QQ登錄

只需一步,快速開始

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

12864程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:385513 發(fā)表于 2018-8-12 16:19 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include"main.h"
#include"12864.h"
#include<intrins.h>
#include<stdlib.h>

#define BASIC_SET 0x30
#define EXTEND_SET 0x34
#define DRAW_ON 0x36
#define DRAW_OFF  0x34






//=======================================================================
//        函數(shù)名稱: void delaypic(uint k)
//        函數(shù)功能: 延時(shí)函數(shù)
//        作者:
//        日期:2017.8.4
//        備注:
//=======================================================================
void delaypic(uint k)
{
uint i;
uchar j;
for(i = 0; i < k ;i ++)
for(j = 0; j < 10 ;j ++);
}

//=======================================================================
//        函數(shù)名稱:  delay(uint16 time)
//        函數(shù)功能:延時(shí)函數(shù)
//        作者:
//        日期:2017.8.4
//        備注:
//=======================================================================
      delay(uint16 time)               
{
  uint16  i,j;            
  for(i=0;i<time;i++)   
     for(j=0;j<100;j++);
}






//=======================================================================
//        函數(shù)名稱:  checkbusy()
//        函數(shù)功能:查忙
//        作者:
//        日期:2017.8.4
//        備注:
//=======================================================================
checkbusy()           
{
   RS=0;                    
   RW=1;                  
   E=1;                  
   while((P0&0x80)==0x80);
   E=0;                  
}






//=======================================================================
//        函數(shù)名稱:wcode(uint8 cmdcode)
//        函數(shù)功能:寫入命令
//        作者:
//        日期:2017.8.4
//        備注:
//=======================================================================

wcode(uint8 cmdcode)
{
   checkbusy();            
   RS=0;                  
   RW=0;                  
   E=1;                  
   P0 = cmdcode;            
   delay(10);            
   E=0;                  
}






//=======================================================================
//        函數(shù)名稱: wdata(uint8 dispdata)
//        函數(shù)功能:寫入數(shù)據(jù)
//        作者:
//        日期:2017.8.4
//        備注:
//=======================================================================
wdata(uint8 dispdata)
{
   checkbusy();           
   RS=1;                  
   RW=0;                  
   E=1;                    
   P0 = dispdata;            
   delay(10);            
   E=0;                  
}









/*******************************************************
* 函 數(shù) 名:unsigned char rd_dat( void )
* 功能描述:讀數(shù)據(jù)
* 函數(shù)說明:從12864b讀數(shù)據(jù)
* 輸入?yún)?shù):無
* 返 回 值:unsigned char byReturnValue
*******************************************************/
unsigned char rd_dat( void )  
{
    unsigned char byReturnValue ;
    P0 = 0xff ;
        checkbusy();
        RS=1;
        RW=1;
        E=0;
        E=1;
  byReturnValue = P0 ;
        E=0;
  return byReturnValue ;   
}


//=======================================================================
//        函數(shù)名稱: InitLCD()
//        函數(shù)功能:LCD初始化
//        作者:
//        日期:2017.8.4
//        備注:
//=======================================================================
InitLCD()
   {
   PSB=1;            
   RES=0;            
   delay(10);        
   RES=1;            
   wcode(0x30);      
   wcode(0x0c);      
   wcode(0x01);      
   wcode(0x06);      
   }






//=======================================================================
//        函數(shù)名稱: void dis(uint8 x,uint8 y,uint8 code *s)
//        函數(shù)功能:坐標(biāo)位置寫入數(shù)據(jù)
//        作者:
//        日期:2017.8.4
//        備注:X為橫行,Y為縱行
//=======================================================================
void dis(uint8 x,uint8 y,uint8  *s)   
{                                    
switch(y)                                   
     {
          case 0: wcode(0x80+x);break;   
          case 1: wcode(0x90+x);break;   
          case 2: wcode(0x88+x);break;   
          case 3: wcode(0x98+x);break;   
      default:break;
         }
   while(*s>0)                       
     {  
      wdata(*s);                     
      delay(10);                    
      s++;                           
     }
}






/*******************************************************
* 函 數(shù) 名:void DrawPoint( unsigned char X, unsigned char Y, unsigned char Color )
* 功能描述:畫點(diǎn)
* 函數(shù)說明:在制定位置畫一個(gè)像素的點(diǎn)
* 輸入?yún)?shù):unsigned char X, unsigned char Y, unsigned char Color
*          X為列,Y為行,COLOR為不顯示、顯示或者翻轉(zhuǎn)(0、1、2)
* 返 回 值:無
*******************************************************/
void DrawPoint( unsigned char X, unsigned char Y, unsigned char Color )
{
    unsigned char Row , Tier , Tier_bit    ;
    unsigned char ReadOldH, ReadOldL ;
          Tier = X >> 4 ;   
    Tier_bit = X & 0x0f ;
    if( Y < 32 )
    {
        Row = Y ;
    }
    else
    {
        Row = Y - 32 ;
        Tier += 8 ;
    }
        wcode(Row + 0x80);                //寫入行坐標(biāo)
        wcode(Tier + 0x80);        //寫入列坐標(biāo)
        rd_dat();
    ReadOldH = rd_dat() ;         //讀出原始數(shù)據(jù)
    ReadOldL = rd_dat() ;
        wcode(Row + 0x80);
        wcode(Tier + 0x80);
    if( Tier_bit < 8 )
    {
        switch( Color)
        {
            case 0 : ReadOldH &=( ~( 0x01 << ( 7 - Tier_bit ))) ; break ;        //不顯示
            case 1 : ReadOldH |= ( 0x01 << ( 7 - Tier_bit )) ; break ;                //顯示
            case 2 : ReadOldH ^= ( 0x01 << ( 7 - Tier_bit ))    ; break ;   //翻轉(zhuǎn)
            default : break ;   
        }
                wdata(ReadOldH);  //寫入新數(shù)據(jù)
                wdata(ReadOldL);
    }
    else
    {
        switch(Color)
        {
            case 0 : ReadOldL &= (~( 0x01 << ( 15 - Tier_bit ))) ; break ;
            case 1 : ReadOldL |= ( 0x01 << ( 15 - Tier_bit ))    ; break ;
            case 2 : ReadOldL ^= ( 0x01 << ( 15 - Tier_bit )) ; break ;
            default : break ;
        }
                wdata(ReadOldH);
                wdata(ReadOldL);
    }
}






/*------------------------------------------------
                 設(shè)置到繪圖模式
------------------------------------------------*/
void SetGraphicMode()
{
    wcode(0x36);       //選擇8bit數(shù)據(jù)流 圖形模式
   delaypic(50);

}


/*------------------------------------------------
                   顯示圖片
------------------------------------------------*/
void LCD_PutGraphic(unsigned char code *img)
{
int i,j;
//顯示上半屏內(nèi)容設(shè)置
   for(i=0;i<32;i++)            
    {
      wcode(0x80 + i); //SET  垂直地址 VERTICAL ADD
      wcode(0x80);     //SET  水平地址 HORIZONTAL ADD
      for(j=0;j<16;j++)
       {
         wdata(*img);
         img++;
       }
    }
//顯示下半屏內(nèi)容設(shè)置
   for(i=0;i<32;i++)            
    {
      wcode(0x80 + i); //SET  垂直地址 VERTICAL ADD
      wcode(0x88);     //SET  水平地址 HORIZONTAL ADD
      for(j=0;j<16;j++)
       {
        wdata(*img);
         img++;
       }
    }  

}


/*------------------------------------------------
                      清屏
------------------------------------------------*/
void ClrScreen()
{
   wcode(0x01);
   delaypic(40);
}
//***************************************************************************以下為GDRAM繪圖部分************************************************************************//
//*********************繪圖顯示的清屏函數(shù)(因清屏指令在畫圖時(shí)不能用)------------------------------------------------------------------------------注意!!!!!!!
void gui_clear()
{
uchar i , j , k;
wcode(EXTEND_SET);//擴(kuò)展指令集,8位數(shù)據(jù)傳輸
wcode(DRAW_OFF);  //繪圖顯示關(guān)閉
for(i = 0; i < 2; i ++)//分上下兩屏寫
{
for(j = 0; j < 32; j ++)
{
wcode(0x80 + j);//寫y坐標(biāo)
delaypic(1);
if(i == 0) //寫x坐標(biāo)
{
wcode(0x80);
delaypic(1);
}
else //寫下半屏
{
wcode(0x88);
delaypic(1);
}
for(k = 0; k < 16; k ++)//寫一整行數(shù)據(jù)
{
wdata(0x00);//寫高字節(jié)
wdata(0x00);//寫低字節(jié)
delaypic(1);
}
}

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

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2018-8-14 00:52 | 只看該作者
需要補(bǔ)全原理圖與頭文件后才可獲得積分  不然這帖無意義的
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品乱码久久久久久按摩观 | 亚洲福利av | 欧美看片 | 成人久久久 | 玖玖久久| 在线播放国产一区二区三区 | 亚洲成人综合网站 | 欧美三区在线观看 | 国产一区中文字幕 | 视频在线一区二区 | www.4hu影院 | 日本aⅴ中文字幕 | 精品无码久久久久久国产 | 黄色大片免费观看 | 日本三级日产三级国产三级 | 1级毛片| 一级黄色片免费在线观看 | 亚州视频在线 | 国产一区二区三区视频在线观看 | 九九热精品视频在线观看 | 一区二区视频 | 亚洲视频自拍 | 日韩精品免费播放 | 日韩免费视频一区二区 | 亚洲www啪成人一区二区 | 国产在线观看一区二区 | 视频一区二区三区在线观看 | 久久亚洲欧美日韩精品专区 | 国产不卡一区 | 日韩在线免费 | 伊人网一区 | 免费亚洲婷婷 | 久久久久久综合 | 福利精品在线观看 | www一级片| 欧美久久久久久 | 在线视频亚洲 | 一道本视频 | 国产欧美日韩精品一区 | 亚洲一区 | 国产在线一区二 |