电梯运行仿真

电梯运行程序

在这里插入图片描述

部分源代码

键盘扫描


/************************键盘扫描**************************/
unsigned int keyscan(void)
{
	if(P1!=0xff)
	{
		switch(P1)
		{
			case 0x7f:{return(8);break;}//switch语句返回键值
			case 0xbf:{return(7);break;}
			case 0xdf:{return(6);break;}
			case 0xef:{return(5);break;}
			case 0xf7:{return(4);break;}
			case 0xfb:{return(3);break;}
			case 0xfd:{return(2);break;}
			case 0xfe:{return(1);break;}
			default:return(0);	
		}
	}
}

电梯下行


/************************电梯下行**************************/
void downmove(uint m,uint n)
{
	uint k,j,i;
    for(k=m*8;k>n*8;k--)
	{	
		for(j=0;j<30;j++)
		{
			for(i=7;i>=0&&i<8;i--)
			{
				if(P1!=0xff)
				{
					outset=keyscan();
					if((outset>n)&&(outset<m))
					{
						flag1=outset;
						outset=n;
						n=flag1;
						terminal=n;	
					}
					while(P1!=0xff);
				}            		//在最里面的循环中加入判别 可以增加按键的灵敏度 如果不加则只能是运行完所有循环才进入下一步
				P0=scan[i];
				P2=~zm[(i+k)%72];
				delay(1);	
			}
		}
	} 
}

主程序



/************************主程序**************************/
void main()
{
	p37=0;
	P2=0xff;
	P0=0x00;
	while(1)
	{
		show(flag);							 /*显示电梯初始位置,等待键盘动作*/
		terminal=keyscan();					 /*获取键值*/
		if(terminal>flag)					 
		{upmove(flag,terminal); soundandled(terminal);}				/*如键值大于初始位置,电梯上行*/
		if(terminal<flag)
		{downmove(flag,terminal); soundandled(terminal);}			/*如键值大于初始位置,电梯下行*/
		flag=terminal;
		if(outset!=0)
		{
			if(outset>terminal)					 
			{upmove(terminal,outset); soundandled(outset);}
				
			if(terminal>outset)
			{downmove(terminal,outset); soundandled(outset);}
			
			flag=outset;
			outset=0;			 
		}
	}
}

资料下载地址:https://gitee.com/huananXIA/proteus

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值