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

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

?? 8574keyboard.c

?? aduc834單片機(jī)PCF8574 4*5鍵盤驅(qū)動程序
?? C
字號:
//#include <reg52.h>
#include <ADI/ADuC834.h>
#include <intrins.h>

#define uchar unsigned char
#define uint unsigned int

//1602移植過來的
sbit rs=P2^3;    //1602的數(shù)據(jù)/指令選擇控制線 
sbit rw=P2^4;        //1602的讀寫控制線 
sbit en=P2^5;        //1602的使能控制線 
/*P2口接1602的D0~D7,注意不要接錯了順序,我以前可在這上面吃過虧~*/ 
uchar code table[]="LCD1602 check ok"; //要顯示的內(nèi)容1放入數(shù)組tablel 
uchar code table1[]="study up";             //要顯示的內(nèi)容2放入數(shù)組table1 
uchar code esc[]="ESC";
uchar code light[]="LIGHT";
uchar code avc[]="AVC";
uchar code memo[]="MEMO";
uchar code hold[]="HOLD";
uchar code setup[]="SETUP";
uchar code pgdn[]="PgDn";

uchar n,m=0;

uchar slvadr=0x40 ;      //被控器地址
uchar ack;
uchar key;
uchar curkey;
uchar key_right_flag=1;
uchar KeyPort;
uchar RBT[8];

//1602移植過來的
void delay(uint n)       //延時函數(shù)                       
{ 
    uint x,y; 
    for(x=n;x>0;x--) 
        for(y=110;y>0;y--); 
} 
void lcd_wcom(uchar com)  //1602寫命令函數(shù)                 
{ 
    rs=0;            //選擇指令寄存器 
    rw=0;            //選擇寫 
    P0=com;            //把命令字送入P2 
    delay(5);            //延時一小會兒,讓1602準(zhǔn)備接收數(shù)據(jù) 
    en=1;           //使能線電平變化,命令送入1602的8位數(shù)據(jù)口 
    en=0; 
} 
void lcd_wdat(uchar dat)        //1602寫數(shù)據(jù)函數(shù)       
{ 
    rs=1;        //選擇數(shù)據(jù)寄存器 
    rw=0;        //選擇寫 
    P0=dat;        //把要顯示的數(shù)據(jù)送入P2 
    delay(5);        //延時一小會兒,讓1602準(zhǔn)備接收數(shù)據(jù) 
    en=1;        //使能線電平變化,數(shù)據(jù)送入1602的8位數(shù)據(jù)口 
    en=0; 
} 
void lcd_init()              //1602初始化函數(shù)       
{ 
    lcd_wcom(0x38);       //8位數(shù)據(jù),雙列,5*7字形       
    lcd_wcom(0x0F);      //開啟顯示屏,關(guān)光標(biāo),光標(biāo)不閃爍 
    lcd_wcom(0x06);    //顯示地址遞增,即寫一個數(shù)據(jù)后,顯示位置右移一位 
    lcd_wcom(0x01);    //清屏 
} 

void PCF8574init(void)
{
	I2CM=1;
}

void delay1ms(uchar x)
{  
unsigned char i,j;
        while(x--)
           {
             for(i=5;i>0;i--)
          for(j=132;j>0;j--);
        }
}

void Delay_Cycles(char delay)
{
  while(delay--);
}

/*---------------------------------------------------------------------------------------------------
開始:START
描述:啟動I2C 總線子程序--發(fā)送I2C 起始條件
---------------------------------------------------------------------------------------------------*/
void start(void)
{
  MDE=1;
  MCO=1;
  MDO=1;
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  MDO=0;
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  MCO=0;
}

void Ack_I2c(uchar a) //a=0發(fā)送應(yīng)答信號,=1發(fā)送非應(yīng)答信號
{ 
	MDE=1;
  if(a==0)MDO=0; /*在此發(fā)出應(yīng)答或非應(yīng)答信號 */ 
  else MDO=1; 
  _nop_(); 
  _nop_(); 
  _nop_(); 
  MCO=1; 
  _nop_();
  _nop_(); /*時鐘低電平周期大于4μs*/ 
  _nop_(); 
  _nop_(); 
  _nop_(); 
  MCO=0; /*清時鐘線,鉗住I2C總線以便繼續(xù)接收*/ 
  _nop_(); 
  _nop_(); 
}

