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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? t6963_yejin.c

?? 東芝T6963是一個非常通用的芯片,市面上128*64或240*64的點陣液晶大都使用該芯片驅(qū)動,這個文件是該芯片的驅(qū)動.
?? C
字號:
T6963_Yejin.C

#i nclude  "T6963_YeJin12864.h"


extern unsigned char code chardot[];
// UNINT CurrentTextPoint      /*應(yīng)定義成全程變量方式,
/*  絕對定位形式可以考慮*/
/*當前的圖形顯示口地址*/
// UNINT CurrentGraphPoint     /*同上*/

UNCHAR  data CharType;
UNINT CurrentPoint;/*當前顯存的指針*/

 

/*讀取液晶的狀態(tài)*/
//要求片選LCDCE=0,CD=1
UNCHAR T6963_readStauteOfYieJin()/*reentrant*/
{
 return  XBYTE[T6963_CtrOfYieJin];
}

/*判斷指令讀寫狀態(tài)和數(shù)據(jù)讀寫狀態(tài)*/
void T6963_judge(UNCHAR mode)/*reentrant*/
{
 UNCHAR temp = 0;
 while (temp != mode)
 {
  temp = T6963_readStauteOfYieJin();
  temp = temp & mode;
 }
}

/*寫入一個數(shù)據(jù)或命令參數(shù)*/
//要求片選LCDCE=0,CD=0
void T6963_writeAData(UNCHAR   data1)/*reentrant*/
{
 XBYTE[T6963_DataPortOfYieJin] = data1;
}

/*寫入一個命令*/
//判斷S1S0狀態(tài),指令代碼寫入指令通道
void T6963_writeACom(UNCHAR command)  /*reentrant*/
{
 T6963_judge(ComAndData); /*循環(huán)讀取STATUS直至等于ComAndData(03h)*/
 XBYTE[T6963_CtrOfYieJin] = command;
 T6963_judge(ComAndData); /*循環(huán)讀取STATUS直至等于ComAndData(03h)*/
 XBYTE[T6963_CtrOfYieJin]=0x00;
}


/*設(shè)置顯示模式cgrom&ram,或、異或等*/
//無參數(shù),調(diào)用WriteACom,
//因此要判斷S1S0狀態(tài),指令代碼寫入指令通道
void T6963_setDisplayMode(UNCHAR  displaymod)
{
 T6963_writeACom(displaymod);
}

/*設(shè)置顯示開關(guān)*/
//無參數(shù),調(diào)用WriteACom,
//因此要判斷S1S0狀態(tài),指令代碼寫入指令通?
void T6963_setDisplayOn(UNCHAR  on)/*reentrant*/
{
 T6963_writeACom(on);
}


/*清除文本區(qū)*/
void T6963_clearText()
{
 UNCHAR address;
 UNINT i;
 /* <2005.5.24舊的代碼>
 取出當前的文本區(qū)首址
 address=XBYTE[CurrentTextPoint+1];
 judge(ComAndData);
 writeAData(address);
 address=XBYTE[CurrentTextPoint];
 judge(ComAndData);
 writeAData(address);
 writeACom(SetAddressInVRam);
 */
 /*暫時關(guān)閉顯示*/
// T6963_setDisplayOn(CloseAll);//CloseAll=0x90,關(guān)閉一切顯示
 /*取出當前的文本區(qū)首址*/
 address = (UNCHAR) CurrentTextPoint;
 T6963_judge(ComAndData);
 //寫入?yún)?shù)1,指針低字節(jié)
 T6963_writeAData(address);
 address = CurrentTextPoint / 256;
 T6963_judge(ComAndData);
 //寫入?yún)?shù)2,指針高字節(jié)
 T6963_writeAData(address);

 /*地址指針設(shè)置*/
 T6963_writeACom(SetAddressInVRam);//SetAddressInVRam=0x24

 /*設(shè)置自動寫*/
 T6963_writeACom(AutoWrite);
 for (i = 0; i < 0x13e0; i++)
 {
  T6963_judge(jAutoWrite);//0x08 判斷STA3(數(shù)據(jù)自動寫狀態(tài))
  T6963_writeAData(0x23);
 }
 /*關(guān)閉自動寫*/
 T6963_writeACom(EndAuto);//0xb2,自動讀寫結(jié)束
 /*開啟顯示*/
 T6963_setDisplayOn(TextMode | GraphMode | CurFlash | CurOn);
}

