51单片机GSM温湿度光照检测系统设计

1、具体介绍

本文采用STC89C52单片机来作为控制核心,实现了对温、湿度的检测、光照强度检测,LCD实时显示电路和手机实时监测的硬件电路设计。具体通过温湿度传感器为DHT11,光敏电阻和AD0809芯片,GTM900-B无线通讯模块,实现了环境温度,湿度,光照强度三个参数的采集,存储,显示等功能,并且能实时的发送相应的数据给手机,系统运行可靠,结构简单,性价比高。

2、硬件电路

3、部分代码

#include<reg52.h>
#include"delay.h"
#include"lcd1602.h"
#include"ad0809.h"
#include"DHT11.H"

unsigned char wddata,sddata;
unsigned char ad_d;

unsigned char wenlow=10,wenhig=30;
unsigned char shilow=34,shihig=90;
unsigned char adlow=20,adhig=130;


/////////////////////
sbit k1=P1^4;
sbit k2=P1^5;
sbit k3=P1^6;
sbit k4=P1^7;
unsigned char keyscan();
unsigned char keyscanquick();//¿ì½ÝÊäÈëÓÃÓÚµ÷½Ú·¶Î§
#define ajys 200
/////////////////////
void dis();//ÏÔʾ ÎÂʪ¶È ¹âÕÕ
void jcring();//¼ì²âµç»°µ½À´
void xiugaifanweiandother();//Ð޸ı¨¾¯·¶Î§ÒÔ¼°ÆäËû°´¼ü²Ù×÷


#define Buf_Max 120 //»º´æ³¤¶È120
#define Delay_Time 100  //ÑÓʱ³¤¶È
unsigned char xdata hm[]="18677662985_";
void inithm();//³õʼ ÉèÖõ绰ºÅÂë
void initgsm();//³õʼ»¯GSM
unsigned char i = 0;               //¶¨Ò建´æÖ¸Õë
unsigned char xdata  Rec_Buf[Buf_Max];    //¶¨Ò建´æÊý×é
void Serial_Init(void);            //ÉùÃ÷´®¿Ú³õʼ»¯º¯Êý
void Send_ASCII(unsigned char *b); //ÉùÃ÷·¢ËÍ×Ö·û(ASCIIÂë)º¯Êý
void Delay_ms(unsigned int time);  //ÉùÃ÷ÑÓʱº¯Êý
void CLR_Buf(void);				   //ÉùÃ÷Çå³ý»º´æÄÚÈÝ	
void Send_Hex(unsigned char b);    //ÉùÃ÷·¢ËÍ×Ö·û(Ê®Áù½øÖÆ)º¯Êý
bit  Hand(unsigned char *a);       //ÉùÃ÷Åжϻº´æÖÐÊÇ·ñº¬ÓÐÖ¸¶¨µÄ×Ö·û´®º¯Êý
void fasong();//ºÅÂë¼ÓÄÚÈÝ
void CMGS(unsigned char *tel);
void neirong(void);

unsigned int js=0;//ÓÃÓÚ¼Æʱ£¬AD²ÉÑù
unsigned char xdata flag=0;//·¢ËͶÌÐűê־λ	 ¼ì²â±êÖ¾  ÓÃÓڵȴý ÎÂʪ¶È ¹âÕÕ¼ì²âÎȶ¨ºó²Å¿ªÊ¼ ÅÐ¶Ï ÊÇ·ñ³¬ÏÞ
unsigned char aj;//¼ì²â°´¼ü
unsigned char wz=0;//¼Ç¼°´¼üλÖÃ


void main()
{
    lcdinit();
	initgsm();//³õʼ»¯GSM
    inithm();//³õʼ ÉèÖõ绰ºÅÂë

	while(1)
	{
		js++;
		if(js>1000)
		{
		 js=0;
		 dis();
		}
		jcring();
		xiugaifanweiandother();								 
	}
}

