亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? lcd._c

?? ICCAVR編寫128*64液晶程序測試已經通過
?? _C
字號:
#include <iom16.h>
#include "lcd.h"
#include "delay.h"
#include "font.h"
unsigned char CurOffset,CurRow,CurPage,CurCol;//當前指針位置

//--------------復位函數---------------------
void LCD_reset(void)
{
   LCD_RST_DDR    |=  LCD_RST_BIT;
   CLEAR_LCD_RST;
   delay_nms(10);
   SET_LCD_RST;
}

//-------------忙信號檢測函數----------------
void LCD_BUSY(unsigned char lr) //判斷忙標志
{
   //unsigned char status;
   asm("cli");
   if(lr==RIGHT)
   {
      CLEAR_LCD_CS2; //cs2=0
      SET_LCD_CS1;   //cs1=1
   }
   else
   {
      SET_LCD_CS2;   //cs2=1
      CLEAR_LCD_CS1; //cs1=0
   }
   SET_LCD_CMD;
   LCD_DIR_PORT = 0x00;
   LCD_OP_PORT = 0xff;
   SET_LCD_READ;
   SET_LCD_E;
   delay_nus(250);
   delay_nus(250);
   while((LCD_IP_PORT) & LCD_STATUS_BUSY)
   {
      CLEAR_LCD_E;
      delay_nus(250);
	  delay_nus(250);
      SET_LCD_E;
      delay_nus(250);
	  delay_nus(250);
   }
   CLEAR_LCD_E;
   SET_LCD_WRITE;
   LCD_OP_PORT = 0xff;
   asm("sei");
  
}

//------------寫指令(數據)函數---------------------
void write_LCD(unsigned char lr,unsigned char cd,unsigned char data) 
{	
  asm("cli");
   LCD_BUSY(lr);
   if(cd==CMD)
      SET_LCD_CMD;
   else
      SET_LCD_DATA;
   SET_LCD_WRITE;
   SET_LCD_E;
   LCD_DIR_PORT = 0xff;
   LCD_OP_PORT = data;
   delay_nus(250);
   delay_nus(250);
   CLEAR_LCD_E;
   LCD_OP_PORT = 0xff;
   asm("sei");
  
}

//--------------讀數據函數-------------------
unsigned char read_LCD(unsigned char lr)	  
{
   unsigned char data;
   
   asm("cli");
   LCD_BUSY(lr);
   SET_LCD_DATA;
   LCD_DIR_PORT = 0x00;
   LCD_OP_PORT = 0xff;
   SET_LCD_READ;
   SET_LCD_E;
   delay_nms(1);
   data=LCD_IP_PORT;
   CLEAR_LCD_E;
   SET_LCD_WRITE;
   
   LCD_BUSY(lr);
   SET_LCD_DATA;
   LCD_DIR_PORT = 0x00;
   LCD_OP_PORT = 0xff;
   SET_LCD_READ;
   SET_LCD_E;
   delay_nus(250);
   delay_nus(250);
   data=LCD_IP_PORT;
   CLEAR_LCD_E;
   SET_LCD_WRITE;
   delay_nus(250);
   delay_nus(250);
   asm("sei");
   return data;
}

//-----------------行列頁選擇函數------------------ 
void set_start_line_L(unsigned char line) /*設置顯示起始行*/ //0-63
{
   write_LCD(LEFT,CMD,0xc0|line);
}

void set_start_line_R(unsigned char line) /*設置顯示起始行*/ //0-63
{
   write_LCD(RIGHT,CMD,0xc0|line);
}

void set_page_L(unsigned char page)	/*設置X地址 設置頁*/  //0-7
{
   write_LCD(LEFT,CMD,0xb8|page);
}
void set_page_R(unsigned char page)	/*設置X地址 設置頁*/ //0-7
{
   write_LCD(RIGHT,CMD,0xb8|page);
}

void set_col_addr_L(unsigned char col) /*設置Y地址*/ //0-63
{
   write_LCD(LEFT,CMD,0x40|col);
}

void set_col_addr_R(unsigned char col) /*設置Y地址*/ //0-63
{
   write_LCD(RIGHT,CMD,0x40|col);
}


