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

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

?? 信息收發備份增強版.c

?? 本源程序實現通過4*4鍵盤輸入數據
?? C
字號:
#include<at89x51.h>
 sbit rs=P3^5;
 sbit rw=P3^4;
 sbit e=P3^3;
 sbit d7=P1^7;
unsigned char store1,store2,store;//用于全局掃瞄鍵值決定用    	   
unsigned char k;  //顯示地址變量 
unsigned char store_send_number[32];//存放要發送的數據,注意數組的元素不要過多!!!十分重要 
unsigned char m;//存放發送數據的個數的計數 
unsigned char f;//存放接收數據個數  后者為清除鍵是否起作用鍵
unsigned char store_receive_number[70];//存放要發送的數據
void delay(unsigned char a)//延時a*1ms
                 { 
		    unsigned char b;
			while(--a!=0)
			      {	 
			      for(b=0;b<125;b++);
			      }
		    }
void if_busy(void)//液晶忙否判斷   
                {  P1=0xff;//很必要 
                   rs=0;rw=1;
                   e=0;e=1;
		           while(d7==1); //先執行讀忙指令再能判斷忙              
	        }
void rst_serial_port()//初始化串口
          {
		  SCON=0x50;//串口工作方式3,雙機工作 ,接收發送中斷位置零 接收允許REN=1 
		  PCON=0x80;//串口波特率倍增,即設定SMOD=1; 
		  TMOD=0x20;//定時器1工作方式2,用于產生波特率	
		  TH1=0xfd;
		  TL1=0xfd;//設定波特率為19200kbs   
		  ET1=0;
		  ES=1;//串口中斷允許 
		  PS=1;//串口中斷優先級最高 很重要!!!!否則接收的不穩定 
		  TR1=1;//啟動定時器,注意不能允許定時器中斷,否則會與串口中斷干擾		   
		  RI=0;TI=0;EA=1;//設定所有的值才開中斷!
		  }
void send_or_receive(void) interrupt 4//串行口中斷處理 接收使用中斷清除中斷標志 
                    {
	                if(f!=70)
               	    {
					store_receive_number[f]=SBUF;
					P3_2=0;//接收到數據時就驅動蜂鳴器
					f++;
                    RI=0;//接收中斷清零 
 				    }
					 }		  		  		
void rst_lcd(void)
               {
			    if_busy();
			    P1=0x01;
			    rs=0;rw=0; 
			    e=0;e=1;//執行清顯示 	
			    if_busy();P1=0x38;  
			    rs=0;rw=0;	   
			    e=0;e=1;//顯示模式設定:雙行、5*7格式、8位數據轉送	
			    if_busy();P1=0x0e;  
			    rs=0;rw=0;     
			    e=0;e=1;//顯示設定:光標有且不閃動,開顯示 
			    if_busy();P1=0x06;   
			    rs=0;rw=0;    
			    e=0;e=1;//光標和顯示模式:光標右移,字不移動 
			   }
void show(unsigned char c)
           { 
		   if_busy();
			rs=0;rw=0;
			P1=k;delay(20);//讓液晶能過正確地接收數據 
			if(k==0xc0)delay(20);//由于液晶是慢顯示器件,因此需要換行地址的讀取時先延時!很重要否則會出錯     
		    e=0;e=1;//寫入顯示的地址   
			k=k+0x01;//地址移至下一位   
			if(k==0x90)
			   {
			    k=0xc0;//當到達第一行末尾時換行	  
			   }
            if_busy(); 
		    rs=1;rw=0;
			P1=c;delay(20);      
			e=0;e=1;//執行 
			store_send_number[m]=c;//存入寫入的數據 
			m+=1;//為下個數據的存入做準備 
		    }		    
void which(void)//進行按鍵的二次選擇
            {
		    while(P2!=0x0f); //等待第一次按鍵的釋放 
			delay(20);//按鍵釋放去抖動 
			P2=0xf0;
			while(P2==0xf0);//等待第二次按鍵的輸入    
			delay(20);//去抖動處理  
			if(P2!=0xf0)
			   {
			    store1=P2;				
			    P2=0x0f;
		        store2=P2;
			    store=store1|store2;//注意|是進行或運算 ;||是邏輯或  
			   }
            while(P2!=0x0f);delay(20);//等待按鍵的釋放
			 }		   
void key11(void)
           {
		    which();
			if(store==0xbd)
			   {
			    show('a');//顯示a,液晶的ascll碼的字母和數字和計算機相同 ,一次可以這樣賦值 
			    }
			 if(store==0x7d)
			   {
			    show('b');
			   }
			 if(store==0xee)
			   {
			    show('c');
			   }
		   }
