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

📄 main.c

📁 基于单片机的三层电梯的源程序
💻 C
字号:
#include <AT89X51.H>
//月亮微控  QQ:228939191
/*******************输入输出分配*****************************************
|    输入        		|       输出		|          
|X13					|	Y13				|
|X12	门开关			|	Y12				|
|X11	3楼到位			|	Y11				|
|X10	2楼到位			|	Y10				|
|X9		1楼到位			|	 Y9				|
|X8		到2楼			|	 Y8				|
|X7		到1楼			|	 Y7				|
|X6		3楼呼叫			|	 Y6	楼层报警	|
|X5		到3楼			|	 Y5	门报警		|
|X4		到1楼			|	 Y4	KM2电机上行	|
|X3		2楼呼叫			|	 Y3	KM1电机下行	|
|X2		到3楼			|	 Y2	三楼显示灯	|
|X1		到2楼			|	 Y1	二楼显示灯	|
|XO		1楼呼叫			|	 Y0	一楼显示灯	|
*/
/********P0*********/
sbit Y13 = 0x80;
sbit Y12 = 0x81;
sbit Y11 = 0x82;
sbit Y10 = 0x83;
sbit Y9 = 0x84;
sbit Y8 = 0x85;
sbit Y7 = 0x86;
sbit Y6 = 0x87;
/********P1*********/
sbit X13 = 0x90;
sbit X12 = 0x91;
sbit X11 = 0x92;
sbit X10 = 0x93;
sbit X9 = 0x94;
sbit X8 = 0x95;
sbit X7 = 0x96;
sbit X6 = 0x97;
/* P2 */
sbit Y0 = 0xA2;
sbit Y1 = 0xA3;
sbit Y2 = 0xA4;
sbit Y3 = 0xA5;
sbit Y4 = 0xA6;
sbit Y5 = 0xA7; 
/********P3*********/
sbit X0 = 0xB2;
sbit X1 = 0xB3;
sbit X2 = 0xB4;
sbit X3 = 0xB5;
sbit X4 = 0xB6;
sbit X5 = 0xB7;
/*******辅助继电器***********/ 
bit M0=1;
bit M1=1;    				
bit M2=1;    				
bit M3=1;    				
bit M4=1;    				
bit M5=1;    				
bit M6=1;    				
bit M7=1;    				
bit M8=1;    				
bit M9=1;    				
bit M10=1; 

