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

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

?? 5d_keys.c

?? 基于C8051F020的五維方向鍵
?? C
字號:


#include <c8051f020.h>                    // 特殊功能寄存器(包含位)聲明
#include <stdio.h>

//------------------------------------------------------------------------------------
// 定義16位SFR
//------------------------------------------------------------------------------------
sfr16 DP       = 0x82;                    // data pointer
sfr16 TMR3RL   = 0x92;                    // Timer3 reload value
sfr16 TMR3     = 0x94;                    // Timer3 counter
sfr16 ADC0     = 0xbe;                    // ADC0 數據
sfr16 ADC0GT   = 0xc4;                    // ADC0 greater than window
sfr16 ADC0LT   = 0xc6;                    // ADC0 less than window
sfr16 RCAP2    = 0xca;                    // Timer2 capture/reload
sfr16 T2       = 0xcc;                    // Timer2
sfr16 RCAP4    = 0xe4;                    // Timer4 capture/reload
sfr16 T4       = 0xf4;                    // Timer4
sfr16 DAC0     = 0xd2;                    // DAC0  數據
sfr16 DAC1     = 0xd5;                    // DAC1  數據
//char display[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
char disp_lcd[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46};
//------------------------------------------------------------------------------------
// 定義全局常量和變量
//------------------------------------------------------------------------------------

#define SYSCLK 22118400                     // 定義系統時鐘(Hz)
#define uint8   unsigned char 
#define uint16   unsigned int
#define    KEY   P6
sfr Lcd_port =0x85;     //LCd數據端口  P5                        
sfr Lcd_ctr =0x84;      //LCd控制端口  P4
/*開漏 LCD_RS=P4.5    開漏 LCD_RW=P4.6     開漏 LCD_E=P4.7*/

uint8 code  Welcome0[64]  ={ "01234567        "
                             "                "
                             "                "
							 "                "};
uint8 Ac;
uint8 RamData;
//------------------------------------------------------------------------------------
// 自定義函數
//------------------------------------------------------------------------------------
		    //延時子程序
				//讀ADC
//void System_Init(void);             //系統初始化
//uint8 keyscan0();                     //鍵盤掃描
//--------gmyul768op7 8op----------------------------------------------------------------------------

void delay ()
  {
   uint8 k;
   for(k=0;k<200;k++);
}

void Delay(uint16 time)	   //延時程序   ========不分通道========
{
  	uint16 i,t;
	for(i=0;i<time;i++){for(t=0;t<300;t++) ;}
} 

////////////////////////////////////////////////////////////////////////////////LCD程序
void Wait(uint8 dly)
{for(;dly>0;dly--);}  

uint8 Lcd_Busy( void )
{
    uint8 Lcd1;
  	Lcd_ctr=0x40;		   //RS=0,RW=1 
	Wait(50);
        Lcd_ctr=0xc0;
	Wait(50);
	Lcd_port=0xff;
	Lcd1=Lcd_port;                              //從LCD讀狀態
	Lcd_ctr=0x40;	                                //讀數據,操作允許脈沖信號
	if(( Lcd1 & 0x80 )==0) return 0 ;           //LCD不忙,返回0
	return 1;			                       //LCD忙,返回1
}

void LcdWriteCommand( uint8 comm)
{
   while(Lcd_Busy()==1);                   //等LCD空閑
	Lcd_ctr=0x00; 			    				//Lcd_RS=0,Lcd_RW=0
	Wait(50);
	Lcd_ctr=0x80;
	Wait(50);
	Lcd_port=comm;   		   				 // 送控制字到LCD
	Wait(50);
	Lcd_ctr=0x00;	       	            		// 下降沿打入數據,操作允許脈沖信號
	Wait(50);
}

void Lcd_Ram_Write(uint8 Lcd_d)
{
	while (Lcd_Busy()==1);			        // 檢測LCD忙信號,等LCD不忙
	Lcd_ctr=0xa0; 		                        //RS=1,RW=0  數據寫入LCD
	Wait(50);
	Lcd_port=Lcd_d;                         //向LCD寫數據
	Lcd_ctr=0x20;
	Wait(50);                             // 下降沿打入數據
}