void dis()//ÏÔʾ ÎÂʪ¶È ¹âÕÕ
{
		 ad_d=initad();
		 writecom(0xcb);
		 writedata(ad_d%1000/100+0x30);
		 writedata(ad_d%100/10+0x30);
		 writedata(ad_d%10+0x30); 
		 writedata('L');
		 writedata('x');
		 read_TRH();
		 writestr(1,5,str1);  //ʪ¶È
		 writestr(1,0,str2); //ζÈ

		 if(flag==1 && (ad_d<adlow || ad_d>adhig))	{flag=0;fasong();}
		 if(flag==1 && (wddata<wenlow || wddata>wenhig))	{flag=0;fasong();}
		 if(flag==1 && (wddata<wenlow || wddata>wenhig))	{flag=0;fasong();}
}
void xiugaifanweiandother()//Ð޸ı¨¾¯·¶Î§ºÍ°´¼üÆäËû²Ù×÷
{
	aj=keyscan();
	if(aj==1)
	{
		//writestr(0,0,"LOW   10 60 100 ");
		//writestr(1,0,"HIG   20 80 130 ");
	  	  writestr(0,0,"LOW             ");
		  writestr(1,0,"HIG             ");
		writecom(0x80+6);
		writedata(wenlow%100/10+0x30);
		writedata(wenlow%10+0x30);
		writedata(' ');
		writedata(shilow%100/10+0x30);
		writedata(shilow%10+0x30);
		writedata(' ');
		writedata(adlow%1000/100+0x30);
		writedata(adlow%100/10+0x30);
		writedata(adlow%10+0x30);
		writecom(0xc0+6);
		writedata(wenhig%100/10+0x30);
		writedata(wenhig%10+0x30);
		writedata(' ');
		writedata(shihig%100/10+0x30);
		writedata(shihig%10+0x30);
		writedata(' ');
		writedata(adhig%1000/100+0x30);
		writedata(adhig%100/10+0x30);
		writedata(adhig%10+0x30);
			   writecom(0x80+7);
			   writecom(0x0f);//´ò¿ªÉÁ˸
		while(1)
		{
		   aj=keyscanquick();
			if(aj==2)
			{
			wz=0;
			flag=1;
			writecom(0x0c);//offÉÁ˸
			writecom(0x01);
			writestr(0,0,hm);
			dis();
			break;
			}
			else if(aj==1)
			{
			wz++;
			if(wz>5)  wz=0;
			   if(wz==0)  writecom(0x87); 
			   else if(wz==1) writecom(0x8a);
			   else if(wz==2) writecom(0x8e);
			   else if(wz==3) writecom(0xc7);
			   else if(wz==4) writecom(0xca);
			   else if(wz==5) writecom(0xce);
			}
			else if(aj==3)
			{
			  if(wz==0){if(wenlow<wenhig-9) wenlow++;}
			  else if(wz==1){if(shilow<(shihig-9)) shilow++;}
			  else if(wz==2){if(adlow<(adhig-30)) adlow++;}
			  else if(wz==3){if((wenhig)<99) wenhig++;}
			  else if(wz==4){if((shihig)<99) shihig++;}
			  else if(wz==5){if((adhig)<250) adhig++;}
				writecom(0x80+6);
				writedata(wenlow%100/10+0x30);
				writedata(wenlow%10+0x30);
				writedata(' ');
				writedata(shilow%100/10+0x30);
				writedata(shilow%10+0x30);
				writedata(' ');
				writedata(adlow%1000/100+0x30);
				writedata(adlow%100/10+0x30);
				writedata(adlow%10+0x30);		
				writecom(0xc0+6);
				writedata(wenhig%100/10+0x30);
				writedata(wenhig%10+0x30);
				writedata(' ');
				writedata(shihig%100/10+0x30);
				writedata(shihig%10+0x30);
				writedata(' ');
				writedata(adhig%1000/100+0x30);
				writedata(adhig%100/10+0x30);
				writedata(adhig%10+0x30);
			   if(wz==0)  writecom(0x87); 
			   else if(wz==1) writecom(0x8a);
			   else if(wz==2) writecom(0x8e);
			   else if(wz==3) writecom(0xc7);
			   else if(wz==4) writecom(0xca);
			   else if(wz==5) writecom(0xce);			 			  			
		    }
			else if(aj==4)
			{
			  if(wz==0){if(wenlow>1) wenlow--;}
			  else if(wz==1){if(shilow>1) shilow--;}
			  else if(wz==2){if(adlow>1) adlow--;}
			  else if(wz==3){if((wenhig)>(wenlow+9)) wenhig--;}
			  else if(wz==4){if((shihig)>(shilow+9)) shihig--;}
			  else if(wz==5){if((adhig)>(adlow+30)) adhig--;}
				writecom(0x80+6);
				writedata(wenlow%100/10+0x30);
				writedata(wenlow%10+0x30);
				writedata(' ');
				writedata(shilow%100/10+0x30);
				writedata(shilow%10+0x30);
				writedata(' ');
				writedata(adlow%1000/100+0x30);
				writedata(adlow%100/10+0x30);
				writedata(adlow%10+0x30);		
				writecom(0xc0+6);
				writedata(wenhig%100/10+0x30);
				writedata(wenhig%10+0x30);
				writedata(' ');
				writedata(shihig%100/10+0x30);
				writedata(shihig%10+0x30);
				writedata(' ');
				writedata(adhig%1000/100+0x30);
				writedata(adhig%100/10+0x30);
				writedata(adhig%10+0x30);
			   if(wz==0)  writecom(0x87); 
			   else if(wz==1) writecom(0x8a);
			   else if(wz==2) writecom(0x8e);
			   else if(wz==3) writecom(0xc7);
			   else if(wz==4) writecom(0xca);
			   else if(wz==5) writecom(0xce);			 			  			
		    }
		}
	}
}
void jcring()//¼ì²âµç»°µ½À´
{
    if(strstr(Rec_Buf,"RING")!=NULL)
	{
	CLR_Buf(); 
	Delay_ms(Delay_Time); 
	    Send_ASCII("ATH");
		while(!Hand("OK"))
		{
		Send_ASCII("ATH");Delay_ms(Delay_Time);	
		}
		CLR_Buf(); 
		Delay_ms(Delay_Time); 
		fasong();
		writestr(1,0,"fasong OK");
		CLR_Buf();             //Çå³ý»º´æÄÚÈÝ
        Delay_ms(Delay_Time);        //ÑÓʱ
			writecom(0x01);
			writestr(0,0,hm);
			dis();
	}
}
void  CMGS(unsigned char *tel)
{
     unsigned char code mode[]= {0x41,0x54,0x2B,0x43,0x4D,0x47,0x53,0x3D}; //AT+CMGS=
	 unsigned int i,j;
	 ES = 0; 
	 for(i=0;i<8;i++)
        { 
            SBUF=mode[i]; 
            while(TI==0); 
            TI=0;            
        }
     SBUF=0x22;//ÒýºÅ
	 while(TI==0); 
            TI=0; 
	 for(j=0;j<11;j++)
        { 
            SBUF=*tel;
 		    tel++;
            while(TI==0); 
            TI=0;            
        }
	  SBUF=0x22;//ÒýºÅ
	  while(TI==0); 
            TI=0; 
      _nop_();
      SBUF=0x0D;//»Ø³µ
	  while(TI==0); 
           TI=0; 
	  ES = 1; 
}
void neirong(void)		//·¢Ë͵ÄÄÚÈÝ
{
unsigned char q;
ES=0;
TR0=0;

            SBUF=ad_d/100+0x30; 
            while(TI==0); 
            TI=0;            
            SBUF=ad_d%100/10+0x30; 
            while(TI==0); 
            TI=0; 
            SBUF=ad_d%10+0x30; 
            while(TI==0); 
            TI=0;
            SBUF='L'; 
            while(TI==0); 
            TI=0;
            SBUF='x'; 
            while(TI==0); 
            TI=0;

            SBUF='*'; 
            while(TI==0); 
            TI=0;  

	 for(q=0;q<5;q++)	  ///////////////////Êý¾Ý³¤¶È50
        { 
            SBUF=str1[q]; 
            while(TI==0); 
            TI=0;            
        }
            SBUF='*'; 
            while(TI==0); 
            TI=0;  

	 for(q=0;q<5;q++)	  ///////////////////Êý¾Ý³¤¶È50
        { 
            SBUF=str2[q]; 
            while(TI==0); 
            TI=0;            
        }


            SBUF=0X1A; 
            while(TI==0); 
            TI=0;
	      SBUF=0x0D;//»Ø³µ
		  while(TI==0); 
	           TI=0;
	      //SBUF=0x0A;//»»ÐÐ
		  //while(TI==0); 
	      //     TI=0;
ES=1;
TR0=1;
}
void fasong()//ºÅÂë¼ÓÄÚÈÝ
{
        writestr(1,0,"                ");
/*******************************************************************/					
		CMGS(hm);	//·¢Ë͵ĵ绰ºÅÂë	    
		while(!Hand(">"))
		 {
	   	writecom(0xc0);
		writedata(' ');
	        delay(10000);
	   	writecom(0xc0);
		writedata('*');
	        delay(10000);
		 }
	   	writecom(0xc0);
		writedata('*');
		CLR_Buf();                //Çå³ý»º´æÄÚÈÝ
		delay(1000);
/*******************************************************************/									
		neirong();
		while(!Hand("OK"))
		 {
	   	writecom(0xc1);
		writedata(' ');
	        delay(10000);
	   	writecom(0xc1);
		writedata('*');
	        delay(10000);
		 }
	   	writecom(0xc1);
		writedata('*');
		CLR_Buf();                //Çå³ý»º´æÄÚÈÝ
		delay(10000);delay(10000);
		writestr(0,0,hm);

}
void initgsm()//³õʼ»¯GSM
{
   Serial_Init();
   	writecom(0xc0);
	writedata('*');
	delay(1000);
		CLR_Buf();             //Çå³ý»º´æÄÚÈÝ
        Delay_ms(Delay_Time);        //ÑÓʱ
		Send_ASCII("AT");    //·¢ËÍÁª»úÖ¸Áî 
        while(!Hand("OK"))     //ÅжÏÊÇ·ñÎÕÊֳɹ¦,Èç¹û²»³É¹¦ÑÓʱһ»á,ÔÙ·¢ËÍATÎÕÊÖÖ¸Áî
			{
				Send_ASCII("AT"); //·¢ËÍÁª»úÖ¸Áî
	   	writecom(0xc0);
		writedata(' ');
				delay(10000);
	   	writecom(0xc0);
		writedata('*');
				delay(10000);					
			}
	   	writecom(0xc0);
		writedata('*');
		CLR_Buf();                //Çå³ý»º´æÄÚÈÝ
		Delay_ms(Delay_Time);     //ÑÓʱ
		Send_ASCII("AT+CMGF=1");  //Îı¾(TEXT)ģʽ 
		Delay_ms(Delay_Time);     //ÑÓʱ
		while(!Hand("OK"))	      //µÈ´ýÉèÖóɹ¦
			{
				Send_ASCII("AT+CMGF=1");  //Îı¾(TEXT)ģʽ 
	   	writecom(0xc1);
		writedata(' ');
				delay(10000);
	   	writecom(0xc1);
		writedata('*');
				delay(10000);				  
			}
	   	writecom(0xc1);
		writedata('*');
		CLR_Buf();
		Delay_ms(Delay_Time);     //ÑÓʱ
	    Send_ASCII("AT+CPMS=\"SM\",\"SM\",\"SM\"");//ËùÓвÙ×÷¶¼ÔÚMT(Ä£¿éÖÕ¶Ë)ÖнøÐÐ
		Delay_ms(Delay_Time);     //ÑÓʱ
		while(!Hand("OK"))       //µÈ´ýÉèÖóɹ¦
		    {
				Send_ASCII("AT+CPMS=\"SM\",\"SM\",\"SM\"");//ËùÓвÙ×÷¶¼ÔÚMT(Ä£¿éÖÕ¶Ë)ÖнøÐÐ
	   	writecom(0xc2);
		writedata(' ');
				delay(10000);
	   	writecom(0xc2);
		writedata('*');
				delay(10000);					
			}
	   	writecom(0xc2);
		writedata('*');
				delay(1000);
		CLR_Buf();                //Çå³ý»º´æÄÚÈÝ					
		Delay_ms(Delay_Time);     //ÑÓʱ
		while(!Hand("OK"))       //µÈ´ýÉèÖóɹ¦
			{
				Send_ASCII("AT+CNMI=2,1");//ÉèÖõ±ÓÐжÌÐŵ½À´Ê±Ìáʾ
	   	writecom(0xc3);
		writedata(' ');
				delay(10000);
	   	writecom(0xc3);
		writedata('*');
				delay(10000);					
			}
	   	writecom(0xc3);
		writedata('*');
				delay(1000);
		CLR_Buf();                //Çå³ý»º´æÄÚÈÝ
		Delay_ms(Delay_Time);     //ÑÓʱ

		writedata(' ');
		writedata('I');
		writedata('n');
		writedata('i');
		writedata('t');
		writedata('g');
		writedata('s');
		writedata('m');
		writedata('O');
		writedata('K');
}
/***************************´®¿Ú³õʼ»¯º¯Êý*****************************/
/*º¯ÊýÔ­ÐÍ:void Serial_Init(void)
/*º¯Êý¹¦ÄÜ:´®¿Ú³õʼ»¯
/*ÊäÈë²ÎÊý:ÎÞ
/*Êä³ö²ÎÊý:ÎÞ
/**********************************************************************/
void Serial_Init(void)//´®¿Ú³õʼ»¯º¯Êý
{
 SCON = 0x50;//´®¿Ú:·½Ê½1,ÔÊÐí·¢ËͺͽÓÊÕ
 TMOD = 0x20;//¶¨Ê±Æ÷1:ģʽ2,8λ×Ô¶¯ÖØװģʽ,ÓÃÓÚ²úÉú²¨ÌØÂÊ    
 TH1 = 0xFD; //11.0592MHZ¾§Õñ£¬²¨ÌØÂÊΪ9600
 TL1 = 0xFD;   
 TR1 = 1;    //¿ªÆô¶¨Ê±Æ÷1   
 ES = 1;     //¿ªÆô´®¿ÚÖжÏ
 EA = 1;     //¿ªÆôÈ«¾ÖÖжÏ
}

