首页 > 编程语言 >Proteus仿真实例_基于51单片机的二层电梯控制系统(仿真文件+程序)24-51f-03

Proteus仿真实例_基于51单片机的二层电梯控制系统(仿真文件+程序)24-51f-03

时间:2024-06-30 20:59:01浏览次数:20  
标签:仿真 03 floor void 51 unsigned char 指示灯 include

一.系统概述

1.电梯有上行和下行功能,有一个电机通过正反转控制,分别用两个指示灯表示;
2.有开门和关门功能,有一个电机通过正反转控制,分别用两个指示灯表示;
3.电梯内部具有开门、关门按钮,带相应指示灯:
4.超重和延时报警功能,超重信号保持功能。

二.仿真概述 

1. 进入仿真,数码管显示屏上会显示楼层为1楼,1楼提示灯亮起。

2. 按下上升按键电机开始运转,上升指示灯打开,到达2层相应的指示灯打开,同理相应的点击其他较高楼层的按钮就会进行相同的上楼流程,当点击较现在较低的楼层就会执行相应的下楼流程。

3. 按下超重按键就会一直亮灯提醒电梯超重。

三.程序设计

#include <REGX52.H>
#include "delay.h"
#include "key.h"
#include "Nixie.h"
#include "Timer0.h"

sbit LEDA = P3^4; 
sbit LEDB = P3^5;  
sbit LEDC = P3^7;

unsigned char N = 1;
unsigned char KeyNum,floor = 1;
unsigned char code z[]={0x02,0x06,0x04,0x0c,0x08,0x09,0x01,0x03};
unsigned char code f[]={0x01,0x09,0x08,0x0c,0x04,0x06,0x02,0x03};
void foreward(unsigned char n);
void reversal(unsigned char n);
void foreward2(unsigned char n);
void reversal2(unsigned char n);
void open_the_door();
void close_the_door();

void main()
{			
		Nixie(1,floor);
		P1 = 0;
		P3 &= 0xF0;
		while(1)
		{	
				KeyNum = Key();
				if(KeyNum == 1)
				{						
						floor++;
						if(floor >= 1 && floor <= 2)
						{
								close_the_door();
								reversal2(N);
								LEDA = 0; 
								LEDB = 1; 								
								foreward(N);
								LEDA = 1; 
								open_the_door();
								foreward2(N);
						}						
						if(floor > 2)
						{
								floor = 2;
						}						
				}
				else if(KeyNum == 2)
				{
						floor--;
						if(floor >= 1 && floor <= 2)
						{
								close_the_door();
								reversal2(N);
								LEDA = 1; 
								LEDB = 0; 
								reversal(N);
								LEDB = 1;
								open_the_door();
								foreward2(N);
						}	
						if(floor < 1)
						{
								floor = 1;
						}	
				}
				else if(KeyNum == 3) //开门
				{												
								open_the_door();
								foreward2(N);
	
				}
				else if(KeyNum == 4) //关门
				{ 
								close_the_door();
								reversal2(N);
				}
				else if(KeyNum == 5) //模拟超重
				{ 
								
								LEDC = 0;
								Delay(5);
								LEDC = 1;
								Delay(5);
								LEDC = 0;
								Delay(5);
								LEDC = 1;
								Delay(5);
								LEDC = 0;
								Delay(5);
								LEDC = 1;
				}
				else
				{
						LEDA = 1; 
						LEDB = 1; 
				}				
				Nixie(1,floor);
				if(floor == 1)
				{
						P1 &= 0x3F;
						P1 |= 0x40;
				}
				else if(floor ==2)
				{
						P1 &= 0x3F;
						P1 |= 0x80;
				}
		}
}

标签:仿真,03,floor,void,51,unsigned,char,指示灯,include
From: https://blog.csdn.net/XCHardware/article/details/140083485

相关文章

  • 033基于SSM+Jsp的多用户博客个人网站
    开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:Maven3.3.9系统展示管理员登录管理员功能界面博文类型管理界面管理员管理我的收藏留言板管理客服聊天管理学生功......
  • 032基于SSM+Jsp的多人命题系统
    开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:Maven3.3.9系统展示管理员登录学生管理教师信息命题信息系统管理教师注册教师前台个人中心公告信息试题信息......
  • Leetcode 3203. Find Minimum Diameter After Merging Two Trees
    Leetcode3203.FindMinimumDiameterAfterMergingTwoTrees1.解题思路2.代码实现题目链接:3203.FindMinimumDiameterAfterMergingTwoTrees1.解题思路这一题的话算是一个拓扑树的题目?总之就是从树的叶子节点不断向上遍历,不断地删除已访问的叶子节点,并加入......
  • 【驱动篇】龙芯LS2K0300之i2c设备驱动
    实验背景由于官方内核i2c的BSP有问题(怀疑是设备树这块),本次实验将不通过设备树来驱动aht20(i2c)模块,大致的操作过程如下:模块连接,查看aht20设备地址编写device驱动,通过i2c_get_adapter注册i2c_client设备编写i2c_driver驱动,需要匹device部分的i2c_device_id编写测试用例,读取两......
  • 关于Java中 因取消装箱可能产生 'NullPointerException' 的原因
    一.什么是装箱,什么是拆箱?装箱:将值类型转换为引用数据类型。拆箱:将引用数据类型转换为值类型。说白了就是Integer与int数据类型之间的转换二.为什么会有自动一说呢?我们都知道,java是一个面向对象的语言。因此包括数字、字符、日期、布尔值等等再内的一切都是对象。但是对......
  • 基于java+springboot+vue实现的毕业论文管理系统(文末源码+Lw)251
    摘 要现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本毕业论文管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效......
  • Fastapi 项目第二天首次访问时数据库连接报错问题Can't connect to MySQL server
    问题描述Fastapi项目使用sqlalchemy连接的mysql数据库,每次第二天首次访问数据库相关操作,都会报错:sqlalchemy.exc.OperationalError:(pymysql.err.OperationalError)(2003,"Can'tconnecttoMySQLserveron'x.x.x.x'([Errno111]Connectionrefused)")问题分析从出......
  • 【操作系统期末速成】 EP03 | 学习笔记(基于五道口一只鸭)
    文章目录一、前言......
  • 51 stm32开发关于keil mdk的软件配置常用设置 以及 可能会出现的报错总结
    首先左上角那个魔术棒中,是关于下载烧录软件编译的option选择我们点开他进入target需要我们配置的就两处,1:Xtal:填8.0mhz只是因为要填个数代表stm32(外部高速晶振)或(其他晶振)作为主频时钟的时钟源时的晶振大小方便烧录时对一些代码(对芯片的时钟要求高的代码)的自动编译,实际上......
  • [数据集][目标检测]驾驶中眼睛疲劳检测数据集VOC+YOLO格式4030张2类别
    数据集格式:PascalVOC格式+YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)图片数量(jpg文件个数):4030标注数量(xml文件个数):4030标注数量(txt文件个数):4030标注类别数:2标注类别名称:["Attentiveeye","Drowsyeye"]每个类......