/************************一楼呼叫***************************************/
void key1 (void)
{   
//呼叫 	
if (!X0)								//呼叫键按下		
		{
			if	(X12) Y5 = 0;			//门没有关闭,报警灯亮
				else (Y5 = 1);	
			if (!X10|!X11)				//在二楼或者三楼,电梯下行
				{
				 M0 = 0;				//电梯下行信号	
				}			
		}
if	((M0  == 0 && Y4 == 1)&& !X12)   	//电梯下行信号,电梯没有上升,门开关OK
		{
		 	Y3 = 0;						//电梯开始下降
			if (X9 == 0)				//电梯到位	
 		      {
				 Y3 = 1;				//电梯停止下降
				 M0 = 1;				//电梯下降信号停
				 }
		 }										
//到二楼
 if ((!X1 && !X12)&& !X9)				//按到2楼 门开关OK 在1楼
       {
		 	M1 = 0;						//电梯到二楼信号
			if ( X10 == 1 && Y3 == 1)Y4 = 0;	//电梯没有在二楼  电梯没有下降 电梯开始上升	   
		  }
 if (M1 == 0 && !X10 ) 					//电梯上升2楼 限位到了
 			{
			 	Y4 = 1;					//电梯停止	
			 	M1 = 1;					//电梯上升信号停止
			 }
 
//到三楼
 if ((!X2 && !X12)&& !X9) 				//按到3楼 门开关OK 在1楼
 		{
			M2 = 0;						//电梯到3楼信号
 			if (X11 == 1 && Y3 == 1)Y4 = 0;//电梯没有在3楼  电梯没有下降 电梯开始上升
		}	
 if (M2 == 0 && !X11)					//电梯上升3楼 限位到了
			 {
			  	Y4 = 1;					//电梯停止
 			  	M2 = 1;					//电梯上升信号停止
			  }
			
}
/************************二楼呼叫*****************************************/
void key2 (void)
{   
 //呼叫 	
if (!X3)		
		{
			if	(X12) Y5 = 0;		//门没有关闭,报警
				else (Y5 = 1);	
			if (!X9)				//在1楼电梯上
				{
				 M3 = 0;			//电机上行信号	
				}
			if (!X11)				//在3楼电梯上
				{
				 M4 = 0;			//电机下行信号	
				}
		}
if	((M3  == 0 && Y3 == 1)&& !X12) Y4 = 0;	//一楼到二楼
	 
	if (M3  == 0 && X10 == 0)
 		{
			Y4 = 1;
			M3 = 1;
		}		 
if	((M4  == 0 && Y4 == 1)&& !X12) Y3 = 0;	//三楼到二楼	
	if (M4  == 0 && X10 == 0)
 		{
			Y3 = 1;
			M4 = 1;
		}		 										
//到一楼
 if ((!X4 && !X12)&& !X10) M5 = 0;
 	if ((M5 == 0 && X9 == 1) && Y4 == 1)Y3 = 0;
 	if (M5 == 0 && !X9)
		 {
			Y3 = 1;
 			M5 = 1;
		 }			
//到三楼
 if ((!X5 && !X12)&& !X10) M6 = 0;
 	if ((M6 == 0 && X11 == 1) && Y3 == 1) Y4 = 0;
 	if (M6 == 0 && !X11)
		{
			Y4 = 1;
 			M6 = 1;
		}	  
}
/*****************************************************************************/
/************************三楼呼叫************************************/
void key3 (void)
{   
 
 //呼叫 	
if (!X6)		
		{
			if	(X12) Y5 = 0;		//门没有关闭,报警
				else (Y5 = 1);	
			if (!X9)					//在1楼电梯上
				{
				 M7 = 0;				//电机上行信号	
				}
			if (!X10)				//在2楼电梯上
				{
				 M8 = 0;				//电机下行信号	
				}
		}
if	((M7  == 0 && Y3 == 1)&& !X12) Y4 = 0;	//一楼到3楼
	 
	if (M7  == 0 && X11 == 0)
 		{
			Y4 = 1;
			M7 = 1;
		}		 
if	((M8  == 0 && Y3 == 1)&& !X12) Y4 = 0;	//2楼到3楼	
	if (M8  == 0 && X11 == 0)
 		{
			Y4 = 1;
			M8 = 1;
		}		 										
//到一楼
 if ((!X7 && !X12)&& !X11) M9 = 0;
 	if ((M9 == 0 && X9 == 1) && Y4 == 1)Y3 = 0;
 	if (M9 == 0 && !X9)
		 {
			Y3 = 1;
 			M9 = 1;
		 }			
//到三楼
 if ((!X8 && !X12)&& !X11) M10 = 0;
 	if ((M10 == 0 && X10 == 1) && Y3 == 1) Y3 = 0;
 	if (M10 == 0 && !X10)
		{
			Y3 = 1;
 			M10 = 1;
		}	  
} 
 
/****主程序*********************************************/
void main(void)
{
 	P0 = 0xFF;
 	P1 = 0xFF;
 	P2 = 0xFF;
 	P3 = 0xFF;  
	while (1)
	 { 	 	
	 	if (!X9)Y0 = 0;
			else(Y0 = 1); 
		if (!X10)Y1 = 0;
			else(Y1 = 1);
		 if (!X11)Y2 = 0;
			  else(Y2 = 1);   	   			      	   
		key1();				 //*一楼呼叫
		key2();				 //*二楼呼叫
		key3();				 //*三楼呼叫
	 }
}
/*******************************************************/



⌨️ 快捷键说明

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