//------------液晶初始化函數-----------------------
void LCD_Init(void) 
{
   LCD_DIR_PORT = 0xff;
   LCD_OP_PORT = 0xff;
   LCD_EN_DDR    |=  LCD_EN_BIT;
   LCD_DI_DDR    |=  LCD_DI_BIT;
   LCD_CS1_DDR   |=  LCD_CS1_BIT;
   LCD_CS2_DDR   |=  LCD_CS2_BIT;
   LCD_RW_DDR    |=  LCD_RW_BIT;
   LCD_RW_PORT   &= ~LCD_RW_BIT;
   LCD_reset();
   set_start_line_L(0);             /*顯示起始行為0*/
   set_start_line_R(0);             /*顯示起始行為0*/
   write_LCD(LEFT,CMD,DISPLAY_ON);  /*  開顯示  */
   write_LCD(RIGHT,CMD,DISPLAY_ON); /*  開顯示  */
}


//-----------清屏函數---------------------------
void LCD_clr(void)                 
{
   unsigned char pages,i;
   for(pages=0;pages<8;pages++)
   {
      set_page_L(pages);            /* X 頁地址 */
      set_page_R(pages);            /* X 頁地址 */
      for(i=0;i<64;i++)
      {
         set_col_addr_L(i);//Y
         set_col_addr_R(i);//Y
         write_LCD(LEFT,DATA,0x0);
         write_LCD(RIGHT,DATA,0x0);
      }
   }
}


//---------當前行列獲得函數-----------------------
unsigned char GetPage(void) /*得到當前頁*/
{
   return CurPage;
}

unsigned char GetCol(void) /*得到當前列*/
{
   return CurCol;
}

//-----------------頁置函數-----------------
void SetPageCol(unsigned char upage, unsigned char ucol) 
{
   CurPage = upage;
   CurCol = ucol;
   if(ucol<64)
   {
      set_page_L(upage);
      set_col_addr_L(ucol);
   }
   else
   {
      set_page_R(upage);
      set_col_addr_R(ucol-64);
   }
}

//---------------行列設置函數---------------------------
void SetRowCol(unsigned char urow, unsigned char ucol) 
{
   unsigned char page;
   CurRow = urow;
   CurCol = ucol;
	
   switch(urow)
   {
      case 1:
             page=0;
             CurOffset=1;
             break;
      case 2:
             page=1;
             CurOffset=2;
             break;
      case 3:
             page=3;
             CurOffset=1;
             break;
      case 4:
             page=4;
             CurOffset=2;
             break;
      case 5:
             page=6;
             CurOffset=1;
             break;
   }
   SetPageCol(page,ucol);
}


//----------------字符顯示函數------------------
void disp_char(unsigned char c)
{
   unsigned char k,j,uPage,uCol,ch_r,ch_w;
   unsigned char width;
   unsigned char len;
   uPage = GetPage();
   uCol = GetCol();
   len=sizeof(ASC_16)/sizeof(ASC_16[0]);
   for(k=0;k<len;k++)
   {
      if(c == ASC_16[k].Index[0] )
         break;
   }
   if(k<len)
   {
      if(c=='-'||c==':')
         width=ASC_CHR_WIDTH-2;
      else if(c=='|')
         width=ASC_HZ_WIDTH-ASC_CHR_WIDTH;
      else
         width=ASC_CHR_WIDTH;
		
      if(CurOffset==1) //下半部是寫半個字節
      {
         for(j=0;j<width;j++)
         {
            SetPageCol(uPage,uCol+j);
            ch_w=ASC_16[k].Msk[j];
            if(uCol+j<64)
               write_LCD(LEFT,DATA,ch_w);
            else
               write_LCD(RIGHT,DATA,ch_w);
         }
         SetPageCol(uPage+1,uCol);
			
         for(j=0;j<width;j++)
         {
            SetPageCol(uPage+1,uCol+j);
            if(uCol+j<64)
               ch_r=read_LCD(LEFT);
            else
               ch_r=read_LCD(RIGHT);
            ch_r&=0xf0;
            ch_w=ASC_16[k].Msk[ASC_CHR_WIDTH+j]&0x0f;
            ch_w|=ch_r;
            SetPageCol(uPage+1,uCol+j);
            if(uCol+j<64)
               write_LCD(LEFT,DATA,ch_w);
            else
               write_LCD(RIGHT,DATA,ch_w);
         }
      }
      else //上半部是寫半個字節
      {
         for(j=0;j<width;j++)
         {
            SetPageCol(uPage,uCol+j);
            if(uCol+j<64)
               ch_r=read_LCD(LEFT);
            else
               ch_r=read_LCD(RIGHT);
            ch_r&=0x0f;
            ch_w=ASC_16[k].Msk[j];
            ch_w=ch_w<<4;
            ch_w|=ch_r;
            SetPageCol(uPage,uCol+j);
            if(uCol+j<64)
               write_LCD(LEFT,DATA,ch_w);
            else
               write_LCD(RIGHT,DATA,ch_w);
         }
         SetPageCol(uPage+1,uCol);
         for(j=0;j<width;j++)
         {
            SetPageCol(uPage+1,uCol+j);
				
            ch_r=ASC_16[k].Msk[j];
            ch_w=ASC_16[k].Msk[ASC_CHR_WIDTH+j];
            ch_r=ch_r>>4;
            ch_w=ch_w<<4;
            ch_w|=ch_r;
            SetPageCol(uPage+1,uCol+j);
            if(uCol+j<64)
               write_LCD(LEFT,DATA,ch_w);
            else
               write_LCD(RIGHT,DATA,ch_w);
         }
      }
   }
   SetPageCol(uPage,uCol+width);
}