/*清除圖形區(qū)*/
void T6963_clearGraph()
{
 UNCHAR address;
 UNINT i;

 /*暫時關(guān)閉顯示*/
 T6963_setDisplayOn(GraphMode);//CloseAll);
 /*取出當前的圖形區(qū)首地址*/

 address = (UNCHAR) CurrentGraphPoint;
 T6963_judge(ComAndData);
 T6963_writeAData(address);
 address = (CurrentGraphPoint / 256);
 T6963_judge(ComAndData);
 T6963_writeAData(address);
 T6963_writeACom(SetAddressInVRam); //0x24 地址指針設(shè)置

 /*設(shè)置自動寫*/
 T6963_writeACom(AutoWrite);
 for (i = 0; i < 0x0fe0;i++)//0x0400; i++) //0x0f00
 {
  T6963_judge(jAutoWrite);//0x08 判斷STA3(數(shù)據(jù)自動寫狀態(tài))
  T6963_writeAData(0x00);
 }
 /*關(guān)閉自動寫*/
 T6963_writeACom(EndAuto);//0xb2,自動讀寫結(jié)束
 /*開啟顯示*/
 T6963_setDisplayOn(TextMode | GraphMode | CurFlash | CurOn | CloseAll);//即0x9F,啟用所有顯示
}

/*設(shè)置文本首地址*/
void T6963_setTextHead(UNINT  address)
{
 UNCHAR temp;
 /*低8位*/
 temp = (UNCHAR) (address & 0x00ff);
 T6963_judge(ComAndData);
 T6963_writeAData(temp);
 /*高8位*/
 temp = (UNCHAR) ((address & 0xff00) >> 8);
 T6963_judge(ComAndData);
 T6963_writeAData(temp);
 /*設(shè)置命令*/
 T6963_writeACom(SetTextHeadAddress);//0x40 文本區(qū)首址
 /*設(shè)置當前的指針*/
 CurrentPoint = address;
}

/*設(shè)置文本的寬度*/
void T6963_setTextWidth(UNCHAR width)
{
 T6963_judge(ComAndData);
 T6963_writeAData(width); //寫入?yún)?shù)D1,字節(jié)數(shù)
 T6963_judge(ComAndData);
 T6963_writeAData(0);  //寫入?yún)?shù)D2,0x00
 T6963_writeACom(SetTextWidth);  //0x41 文本區(qū)的寬度
}

/*設(shè)置圖形的首址*/
void T6963_setGraphHead(UNINT  address)
{
 UNCHAR temp;
 /*低8位*/
 T6963_judge(ComAndData);
 temp = (UNCHAR) (address & 0x00ff);/*取整型數(shù)低8位*/
 T6963_writeAData(temp);
 /*高8位*/
 T6963_judge(ComAndData);
 temp = (UNCHAR) ((address & 0xff00) >> 8);
 T6963_writeAData(temp);

 T6963_writeACom(SetGraphHead); //0x42 圖形區(qū)首址
 CurrentPoint = address;
}


/*設(shè)置圖形的寬度*/
void T6963_setGraphWidth(UNCHAR width)
{
 T6963_judge(ComAndData);
 T6963_writeAData(width); //寫入?yún)?shù)D1,字節(jié)數(shù)
 T6963_judge(ComAndData);
 T6963_writeAData(0);  //寫入?yún)?shù)D2,0x00
 T6963_writeACom(SetGraphWidth); //0x43 圖形區(qū)的寬度
}

/*設(shè)置光標,mode 是寬度*/
void T6963_setCuro(UNCHAR  mode)
{
 UNCHAR mod;
 mod = (CurMode | (mode & 0x0f));//CurMode=0xa0光標形狀8點(列)*N行,N值0-7H
 T6963_writeACom(mod);
}

