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

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

?? t9_v1.c

?? 基于51單片機的T9輸入法的源程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include <REG52.H>
#include <stdio.h>
#include<ziku.h>
#include<string.h>




#define uint  unsigned int
#define uchar unsigned char
#define DISP_ON    0x3f
#define DISP_OFF   0x3e
#define COL        0x40    //列地址
#define PAGE 0xb8          //行地址
#define START_LINE 0xc0
#define LCD_BUS     P2 
#define LCD_CON     P3 
#define key_bus     P1


//==========================================口定義=================================================

sbit CS1=LCD_CON^0;             //  CS1
sbit CS2=LCD_CON^1;             //  CS2
sbit E =LCD_CON^2;              //液晶使能
sbit RW=LCD_CON^3;              //液晶讀寫
sbit DI=LCD_CON^4;              //液晶數(shù)據(jù)指
sbit sw0=P3^6;					//OK
sbit sw1=P3^7; 					//Cancel
sbit SCL=P0^0;
sbit SDA=P0^1;

//===========================================END===================================================






//=============================================函數(shù)聲明============================================

void display_h(uchar page,uchar col,uchar code *str,uchar n);
void display_e(uchar page,uchar col,uchar code *str,uchar n);
void display_num(uchar page,uchar col,uchar code *str,uchar n);
void line_v(uchar x,uchar y,uchar l);
void line_h(uchar x,uchar y,uchar l);
void init();
void cls();
void delay(uint);         //延時程序
void write_cmd(uchar);    //寫命令操作字
void write_data(uchar);   //寫數(shù)據(jù)
uchar read_data();        //讀數(shù)據(jù)
uchar key_ii();
unsigned char code *py_v1(unsigned char input_py_val[]);
void point(uchar x,uchar y);
unsigned char *T9PY(char *strInput_t9PY_str,uchar length);
//==============================================END================================================


#include<iic.h>


//========================================全局變量聲明=============================================
uchar *p_py;
unsigned char PY_num;
struct t9PY_index code  * T9PY_mb[4];
uchar state=0;//用state變量來指示程序的執(zhí)行狀態(tài)
uchar file_num=0;//用于記錄短信的數(shù)目,初值為0
uchar length_h=0;//用于記錄當前編輯的短信的長度
uchar row=0;
/**************************************************************************************************
*
*T9 輸入法查找函數(shù)
*函數(shù)聲明:unsigned char *T9PY(char *strInput_t9PY_str,uchar length);
*參數(shù)說明:strInput_t9PY_str為字符串的地址,length為字符串的長度
*函數(shù)功能:把找到的漢字點陣表的首地址放在數(shù)組T9PY_mb中
*
**************************************************************************************************/

unsigned char *T9PY(char *strInput_t9PY_str,uchar length)
{
    struct t9PY_index *cpHZ,*cpHZedge;
    unsigned char i;
    PY_num=0;                              
    if(*strInput_t9PY_str=='\0')return(0);         //如果輸入空字符返回0

    cpHZ=&(t9PY_index2[0]);                        //查首字母索引
    cpHZedge=t9PY_index2+sizeof(t9PY_index2)/sizeof(t9PY_index2[0]);
    while(cpHZ < cpHZedge)                         //待查詢記錄條數(shù)
    {											
        for(i=0;i<length;i++)
        {
               if(*(strInput_t9PY_str+i)!=*((*cpHZ).t9PY_T9+i))    //檢查字符串匹配
               {
                     
					break;                                         //發(fā)現(xiàn)字母串不配,退出/
               }
			   
			               
        }
		if(i==length&&PY_num<=3)    
        {
                              
  			   T9PY_mb[PY_num]=cpHZ;
               PY_num++;
			   //break;   
        }

        cpHZ++;
    }
	if (PY_num>0)
    {
          p_py=T9PY_mb[0]->PY;
		  return(T9PY_mb[0]->PY_mb);                
	}
	else
	{
		  return(PY_mb_a);
	}
}


