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

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

?? lcd12864.c

?? lcd12864的驅動程序
?? C
字號:
/*****************************************************************/ 
/*                                                               */                                                                
/*名稱:                LCD12864顯示程序                         */                                                                                                                                                                           
/*功能:           顯示英文,數字,符號,圖片。                  */                                                    
/*難度等級:                   高                                */                                                                     
/* 作者:                  zengrenliang                          */
/* 版權:           http://www.51kaifa.com                       */
/*編寫日期:        2006.05.20                                   */                                                                                                                                                                                                             
/*****************************************************************/

#include <reg52.h>
#include  <string.h>

#define uchar unsigned char

/**********引腳定義*********/

sbit lck = P3^5;//鎖存信號
sbit CSA = P2^4;//又區選擇
sbit CSB = P2^5;//左區選擇
sbit RW = P2^7;//LCD片選
sbit DI = P2^6;//數據/命令選擇

/********常用命令及參數定義********/
#define DISPON     0x3f
#define DISPOFF    0x3e
#define DISPFIRST  0xc0
#define SETX       0x40
#define SETY       0xb8
#define LCDBUZY    0x80
#define L          0x00
#define R          0x40
#define LIMIT      0x80


/**********全局變量************/
uchar  cbyte;
uchar data statu;
bit xy;

/**************函數聲明******************/

void WrL(uchar x);
void WrR(uchar x);
void Lcmcls(void);
void delay1s(void);
void Lcminit (void);
void Putpicture(uchar flag);
void delay(unsigned int time);
void VtoH8x16change(uchar *hzbuf);
void Puthalf(uchar *strch,uchar row,uchar col);
void Wrdata(uchar x,uchar row,uchar col);
void Locatexy(uchar row,uchar col);
void vWrite8x16Character(uchar *ch,uchar row,uchar col,bit flag);
void vWrite8x16String(uchar  *str,uchar col, uchar row, bit flag);


extern uchar  code picture1[];
extern uchar  code picture2[];
extern uchar  code  char_Table[95][16];

/***********主程序***************/
void main(void)
{      
     P1 = 0x20;//"液晶"指示燈亮
    Lcminit();
    while(1){
     Putpicture(0);
     delay1s();
     Lcmcls();
     Putpicture(1);
     delay1s();
     Lcmcls();
     vWrite8x16String("abcdefghijklmn" ,0, 8,0);
     vWrite8x16String("ABCDEFGHIJKLMN", 2, 8,0);
     vWrite8x16String("12345678901234", 4, 8,0);
     vWrite8x16String("+-*/!@#$%^&*()", 6, 8,0);
     delay1s();
     Lcmcls();
    }   

}


/***************微秒級延時*****************/
void delay(unsigned int  time)
{ unsigned int i;
    for(i=0;i<time;i++);
 }

/***************約5S延時********************/
void delay1s(void)
{
    delay(50000);
    delay(50000);
    delay(50000);
    delay(50000);
    delay(50000);
    delay(50000);
    delay(50000);
    delay(50000);
    delay(50000);
    delay(50000);
    delay(50000);
    delay(50000);
    delay(50000);
    delay(50000);
    delay(50000);
}

//***********初始化LCD*******************/

void Lcminit (void)
{ 
    cbyte=DISPOFF;
    WrL(cbyte);
    WrR(cbyte);
    cbyte=DISPON;
    WrL(cbyte);
    WrR(cbyte);
    cbyte=DISPFIRST;
    WrL(cbyte);
    WrR(cbyte);
    Lcmcls();
    Locatexy(0,0);
}


/***************LCD清屏********************/
void Lcmcls(void)
{ uchar  i,j;
    for(i=0;i<8;i++){
      delay(6);
        for(j=0;j<LIMIT;j++){
          delay(6);
          Wrdata(0x0,i,j);
         }
     }
}

/*****************寫左區******************/

void WrL(uchar x)
{
   
   RW = 1;//RW=1(讀)
   CSA = 0;
   CSB = 1;
   DI = 0;//命令操作
   lck = 0;
   P1 = 0xff;//ELCD=1,使能LCD
   lck = 1;
   while(P0 & LCDBUZY);//最高位為1,表示忙,則循環檢測
   lck = 0;
   P1 = 0xef;//ELCD=1,使能LCD
   lck = 1;
   RW = 0;//RW=0(寫)
   P0 = x;   //數據送到P0口

   CSA = 0;
   CSB = 1;
   DI = 0;

   lck = 0;
   P1 = 0xff;//ELCD=1,使能LCD,把數據打入LCD
   lck = 1;
   delay(3);  
   lck = 0;
   P1 = 0xef;//ELCD=0
   lck = 1;

}