/****************************´®¿ÚÖжϴ¦Àíº¯Êý**************************/
/*º¯ÊýÔ­ÐÍ:void Serial_Int(void)
/*º¯Êý¹¦ÄÜ:´®¿ÚÖжϴ¦Àí
/*ÊäÈë²ÎÊý:ÎÞ
/*Êä³ö²ÎÊý:ÎÞ
/**********************************************************************/
void Serial_Int() interrupt 4 
{	
	ES = 0;	 //¹Ø´®¿ÚÖжϣ¬·ÀÖ¹ÖжÏǶÌ×
	if(TI)	 //Èç¹ûÊÇ·¢ËÍÖжϣ¬Ôò²»×öÈκδ¦Àí
		{
			TI = 0;  //Çå³ý·¢ËÍÖжϱê־λ
		}
	if(RI)	 //Èç¹ûÊǽÓËÍÖжϣ¬Ôò½øÐд¦Àí
		{
			RI = 0; //Çå³ý½ÓÊÕÖжϱê־λ
			Rec_Buf[i] = SBUF; //½«½ÓÊÕµ½µÄ×Ö·û´®´æµ½»º´æÖÐ
			i++;               //»º´æÖ¸ÕëÏòºóÒƶ¯
			if(i>200)          //Èç¹û»º´æÂú,½«»º´æÖ¸ÕëÖ¸Ïò»º´æµÄÊ×µØÖ·
				{
					i = 0;
				}
		}
	ES = 1;	 //¿ªÆô´®¿ÚÖжÏ
}
/****************************·¢ËÍ×Ö·û(ASCII)º¯Êý***********************/
/*º¯ÊýÔ­ÐÍ:void Send_ASCII(unsigned char *b) 
/*º¯Êý¹¦ÄÜ:·¢ËÍ×Ö·û(ASCIIÂë)
/*ÊäÈë²ÎÊý:unsigned char *b
/*Êä³ö²ÎÊý:ÎÞ
/**********************************************************************/
void Send_ASCII(unsigned char *b)         
{
    ES = 0;                   //¹Ø´®¿ÚÖжÏ
    for (b; *b!='\0';b++)
    	{
        	SBUF = *b;
        	while(TI!=1);     //µÈ´ý·¢ËÍÍê³É
			TI = 0;           //Çå³ý·¢ËÍÖжϱê־λ
		}
	ES = 1;                   //¿ª´®¿ÚÖжÏ
	Send_Hex(0x0d);           //·¢Ëͻسµ·û
 	Send_Hex(0x0a);           //·¢ËÍ»»Ðзû 
}
/****************************time msÑÓʱº¯Êý***************************/
/*º¯ÊýÔ­ÐÍ:Delay_ms(unsigned int time)
/*º¯Êý¹¦ÄÜ:ÑÓʱTime ms
/*ÊäÈë²ÎÊý:time
/*Êä³ö²ÎÊý:ÎÞ
/**********************************************************************/
void Delay_ms(unsigned int time)
{
 unsigned char j;
 for(;time>0;time--)
 	{
  		j = 1500;
  		while(j--);
 	}
}

