简易机械手动作模拟

简易机械手动作模拟

       本设计要求采用 MCS-51 等嵌入式控制器实现,完成PROTEUS仿真模拟调试。下图为机械手工作原理:机械手将A工位上的工件搬运到B工位,原位→下降→夹紧 →上升→右移→左移→ 上升→放松→下降.
       上升/下降和左移/右移的执行用双线圈二位电磁阀推动气缸完成。当某个电磁阀线圈通电,就一直保持现有的机械动作,例如一旦下降的电磁阀线圈通电,机械手下降,即使线圈再断电,仍保持现有的下降动作状态,直到相反方向的线圈通电为止。另外,夹紧/放松由单线圈二位电磁阀推动气缸完成,线圈通电执行夹紧动作,线圈断电时执行放松动作。设备装有上、下限位和左、右向的线圈通电为止。另外,夹紧/放松由单线圈二位电磁阀推动气缸完成,线圈通电执行夹紧动作,线圈断电时执行放松动作。设备装有上、下限位和左、右限位开关为了确保安金,机械手右移到位后,必须在右工作台(B)上无工件时才能下降,若上次搬到右工作台上的工件尚未移走,机械手应自动暂停,等待。为此设置了一个光电开关,以检测“无工件”信号。动作设计为单步运行和单周期运行
      单步运行:利用按钮对机械手每一步进行控制。
      单周期运行:原点处,按下启动按钮自动完成一个周期回原位停止。

      紧急状态:按下紧急按钮,机械手停止在当前状态,当故障排除后,可接着工作至本周期结束。要求设置功能按键控制系统运行.

/*
实验接线:
物料搬运装置  传感器配接模块      8255扩展模块   主机模块  继电器模块  物料搬运 
(端子号4)   IN0      OUT0       PB.0    D0      P0.0
(5)         IN1      OUT1       PB.1    D1      P0.1
(6)         IN2      OUT2       PB.2    D2      P0.2
(7)         IN3      OUT3       PB.3    D3      P0.3
(8)         IN4      OUT4       PB.4    D4      P0.4
(9)         IN5      OUT5       PB.5    D5      P0.5
(10)        IN6      OUT6       PB.6    D6      P0.6
(11)        IN7      OUT7       PB.7    D7      P0.7
(12)        IN0      OUT0       PA.7   

	                                             P1.0      K3   NO(端子号13)
	                                             P1.1      K4   NO    (14)
	                                             P1.2      K5   NO    (15)
	                                                       K5   NC    (16)
	                                             P1.3      K6   NO    (17)


物料搬运装置   传感器配接模块        继电器模块           8255扩展模块
红端接+24V     COM(2个)接+24V      12V和5V要接          CS接主机P2.7
黑端接24V地    COM+(2个)接+5V      COM(4个)接24V地    A1接主机P2.6 
               COM-(2个)接5V地                          A0接主机P2.5 
											              RST接主机RST 
											              WR接主机P3.6 
											              RD接主机P3.7 
*/
#include "reg52.h"
#include "absacc.h"
#define uint unsigned int 
#define PA XBYTE[0x1fff]
#define PB XBYTE[0x3fff]
#define PC XBYTE[0x5fff]
#define COM XBYTE[0x7fff]

#define left  handleft=0,handright=1
#define right  handleft=1,handright=0
#define stop  handleft=1,handright=1 
#define close handcloseloose=0
#define loose handcloseloose=1
#define down handupdown=0
#define up handupdown=1

#define yigw while(PB&0x01)
#define ergw while(PB&0x02)
#define sangw while(PB&0x04)
#define ss while(PB&0x08)
#define xj while(PB&0x10)
#define jj while(PB&0x20)
#define yw while(PB&0x40)
#define yigwyw while(PB&0x80)
#define ergwyw while(PA&0x80)


sbit handleft=P1^0;//左移
sbit handright=P1^1;//右移
sbit handcloseloose =P1^2;//夹紧、放松
sbit handupdown= P1^3;//上升、下降


void mdelay(uint t)
{
	uint i;
	while (t--)
	{
		for (i=0;i<125;i++)
		{
		}
	}
}

void jxs_initail()
{
	COM=0x92;8255,A口和B口输入。

	left;
	sangw;
	stop;
    mdelay(500);


//  yigwyw;
    right;右移到1工位,手爪下降抓球,上升,左移,放3工位物料口。
    yigw;
    stop;  

    down;
    xj;
    mdelay(500);
    close;
    jj;
    up;
    ss;
    mdelay(500);

    left;
    sangw;
    stop;
    mdelay(500);
    loose;


//  ergwyw;
    right;///右移到2工位,手爪下降抓球,上升,左移,放3工位物料口。
    ergw;
    stop; 

    down;
    xj;
    mdelay(500);
    close;
    jj;
    up;
    ss;
    mdelay(500);

    left;
    sangw;
    stop;
    mdelay(500);
    loose;
}



void main()
{
	jxs_initail();

	while (1)
	{
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
以下是一个基于 Swing 的简易计算器的示例代码: ```java import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Calculator extends JFrame implements ActionListener { private JTextField display; private JButton[] buttons; private String[] buttonLabels = { "7", "8", "9", "/", "4", "5", "6", "*", "1", "2", "3", "-", "0", ".", "=", "+" }; private double result = 0.0; private String operator = ""; private boolean isOperatorClicked = false; public Calculator() { super("Calculator"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel panel = new JPanel(); panel.setLayout(new GridLayout(4, 4)); display = new JTextField("0", 20); display.setHorizontalAlignment(JTextField.RIGHT); display.setEditable(false); buttons = new JButton[buttonLabels.length]; for (int i = 0; i < buttonLabels.length; i++) { buttons[i] = new JButton(buttonLabels[i]); buttons[i].addActionListener(this); panel.add(buttons[i]); } add(display, BorderLayout.NORTH); add(panel, BorderLayout.CENTER); pack(); setVisible(true); } public void actionPerformed(ActionEvent e) { String input = e.getActionCommand(); if (input.equals("C")) { result = 0.0; operator = ""; isOperatorClicked = false; display.setText("0"); } else if (input.equals(".")) { if (display.getText().indexOf(".") == -1) { display.setText(display.getText() + "."); } } else if (input.equals("+") || input.equals("-") || input.equals("*") || input.equals("/")) { if (isOperatorClicked) { operator = input; } else { isOperatorClicked = true; String currentText = display.getText(); if (!currentText.equals("")) { result = Double.parseDouble(currentText); operator = input; display.setText(""); } } } else if (input.equals("=")) { String currentText = display.getText(); if (!currentText.equals("")) { double d = Double.parseDouble(currentText); if (operator.equals("+")) { result += d; } else if (operator.equals("-")) { result -= d; } else if (operator.equals("*")) { result *= d; } else if (operator.equals("/")) { result /= d; } display.setText(Double.toString(result)); isOperatorClicked = false; } } else { if (isOperatorClicked) { display.setText(input); isOperatorClicked = false; } else { display.setText(display.getText() + input); } } } public static void main(String[] args) { Calculator calculator = new Calculator(); } } ``` 该示例代码创建了一个基于 Swing 的简易计算器,支持加、减、乘、除和小数点等操作。可以通过运行 `main` 方法启动该计算器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

下饭的王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值