void Lcd_reset()
{
	LcdWriteCommand(0x30);                    //寫命令字0x38,8位數據寬度
	delay();
	LcdWriteCommand(0x01);                    //寫命令字0x01,清顯示
	delay();
	LcdWriteCommand(0x06);                    //輸入方式設定  AC自動加1 
	delay();
	LcdWriteCommand(0x0c);                    //開顯示,關 光標+閃動  D2,D1(0=無光標),D0(1=閃動)
	delay();
}

void disp_flash(uint8 t)
{
		uint8 j,m;	
		LcdWriteCommand(0x02);                  //***************************
		Delay(1500);
		LcdWriteCommand(0x0f);                  //閃爍
		Delay(1500);
              if(t == 0 )
			    {
			      for(j=0;j<4;j++){
	             	 for(m=0;m<15;m++)  Lcd_Ram_Write(Welcome0[j*16+m]);}
				     //for(m=0;m<16;m++) Lcd_Ram_Write(0x03);}
			    }	
}

uint8 Ac_Read()
{
  	Lcd_ctr=0x40;		   //RS=0,RW=1 
	Wait(50);
    Lcd_ctr=0xc0;
	Wait(50);
	Lcd_port=0xff;
	Ac=Lcd_port;                              //從LCD讀狀態
	Lcd_ctr=0x40;	                                //讀數據,操作允許脈沖信號
	Ac=Ac&0x7f;
	Ac=Ac+0x80;
    return Ac;
}

void Cursor_Move(uint8 n)
{   uint8 flag;
    flag=0;
    Ac_Read();
    if(n==10)              //上移
	  {
	       if(Ac >=0x80&Ac <= 0x87)
		      {
		          Ac = Ac+0x18;
                  LcdWriteCommand(Ac);                    
          	      delay();
			   }
		   else if(Ac >=0x90&Ac <= 0x97)
		      {
		          Ac = Ac-0x10;
                  LcdWriteCommand(Ac);                    
          	      delay();
			   }
		   else if(Ac >=0x88&Ac <= 0x8f)
		      {
		          Ac = Ac+0x08;
                  LcdWriteCommand(Ac);                    
          	      delay();
			   }
           else 
		      {
		          Ac = Ac-0x10;
                  LcdWriteCommand(Ac);                    
          	      delay();
			   }
   	  }

	if(n==4)                //左移
	  { 
	       if(Ac ==0x80)
		       {
			       Ac =Ac+0x1f;
                   LcdWriteCommand(Ac);                    
          	       delay();
				   flag=1;
			   }  
		    if(Ac ==0x90)
		       {
			       Ac =Ac-0x09;
                   LcdWriteCommand(Ac);                    
          	       delay();
				   flag=1;
			   }
  		    if(Ac ==0x88)
		       {
			       Ac =Ac+0x0f;
                   LcdWriteCommand(Ac);                    
          	       delay();
				   flag=1;
			   }  
			if(Ac ==0x98)
		       {
			       Ac =Ac-0x09;
                   LcdWriteCommand(Ac);                    
          	       delay();
				   flag=1;
			   }  
            if(flag==0)
		       {
			       LcdWriteCommand(0x10);                    
                   delay();
				}
	  }
	if(n==14)                 //下移
	  {
	       if(Ac >=0x80&Ac <= 0x87)
		      {
		          Ac = Ac+0x10;
                  LcdWriteCommand(Ac);                    
          	      delay();
			   }
		   else if(Ac >=0x90&Ac <= 0x97)
		      {
		          Ac = Ac-0x08;
                  LcdWriteCommand(Ac);                    
          	      delay();
			   }
		   else if(Ac >=0x88&Ac <= 0x8f)
		      {
		          Ac = Ac+0x10;
                  LcdWriteCommand(Ac);                    
          	      delay();
			   }
           else 
		      {
		          Ac = Ac-0x18;
                  LcdWriteCommand(Ac);                    
          	      delay();
			   }
	  }
	if(n==15)               //右移
	  { 
	       if(Ac==0x87)
		      {
			      Ac = Ac+0x09;
                  LcdWriteCommand(Ac);     
                  delay();
				  flag=1;
			  }
		   if(Ac==0x97)
		      {
			      Ac = Ac-0x0f;
                  LcdWriteCommand(Ac);                    
          	      delay();
				  flag=1;
			  }
		   if(Ac==0x8f)
		      {
			      Ac = Ac+0x09;
                  LcdWriteCommand(Ac);                    
          	      delay();
				  flag=1;
			  }
		   if(Ac==0x9f)
		      {
			      Ac = Ac-0x1f;
                  LcdWriteCommand(Ac);                    
          	      delay();
				  flag=1;
			  }
		  if(flag==0)
	 	      {
	  	          LcdWriteCommand(0x14);                    
                  delay();
		      }
	  }

	if(n==12)                             //確認    
	  {
  	    Ac=Ac+0x01;
        LcdWriteCommand(Ac);                    
        delay();
       }


	   
    if(n!=10&n!=11&n!=12&n!=13&n!=14&n!=15&n!=16)                       //寫數據
       {
         //if()
          //{ }
          Lcd_Ram_Write(disp_lcd[n]);
		  delay();
	   }
}