void key21(void)
           {
		    which();
			if(store==0xbd)
			   {
			    show('d');
			    }
			 if(store==0x7d)
			   {
			    show('e');
			   }
			 if(store==0xee)
			   {
			    show('f');
			   }
			  
		   }
void key31(void)
           {
		    which();
			if(store==0xbd)
			   {
			    show('g');
			    }
			 if(store==0x7d)
			   {
			    show('h');
			   }
			 if(store==0xee)
			   {
			    show('i');
			   }
			  
		   }
void key41(void)
           {
		    which();
			if(store==0xbd)
			   {
			    show('j'); 
			    }
			 if(store==0x7d)
			   {
			    show('k');
			   }
			 if(store==0xee)
			   {
			    show('l');
			   }
			  
		   }
void key12(void)
           {
		    which();
			if(store==0xbd)
			   {
			    show('m');
			    }
			 if(store==0x7d)
			   {
			    show('n');
			   }
			 if(store==0xee)
			   {
			    show('o');
			   }
			  
		   }
void key22(void)
           {
		    which();
			if(store==0xbd)
			   {
			    show('p');
			    }
			 if(store==0x7d)
			   {
			    show('q');
			   }
			 if(store==0xee)
			   {
			    show('r');
			   }
			  
		   }
void key32(void)
           {
		    which();
			if(store==0xbd)
			   {
			    show('s');
			    }
			 if(store==0x7d)
			   {
			    show('t');
			   }
			 if(store==0xee)
			   {
			    show('u');
			   }
			  
		   }
void key42(void)
           {
		    which();
			if(store==0xbd)
			   {
			    show('v');
			    }
			 if(store==0x7d)
			   {
			    show('w');
			   }
			 if(store==0xee)
			   {
			    show('x');
			   }
			  
		   }
void key13(void)
           {
		    which();
			if(store==0xbd)
			   {
			    show('y');
			    }
			 if(store==0x7d)
			   {
			    show('z');
			   }
			 if(store==0xee)
			   {
			    show(' ');
			   }
			  
		   }
void key23(void)
           {
		    which();
			if(store==0xbd)
			   {
			    show('!');//空格
			    }
			 if(store==0x7d)//顯示句號 
			   {
			    show('?');
			   }
			 if(store==0xee)//顯示感嘆號  
			   {
			    show('.');
			   }
			  
		   }
void clear()//清屏
      {
	  unsigned char b;
      if(m!=0)
	    {
		k=0x80;
		if_busy();P1=0x01;rs=0;rw=0;e=0;e=1;//執行清顯示
		if(m==1){m=0;}
		else
		  {
          for(b=0;b<(m-1);b++,m--){show(store_send_number[b]);}
          m--;
		  }
		}
	  }
void show_success(void)//發送成功后顯示success!
               {
			   if_busy();m=0;k=0x80;//地址回到開頭
			   show('s');show('u');show('c');show('c');show('e');show('s');show('s');show('!'); 
			   }
void send_data(void)
               {
			     unsigned char n=0;
				 REN=0;EA=0;//發送時在程序中把發送中斷標志位清零 
				 while(n<m)//m的最大值為32 
				      {
					   SBUF=store_send_number[n];//裝入數據寄存器 
					   while(TI==0);//等待發送完成 	  
					   TI=0;//中斷標志清零 
					   n++;
					  }
				if_busy();
				rs=0;rw=0;P1=0x01;delay(50);
				e=0;e=1;delay(100);
				show_success();//發送成功后顯示success字樣 
				REN=1;EA=1;//接收允許  中斷允許
				P2=0xf0;while(P2==0xf0);//等待按鍵的輸入開始新的數據輸入或數據接收 
				delay(20);
				if(P2!=0xf0)//按下任意鍵實現數據的重新輸入 
				   {
					 if_busy();rs=0;rw=0;P1=0x01;delay(20);e=0;e=1;//清屏 
					 k=0x80;m=0;store_send_number[0]=0;//清空數據 
					 while(P2!=0xf0);//等待按鍵的釋放	
					 delay(50);//去抖動處理 				   	   
				    }  
			   }