/**************************Çå³ý»º´æÊý¾Ýº¯Êý****************************/
/*º¯ÊýÔ­ÐÍ:void CLR_Buf(void)
/*º¯Êý¹¦ÄÜ:Çå³ý»º´æÊý¾Ý
/*ÊäÈë²ÎÊý:ÎÞ
/*Êä³ö²ÎÊý:ÎÞ
/*µ÷ÓÃÄ£¿é:ÎÞ
/**********************************************************************/
void CLR_Buf(void)
{
	unsigned char k;
    for(k=0;k<Buf_Max;k++)    //½«»º´æÄÚÈÝÇåÁã
	    {
			Rec_Buf[k] = '\0';
		}
    i = 0;                    //½ÓÊÕ×Ö·û´®µÄÆðʼ´æ´¢Î»ÖÃ
}

/*************************·¢ËÍ×Ö·û(Ê®Áù½øÖÆ)º¯Êý********************/
/*º¯ÊýÔ­ÐÍ:void Send_Hex(unsigned char c)
/*º¯Êý¹¦ÄÜ:·¢ËÍ×Ö·û(Ê®Áù½øÖÆ)
/*ÊäÈë²ÎÊý:unsigned char c
/*Êä³ö²ÎÊý:ÎÞ
/*µ÷ÓÃÄ£¿é:ÎÞ
/******************************************************************/ 
void Send_Hex(unsigned char c)         
{
    ES = 0;               //¹Ø´®¿ÚÖжÏ
    SBUF = c;
    while(TI!=1);         //µÈ´ý·¢ËÍÍê³É
    TI = 0;               //Çå³ý·¢ËÍÖжϱê־λ
	ES = 1;               //¿ª´®¿ÚÖжÏ
}