/**************寫右區**************/
void WrR(uchar data x)
{
   RW = 1;//R/W=1讀
   CSA = 1;
   CSB = 0;
   DI = 0;//命令操作
   lck = 0;
   P1 = 0xff;
   lck = 1;
 //EN = 1;//使能LCD
   while(P0 & LCDBUZY);//最高位為1,表示忙,則循環
   lck = 0;
   P1 = 0xe;
   lck = 1;
   RW = 0;//RW = 0寫

   P0=x;     //數據送到P0口

   CSA = 1;
   CSB = 0;
   DI = 0;
   lck = 0;
   P1 = 0xff;
   lck = 1;//使能LCD,把數據打入LCD
   delay(3);  
   lck = 0;
   P1 = 0xef;
   lck = 1;
    
}


/*************定位*****************/
void Locatexy(uchar  row,uchar  col)
{
   uchar  x, y, right;
   switch(col&0xc0)
    {
    case 0:{//右半屏
           RW = 1;//R/W=1(讀)
           CSA = 1;
           CSB = 0;
           DI = 0;//命令操作
           lck = 0;
           P1 = 0xff;
           lck = 1;; //使能LCD        
           while(P0 & LCDBUZY);//最高位為1,表示忙,則循環  
           lck = 0;
           P1 = 0xef;
           lck = 1;
           right = 1;break;}//置右半屏標志
   case 0x40:{//左半屏 
           
           RW = 1;//R/W=1讀
           CSA = 0;
           CSB = 1;
           DI = 0;//命令操作
           lck = 0;
           P1 = 0xff;
           lck = 1;//使能LCD
           while(P0 & LCDBUZY);//最高位為1,表示忙,則循環
           lck = 0;
           P1 = 0xef;
           lck = 1;
           right = 0;break;}//置左半屏標志
     }
   x=col&0x3f|SETX;//把列數據變成行命令
   y=row&0x07|SETY;//把行數據變成行命令
/**********************************/
   lck = 0;
   P1 = 0xff;
   lck = 1;//判斷忙標志
   while(P0 & LCDBUZY);//最高位為1,表示忙,則循環 
   lck = 0;
   P1 = 0xef;
   lck = 1;
/*********以上為判斷忙標志********/
/*********************************/
   RW = 0;//R/W=0寫

   P0 = y;//行數據送到P0口

   lck = 0;
   P1 = 0xff;
   lck = 1;//使能LCD,把數據打入LCD
   delay(3);
   lck = 0;
   P1 = 0xef;
   lck = 1;
/**********以上為送行命令***********/
   RW =1;//R/W=1讀
   lck = 0;
   P1 = 0xff;
   lck = 1;//使能LCD,準備讀忙標志
   while(P0 & LCDBUZY);//最高位為1,表示忙,則循環 
   lck = 0;
   P1 = 0xef;
   lck = 1;
/*********以上為判斷忙標志********/
   RW = 0;//R/W=0寫

   P0 = x;//列數據送P0口

   lck = 0;
   P1 = 0xff;
   lck = 1;//使能LCD,把數據打入LCD
   delay(3);
   lck = 0;
   P1 = 0xef;
   lck = 1;
/**********以上為送列命令***********/
   if(right)
    statu = 1;//置右半區標志
   else
    statu = 0;//置左半區標志
}


/**************數據寫輸出***************/
void  Wrdata(uchar  x,uchar  row,uchar  col)
{   
    Locatexy(row,col);//定位顯示位置
    RW = 0;//R/W=0
    DI = 1;//數據操作
   lck = 0;
   P1 = 0xef;
   lck = 1;;//不使能LCD
    if(statu){//根據狀態確定是左半屏還是右半屏
     CSA= 1;
     CSB= 0;    
    }else{
     CSA=0;
     CSB=1;
    }

    P0 = x;//送顯示數據

   lck = 0;
   P1 = 0xff;
   lck = 1; //使能LCD,把P0數據打入LCD
    delay(3);
   lck = 0;
   P1 = 0xef;
   lck = 1;
}



/****************圖形輸出******************/
void Putpicture(uchar flag)
{
   unsigned char i,j,row, col ;
   unsigned int x;
   row = 0; col=0;
    for(j=0;j<128;j++){
     x=j*0x08; 
     for(i=0;i<8;i++)
      {  if(flag)
           cbyte=picture1[x++];
         else 
           cbyte=picture2[x++];
          Wrdata(cbyte,row,col);
        row++;
      }   
     row=0;
     col++;    
    }  
      
}

/***************半角數據點陣輸出*******************/
void Puthalf(uchar *strch,uchar row,uchar col)
{
    uchar i,bakerx;
    bakerx = row;
    for(i=0;i<16;i++)//上半字輸出
     {
        cbyte=strch[i];
        Wrdata(cbyte,bakerx,col);
  
        cbyte=strch[i+1];
        Wrdata(cbyte,bakerx+1,col);
        col++;
        i++;
       }
}