/**************************************************************************************************
*         P17>---0----1----2----3      
*				 |	  |	   |	|
*		  P16>---4----5----6----7
*				 |	  |	   |    |
*		  P15>---8----9----A----B
*				 |	  |	   |	|
*		  P14>---C----D----E----F
*				 |    |	   |	|
*				P13  P12  P11  P10
*4*4鍵盤輸入函數(shù)
*函數(shù)聲明:uchar key_ii();
*函數(shù)參數(shù):無
*
*
*
**************************************************************************************************/
uchar key_ii()
{
    uchar keycode=0xff,temp,i;
    key_bus=0x0f;
	temp=key_bus&0x0f; 
	if(temp!=0x0f)              //有鍵按下
	{
	    key_bus=0x7f;
	    for(i=0;i<4;i++)
		{
			temp=key_bus&0x0f;
            if(temp==0x07)
	        {    
			    keycode=i*4;
				break;
			}
	        else if(temp==0x0b)
			{
	            keycode=i*4+1;
				break;
			}
    	    else if(temp==0x0d)
			{
	            keycode=i*4+2;
				break;
			}
    	    else if(temp==0x0e)
			{
	            keycode=i*4+3;
				break;
			}
			key_bus=(key_bus>>1)|0x80;
		}

	     while((key_bus&0x0f)!=0x0f)   //等待釋放
		 {
		     key_bus=0x0f; 
		 }								             
	    
	 }
	 return keycode;
}

/**************************************************************************************************
*
*
*
*
*
*
**************************************************************************************************/
uchar key()
{
      uchar keycode=0,temp;
	  //鍵盤口,先置1
	  sw0=1; sw1=1;
	  temp=P3&0xD0;
	  if(temp!=0xD0)
	  {
            sw0=1; sw1=1;
			temp=P3&0x40;
	        if(temp==0)keycode=6;
	        temp=P3&0x80;
	        if(temp==0)keycode=7;
			while(temp!=0xD0)
			{
			      temp=P3&0xD0;
			}
	  }
	  return keycode;

	     
}


/**************************************************************************************************
*
*延時函數(shù)
*函數(shù)聲明:void delay(uint t);
*函數(shù)參數(shù):t
*
*
**************************************************************************************************/

void delay(uint t)             
{
      uint i,j;
      for(i=0;i<t;i++)
            for(j=0;j<10;j++);
}


/**************************************************************************************************
*
*向LCD寫命令函數(shù)
*函數(shù)聲明:void write_cmd(uchar cmd);
*函數(shù)參數(shù):cmd(具體命令查看數(shù)據(jù)手冊)
*
*
**************************************************************************************************/

void write_cmd(uchar cmd)  
{

      DI=0; RW=0;
      LCD_BUS=cmd;
      E=1;
      E=0;
}

/**************************************************************************************************
*
*向LCD寫數(shù)據(jù)函數(shù)
*函數(shù)聲明:void write_data(uchar dout);
*函數(shù)參數(shù):dout為要向LCD寫的數(shù)據(jù)
*
*
**************************************************************************************************/
void write_data(uchar dout)  
{

      DI=1; RW=0;
      LCD_BUS=dout;
      E=1;
      E=0;
}


/**************************************************************************************************
*
*從LCD的RAM中讀數(shù)據(jù)
*函數(shù)聲明:uchar read_data();  
*返回參數(shù):uchar型為RAM中的數(shù)據(jù)
*
*
**************************************************************************************************/
uchar read_data()  
{
	  uchar din;
	  LCD_BUS=0xff;
	  DI=1; RW=1;
      E=0;
	  E=0;
	  E=1;
	  E=1;
	  E=1;
	  din=LCD_BUS;
	  return din;        
}


/**************************************************************************************************
*
*畫豎線函數(shù)
*函數(shù)聲明:void line_v(uchar x,uchar y,uchar l);
*函數(shù)參數(shù):x,y分別為LCD的橫向和縱向的坐標值,l為豎線的長度
*
*
**************************************************************************************************/
void line_v(uchar x,uchar y,uchar l)
{
    uchar i;
	for(i=0;i<l;i++) point(x,y+i);
      
}