void wrbyt(uchar shu)
{
  uchar i;
  ack=0;
  MDE=1;			//        SETB    MDE           ; to enable SDATA pin as an output	
  MCO=0;
  for(i=0;i<8;i++)
  {
    if(shu&0x80)
    {
      MDO=1;
      _nop_();
      MCO=1;
      _nop_();    
      _nop_();
      _nop_();
      MCO=0;
      //MDO=0;
    }
    else
    {
      MDO=0;
      _nop_();
      MCO=1;
      _nop_();
      _nop_();
      _nop_();
      MCO=0;
    }
  shu=shu<<1;
  }
  MDO=1;
  MDE=0;			//      CLR     MDE           	; release data line for acknowledge
  MCO=1;			//      SETB    MCO           	; send clock for acknowledge
  Delay_Cycles(3);
  MCO=0;
}

//void SendByte_Upon_I2C(unsigned char byte)
//{
//	unsigned char send_bitdata;
//  unsigned char send_bytedata=byte;
//  uchar BITCNT=8;		//        MOV     BITCNT,#8     ; 8 bits in a byte
//  MDE=1;			//        SETB    MDE           ; to enable SDATA pin as an output	
//  MCO=0;			//        CLR     MCO           ; make sure that the clock line is low
//  Delay_Cycles(5);
//  while(BITCNT--)
//	{
//	  if(send_bytedata&0x80)send_bitdata=1;
//	  	else send_bitdata=0;
//	  MDO=send_bitdata;		//      MOV     MDO,C           ; put data bit on SDATA line
//	  MCO=1;		//      SETB    MCO             ; clock to send bit
//	  Delay_Cycles(1);
//	  Delay_Cycles(5);
//	  MCO=0;		//      CLR     MCO             ; clear clock 
//	  send_bytedata<<=1;
//	}        	//		DJNZ    BITCNT,SENDBIT	; jump back and send all eight bits
//  MDE=0;			//      CLR     MDE           	; release data line for acknowledge
//  MCO=1;			//      SETB    MCO           	; send clock for acknowledge
//  Delay_Cycles(3);
//  MCO=0;			//NEXT: CLR     MCO             ; clear clock 
//  return;			//	RET
//}

uchar RcvByte() 
{ 
uchar retc; 
uchar BitCnt; 

retc=0; 
MDE=0; /*置數(shù)據(jù)線為輸入方式*/ 
for(BitCnt=0;BitCnt<8;BitCnt++) 
{ 
_nop_(); 
MCO=0; /*置時鐘線為低,準(zhǔn)備接收數(shù)據(jù)位*/ 
_nop_(); 
_nop_(); /*時鐘低電平周期大于4.7μs*/ 
_nop_(); 
_nop_(); 
_nop_(); 
MCO=1; /*置時鐘線為高使數(shù)據(jù)線上數(shù)據(jù)有效*/ 
_nop_(); 
_nop_(); 
retc=retc<<1; 
if(MDI==1)retc=retc+1; /*讀數(shù)據(jù)位,接收的數(shù)據(jù)位放入retc中 */ 
_nop_(); 
_nop_(); 
} 
MCO=0; 
_nop_(); 
_nop_(); 
return(retc); 
} 

/*---------------------------------------------------------------------------------------------------
名稱:STOP
描述:停止I2C 總線子程序--發(fā)送I2C 總線停止條件
---------------------------------------------------------------------------------------------------*/
void stop(void)
{
	     MDE=1;
       MDO=0;
       _nop_();
       MCO=1;
       _nop_();
       _nop_();
       _nop_();
       _nop_();
       _nop_();
       MDO=1;
       _nop_();
       _nop_();
       _nop_();
}
void checkack(void)
{
//  MDO=1; /*8位發(fā)送完后釋放數(shù)據(jù)線,準(zhǔn)備接收應(yīng)答位*/ 
//  MDE=0;
//  _nop_(); 
//  _nop_(); 
//  MCO=1; 
//  _nop_(); 
//  _nop_(); 
//  _nop_(); 
  if(MDI==0)
  	ack=1; 
  else 
  	ack=0; /*判斷是否接收到應(yīng)答信號*/ 
  MCO=0; 
  MDE=1;
  _nop_(); 
  _nop_();
}