//---------------漢字顯示函數------------------
void disp_hz(unsigned char *hz)
{
   unsigned char k,j,uPage,uCol,ch_r,ch_w;
   uPage = GetPage();
   uCol = GetCol();
   for(k=0;k<sizeof(GB_16)/sizeof(GB_16[0]);k++)
   {
      if(hz[0] == GB_16[k].Index[0] && hz[1] == GB_16[k].Index[1])
         break;
   }

   if(CurOffset==1)
   {
      for(j=0;j<ASC_HZ_WIDTH;j++)
      {
         SetPageCol(uPage,uCol+j);
         ch_w=GB_16[k].Msk[j];
         if(uCol+j<64)	write_LCD(LEFT,DATA,ch_w);
         else write_LCD(RIGHT,DATA,ch_w);
      }
      SetPageCol(uPage+1,uCol);

      for(j=0;j<ASC_HZ_WIDTH;j++)
      {
         SetPageCol(uPage+1,uCol+j);
         if(uCol+j<64)
            ch_r=read_LCD(LEFT);
         else
            ch_r=read_LCD(RIGHT);
         ch_r&=0xf0;
         ch_w=GB_16[k].Msk[ASC_HZ_WIDTH+j]&0x0f;
         ch_w|=ch_r;
         SetPageCol(uPage+1,uCol+j);
         if(uCol+j<64)
            write_LCD(LEFT,DATA,ch_w);
         else
            write_LCD(RIGHT,DATA,ch_w);
      }
      SetPageCol(uPage,uCol+ASC_HZ_WIDTH);
   }

   else //漢字上半部是寫半個字節
   {
      for(j=0;j<ASC_HZ_WIDTH;j++)
      {
         SetPageCol(uPage,uCol+j);
         if(uCol+j<64)
            ch_r=read_LCD(LEFT);
         else ch_r=read_LCD(RIGHT);
         ch_r&=0x0f;
         ch_w=GB_16[k].Msk[j];
         ch_w=ch_w<<4;
         ch_w|=ch_r;
         SetPageCol(uPage,uCol+j);
         if(uCol+j<64)
            write_LCD(LEFT,DATA,ch_w);
         else
            write_LCD(RIGHT,DATA,ch_w);
      }
      SetPageCol(uPage+1,uCol);
      for(j=0;j<ASC_HZ_WIDTH;j++)
      {
         SetPageCol(uPage+1,uCol+j);

         ch_r=GB_16[k].Msk[j];
         ch_w=GB_16[k].Msk[ASC_HZ_WIDTH+j];
         ch_r=ch_r>>4;
         ch_w=ch_w<<4;
         ch_w|=ch_r;
         SetPageCol(uPage+1,uCol+j);
         if(uCol+j<64)
            write_LCD(LEFT,DATA,ch_w);
         else
            write_LCD(RIGHT,DATA,ch_w);
      }
      SetPageCol(uPage,uCol+ASC_HZ_WIDTH);
   }
}