void receivedata(void)
                 {
				  unsigned char x=0;
				  P3_2=1;
				  if_busy();rs=0;rw=0;P1=0x01;delay(20);e=0;e=1;delay(20);//清屏
				  k=0x80;//開頭開始顯示 
				  for(x=0;x<f;x++)
				      {
					   if_busy(); 
					   show(store_receive_number[x]);
					   if((x+1)%31==0)
					     {
						 show('>');P2=0xf0;//當顯示32個字符后  用>提示下一頁有信息
                         while(P2==0xf0);delay(20);
                         if_busy();rs=0;rw=0;P1=0x01;delay(20);e=0;e=1;delay(20);//清屏
                         k=0x80;//按下任意鍵后顯示未顯示的字符
						 }
					   }
				   store_send_number[0]=0;//發送數據第一個清零 
				   store_receive_number[0]=0;//防止按下接收鍵時重新接收 
				   m=0;f=0;k=0x80;REN=1;EA=1;//重新開接收 
				   P2=0xf0;while(P2==0xf0);delay(20); //按下任意鍵實現清屏 
				   if_busy();rs=0;rw=0;P1=0x01;delay(20);e=0;e=1;delay(20);//清屏 
				 }
void whichkey(void)
          {
		   P2=0x0f;
		   store2=P2;//由于按鍵未釋放,因此store2的值不是0fH	  
		   store=store1|store2;//得到變化的鍵值  
		   if(store==0xe7)//與鍵key11值比較	 
		      {
			  key11();//進入鍵的執行 
			  }
		   if(store==0xd7)//與鍵key21比較 
		      {
			   key21();
			  }
		   if(store==0xb7)
		     {
			  key31();
			 }
		   if(store==0x77)
		     {
			  key41();
			  }
			if(store==0xeb)
			 {
			  key12();
			 }
			if(store==0xdb)
			 {
			  key22();
			 }
			if(store==0xbb)
			 {
			  key32();
			 }
			 if(store==0x7b)
			 {
			  key42();
			 }
			 if(store==0xed)
			 {
			  key13();
			 }
			 if(store==0xdd)
			 { 
			  key23();
			 }
			 if(store==0xbe)
			 {
			  if(m!=0)
			  { 
              send_data();
			  }
			 }
			if(store==0x7e)
		       {
				 if(store_receive_number[0]!=0)
				 { 
			      REN=0;EA=0;//顯示時先禁止接收 
                  receivedata();
			      }   
			   }
			if(store==0xde){clear();while(P2!=0x0f);delay(20);}//清除數據
		}	 		        