/*選擇三屏緩沖區(qū)之一*/
void T6963_selectDisplay(UNINT textAdd, UNINT graphAdd)/*參數(shù)可簡化*/
{
 /*保存要顯示的區(qū)*/
 /*<2005.5.24舊的代碼>
 *((UNINT xdata*)CurrentTextPoint)=textAdd;
 *((UNINT xdata*)CurrentGraphPoint)=graphAdd;
 */
 CurrentTextPoint = textAdd;
 CurrentGraphPoint = graphAdd;
 /*設(shè)置文本的手地址*/
 T6963_setTextHead(textAdd);  //設(shè)置文本首地址
 T6963_setGraphHead(graphAdd); //設(shè)置圖形的首址
 /*設(shè)置文本的寬度*/
 T6963_setTextWidth(30);    //setTextWidth(30);
 T6963_setGraphWidth(30);
}


/*設(shè)置顯存的當前顯示地址*/
void T6963_setCurrentPoint(UNINT address)/*reentrant*/
{
 UNCHAR temp;
 //低字節(jié)
 temp = (UNCHAR) (address & 0x00ff);
 T6963_judge(ComAndData);
 T6963_writeAData(temp);
 //高字節(jié)
 temp = (UNCHAR) ((address & 0xff00) >> 8);
 T6963_judge(ComAndData);
 T6963_writeAData(temp);

 T6963_writeACom(SetAddressInVRam); // 0x24 地址指針設(shè)置
 CurrentPoint = address;
}

/*在文本區(qū)定位坐標為x,y的位置*/
//??????????????????????????????????????????????????
void T6963_gotoxy(UNCHAR x, UNCHAR y)/*reentrant*/
{
 UNINT off;  /*偏移量*/
 /*<2005.5.24舊的代碼>
 off=*((UNINT xdata *)CurrentTextPoint);
 */
 off = CurrentTextPoint;
 /*如果用XWORD[CurrentTextPoint]注意2倍關(guān)系;*/
 off += y * 30;//16;   //y*30,是因為128*64,其中的128=16*8,還是左右四位
 off += x;
 T6963_setCurrentPoint(off);//設(shè)置顯存的當前顯示地址
}


/*顯示一個8x8字符*/
void T6963_putChar8(UNCHAR ch, bit flag)/*reentrant*/
{
 UNCHAR temp;
 /*為避開顯示嵌套,定時器0中斷*/
 temp = ch - 0x20;
 T6963_judge(ComAndData);
 if (flag)
  ch = ~ch;
 T6963_writeAData(temp);
 T6963_writeACom(WriteAdd1); /*數(shù)據(jù)寫,地址加1*/
 CurrentPoint++;   /*跟蹤當前vram位置*/

 //setCurrentPoint(CurrentPoint); /*應(yīng)該可以去掉這行*/
}

/*圖形區(qū)定位x,y的緩存位置*/
void T6963_moveto(UNCHAR  x, UNCHAR  y)
{
 UNINT off;
 /*<2005.5.24舊的代碼
 off=*((UNINT xdata *)CurrentGraphPoint);
 >*/
 off = CurrentGraphPoint;
 off += y * 30;//16;   //y*30
 off += x;
 T6963_setCurrentPoint(off);
}

/*顯示一個漢字,ch為編號 flag為1時,反顯*/
void T6963_putChar16(UNCHAR ch, bit flag)
{
 UNINT offInHZK;
 UNCHAR i = 0;

 /*計算漢字在漢字庫的位置*/
 offInHZK = (ch - 1) * 32;
 offInHZK = offInHZK + 0x02000;//0d000
 //注意起始地址與 字庫.ASM的起始地址CSEG AT 0d000h 要求一致
 while (i < 16)
 {
  ch = CBYTE[offInHZK++];
  T6963_judge(ComAndData);
  if (flag)
   ch = ~ch;
  T6963_writeAData(ch);
  T6963_writeACom(WriteAdd1);
  /*同行下一點*/
  ch = CBYTE[offInHZK++];
  T6963_judge(ComAndData);
  if (flag)
   ch = ~ch;
  T6963_writeAData(ch);
  T6963_writeACom(WriteAdd1);
  /*下一行*/
  CurrentPoint +=30;// 16;    //30
  T6963_setCurrentPoint(CurrentPoint);
  i++;
 }
 CurrentPoint -= 16 *30;//  16;  //30
 CurrentPoint += 2;
 T6963_setCurrentPoint(CurrentPoint);
}