/************漢字輸出******************/
/*void Puthz(uchar *str,uchar row,uchar col)
{
    uchar  i,bakerx;
    bakerx=row;
    for(i=0;i<32;i++)
      {
        cbyte=str[i];
        Wrdata(cbyte,row,col);       //上半字節輸出
        i++;
        row=bakerx+1;
        cbyte=str[i];
        Wrdata(cbyte,row,col);       //下半字節輸出

        row=bakerx;
        col=col+1;
      }
}

*/
/***********************字符型點陣行--》列轉換********************/
void VtoH8x16change(uchar   *hzbuf)
{   uchar  i,j,k,  cash[16];
    uchar   newbyte, savebit[8];
    for(k=0;k<16;k++){
      newbyte = 0;
      for(i=0;i<8;i++){
        savebit[i]=hzbuf[i] & 0x80;
       }
      for(j=0;j<8;j++){
        savebit[j] = savebit[j] >> (7-j);
        newbyte = newbyte | savebit[j];
       }
      cash[k] = newbyte;
      newbyte = 0;
      for(i=8;i<16;i++){
        savebit[i-8]=hzbuf[i] & 0x80;
       }
      for(j=0;j<8;j++){
        savebit[j] = savebit[j] >> (7-j);
        newbyte = newbyte |savebit[j];
       }
      cash[k+1] = newbyte;
      for(j=0;j<16;j++){
        hzbuf[j] = hzbuf[j] <<1; 
       }
      k++;
     }
    for(i=0;i<16;i++)
      hzbuf[i] = cash[i];
 }


/************************顯示英文和符號字符********************/
void vWrite8x16Character(uchar *ch,uchar row,uchar col,bit flag)
{
	uchar    ucXArray[16],i;

    if(flag){     // 反白顯示英文
		for(i = 0; i < 16; i++)
			ucXArray[i] = ~ch[i];
	}else{
        for(i = 0; i < 16; i++)
            ucXArray[i] = ch[i];
    }
    VtoH8x16change(ucXArray);
	Puthalf(ucXArray,row,col);
}