void main(void)
          {
		     rst_lcd();//初始化 
			 f=0;m=0;k=0x80;rst_serial_port();
			 while(1)//初始化后cpu一直進行按鍵的判斷 
		   {
		   P2=0xf0;
		   if(P2!=0xf0)
		      {
			   delay(20);
			   if(P2!=0xf0)
			      {
				   P3_2=1;//關閉蜂鳴器,當接收到數據時按下除接收鍵外的按鍵能實現關閉蜂鳴器的目的 
				   store1=P2;
				   whichkey();//鍵值判斷 
				   }
			  }
		    }
		  }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲激情在线播放| 欧美日韩国产影片| 中文幕一区二区三区久久蜜桃| 奇米色一区二区三区四区| 欧美日韩国产片| 美女视频一区二区三区| 欧美不卡视频一区| 国产福利一区在线观看| 国产日韩欧美综合一区| 99久久综合色| 亚洲一卡二卡三卡四卡无卡久久| 欧美性一区二区| 免费成人美女在线观看.| 2020日本不卡一区二区视频| 国产福利一区在线| 亚洲精品视频在线| 欧美一激情一区二区三区| 另类小说一区二区三区| 日本一区二区三区免费乱视频 | 三级亚洲高清视频| 日韩欧美一区中文| 成人黄色av电影| 亚洲午夜久久久久| 精品电影一区二区| 99视频在线精品| 日本不卡在线视频| 国产精品日日摸夜夜摸av| 91国产福利在线| 久久91精品国产91久久小草| 国产三级欧美三级| 欧美亚洲禁片免费| 国产美女在线观看一区| 依依成人综合视频| 亚洲精品一区二区三区精华液| 丁香六月综合激情| 日韩精品高清不卡| 国产精品激情偷乱一区二区∴| 欧美日韩国产美女| 成人毛片老司机大片| 青椒成人免费视频| 亚洲图片激情小说| 久久综合九色综合欧美就去吻| 95精品视频在线| 精品一区二区三区在线播放 | 一区二区三区四区视频精品免费| 日韩欧美激情一区| 91黄色激情网站| 国产美女精品一区二区三区| 亚洲福中文字幕伊人影院| 国产日韩精品一区二区浪潮av| 欧美视频一区二| bt欧美亚洲午夜电影天堂| 麻豆国产欧美日韩综合精品二区| 亚洲精品国产精华液| 久久精品亚洲麻豆av一区二区| 欧美三级日韩三级| 91丨porny丨国产入口| 国产一区二区三区观看| 亚洲va天堂va国产va久| 亚洲日穴在线视频| 欧美激情一区二区三区四区| 精品免费国产二区三区| 欧美精品日日鲁夜夜添| 91免费观看视频| 成人激情开心网| 国产盗摄女厕一区二区三区| 久久激五月天综合精品| 热久久久久久久| 性久久久久久久久久久久| 夜色激情一区二区| 亚洲女厕所小便bbb| 国产精品三级视频| 国产精品素人视频| 日本一区二区三区电影| 久久久久国产一区二区三区四区| 精品剧情v国产在线观看在线| 91麻豆精品国产| 欧美一区二区三区在线| 欧美一级xxx| 久久影院视频免费| 久久在线免费观看| 欧美国产精品专区| 中文字幕欧美三区| 亚洲欧洲av另类| 亚洲精品一二三| 午夜国产精品一区| 另类小说一区二区三区| 极品少妇xxxx精品少妇偷拍| 激情伊人五月天久久综合| 国产中文字幕精品| 成人一区二区三区中文字幕| 成人小视频免费在线观看| 99国产精品久久| 色噜噜狠狠一区二区三区果冻| 色婷婷综合五月| 欧美日韩精品电影| 精品国产三级a在线观看| 久久久久久综合| 亚洲视频免费看| 香蕉久久夜色精品国产使用方法| 日韩成人av影视| 国产在线精品免费av| 成人91在线观看| 欧美性大战久久久久久久| 欧美乱妇20p| 久久婷婷久久一区二区三区| 欧美高清在线一区| 亚洲一级二级在线| 韩国一区二区视频| 91香蕉视频污在线| 91精品国产综合久久久久| 久久亚洲综合色| 亚洲精品国产第一综合99久久| 午夜精品123| 高清日韩电视剧大全免费| 日本丶国产丶欧美色综合| 日韩一区二区免费在线观看| 亚洲精品一区二区三区精华液 | 欧美日韩综合不卡| 久久久亚洲欧洲日产国码αv| 国产女人水真多18毛片18精品视频| 亚洲欧美日韩国产综合| 欧美bbbbb| 91免费视频网| 精品国精品自拍自在线| 亚洲精品乱码久久久久久黑人 | 99精品一区二区三区| 欧美精品第1页| 中文字幕在线不卡一区二区三区| 亚洲成av人片一区二区三区| 成人污视频在线观看| 91麻豆精品国产91久久久久久| 国产精品热久久久久夜色精品三区| 亚洲一二三四在线| 成人久久18免费网站麻豆| 91精品在线观看入口| 亚洲毛片av在线| 国产高清亚洲一区| 欧美成人福利视频| 性欧美疯狂xxxxbbbb| 成人av网站大全| 久久久亚洲精品石原莉奈| 亚洲国产精品嫩草影院| av不卡免费在线观看| 精品久久久久一区二区国产| 亚洲大片一区二区三区| 99久久99久久精品免费看蜜桃| 久久综合久久鬼色中文字| 日本女人一区二区三区| 欧美亚洲免费在线一区| 一区精品在线播放| 国产超碰在线一区| 精品福利视频一区二区三区| 亚洲成a人片在线不卡一二三区 | 久久久久高清精品| 蜜桃久久久久久久| 欧美精品v国产精品v日韩精品| 亚洲伦理在线精品| 99v久久综合狠狠综合久久| 国产视频一区在线播放| 国产美女一区二区| 久久免费精品国产久精品久久久久| 日韩av电影免费观看高清完整版| 色呦呦一区二区三区| 国产精品久久久久三级| 懂色av一区二区三区免费观看| 精品蜜桃在线看| 国产真实乱偷精品视频免| 精品国产露脸精彩对白| 久久99久久99精品免视看婷婷 | 99久久精品国产毛片| 国产精品网曝门| 99国产精品久久久| 一区二区三区在线视频观看58| 91香蕉视频mp4| 亚洲综合久久久| 欧美日韩综合不卡| 美女高潮久久久| 久久久午夜精品理论片中文字幕| 国产一区欧美日韩| 国产精品私人自拍| 色婷婷精品久久二区二区蜜臀av | 六月丁香婷婷色狠狠久久| 欧美一二三区精品| 国产成人在线色| 一区免费观看视频| 欧美日韩国产a| 蜜臀av亚洲一区中文字幕| 久久伊人蜜桃av一区二区| 国产91高潮流白浆在线麻豆| 日本一区二区高清| 91福利国产成人精品照片| 亚洲电影一区二区三区| 欧美一卡2卡3卡4卡| 国产露脸91国语对白| 国产精品久久久久久久第一福利 | 日韩av中文在线观看| 精品久久久影院| 91视频www| 日本美女视频一区二区|