/*顯示一個8x12的字符,ch為編號*/
void T6963_putChar12(UNCHAR ch, bit flag)
{
 UNINT offInHZK;
 UNCHAR i = 0;

 /*計算12×8字符在字庫的位置*/
 offInHZK = (ch - 0x20) * 16;
 offInHZK = offInHZK + 0x4000;
 while (i < 16)
 {
  ch = CBYTE[offInHZK++];
  T6963_judge(ComAndData);
  if (flag)
   ch = ~ch;
  T6963_writeAData(ch);
  T6963_writeACom(WriteAdd1);
  /*下一行*/
  CurrentPoint += 30;// 16;  //30
  T6963_setCurrentPoint(CurrentPoint);
  i++;
 }
 CurrentPoint -= 16 * 30;// 16; //30
 CurrentPoint++;
 T6963_setCurrentPoint(CurrentPoint);
}

/*設(shè)置光標的位置*/
void T6963_setCurPoint(UNCHAR x, UNCHAR y)
{
 T6963_judge(ComAndData);
 T6963_writeAData(x);
 T6963_judge(ComAndData);
 T6963_writeAData(y);
 T6963_writeACom(SetCurPoint);
}

/*  PUTCHAR.C:  This routine is the general character output of C-51.  */
void putchar(unsigned char ch)
{
 UNCHAR temp;
 UNINT offInHZK, start_xy;

 switch (CharType & 0x07)
 {
 case  1:
  /* 顯示8x16的字符*/
  /*計算在漢字庫的位置*/
  offInHZK = (ch - 0x20) * 16;
  offInHZK = offInHZK + 0x4000;
  temp = 0;
  while (temp < 16)
  {
   ch = CBYTE[offInHZK];
   offInHZK++;
   T6963_judge(jData);
   if ((CharType & 0x80) == 0x80)
    ch = ~ch;
   T6963_writeAData(ch);
   T6963_writeACom(WriteAdd1);
   /*下一行*/
   CurrentPoint += 30;// 16;     //30;
   T6963_setCurrentPoint(CurrentPoint);
   temp++;
  }
  CurrentPoint -= 16 * 30;// 16;  //30
  CurrentPoint++;
  T6963_setCurrentPoint(CurrentPoint);
  break;
 case  2:
  /*顯示16x16的漢字*/
  /*計算漢字在漢字庫的位子*/
  offInHZK = (ch - 1) * 32;
  offInHZK = offInHZK + 0x2000;
  temp = 0;
  while (temp < 16)
  {
   ch = CBYTE[offInHZK];
   offInHZK++;
   T6963_judge(jData);
   if ((CharType & 0x80) == 0x80)
    ch = ~ch;
   T6963_writeAData(ch);
   T6963_writeACom(WriteAdd1);
   /*下一走標點*/
   ch = CBYTE[offInHZK];
   offInHZK++;
   T6963_judge(jData);
   if ((CharType & 0x80) == 0x80)
    ch = ~ch;
   T6963_writeAData(ch);
   T6963_writeACom(WriteAdd1);
   /*下一行*/
   CurrentPoint += 30;// 16;  //30;
   T6963_setCurrentPoint(CurrentPoint);
   temp++;
  }
  CurrentPoint -= 16 *30;//  16;  //30
  CurrentPoint += 2;
  T6963_setCurrentPoint(CurrentPoint);
  break;
 case   0:
  /*顯示8x8的字符*/
  temp = ch - 0x20;
  T6963_judge(jData);
  if ((CharType & 0x80) == 0x80)
   ch = ~ch;
  T6963_writeAData(temp);
  T6963_writeACom(WriteAdd1);
  CurrentPoint++;
  T6963_setCurrentPoint(CurrentPoint);
  break;
 case   3:
  //顯示12*24點陣ASCII碼
  start_xy = CurrentPoint;
  offInHZK = (ch - 0x20) * 48;
  for (temp = 0; temp < 24; temp++)
  {
   T6963_judge(jData);
   T6963_writeAData(chardot[offInHZK++]);
   T6963_writeACom(WriteAdd1);
   T6963_judge(jData);
   T6963_writeAData(chardot[offInHZK++]);
   T6963_writeACom(WriteAdd1);
   CurrentPoint += 30;// 16;---------
   T6963_setCurrentPoint(CurrentPoint);
  }
  CurrentPoint = start_xy + 2;
  T6963_setCurrentPoint(CurrentPoint);
  break;
 case  4:
  //2005-05-30早上16*12漢字
  /*計算漢字在漢字庫的位子*/
  offInHZK = (ch - 1) * 32;
  offInHZK = offInHZK + 0x3000;
  temp = 0;
  while (temp < 12)
  {
   ch = CBYTE[offInHZK];
   offInHZK++;

   T6963_judge(jData);
   if ((CharType & 0x80) == 0x80)
    ch = ~ch;
   T6963_writeAData(ch);
   T6963_writeACom(WriteAdd1);
   /*下一走標點*/
   ch = CBYTE[offInHZK];
   offInHZK++;

   T6963_judge(jData);
   if ((CharType & 0x80) == 0x80)
    ch = ~ch;
   T6963_writeAData(ch);
   T6963_writeACom(WriteAdd1);

   /*下一行*/
   CurrentPoint += 30;// 16;  //30;
   T6963_setCurrentPoint(CurrentPoint);
   temp++;
  }
  CurrentPoint -= 12*30;// 16;  //30
  CurrentPoint += 2;
  T6963_setCurrentPoint(CurrentPoint);
  break;
 }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产色综合久久不卡电影| 欧美一卡二卡三卡| 天天av天天翘天天综合网色鬼国产| 日韩精品一区在线| 色先锋资源久久综合| 裸体歌舞表演一区二区| 亚洲激情自拍视频| 国产午夜精品久久久久久久| 欧美日韩专区在线| av亚洲产国偷v产偷v自拍| 蜜桃视频在线一区| 亚洲综合男人的天堂| 久久久99久久精品欧美| 欧美日韩精品免费| 99久久伊人网影院| 国产乱码精品一区二区三区av | 亚洲一区二区三区中文字幕 | 国产精品国产三级国产a| 欧美一区二区精品在线| 91久久精品一区二区| av在线综合网| 国产suv精品一区二区6| 国产一区二区看久久| 欧美aaa在线| 午夜精品免费在线观看| 一区二区三区毛片| 亚洲色图视频网| 中文字幕亚洲欧美在线不卡| 国产午夜亚洲精品午夜鲁丝片 | 国产偷国产偷亚洲高清人白洁| 91精品国产aⅴ一区二区| 精品视频999| 在线观看亚洲专区| 欧美丝袜丝交足nylons图片| 色综合婷婷久久| 91影院在线观看| 北岛玲一区二区三区四区| 国产成人av网站| 国产成人精品免费一区二区| 国产一区二区三区av电影| 久久97超碰色| 国精产品一区一区三区mba桃花| 日韩高清不卡在线| 免费看日韩精品| 精品一区二区日韩| 国产一区二区三区国产| 国产精品18久久久久久久久 | av午夜一区麻豆| 91丨porny丨在线| 在线观看日韩av先锋影音电影院| 色久综合一二码| 欧美色图激情小说| 91精品国模一区二区三区| 日韩你懂的在线播放| 精品88久久久久88久久久| 久久久精品人体av艺术| 国产欧美精品国产国产专区| 亚洲同性同志一二三专区| 一区二区三区四区五区视频在线观看| 亚洲一区在线观看免费观看电影高清| 亚洲宅男天堂在线观看无病毒| 亚洲综合网站在线观看| 日本少妇一区二区| 久草热8精品视频在线观看| 粉嫩一区二区三区性色av| 91在线国产福利| 欧美午夜片在线观看| 日韩欧美成人一区| 国产精品美女久久久久久久久久久 | 亚洲欧洲av另类| 亚洲国产精品欧美一二99| 捆绑调教美女网站视频一区| 国产成人免费av在线| 欧美性色黄大片手机版| 亚洲精品一线二线三线无人区| 国产精品视频线看| 亚洲不卡一区二区三区| 国内成人免费视频| 在线观看欧美精品| 亚洲精品一区二区三区精华液| 中文字幕一区二区三| 三级成人在线视频| 成人理论电影网| 欧美熟乱第一页| 日本一区二区在线不卡| 五月天激情小说综合| 国产凹凸在线观看一区二区| 欧美日韩高清一区二区不卡| 国产午夜亚洲精品午夜鲁丝片| 亚洲一二三区在线观看| 激情综合网最新| 欧洲人成人精品| 欧美激情一区二区在线| 日日夜夜精品视频天天综合网| 国产精品一级在线| 欧美一区二区三区日韩视频| 亚洲色图.com| 国产精品一二三区在线| 欧美一区日本一区韩国一区| 亚洲日韩欧美一区二区在线| 激情久久五月天| 欧美色涩在线第一页| 国产精品女主播在线观看| 日本欧美肥老太交大片| 一本色道久久加勒比精品| 久久久久国产精品麻豆ai换脸 | 毛片av一区二区| 91在线观看成人| 久久久精品欧美丰满| 裸体歌舞表演一区二区| 欧美精品电影在线播放| 中文字幕一区二| 国产99久久久国产精品免费看| 69堂国产成人免费视频| 一区二区久久久久久| www.欧美精品一二区| 久久一区二区视频| 另类小说一区二区三区| 日韩一级黄色片| 午夜久久久影院| 91精品福利在线| 中文字幕五月欧美| 国产高清成人在线| 国产亚洲一区字幕| 国产一区二区久久| 日韩精品一区二区三区四区| 肉色丝袜一区二区| 67194成人在线观看| 偷拍与自拍一区| 欧美剧情片在线观看| 午夜日韩在线电影| 欧美日本精品一区二区三区| 亚洲国产日韩av| 欧美日韩激情一区| 亚洲第一综合色| 91精品欧美久久久久久动漫| 日韩国产精品大片| 欧美一区二区三区公司| 免费在线观看一区二区三区| 欧美一区二区三级| 免费精品视频最新在线| 日韩视频免费观看高清完整版| 日韩成人午夜精品| 日韩亚洲欧美一区二区三区| 蜜臀av亚洲一区中文字幕| 日韩欧美国产高清| 国产精品一区二区久久不卡 | 秋霞午夜av一区二区三区| 欧美一区二区三区在线看| 日本成人中文字幕在线视频 | 亚洲精品美国一| 欧美性三三影院| 蜜臂av日日欢夜夜爽一区| 精品国产欧美一区二区| 成人午夜碰碰视频| 亚洲欧洲av在线| 欧美日韩一二三| 麻豆免费看一区二区三区| 久久精品视频免费| av高清不卡在线| 亚洲国产美女搞黄色| 欧美一区二区国产| 国产高清久久久久| 亚洲精品免费一二三区| 欧美久久久久中文字幕| 国产曰批免费观看久久久| 中文字幕一区二区在线观看| 欧美乱妇20p| 国产精品88888| 夜色激情一区二区| 欧美成人精精品一区二区频| 丁香婷婷综合激情五月色| 亚洲专区一二三| 精品99999| 在线视频国内一区二区| 久久国产免费看| 亚洲视频免费观看| 欧美大片顶级少妇| 99re8在线精品视频免费播放| 婷婷久久综合九色国产成人| 中文一区一区三区高中清不卡| 日本电影欧美片| 国产精品夜夜嗨| 午夜私人影院久久久久| 中文字幕av一区二区三区高| 欧美日韩在线播放一区| 国产成人在线免费观看| 日日噜噜夜夜狠狠视频欧美人| 国产欧美日韩在线看| 欧美乱熟臀69xxxxxx| 99精品欧美一区二区三区综合在线| 日韩精品电影一区亚洲| 欧美日韩午夜精品| 国产成人精品免费| 亚洲一区二区影院| 精品成人免费观看| 欧美私人免费视频| 成人免费毛片app| 麻豆freexxxx性91精品| 亚洲裸体在线观看|