uint8 Lcd_ReadRam(void)
{
     //uint8  Ac1;
     //Ac1 = Ac_Read();
    // =Lcd_ctr;
     Lcd_ctr=0xe0;
     Wait(50);
    // if()
       // {
             RamData=Lcd_port;
             Wait(50);
        // }
     RamData=Lcd_port;
     Lcd_ctr=0x60;
     //Wait(50);
	 return RamData;

}

//////////////////////////////////////////////////////////////////////////////

/**************************************************************************
4*4矩陣鍵盤掃描,返回值為按鍵對應的數值(0~F),若無鍵則返回0x10,輸入時無反相器
**************************************************************************/
unsigned char keyscan0()             //4*4矩陣鍵盤掃描返回按鍵對應的數值
{
  unsigned char i,k,out,in=1,j;
     KEY=0xff;
     KEY=0x0f;
	 i=KEY;
	 j=i=i&0x0f;
    if(i!=0x0f)
  {	 delay();
     if(i==j)
   {  out=0xef;
     for(i=0;i<4;i++)
	 { KEY=0xff;
	   KEY=out;
	   k=KEY;
	   k=k&0x0f;
	  do{ j=KEY;
	      j=j&0x0f;
	   } while(i==k);
     if(i==0){
        switch(k)
	{ case 0x0e :  return 3;break;
      case 0x0d :  return 7;break;
      case 0x0b :  return 11;break;
      case 0x07 :  return 15;break;
	 }  }
    else if(i==1){
	   switch(k)
	{ case 0x0e :  return 0;break;
      case 0x0d :  return 4;break;
      case 0x0b :  return 8;break;
      case 0x07 :  return 12;break;
	 }}
	 else if(i==2){
	   switch(k)
	{ case 0x0e :  return 2;break;
      case 0x0d :  return 6;break;
      case 0x0b :  return 10;break;
      case 0x07 :  return 14;break;
	 }  }
	else if(i==3){
	   switch(k)
	{ case 0x0e :  return 1;break;
      case 0x0d :  return 5;break;
      case 0x0b :  return 9;break;
      case 0x07 :  return 13;break;
	 }}
      out=out<<1;
	  out=out+0x01;
	 }
   
  }
 }
   else return 16;	 
}


/////////////////////////////////////////////////////////////////////////////
void System_Init(void)	  