/**************************************************************************************************
*
*畫橫線函數(shù)
*函數(shù)聲明:void line_h(uchar x,uchar y,uchar l);
*函數(shù)參數(shù):x,y分別為LCD的橫向和縱向的坐標值,l為橫線的長度
*
*
**************************************************************************************************/
void line_h(uchar x,uchar y,uchar l)
{
    uchar i;
	for(i=0;i<l;i++) point(x+i,y);
      
}

/**************************************************************************************************
*
*在LCD的任意位置畫點的函數(shù)
*函數(shù)聲明:void point(uchar x,uchar y);
*函數(shù)參數(shù):x為lcd的列坐標(0-127),y為lcd的縱坐標(0-63)
*利用此函數(shù)能在LCD12864的任意位置畫一個點
*
**************************************************************************************************/
void point(uchar x,uchar y)
{
  uchar y1,y2,pp;
  uchar datain;
  pp=1;
  y1=y>>3;
  y2=y%8;
  pp=pp<<y2;
  if (x<64)
  {
    CS2=1;
	CS1=0;
	write_cmd(PAGE+y1);
    write_cmd(COL+x);  
    datain=read_data();
    write_cmd(PAGE+y1);
    write_cmd(COL+x);
    delay(10);
    datain=read_data();

    write_cmd(PAGE+y1);
    write_cmd(COL+x);
    datain=datain|pp;
    write_data(datain);
  }
  else
  {

    CS2=0;
	CS1=1;
	write_cmd(PAGE+y1);
	write_cmd(COL+x-64);
    datain=read_data();
    write_cmd(PAGE+y1);
    write_cmd(COL+x-64);
    delay(10);
    datain=read_data();
    write_cmd(PAGE+y1);
    write_cmd(COL+x-64);
    datain=datain|pp;
    write_data(datain);
  }
  

  
}


/**************************************************************************************************
*
*初始化LCD屏函數(shù)
*函數(shù)聲明:void init(); 
*函數(shù)參數(shù):無
*函數(shù)作用:對LCD做初始化操作
*
**************************************************************************************************/
void init()  
{

	  delay(100);
      CS2=1; CS1=0;
	  delay(100);
	  write_cmd(DISP_OFF);
	  write_cmd(PAGE);
	  write_cmd(START_LINE);
	  write_cmd(COL);
	  write_cmd(DISP_ON);
	  CS2=0; CS1=1;
	  delay(100);
	  write_cmd(DISP_OFF);
	  write_cmd(PAGE);
	  write_cmd(START_LINE);
	  write_cmd(COL);
	  write_cmd(DISP_ON);
}

/**************************************************************************************************
*
*清屏函數(shù)
*函數(shù)聲明:void cls();
*函數(shù)參數(shù):無
*函數(shù)作用:
*
**************************************************************************************************/
void cls()  
{
      uchar j,k;
      CS2=1;CS1=0;
      for(k=0;k<8;k++)
      {
            write_cmd(PAGE+k);
            write_cmd(COL);       //列地址0
	        for(j=0;j<64;j++)     //列地址自動加一
	              write_data(0x00);
      }
	  CS2=0;CS1=1;
	  for(k=0;k<8;k++)
      {
	        write_cmd(PAGE+k);
	        write_cmd(COL);           //列地址0
	        for(j=0;j<64;j++)         //列地址自動加一
		        write_data(0x00);
      }
}