/*****************Åжϻº´æÖÐÊÇ·ñº¬ÓÐÖ¸¶¨µÄ×Ö·û´®º¯Êý******************/
/*º¯ÊýÔ­ÐÍ:bit Hand(unsigned char *a)
/*º¯Êý¹¦ÄÜ:Åжϻº´æÖÐÊÇ·ñº¬ÓÐÖ¸¶¨µÄ×Ö·û´®
/*ÊäÈë²ÎÊý:unsigned char *a Ö¸¶¨µÄ×Ö·û´®
/*Êä³ö²ÎÊý:bit 1---º¬ÓÐ    0---²»º¬ÓÐ
/*µ÷ÓÃÄ£¿é:ÎÞ
/*******************************************************************/
bit Hand(unsigned char *a)
{ 
    if(strstr(Rec_Buf,a)!=NULL)
	    return 1;
	else
		return 0;
}
void inithm()//³õʼ ÉèÖõ绰ºÅÂë
{
		writestr(0,0,hm);
		   writecom(0x0f);	   //´ò¿ª¹â±ê
		   writecom(0x80);  //ÏÔʾ¹â±ê³õʼλÖÃ
		   	while(1)
			 {
				aj=keyscan();
				if(aj==2)
				{
				writecom(0x0c);	 //Òþ²Ø¹â±ê
				writecom(0x01);
				wz=0;
				writestr(0,0,hm);
				break;
				}

				if(aj==1)
				{
				wz=wz+1;
				if(wz==11) wz=0;
				 writecom(0x80+wz);  //ÏÔʾ¹â±ê³õʼλÖÃ			 
				}

				if(aj==3)
				{
				    if(wz==0){if(hm[wz]<0x39) hm[wz]++;}
					else if(wz==1){if(hm[wz]<0x39) hm[wz]++;}
				    else if(wz==2){if(hm[wz]<0x39) hm[wz]++;}
					else if(wz==3){if(hm[wz]<0x39) hm[wz]++;}				
				    else if(wz==4){if(hm[wz]<0x39) hm[wz]++;}
					else if(wz==5){if(hm[wz]<0x39) hm[wz]++;}				
				    else if(wz==6){if(hm[wz]<0x39) hm[wz]++;}
					else if(wz==7){if(hm[wz]<0x39) hm[wz]++;}	
					else if(wz==8){if(hm[wz]<0x39) hm[wz]++;}				
				    else if(wz==9){if(hm[wz]<0x39) hm[wz]++;}
					else if(wz==10){if(hm[wz]<0x39) hm[wz]++;}				
					else if(wz==11){if(hm[wz]<0x39) hm[wz]++;}
					writedata( hm[wz] );
					writecom(0x80+wz);				
				}

			     if(aj==4)
				 {
				    if(wz==0){if(hm[wz]>0x30) hm[wz]--;}
					else if(wz==1){if(hm[wz]>0x30) hm[wz]--;}
				    else if(wz==2){if(hm[wz]>0x30) hm[wz]--;}
					else if(wz==3){if(hm[wz]>0x30) hm[wz]--;}				
				    else if(wz==4){if(hm[wz]>0x30) hm[wz]--;}
					else if(wz==5){if(hm[wz]>0x30) hm[wz]--;}				
				    else if(wz==6){if(hm[wz]>0x30) hm[wz]--;}
					else if(wz==7){if(hm[wz]>0x30) hm[wz]--;}	
					else if(wz==8){if(hm[wz]>0x30) hm[wz]--;}				
				    else if(wz==9){if(hm[wz]>0x30) hm[wz]--;}
					else if(wz==10){if(hm[wz]>0x30) hm[wz]--;}				
					else if(wz==11){if(hm[wz]>0x30) hm[wz]--;}
					writedata( hm[wz] );
					writecom(0x80+wz);																	
				 }
			 }
}
unsigned char keyscan()
{
	if(k1==0)
	{
	  delay(ajys);
	  {
	    if(k1==0)
		while(k1==0);
		return 1;
	  }	   
	}
	else if(k2==0)
	{
	  delay(ajys);
	  {
	    if(k2==0)
		while(k2==0);
		return 2;
	  }	
	}
	else if(k3==0)
	{
	  delay(ajys);
	  {
	    if(k3==0)
		while(k3==0);
		return 3;
	  }	
	}
	else if(k4==0)
	{
	  delay(ajys);
	  {
	    if(k4==0)
		while(k4==0);
		return 4;
	  }	
	}
	else
	return 0;
}
unsigned char keyscanquick()//¿ì½ÝÓÃÓÚµ÷½Ú·¶Î§
{
	if(k1==0)
	{
	  delay(ajys);
	  {
	    if(k1==0)
		while(k1==0);
		return 1;
	  }	   
	}
	else if(k2==0)
	{
	  delay(ajys);
	  {
	    if(k2==0)
		while(k2==0);
		return 2;
	  }	
	}
	else if(k3==0)
	{
	  delay(ajys);
	  {
	    if(k3==0)
		return 3;
	  }	
	}
	else if(k4==0)
	{
	  delay(ajys);
	  {
	    if(k4==0)
		return 4;
	  }	
	}
	else
	return 0;
}
发布了30 篇原创文章 · 获赞 12 · 访问量 1993

猜你喜欢

转载自blog.csdn.net/weixin_41017942/article/details/105331618