{
 uint8  y;

	OSCXCN=0xe7;		//使能外晶體 >11.0592MHz
	Delay(200);
	y=0x00;
	while(y!=0x80)	    //等外晶體穩定
	  {
	  	y=OSCXCN;
	   	y=y&0x80;
	  }

	OSCICN=0x8c;       //切換到外晶體 */               //  

    P0MDOUT = 0xff;             //配置P0口 	  推拉輸出
   	P1MDOUT = 0x00;         	//配置P1口 	  推拉輸出
   	P2MDOUT = 0xff;         	//配置P2口 	  推拉輸出
   	P3MDOUT = 0xff;        	    //配置P3口 	  推拉輸出
   	P74OUT  = 0x00;
	XBR0 = 0x00;                 // XBAR0 串口連接到端口 P0.0=TXD  P0.1=RXD
	XBR1 = 0x00;	            // XBAR1
	XBR2 = 0x40;	           // 交叉開關使能(D6=1)


	EA=0;
  	WDTCN = 0xde;              //配置WT--看門狗定時器
  	WDTCN = 0xad;   

	P1=0x7f;
    Delay(1000);
    P1=0xff;

    Lcd_port = 0xff; 
    while(Lcd_Busy()==1);       // 檢測LCD忙信號,等LCD不忙
	Lcd_reset();
    
}	     