/*************************************************************************************
主程序
**************************************************************************************/
void ext0_int() interrupt 0//SPIandI2C_InterruptRoutine(void) interrupt 7//
{
//	if(key_right_flag<2)
//	{
	EX0=0;
	start();
  wrbyt(0x41);
	RBT[1]=RcvByte();
	Ack_I2c(1);
	stop();
	if(RBT[1]>=0x70)//如果接收的數(shù)正確
	key_right_flag++;
	KeyPort = (RBT[1] & 0xF0);
	//KeyPort=(0x70&0xF0);
	start();
	wrbyt(0x40);
	wrbyt(0x0F);
	checkack();
	stop();
	start();
  wrbyt(0x41);
  RBT[2]=RcvByte();
  Ack_I2c(1);
  stop();
  if(RBT[2]<=0x0F)//判斷是否正確
  key_right_flag++;
	key = (RBT[2] & 0x0F);
	key|=KeyPort;
	if(key!=0xFF)
	curkey=key;
//  }
//  if(key_right_flag>=2)
//  {
  key_right_flag=0;
	start();//恢復(fù)8574初始狀態(tài)
  wrbyt(0x40);
  wrbyt(0xF0);
  checkack();
  stop();
	EX0=1;
//  }
}

/*************************************************************************************
主程序
**************************************************************************************/
void main()
{
	EX0=1;
  PCF8574init();//主機(jī)模式
  start();
  wrbyt(slvadr);//發(fā)一個數(shù)據(jù)或地址
  wrbyt(0xF0);//端口初始化
  checkack();
  stop();
  delay1ms(1);
  delay1ms(1);
  delay1ms(1);
  start();
  wrbyt(0x41);
  RBT[0]=RcvByte();
  Ack_I2c(1);
  stop();
  EA=1;
//1602移植過來的    
    lcd_init();                 //液晶初始化 
    lcd_wcom(0x80);   //顯示地址設(shè)為80H(即00H,)上排第一位       
    for(m=0;m<16;m++)     //將table[]中的數(shù)據(jù)依次寫入1602顯示 
    { 
            lcd_wdat(table[m]);           
            delay(1); 
    } 
    lcd_wcom(0x80+0x44); //重新設(shè)定顯示地址為0xc4,即下排第5位 
    for(n=0;n<8;n++)   //將table1[]中的數(shù)據(jù)依次寫入1602顯示 
    {     
            lcd_wdat(table1[n]); 
           delay(1); 
    } 
    
  while(1)
  { 	
  			uchar i;
  	switch (curkey) 
  	{/*將按鍵碼輸出到顯示*/  
  		case  0x7E:
  			 lcd_wcom(0x80);
  			 //lcd_wdat('L');
  			 for(i=0;i<5;i++)
  			 {
  				 lcd_wdat(light[i]);
  			 }  
  			 curkey=0;
  			 break;
  		case  0xBE: 
  			lcd_wcom(0x80);
  			 //lcd_wdat('A');  
  			 for(i=0;i<3;i++)
  			{
  				lcd_wdat(avc[i]);
  			}
  			 curkey=0;
  			 break;  
  		case  0xDE: 
  			lcd_wcom(0x80);
  			 //lcd_wdat('M'); 
  			 for(i=0;i<4;i++)
  			{
  				lcd_wdat(memo[i]);
  			}
  			 curkey=0; 
  			 break;  
  		case  0xEE: 
  			lcd_wcom(0x80);
  			 //lcd_wdat('H');
  			 for(i=0;i<4;i++)
  			{
  				lcd_wdat(hold[i]);
  			}
  			 curkey=0;  
  			 break;  
  
  		case  0xED: 
  			lcd_wcom(0x80);
  			 //lcd_wdat('S');
  			 for(i=0;i<5;i++)
  			{
  				lcd_wdat(setup[i]);
  			}  
  			 curkey=0;
  			 break;  
  		case  0xDD: 
  			lcd_wcom(0x80);
  			 lcd_wdat('9');
  			 curkey=0;  
  			 break;  
  		case  0xBD: 
  			lcd_wcom(0x80);
  			 lcd_wdat('8');  
  			 curkey=0;
  			 break;  
  		case  0x7D: 
  			lcd_wcom(0x80);
  			 lcd_wdat('7');  
  			 curkey=0;
  			 break;  
  			
  		case  0xEB: 
  			lcd_wcom(0x80);
  			 //lcd_wdat('P'); 
  			 for(i=0;i<4;i++)
  			{
  				lcd_wdat(pgdn[i]);
  			} 
  			 curkey=0;
  			 break;  
  		case  0xDB: 
  			lcd_wcom(0x80);
  			 lcd_wdat('6');  
  			 curkey=0;
  			 break;  
  		case  0xBB: 
  			lcd_wcom(0x80);
  			 lcd_wdat('5');  
  			 curkey=0;
  			 break;  
  		case  0x7B: 
  			lcd_wcom(0x80);
  			 lcd_wdat('4');  
  			 curkey=0;
  			 break;  
  		
  		case  0xE7:   			
  			lcd_wcom(0x80);
  			for(i=0;i<3;i++)
  			{
  				lcd_wdat(esc[i]);
  			}
  			 //lcd_wdat('E');  
  			 curkey=0;
  			 break;  
  		case  0xD7: 
  			lcd_wcom(0x80);
  			 lcd_wdat('3');  
  			 curkey=0;
  			 break;  
  		case  0xB7: 
  			lcd_wcom(0x80);
  			 lcd_wdat('2');  
  			 curkey=0;
  			 break;  
  		case  0x77: 
  			lcd_wcom(0x80);
  			 lcd_wdat('1');  
  			 curkey=0;
  			 break; 
  		
  		case  0x7F: 
  			lcd_wcom(0x80);
  			 lcd_wdat('0');  
  			 curkey=0;
  			 break;
  		case  0xBF: 
  			lcd_wcom(0x80);
  			 lcd_wdat('.');
  			 curkey=0;  
  			 break;
  		case  0xDF: 
  			lcd_wcom(0x80);
  			 lcd_wdat('+');  
  			 curkey=0;
  			 break;
  		case  0xEF: 
  			//lcd_wcom(0x80);
  			 lcd_wdat('*'); 
  			 lcd_wcom(0x80+0x44); 
  			 curkey=0;
  			 break;
  			 
  		default : 
  			break;  
  	} 
  	delay1ms(1);
  }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美在线短视频| 日韩一区二区在线看片| 日韩精品免费视频人成| 国产日韩综合av| 日韩一级黄色片| 91免费版在线| 国产成人a级片| 麻豆中文一区二区| 亚洲高清在线精品| 亚洲欧美二区三区| 国产日本亚洲高清| 日韩美女天天操| 91超碰这里只有精品国产| 91麻豆免费在线观看| 国产.精品.日韩.另类.中文.在线.播放 | 国产精品久久影院| 日韩精品一区二区三区视频在线观看| 一本到高清视频免费精品| 国产白丝精品91爽爽久久| 久久精品国产在热久久| 日本欧美大码aⅴ在线播放| 亚洲国产欧美一区二区三区丁香婷| 中文字幕永久在线不卡| 日本一区二区三区在线观看| 精品久久久久久综合日本欧美| 7777女厕盗摄久久久| 欧美美女bb生活片| 欧美视频一区二区| 欧美日韩一区小说| 欧美日韩夫妻久久| 欧美美女一区二区在线观看| 欧美日韩一区成人| 欧美日韩国产综合一区二区三区| 91成人在线精品| 在线观看91精品国产入口| 在线中文字幕一区二区| 在线观看免费亚洲| 欧美日韩免费观看一区二区三区| 欧美亚洲禁片免费| 欧美日韩视频专区在线播放| 欧美视频一区在线观看| 67194成人在线观看| 欧美放荡的少妇| 日韩欧美色综合网站| 日韩三级在线观看| xfplay精品久久| 国产日本欧美一区二区| 国产精品福利av| 综合婷婷亚洲小说| 亚洲一区二区三区四区的| 午夜视频久久久久久| 男人操女人的视频在线观看欧美| 美女网站在线免费欧美精品| 国产在线精品一区二区夜色| 国产传媒欧美日韩成人| 99riav久久精品riav| 91福利在线导航| 日韩视频一区二区三区在线播放 | 色八戒一区二区三区| 欧美日韩一区二区三区四区| 91精品国产乱码| 久久久久久久久久久久久久久99 | 国产三级精品在线| 亚洲女同一区二区| 人人狠狠综合久久亚洲| 国产一区二区在线影院| 91麻豆视频网站| 欧美一级国产精品| 国产精品灌醉下药二区| 亚洲一二三区视频在线观看| 秋霞电影一区二区| av在线不卡免费看| 3atv一区二区三区| 国产日产欧美一区二区视频| 一区二区三区四区乱视频| 麻豆国产欧美日韩综合精品二区 | 国产成人在线视频网址| 在线中文字幕一区二区| xf在线a精品一区二区视频网站| 最新日韩在线视频| 麻豆久久久久久| 一本久久综合亚洲鲁鲁五月天| 日韩一区二区在线观看视频| 国产精品久线观看视频| 日韩电影在线观看网站| av在线这里只有精品| 日韩视频中午一区| 一区二区三区四区中文字幕| 国产麻豆91精品| 欧美三级在线播放| 国产精品久久三| 久久97超碰国产精品超碰| 91麻豆蜜桃一区二区三区| 26uuu亚洲| 日韩精品成人一区二区在线| proumb性欧美在线观看| 欧美变态tickle挠乳网站| 一区二区在线看| 岛国一区二区在线观看| 日韩欧美一级二级三级久久久| 亚洲人亚洲人成电影网站色| 国产一区二区三区久久久| 欧美日韩一区不卡| 亚洲欧美国产77777| 国产福利一区二区三区视频| 欧美一区二区三区在线观看视频| 18成人在线观看| 国产福利91精品一区二区三区| 91精品蜜臀在线一区尤物| 一区二区三区精品视频在线| av日韩在线网站| 国产亚洲视频系列| 激情深爱一区二区| 91精品国产福利| 亚洲风情在线资源站| 色妞www精品视频| 椎名由奈av一区二区三区| 国产99久久精品| 久久久噜噜噜久久人人看 | 久久婷婷久久一区二区三区| 日韩二区三区在线观看| 欧美三区在线观看| 亚洲电影一区二区| 欧洲一区在线电影| 亚洲一区二区欧美日韩| 在线精品国精品国产尤物884a| 中文字幕亚洲欧美在线不卡| 成人av电影免费观看| 国产精品女主播av| 99视频热这里只有精品免费| 国产精品萝li| 99re热这里只有精品视频| 亚洲色图20p| 91蝌蚪porny九色| 亚洲美女电影在线| 91官网在线观看| 亚洲二区视频在线| 这里是久久伊人| 精品一区二区免费看| 欧美va日韩va| 国产精品正在播放| 国产精品乱人伦一区二区| 色综合色狠狠天天综合色| 一区二区三区色| 欧美日本一区二区三区四区| 日本欧美一区二区三区| 日韩精品一区二区三区四区视频| 韩国中文字幕2020精品| 欧美高清在线视频| 色综合天天综合网国产成人综合天| 综合欧美一区二区三区| 欧美亚洲一区二区在线观看| 日本怡春院一区二区| 精品少妇一区二区三区| 成人蜜臀av电影| 亚洲激情综合网| 91麻豆精品国产91久久久更新时间| 日韩国产欧美视频| 久久婷婷综合激情| 9色porny自拍视频一区二区| 香蕉加勒比综合久久| 日韩欧美123| 9色porny自拍视频一区二区| 亚洲国产中文字幕| 久久亚洲精精品中文字幕早川悠里| 国产成人日日夜夜| 亚洲国产中文字幕| 久久综合精品国产一区二区三区| 成人禁用看黄a在线| 同产精品九九九| 精品久久久久久亚洲综合网| 96av麻豆蜜桃一区二区| 日韩中文字幕一区二区三区| 久久久另类综合| 欧美日免费三级在线| 国产成人午夜精品影院观看视频| 一区二区三区中文在线观看| 精品乱码亚洲一区二区不卡| 99热精品国产| 精品无码三级在线观看视频| 亚洲色图.com| 久久尤物电影视频在线观看| 色天使久久综合网天天| 韩国精品一区二区| 亚洲妇女屁股眼交7| 亚洲国产精品二十页| 在线综合+亚洲+欧美中文字幕| 成人精品电影在线观看| 免费在线观看视频一区| 亚洲三级电影全部在线观看高清| 精品日韩99亚洲| 欧美三级视频在线播放| 不卡视频一二三| 国内国产精品久久| 午夜精品久久久久影视| 亚洲婷婷综合久久一本伊一区| 日韩欧美亚洲另类制服综合在线| 91精品1区2区| 成人精品一区二区三区四区 | 蜜桃在线一区二区三区|