//-----------字符串顯示函數----------------
void disp_str(unsigned char *p)
{
   unsigned char i=0;
   while(p[i]>0)
   {
      if(p[i] < 128)
      {	/* ASCII */
         disp_char(p[i]);
      }
      else
      {	/* 中文 */
         disp_hz(&p[i]);
         i++;
      }
      i++;
   }
}


//-------------------繪點函數----------------------------------              
//XX--(0-128) YY--(0-63) FLAG=1繪點   FLAG=0 清點
void GUI_Point(unsigned char xx,unsigned char yy,unsigned char flag)
{
   unsigned int y,ch;
   ch=yy%8;  //余數

   y=1;
   for(;ch!=0;)
   {
      y=y*2;
      ch--;
   }
   if(xx<64)
   {
      set_page_L(yy/8);
      set_col_addr_L(xx);
      ch=read_LCD(LEFT);
      set_col_addr_L(xx);
      if(flag)
         write_LCD(LEFT,DATA,ch|y);
      else
         write_LCD(LEFT,DATA,ch&(~y));
   }
   else
   {
      set_page_R(yy/8);
      set_col_addr_R(xx-64);
      ch=read_LCD(RIGHT);
      set_col_addr_R(xx-64);
      if(flag)
         write_LCD(RIGHT,DATA,ch|y);
      else
         write_LCD(RIGHT,DATA,ch&(~y));
   }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区三区四区五区中文| 99精品热视频| 欧美男女性生活在线直播观看| 国产精品无码永久免费888| 国产一区久久久| 精品久久久久一区| 激情小说亚洲一区| 日韩免费电影一区| 一区二区三区在线观看动漫 | 国产精品美女久久久久av爽李琼| 美女性感视频久久| 欧美电影免费观看高清完整版在| 日韩在线a电影| 日韩三级视频中文字幕| 蜜桃视频一区二区三区在线观看| 在线不卡欧美精品一区二区三区| 亚洲3atv精品一区二区三区| 欧美精品在线观看一区二区| 免费观看日韩av| 精品久久五月天| 国产成人亚洲精品青草天美 | 裸体歌舞表演一区二区| 日韩精品资源二区在线| 国产乱一区二区| 国产日产欧美一区| 91色porny在线视频| 一区二区在线免费观看| 欧美日韩国产乱码电影| 久久精品国产成人一区二区三区 | 欧美xfplay| 丁香啪啪综合成人亚洲小说 | 欧美日本韩国一区| 麻豆精品国产91久久久久久| 精品不卡在线视频| 99综合电影在线视频| 1024成人网色www| 欧美日韩国产免费一区二区| 亚洲网友自拍偷拍| 678五月天丁香亚洲综合网| 狠狠色综合播放一区二区| 国产精品久久久久国产精品日日| 91老师片黄在线观看| 亚洲福利视频一区二区| 精品精品欲导航| 97精品电影院| 免费在线看成人av| 中文成人av在线| 这里只有精品免费| 成人av一区二区三区| 天堂va蜜桃一区二区三区漫画版 | 日韩欧美精品三级| 成人禁用看黄a在线| 亚洲福利一二三区| 中文字幕不卡在线播放| 欧美日韩精品二区第二页| 国产成人亚洲精品青草天美| 亚洲精品视频一区| 国产人成亚洲第一网站在线播放| 欧美性猛片aaaaaaa做受| 国产精品一区二区在线播放 | 欧美一区二区三区男人的天堂| 国产精品中文欧美| 偷窥国产亚洲免费视频| 中文字幕中文字幕中文字幕亚洲无线 | 亚洲国产精品精华液2区45| 欧美日韩美女一区二区| 岛国精品一区二区| 亚洲国产精品麻豆| 最新国产成人在线观看| 欧美电影一区二区| 91九色最新地址| 成人一区二区三区| 日本在线播放一区二区三区| 亚洲精品美国一| 国产色产综合产在线视频| 在线免费观看一区| 99精品欧美一区二区三区综合在线| 久久99精品久久久| 亚洲成人激情av| 亚洲欧美另类综合偷拍| 国产精品萝li| 中文字幕免费不卡| 亚洲色图制服丝袜| 亚洲一区二区三区四区在线观看 | 久久99精品国产91久久来源| 免费日韩伦理电影| 紧缚奴在线一区二区三区| 久久99国产精品免费| 国产一本一道久久香蕉| 国产a精品视频| 91日韩精品一区| 欧美视频中文一区二区三区在线观看| 91激情五月电影| 91精品久久久久久久久99蜜臂| 亚洲精品亚洲人成人网| 亚洲一区二区三区美女| 石原莉奈在线亚洲三区| 狠狠色狠狠色综合系列| 国产一区二区不卡老阿姨| 成人美女视频在线观看18| 日本道色综合久久| 日韩一级片网站| 国产丝袜美腿一区二区三区| 亚洲欧美日韩中文播放| 午夜精品福利久久久| 国产在线精品一区二区| av一本久道久久综合久久鬼色| 欧洲一区二区三区免费视频| 欧美一区二区黄色| 国产精品丝袜一区| 性欧美疯狂xxxxbbbb| 精品一区二区三区久久| 97se亚洲国产综合自在线观| 在线成人午夜影院| 国产精品全国免费观看高清| 亚洲夂夂婷婷色拍ww47| 国产在线播放一区| 欧洲色大大久久| 久久久91精品国产一区二区精品| 一区二区三区中文字幕精品精品 | 91社区在线播放| 欧美成人欧美edvon| 1区2区3区欧美| 日本系列欧美系列| 99精品欧美一区| 精品国产一区二区三区久久久蜜月 | 成人国产精品免费网站| 在线91免费看| 亚洲人成网站在线| 激情综合色综合久久综合| 色94色欧美sute亚洲线路一久 | www欧美成人18+| 亚洲柠檬福利资源导航| 国产麻豆精品在线观看| 中文一区在线播放| 精品制服美女久久| 欧美另类变人与禽xxxxx| 国产精品久久久久久久岛一牛影视 | 蜜桃精品在线观看| 在线观看一区二区精品视频| 国产欧美精品日韩区二区麻豆天美| 天天综合色天天| 一本色道久久综合亚洲精品按摩| 久久久亚洲国产美女国产盗摄 | 91热门视频在线观看| 欧美国产一区视频在线观看| 久热成人在线视频| 欧美理论电影在线| 亚洲午夜电影在线| 97超碰欧美中文字幕| 国产精品久久久久久久久果冻传媒| 久久99在线观看| 欧美一卡二卡三卡| 日本亚洲一区二区| 欧美日韩亚洲国产综合| 亚洲男人的天堂网| 99热在这里有精品免费| 国产精品亲子乱子伦xxxx裸| 国内成+人亚洲+欧美+综合在线| 日韩一级视频免费观看在线| 首页综合国产亚洲丝袜| 欧美日韩国产一区| 午夜精品福利一区二区蜜股av| 欧美唯美清纯偷拍| 亚洲电影一级片| 欧美日韩亚洲综合在线| 亚洲成av人片在www色猫咪| 欧洲另类一二三四区| 亚洲午夜羞羞片| 欧美精品乱码久久久久久| 亚洲第一av色| 欧美电影一区二区三区| 日本aⅴ免费视频一区二区三区| 91精品国产一区二区三区| 免费国产亚洲视频| 26uuu久久综合| 国产精品1区2区| 欧美高清一级片在线观看| 国产成都精品91一区二区三| 国产精品久久久99| 91丨九色丨国产丨porny| 亚洲靠逼com| 91.麻豆视频| 激情另类小说区图片区视频区| 久久综合av免费| av成人免费在线| 亚洲一二三四在线观看| 欧美一区二区三区日韩| 国产一区二区按摩在线观看| 国产精一区二区三区| 亚洲欧洲99久久| 欧美美女一区二区在线观看| 久久99精品国产.久久久久| 欧美激情在线一区二区三区| 99久久综合精品| 无吗不卡中文字幕| 久久久久久久久久久久久夜| 91美女在线看| 久久成人麻豆午夜电影| 国产精品久久夜|