/////////////////////////////////////////////////////////////////////////////////////////////////////////
void main (void)
{   
    uint8 m;
	//uint8 Data;
	System_Init();
	disp_flash(0);
    LcdWriteCommand(0x02);                    
    delay();
 	while(1)
  	 { 
       m=keyscan0();
       Cursor_Move(m);
       Delay(1000);
     }
	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕乱码亚洲精品一区| 色8久久精品久久久久久蜜| 亚洲精品乱码久久久久久 | 免费成人在线影院| 日韩 欧美一区二区三区| 亚洲超碰精品一区二区| 亚洲电影第三页| 午夜精品在线视频一区| 日本v片在线高清不卡在线观看| 亚洲高清在线精品| 亚洲已满18点击进入久久| 亚洲欧美日韩小说| 婷婷久久综合九色综合绿巨人| 亚洲国产精品麻豆| 麻豆国产精品777777在线| 精品一区二区三区在线观看 | 久久综合九色综合欧美就去吻| 日韩欧美精品在线| 久久久精品人体av艺术| 中文字幕乱码久久午夜不卡| 中文字幕欧美一区| 亚洲综合免费观看高清完整版在线| 亚洲一区欧美一区| 日韩高清不卡在线| 国产精品亚洲视频| av在线免费不卡| 欧美日韩在线直播| 国产婷婷精品av在线| 亚洲美女电影在线| 肉色丝袜一区二区| 国产91综合一区在线观看| 色婷婷久久久久swag精品 | 日韩成人一区二区三区在线观看| 麻豆成人免费电影| 91一区二区在线观看| 欧美精品vⅰdeose4hd| 久久伊人中文字幕| 亚洲第一电影网| 91久久精品一区二区| 欧美一级二级在线观看| 亚洲国产精品黑人久久久| 亚洲国产精品久久不卡毛片 | 久久婷婷一区二区三区| 亚洲免费资源在线播放| 韩日精品视频一区| 在线观看日韩电影| 国产日韩精品一区二区三区| 亚洲r级在线视频| 99久久久免费精品国产一区二区| 69久久夜色精品国产69蝌蚪网| 亚洲国产精品av| 奇米色777欧美一区二区| 91欧美激情一区二区三区成人| 精品日产卡一卡二卡麻豆| 一区二区三区四区视频精品免费 | 日韩精品一区二区三区在线播放 | 99精品国产热久久91蜜凸| 精品国产亚洲在线| 亚洲成a人在线观看| 99久久久精品| 久久久综合视频| 日韩成人精品在线| 欧美亚洲国产一区二区三区| 国产精品女主播在线观看| 精品一区二区三区视频| 在线电影欧美成精品| 亚洲激情欧美激情| 99久久99久久精品免费观看| 久久久综合视频| 狠狠色丁香婷婷综合久久片| 欧美一区二区三区在线看| 偷拍日韩校园综合在线| 欧美亚洲自拍偷拍| 一区二区三区成人| 一本一道综合狠狠老| 18欧美乱大交hd1984| 成人美女在线视频| 国产精品美日韩| 91一区二区在线观看| 亚洲欧洲av另类| 色呦呦日韩精品| 亚洲猫色日本管| 欧美影视一区二区三区| 性久久久久久久| 欧美一区中文字幕| 久久99久久精品| 久久亚洲精精品中文字幕早川悠里| 精品一区二区在线视频| 久久亚洲综合色一区二区三区| 国产原创一区二区| 日本在线不卡一区| 精品美女被调教视频大全网站| 久久激情综合网| 国产欧美一区二区三区在线看蜜臀| 成人精品一区二区三区中文字幕| 国产精品美女一区二区在线观看| av在线一区二区三区| 亚洲电影在线免费观看| 欧美巨大另类极品videosbest | 一区二区三区成人| 欧美一区二区三区在线视频| 国产精品自产自拍| 亚洲美女视频在线观看| 日韩视频不卡中文| 成人av在线电影| 五月婷婷另类国产| 国产丝袜在线精品| 欧美午夜电影网| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲欧洲www| 日韩欧美一级片| 色综合久久88色综合天天6 | 精品国产髙清在线看国产毛片| 成人一区二区三区中文字幕| 亚洲欧洲综合另类在线| 中文字幕一区二区三区在线播放 | 亚洲国产日韩精品| 久久综合久久综合久久综合| 色婷婷久久久综合中文字幕| 老司机精品视频一区二区三区| 国产欧美久久久精品影院| 欧美午夜不卡视频| 国产不卡免费视频| 天天影视网天天综合色在线播放| 国产午夜精品久久久久久免费视 | av中文字幕在线不卡| 日本视频免费一区| 亚洲欧美日韩中文播放| 精品国产乱码久久久久久闺蜜| 一本久道久久综合中文字幕| 国产原创一区二区| 欧美aaaaa成人免费观看视频| 中文字幕在线一区免费| 日韩欧美国产综合一区| 欧美在线观看视频在线| 国产成人av一区二区三区在线 | 色综合色综合色综合| 国产一区中文字幕| 三级精品在线观看| 亚洲国产日韩一区二区| 亚洲人成精品久久久久久| 久久先锋资源网| 日韩精品一区二区三区三区免费 | 欧美久久久久久久久久| 色婷婷久久久亚洲一区二区三区| 成人午夜激情在线| 精品一区二区三区在线播放| 日本免费在线视频不卡一不卡二| 一区二区三区不卡在线观看| 一区二区三区日韩在线观看| 中文字幕制服丝袜一区二区三区| 国产亚洲女人久久久久毛片| www国产亚洲精品久久麻豆| 精品视频一区三区九区| 欧美亚洲愉拍一区二区| 欧美怡红院视频| 欧美日韩欧美一区二区| 欧美性猛片aaaaaaa做受| 欧美在线不卡视频| 欧美午夜宅男影院| 7777精品伊人久久久大香线蕉完整版| 欧美亚一区二区| 国产精品私人自拍| 亚洲国产电影在线观看| 国产精品国产三级国产aⅴ原创| 国产欧美日韩综合| 国产精品家庭影院| 亚洲五月六月丁香激情| 日韩av一区二| 极品少妇一区二区| 懂色av一区二区在线播放| 97精品久久久午夜一区二区三区| 日本道色综合久久| 欧美一级夜夜爽| 欧美激情艳妇裸体舞| 亚洲免费av高清| 日韩精品国产精品| 高清不卡一区二区在线| 色先锋资源久久综合| 91精品在线一区二区| www精品美女久久久tv| 亚洲乱码中文字幕| 91视频xxxx| 青青草精品视频| 久久99九九99精品| k8久久久一区二区三区| 欧美视频一区二区三区在线观看| 欧美久久久久久蜜桃| 久久午夜国产精品| 亚洲色图丝袜美腿| 蜜臀av一区二区三区| 成人在线综合网站| 欧美日韩免费一区二区三区| 337p粉嫩大胆噜噜噜噜噜91av| 国产精品久久久久久久第一福利| 一区av在线播放| 国产高清在线精品| 欧美午夜精品电影| 国产精品青草综合久久久久99| 亚洲成人www|