⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 18b20test.c

📁 自己做的电子密码锁
💻 C
📖 第 1 页 / 共 2 页
字号:
		
}
void display01(int i)
 {				
              	delaynms(500)	;
      		  	WriteAddress(0x00+k);    //写显示地址,将在第1行第1列开始显示
			 	WriteData(0x30+i);   //将字符常量写入LCD
				q[k]=i;
				if(k>5)
				{
				  cuowu();
				}
				k++;
				while(1) 
			                   { 
			
		                	P1=0xff; //先向P1口写1;端口读状态
		                 	P1=0xfe;
			
		                	temp=P1; 
		
			             if(temp!=0xde)
				              {break;} 
						   }  
		
}
void display02(int i)
 {				
              	delaynms(500)	;
      		  	WriteAddress(0x00+k);    //写显示地址,将在第1行第1列开始显示
			 	WriteData(0x30+i);   //将字符常量写入LCD
				q[k]=i;
				if(k>5)
				{
				  cuowu();
				}
				k++;
					while(1) 
			                   { 
			
		                	P1=0xff; //先向P1口写1;端口读状态
		                 	P1=0xfe;
			
		                	temp=P1; 
		
			             if(temp!=0xbe)
				              {break;} 
						   }  
		
}
void display03(int i)
 {				
              	delaynms(500)	;
      		  	WriteAddress(0x00+k);    //写显示地址,将在第1行第1列开始显示
			 	WriteData(0x30+i);   //将字符常量写入LCD
				q[k]=i;
				if(k>5)
				{
				  cuowu();
				}
				k++;
					while(1) 
			                   { 
			
		                	P1=0xff; //先向P1口写1;端口读状态
		                 	P1=0xfe;
			
		                	temp=P1; 
		
			             if(temp!=0x7e)
				              {break;} 
						   }  
		
		
}
void display04(int i)
 {				
              	delaynms(500)	;
      		  	WriteAddress(0x00+k);    //写显示地址,将在第1行第1列开始显示
			 	WriteData(0x30+i);   //将字符常量写入LCD
				q[k]=i;
				if(k>5)
				{
				  cuowu();
				}
				k++;
						while(1) 
			                   { 
			
		                	P1=0xff; //先向P1口写1;端口读状态
		                 	P1=0xfd;
			
		                	temp=P1; 
		
			             if(temp!=0xed)
				              {break;} 
						   }  
		
		
}
void display05(int i)
 {				
              	delaynms(500)	;
      		  	WriteAddress(0x00+k);    //写显示地址,将在第1行第1列开始显示
			 	WriteData(0x30+i);   //将字符常量写入LCD
				q[k]=i;
				if(k>5)
				{
				  cuowu();
				}
				k++;
					while(1) 
			                   { 
			
		                	P1=0xff; //先向P1口写1;端口读状态
		                 	P1=0xfd;
			
		                	temp=P1; 
		
			             if(temp!=0xdd
						 )
				              {break;} 
						   }  
		
}
void display06(int i)
 {				
              	delaynms(500)	;
      		  	WriteAddress(0x00+k);    //写显示地址,将在第1行第1列开始显示
			 	WriteData(0x30+i);   //将字符常量写入LCD
				q[k]=i;
				if(k>5)
				{
				  cuowu();
				}
				k++;
					while(1) 
			                   { 
			
		                	P1=0xff; //先向P1口写1;端口读状态
		                 	P1=0xfd;
			
		                	temp=P1; 
		
			             if(temp!=0xbd
						 )
				              {break;} 
						   } 
		
}
void display07(int i)
 {				
              	delaynms(500)	;
      		  	WriteAddress(0x00+k);    //写显示地址,将在第1行第1列开始显示
			 	WriteData(0x30+i);   //将字符常量写入LCD
				q[k]=i;
				if(k>5)
				{
				  cuowu();
				}
				k++;
						while(1) 
			                   { 
			
		                	P1=0xff; //先向P1口写1;端口读状态
		                 	P1=0xfd;
			
		                	temp=P1; 
		
			             if(temp!=0x7d
						 )
				              {break;} 
						   } 
		
		
}
void display08(int i)
 {				
              	delaynms(500)	;
      		  	WriteAddress(0x00+k);    //写显示地址,将在第1行第1列开始显示
			 	WriteData(0x30+i);   //将字符常量写入LCD
				q[k]=i;
				if(k>5)
				{
				  cuowu();
				}
				k++;
						while(1) 
			                   { 
			
		                	P1=0xff; //先向P1口写1;端口读状态
		                 	P1=0xfb;
			
		                	temp=P1; 
		
			             if(temp!=0xeb
						 )
				              {break;} 
						   } 
		
		
}
void display09(int i)
 {				
              	delaynms(500)	;
      		  	WriteAddress(0x00+k);    //写显示地址,将在第1行第1列开始显示
			 	WriteData(0x30+i);   //将字符常量写入LCD
				q[k]=i;
				if(k>5)
				{
				  cuowu();
				}
				k++;
					while(1) 
			                   { 
			
		                	P1=0xff; //先向P1口写1;端口读状态
		                 	P1=0xfb;
			
		                	temp=P1; 
		
			             if(temp!=0xdb
						 )
				              {break;} 
						   } 
		
		
}
void chongshu()
{
  flap=1;
}