/**************************************************************************************************
*
*顯示12*16點陣的漢字函數(shù)
*函數(shù)聲明:void display_h(uchar page,uchar col,uchar code *str,uchar n);
*函數(shù)參數(shù):page為頁地址(0-7),col為列地址(0-127),str為數(shù)組名,n為要顯示第n個漢字點陣
*函數(shù)作用:
*
**************************************************************************************************/
void display_h(uchar page,uchar col,uchar code *str,uchar n)
{
      uchar i,j;
	  uchar num;
	  if(col<=52)
	  {
	        CS2=1;CS1=0;
			for(j=0;j<2;j++)
	        {
		          write_cmd(PAGE+page+j);write_cmd(COL+col);
		          for(i=0;i<12;i++)
		                write_data(str[n*24+12*j+i]);
	        }
	  }
	  else if(col>=64)
	  {
		    CS2=0;CS1=1;
		    col=col-64;
			for(j=0;j<2;j++)
	        {
		          write_cmd(PAGE+page+j);write_cmd(COL+col);
		          for(i=0;i<12;i++)
		                write_data(str[n*24+12*j+i]);
	        }
	  }

	  
	  else if(col>52&&col<64)    //處理跨屏幕的漢字書寫的函數(shù)
	  {
	      num=64-col;										  
		  CS2=1;CS1=0;

		  for(j=0;j<2;j++)
		  {
		          write_cmd(PAGE+page+j);write_cmd(COL+col);
		          for(i=0;i<num;i++)
		                write_data(str[n*24+12*j+i]);  
		  }
		  CS2=0;CS1=1;
		  col=0;
		  for(j=0;j<2;j++)
		  {
		          write_cmd(PAGE+page+j);write_cmd(COL+col);
		          for(i=num;i<12;i++)
		                write_data(str[n*24+12*j+i]);  
		  }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕一区不卡| 色素色在线综合| 久久九九国产精品| 国产99久久久精品| 亚洲同性同志一二三专区| 99久久精品国产观看| 亚洲日本一区二区三区| 色综合久久综合网97色综合| 亚洲国产成人tv| 欧美大度的电影原声| 国产精品亚洲第一区在线暖暖韩国| 久久只精品国产| 99在线热播精品免费| 亚洲国产欧美日韩另类综合 | 蜜桃视频在线观看一区二区| 日韩一级免费一区| 国产不卡在线播放| 一区二区三区在线观看网站| 91精品国产综合久久久蜜臀粉嫩| 久久激情五月激情| 国产精品电影院| 欧美揉bbbbb揉bbbbb| 韩国女主播成人在线| 国产精品视频观看| 欧美美女直播网站| 国产一区二区在线影院| ...av二区三区久久精品| 欧美日韩大陆在线| 成人免费视频网站在线观看| 亚洲精品视频自拍| 精品国产髙清在线看国产毛片| 成人开心网精品视频| 日韩经典中文字幕一区| 欧美国产精品v| 4438亚洲最大| 91亚洲午夜精品久久久久久| 蜜臀av一区二区在线观看| 国产精品第13页| 欧美成人乱码一区二区三区| 色婷婷亚洲精品| 国产成人精品综合在线观看 | 日韩二区在线观看| 国产精品久久久久精k8| 精品国产一二三区| av一二三不卡影片| 国产主播一区二区| 日韩精品每日更新| 国产精品国产三级国产有无不卡 | 欧美精品在线一区二区| 99riav久久精品riav| 国产一区二区三区免费观看| 污片在线观看一区二区| 亚洲日本在线天堂| 欧美国产日韩a欧美在线观看| 欧美精品九九99久久| 色视频欧美一区二区三区| 国产激情91久久精品导航| 蓝色福利精品导航| 日韩电影在线免费观看| 亚洲大片一区二区三区| 亚洲黄色片在线观看| 国产精品国产三级国产| 国产女同互慰高潮91漫画| 精品国产伦一区二区三区免费| 欧美另类一区二区三区| 欧美午夜精品久久久| 色老汉av一区二区三区| 99久久免费精品高清特色大片| 国产精品18久久久久| 精品一区二区三区视频在线观看| 首页综合国产亚洲丝袜| 亚洲国产欧美日韩另类综合 | 亚洲国产精品一区二区久久 | 国产精品国产自产拍高清av王其| 久久久精品国产免费观看同学| 日韩三级在线观看| 日韩欧美国产成人一区二区| 91精品国产麻豆国产自产在线| 欧美性猛片xxxx免费看久爱| 色噜噜狠狠色综合欧洲selulu| 国产乱码精品一区二区三区忘忧草 | 蜜臀精品久久久久久蜜臀| 喷水一区二区三区| 日本一不卡视频| 美国精品在线观看| 精品一二三四在线| 国产一区二区不卡| 成人爱爱电影网址| 97精品久久久午夜一区二区三区| 99久久伊人网影院| www.欧美亚洲| 欧美制服丝袜第一页| 欧美色老头old∨ideo| 91精品国产色综合久久ai换脸 | 91成人免费电影| 色天天综合久久久久综合片| 欧美色倩网站大全免费| 日韩欧美一区二区三区在线| 欧美大白屁股肥臀xxxxxx| 久久综合九色综合97_久久久| 欧美激情在线免费观看| 中文字幕日韩精品一区| 午夜在线成人av| 国内久久精品视频| 成人精品一区二区三区四区| 欧洲精品视频在线观看| 日韩一区二区三区视频在线观看| 26uuu国产在线精品一区二区| 欧美国产精品中文字幕| 亚洲专区一二三| 玖玖九九国产精品| av一二三不卡影片| 在线成人av网站| 国产农村妇女精品| 舔着乳尖日韩一区| 成人免费视频一区| 欧美日韩大陆一区二区| 国产欧美日韩精品a在线观看| 亚洲蜜臀av乱码久久精品| 美女在线观看视频一区二区| av激情亚洲男人天堂| 欧美电影一区二区三区| 国产精品传媒在线| 久久99精品久久只有精品| 一本久久精品一区二区| 久久综合久久久久88| 亚洲国产毛片aaaaa无费看| 国产成人精品网址| 7777精品伊人久久久大香线蕉完整版 | av在线不卡电影| 日韩欧美在线网站| 一区二区三区四区中文字幕| 国产一区福利在线| 欧美另类一区二区三区| 亚洲天堂2014| 日本韩国欧美三级| 精品国产免费久久| 亚洲成人一区二区| 波多野结衣在线aⅴ中文字幕不卡| 4438亚洲最大| 亚洲高清在线精品| av中文一区二区三区| 久久久久成人黄色影片| 日韩av午夜在线观看| 91福利在线观看| 中文字幕中文在线不卡住| 国产一区二区精品久久99| 欧美一区二区三区喷汁尤物| 亚洲综合在线电影| 99久久精品免费观看| 国产精品欧美极品| 国产露脸91国语对白| 欧美va在线播放| 天天影视涩香欲综合网| 在线观看日韩高清av| 亚洲男人天堂av| a级精品国产片在线观看| 久久精品视频在线看| 激情综合亚洲精品| 日韩欧美一级二级三级久久久| 亚洲成人资源网| 欧美日韩精品一区视频| 亚洲一区二区三区四区在线免费观看 | 亚洲日本护士毛茸茸| 不卡一区二区在线| 亚洲欧洲三级电影| 91视视频在线观看入口直接观看www | 欧美成人官网二区| 免费三级欧美电影| 日韩精品一区二区三区四区| 日本美女一区二区| 欧美一区二区网站| 蜜桃av一区二区三区| 日韩一区二区三区免费看| 美女一区二区三区在线观看| 欧美电影免费观看高清完整版在线 | 亚洲国产综合在线| 欧美色综合天天久久综合精品| 亚洲一区二区三区四区五区黄| 91成人免费在线视频| 亚洲成人动漫一区| 欧美一级电影网站| 国产精品99久久久久久宅男| 中文字幕欧美激情一区| 99re热这里只有精品视频| 一级做a爱片久久| 欧美一区二区三级| 国产一区二区三区观看| 中文在线资源观看网站视频免费不卡| 成人禁用看黄a在线| 夜夜精品浪潮av一区二区三区| 欧美高清视频在线高清观看mv色露露十八 | 欧美日韩国产精品自在自线| 日韩电影免费一区| 国产校园另类小说区| 99国产精品久久久久| 天天综合天天综合色| 国产午夜亚洲精品午夜鲁丝片| zzijzzij亚洲日本少妇熟睡| 亚洲高清不卡在线观看|