/*************************顯示英文字符串**********************/
void  vWrite8x16String(uchar  *str,uchar row, uchar col, bit flag)
{
	unsigned char  i,  j,thiscol;
	j = strlen(str);
	for(i = 0; i < j; i++)
	{   thiscol = (i % 16) * 8 + col;//計算列地址
		if(str[i] < 0xa1)//當前顯示內容為英文字符
          vWrite8x16Character(&char_Table[str[i]-0x20][0],row,thiscol,flag);           
	}
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91视频一区二区| 欧美一级精品在线| 欧美一区2区视频在线观看| 久久亚洲免费视频| 亚洲一区二区视频在线观看| 国产乱码一区二区三区| 欧美日韩免费在线视频| 国产精品久久看| 理论电影国产精品| 欧美色手机在线观看| 国产色一区二区| 婷婷综合五月天| 91蜜桃婷婷狠狠久久综合9色| 日韩精品一区二区三区视频 | 成人综合婷婷国产精品久久 | 亚洲美女在线一区| 久久99精品久久久久婷婷| 在线一区二区三区四区| 国产亚洲综合性久久久影院| 日韩不卡一区二区| 欧美中文字幕一区二区三区| 国产精品传媒在线| 韩国成人精品a∨在线观看| 欧美日韩在线三级| 一区二区三区资源| 99久久亚洲一区二区三区青草| 日韩精品中文字幕一区 | 国产亚洲一区二区三区| 麻豆成人久久精品二区三区红| 欧美天天综合网| 亚洲丝袜制服诱惑| 99视频热这里只有精品免费| 国产丝袜美腿一区二区三区| 国产一区二区伦理片| 日韩午夜在线影院| 蜜桃视频第一区免费观看| 欧美人xxxx| 日日欢夜夜爽一区| 制服丝袜av成人在线看| 男人的j进女人的j一区| 7777精品伊人久久久大香线蕉的 | 欧美三区在线观看| 亚洲一线二线三线久久久| 色综合视频在线观看| 亚洲视频每日更新| 欧美在线观看视频一区二区三区 | www.亚洲激情.com| 国产精品久久久久久久久动漫| 成人性色生活片| 国产精品久久久久久久久久久免费看 | 午夜a成v人精品| 91麻豆精品国产自产在线观看一区| 五月婷婷激情综合网| 制服丝袜亚洲色图| 国内精品免费**视频| 国产区在线观看成人精品| 成人毛片在线观看| 亚洲一区二区精品视频| 制服丝袜亚洲网站| 国产乱人伦偷精品视频免下载| 中文在线免费一区三区高中清不卡| 成人app网站| 水蜜桃久久夜色精品一区的特点| 日韩欧美自拍偷拍| 国产91精品免费| 亚洲综合成人在线| 欧美va亚洲va香蕉在线| 高清国产一区二区| 亚洲一线二线三线视频| 日韩欧美国产一区二区三区| 成人免费视频caoporn| 亚洲国产精品一区二区www在线| 91精品国产aⅴ一区二区| 丁香一区二区三区| 亚洲成人动漫一区| 国产日韩亚洲欧美综合| 欧美午夜一区二区三区| 国产一区二区电影| 亚洲国产一区视频| 国产性做久久久久久| 欧美三级视频在线观看| 国产成人午夜片在线观看高清观看| 专区另类欧美日韩| 欧美成人vps| 欧美亚洲国产一卡| 高清不卡在线观看| 奇米一区二区三区av| 中文字幕亚洲综合久久菠萝蜜| 欧美一二三区在线观看| 91免费视频网址| 国产在线一区二区| 日日摸夜夜添夜夜添国产精品| 国产精品国产三级国产三级人妇| 欧美一区二区福利视频| 色欧美88888久久久久久影院| 免费在线看成人av| 夜夜嗨av一区二区三区四季av| 久久蜜桃一区二区| 欧美一区二区三区思思人| 色哟哟国产精品| 大白屁股一区二区视频| 免费成人av资源网| 爽好久久久欧美精品| 亚洲免费大片在线观看| 国产欧美日韩一区二区三区在线观看| 欧美精品亚洲二区| 欧美色图在线观看| 日本乱人伦一区| av一二三不卡影片| 成人精品免费视频| 国产精品亚洲专一区二区三区| 日韩有码一区二区三区| 亚洲国产视频网站| 一区二区三区在线免费视频| 自拍av一区二区三区| 日本一二三四高清不卡| 国产日产精品1区| 久久久午夜电影| 久久久99久久| 国产欧美一区二区精品久导航| 精品国产乱码久久久久久夜甘婷婷 | 欧美一区二区三区人| 欧美精品一卡两卡| 欧美绝品在线观看成人午夜影视| 91久久一区二区| 欧美一区二区三区四区久久| 69成人精品免费视频| 69堂精品视频| 日韩精品一区二区三区三区免费| 日韩欧美电影在线| 精品精品国产高清一毛片一天堂| 欧美不卡123| 久久久久久久久久久久久夜| 欧美激情一区二区在线| 亚洲国产成人午夜在线一区| 国产精品久久久久7777按摩| 亚洲乱码国产乱码精品精98午夜| 国产精品美女www爽爽爽| 综合久久给合久久狠狠狠97色| 亚洲激情图片小说视频| 亚洲一区二区高清| 久久精品国产秦先生| 国产乱码精品一区二区三区av | 国产精品亲子乱子伦xxxx裸| 国产精品国产三级国产aⅴ原创| 亚洲视频中文字幕| 午夜久久久久久久久久一区二区| 亚洲成人一区二区在线观看| 日韩福利电影在线| 国产精品一区一区| 日本韩国一区二区| 日韩三区在线观看| 欧美国产乱子伦| 一区二区三区四区在线| 蜜臀av国产精品久久久久| 国产精品亚洲视频| 欧洲av在线精品| 欧美精品一区二区三区一线天视频| 国产精品看片你懂得| 亚洲成a人在线观看| 国产福利一区二区三区视频在线| 91老师国产黑色丝袜在线| 欧美精品高清视频| 国产精品丝袜91| 日韩国产成人精品| 91在线视频免费观看| 欧美v国产在线一区二区三区| 国产精品久久久久精k8| 青青草97国产精品免费观看无弹窗版 | 91精品国模一区二区三区| 欧美极品另类videosde| 天涯成人国产亚洲精品一区av| 国产成人免费网站| 欧美一区二区三区视频在线观看| 国产精品久久综合| 精品一区二区三区在线播放视频| 色婷婷综合久久| 久久精品亚洲一区二区三区浴池| 一区二区三区成人在线视频| 国产美女av一区二区三区| 欧美另类高清zo欧美| 亚洲日本免费电影| 国产电影一区在线| 日韩一区二区电影在线| 亚洲一区二区中文在线| jlzzjlzz国产精品久久| 精品欧美黑人一区二区三区| 亚洲大片精品永久免费| 91原创在线视频| 日本一区二区高清| 国产经典欧美精品| 欧美xingq一区二区| 天堂蜜桃91精品| 欧美三级电影一区| 亚洲裸体xxx| 99久久精品免费看国产免费软件| 久久久不卡影院| 国产一区二区女| 国产亚洲欧美激情| 国产精品91xxx|