void xiugai()
{		          
                 char e; 	
                WriteAddress(0x00+0x80+0x40);    //写显示地址,将在第1行第1列开始显示
					while(xiu[e] != '\0')  //只要没有写到结束标志,就继续写
				{						
					WriteData(xiu[e]);   //将字符常量写入LCD
					e++;                 //指向下一个字符
					delaynms(100);        //延时100ms较长时间,以看清关于显示的说明
				}
    while(1)                
			                       {	
								   	

			
				if(flap==1)
				{
				 break;
			    }
			while(1) 
			                       { 
				if(flap==1)
				{
				 break;
			    }
			P1=0xff; //先向P1口写1;端口读状态
			
			P1=0xf0;
			
			temp=P1; 
			if(temp!=0xf0) 
			 { 
				delay1ms();  
			if(temp!=0xf0)
			{ 
				P1=0xfe;
			 	temp=P1;
			switch(temp) 
			{ 
				case(0xee):delaynms(1000);if(temp==0xee){display10(0);};break; 
				case(0xde):delaynms(1000);if(temp==0xde){display11(1);};break; 
				case(0xbe):delaynms(1000);if(temp==0xbe){display12(2);};break; 
				case(0x7e):delaynms(1000);if(temp==0x7e){display13(3);};break; 
			
			}
			
			P1=0xfd;
			 temp=P1;
			switch(temp) 
			{ 
				case(0xed):delaynms(1000);if(temp==0xed){display14(4);};break; 
				case(0xdd):delaynms(1000);if(temp==0xdd){display15(5);};break; 
				case(0xbd):delaynms(1000);if(temp==0xbd){display16(6);};break; 
				case(0x7d):delaynms(1000);if(temp==0x7d){display17(7);};break; 
			}
			
			P1=0xfb;
			 temp=P1;
			switch(temp) 
			{ 
				case(0xeb):delaynms(1000);if(temp==0xeb){display18(8);};break; 
				case(0xdb):delaynms(1000);if(temp==0xdb){display19(9);};break;  
			}
			
			 
			} 
			   } 
			
			                }               
												    
				
			            	}	
}
 /*****************************************************
DISPLAY
***************************************************/  
void kaisuo(void)
{
   
   	 kai=1;
	 flap=1;
	 delaynms(100);
	 delaynms(100);
	 delaynms(100);
	  delaynms(100);
	  delaynms(100);
	 delaynms(100);
	 delaynms(100);
	  delaynms(100);
	  	 delaynms(100);
	 delaynms(100);
	 delaynms(100);
	  delaynms(100);
	  delaynms(100);
	 delaynms(100);
	 delaynms(100);
	  delaynms(100);
	  delaynms(100);
	 delaynms(100);
	  delaynms(100);
	  delaynms(100);
	 delaynms(100);
	 delaynms(100);
	  delaynms(100);
	
}
void cuowu(void)
{
	    unsigned char i;
		flap=1;
			 jidian=1;
	 	     WriteAddress(0x00);    //写显示地址,将在第1行第1列开始显示
			   i = 0;                //从第一个字符开始显示
				while(Error[i] != '\0')  //只要没有写到结束标志,就继续写
				{						
					WriteData(Error[i]);   //将字符常量写入LCD
					i++;                 //指向下一个字符
					delaynms(100);        //延时100ms较长时间,以看清关于显示的说明
				}	
			
}
void queren(void)
{	char a=0,n;
 		for(n=0;n<6;n++)
		{
		
		a=q[n]-x[n];
		 	       if(a!=0)
			     	{
				  cuowu();
					}
		
		}
    	
		if(a==0)
		{
		  kaisuo();
		}

}

 void main(void)

 {	  	   	      
		   LcdInitiate();         //将液晶初始化
		    kai=0;
			jidian=0;
	       delaynms(5);        //延时5ms给硬件一点反应时间	
		 
		   while(1)                
			 {	 

			unsigned char temp; 
			while(1) 
			{ 
			 
			if(flap==1)
			{  
				char n;
				for(n=0;n<6;n++)
				{q[n]=0;}
			  p=0;
			  jidian=0;
			  flap=0;
			  LcdInitiate();         //将液晶初始化
			  m=0;
			  WriteAddress(0x00);    //写显示地址,将在第1行第1列开始显示
			  k=0;
			  kai=0;
		
			}
			P1=0xff; //先向P1口写1;端口读状态
			
			P1=0xf0;
			
			temp=P1; 
			if(temp!=0xf0) 
			 { 
				delay1ms();  
			if(temp!=0xf0)
			{ 
				P1=0xfe;
			 	temp=P1;
			switch(temp) 
			{ 
				case(0xee):delaynms(1000);if(temp==0xee){display00(0);};break; 
				case(0xde):delaynms(1000);if(temp==0xde){display01(1);};break; 
				case(0xbe):delaynms(1000);if(temp==0xbe){display02(2);};break; 
				case(0x7e):delaynms(1000);if(temp==0x7e){display03(3);};break; 
			
			}
			
			P1=0xfd;
			 temp=P1;
			switch(temp) 
			{ 
				case(0xed):delaynms(1000);if(temp==0xed){display04(4);};break; 
				case(0xdd):delaynms(1000);if(temp==0xdd){display05(5);};break; 
				case(0xbd):delaynms(1000);if(temp==0xbd){display06(6);};break; 
				case(0x7d):delaynms(1000);if(temp==0x7d){display07(7);};break; 
			}
			
			P1=0xfb;
			 temp=P1;
			switch(temp) 
			{ 
				case(0xeb):delaynms(1000);if(temp==0xeb){display08(8);};break; 
				case(0xdb):delaynms(1000);if(temp==0xdb){display09(9);};break; 
				case(0xbb):queren();break; 
				case(0x7b):chongshu();break; 
			}
			
			P1=0xf7;
			 temp=P1;
			switch(temp) 
			{ 
				case(0xe7):xiugai();break; 
				case(0xd7):display(13);break; 
				case(0xb7):display(14);break; 
				case(0x77):display(15);break; 
			}
			 
			} 
			   } 
			
			     }               
												    
				
				}	
			  
}





⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -