#include

#define uint unsigned int

#define uchar unsigned char

#define N z[60]           //X速度

#define M z[61]           //Y速度

//#define zil 54]*256+z[55]

unsigned char code Z1[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; // 正转

//unsigned char code F1[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01}; //反转

sbit jg=P2^0;

sbit EN1=P2^7;

sbit EN2=P2^6;

sbit EN3=P2^5;

sbit EN4=P2^4;

sbit led=P2^1;//指示灯

uchar xdata z[500]={0};//缓存

uchar buff[3];//串口缓存

uchar x1,x0,y1,y0,cont2=0;

uchar xfb=4,yfb=4;//走步标志位

uchar x,y,k,temp,t;//变量定义,有些没有用

char i,j;

uint h=0,jiguang;

void delayms(uint xms)

{

uint i,j;

for(i=xms;i>0;i--)                      //i=xms即延时约xms毫秒

for(j=110;j>0;j--);

}

/**********************************************************************

*                                                                                                                                          *

*              步进电机驱动                                  *

*                                                                                                                                          *

***********************************************************************/

/********x方向正转***********/

void  motor_fxw(uint flag)

{

while(1)

{

P0=Z1[i];

delayms(N);

flag--;

i++;

if(i>7)

i=0;

if(flag==0)

break;

}

}

/********x方向逆转***********/

void  motor_fxz(uint flag)

{

while(1)

{

P0=Z1[i];

delayms(N);

flag--;

i--;

if(i<0)

i=7;

if(flag==0)

break;

}

}

/********y方向正转***********/

void  motor_fyw(uint flag)

{

while(1)

{

P1=Z1[j];

delayms(M);

flag--;

j++;

if(j>7)

j=0;

if(flag==0)

break;

}

}

/********y方向逆转***********/

void  motor_fyz(uint flag)

{

while(1)

{

P1=Z1[j];

delayms(M);

flag--;

j--;

if(j<0)

j=7;

if(flag==0)

break;

}

}

/*****************打点完毕激光移至原点****************************/

void huanyuan(uint zix,uint ziy)

{

while(1)

motor_fxz(zix);

while(1)

motor_fyz(ziy);

}

void dazi(uint zik,uchar bu)//打印函数

{

uint x;

uint s;

jg=1;

for(x=0;x

{

while(z[63]);//暂停等待

if(z[64]==1) break;//停止标志 跳出循环

s=z[99+x]*(z[58]*256+z[59])/100;

jg=0;//开激光

delayms(s);

jg=1;                //关闭激光

//                 if(y%2==0)

motor_fxw(1);                         //x轴前进一步

//                        else

//                                         motor_fxz(1);                         //x轴后退一步

}

if(z[64]==1)    z[64]=0; //停止标志 跳出循环

else                        //y轴进一行

{

y++;

motor_fxz(zik);

motor_fyw(1);

}

//                if(y==zil)

//                {

//                        huanyuan(zik,ziy);

//                }

}

/* 串口配置函数,baud-通信波特率 */

void ConfigUART(unsigned int baud)

{

SCON  = 0x50;  //配置串口为模式1

TMOD &= 0x0F;  //清零T1的控制位

TMOD |= 0x20;  //配置T1为模式2

TH1 = 256 - (11059200/12/32)/baud;  //计算T1重载值

TL1 = TH1;     //初值等于重载值

ET1 = 0;       //禁止T1中断

ES  = 1;       //使能串口中断

TR1 = 1;       //启动T1

}

void chuanlo() interrupt 4

{

if(RI)

{

buff[cont2]=SBUF;//每次3字节,地址高,地址低,数据,,

cont2++;

if(cont2==3)//每收3个字节,把数据写入地址中

{

z[(buff[0]*256)+buff[1]]=buff[2];

cont2=0;

}

RI=0;

}

}

main()

{

EA=1;

P0=0xff;

ConfigUART(9600)        ;

z[60]=15;//默认的参数

z[61]=50;

z[56]=1;

z[62]=0;

jg=1;

cont2=0;

EN1=1;

EN2=1;

EN3=1;

EN4=1;

y=0;

i=0;

j=0;

t=1;

//        z[54]=0;

//        z[55]=44;

//        z[60]=50;

//        z[61]=50;

while(1)

{

if(z[57]==100){jg=0;}//上位机指令处理,开关激光

if(z[57]==0) {jg=1;}

//if(z[57]==100){jg=~jg;z[57]=0;}

if(cont2!=0) led=1;  else led=0;//指示通信是否可用

// if(cont2!=0) led=0;  else led=1;

if(z[50]>0){motor_fxw(t);z[50]=0;}   //x轴前进一步

if(z[51]>0){motor_fxz(t);z[51]=0;}

if(z[52]>0){motor_fyz(t);z[52]=0;}

if(z[53]>0){motor_fyw(t);z[53]=0;}

if(z[62])//开始打印标志

{

dazi(z[54]*256+z[55],z[56]);

z[62]=0;//一行打印完成

SBUF=1;//发送信息,表示打印完成

while(!TI);

TI=0;

}

}

}

易语言与stc89c52通信,51单片机激光雕刻机制作 含易语言上位机源码等资料相关推荐

  1. 基于51单片机的人体红外探测防盗报警(仿真+源码+全套资料)

     资料编号:128 功能说明: 1.按下紧急报警按键,紧急报警灯闪烁,蜂鸣器报警 2.按下布防按键,布防指示灯开始闪烁,闪烁大约30秒,保持亮的状态,进入布防模式 3.按下取消报警/布防按键,取消布防 ...

  2. 基于51单片机的室内温度可燃气体检测报警系统Proteus仿真(源码+仿真+全套资料)

    资料编号:133 讲解视频: 133-基于51单片机的室内温度可燃气体检测报警系统Proteus仿真(源码+仿真+全套资料) 功能介绍: 采用51单片机作为主控,LCD1602显示当前温度和可燃气体浓 ...

  3. 基于51单片机的舞蹈机器人四路步进电机控制仿真(源码+仿真+全套资料)

    资料编号:091 通过51单片机控制4个步进电机旋转,模拟出机器人的四肢动作,全套资料齐全:具体功能请下方看演示视频 91-基于51单片机的舞蹈机器人四路步进电机控制仿真(源码+仿真+全套资料) 单片 ...

  4. 模块称重51单片机电子秤称重压力检测阈值报警仪系统 源码+原理图仿

    HX711模块称重51单片机电子秤称重压力检测阈值报警仪系统 源码+原理图仿真(文件,文件,文件) 本系统由STC89C52单片机.LCD1602液晶显示.HX711称重传感器. 蜂鸣器报警.按键及电 ...

  5. 基于stm32单片机有害气体监测检测Proteus仿真(仿真+源码+全套资料)

    资料编号:097 检测当前的有害气体浓度,LCD1602显示,并且可以自动打开关闭风扇,也可以通过手动按键打开关闭风扇通风,全套资料齐全,具体功能请看下面演示视频 97-基于stm32单片机有害气体监 ...

  6. 基于STM32单片机闭环步进电机驱动调速仿真(仿真+源码+全套资料)

    资料编号:081 (1) 基本功能:本任务通过输出脉冲控制步进电机的停止.运动.方向.使用 两个按键分别控制步进电机的正转和反转,再次按下这两个按键,步进电机停止, 同时 LCD 显示电机状态信息. ...

  7. 单片机 c语言百位加上小数点,51单片机水温控制LCD显示加VB上位机温度曲线绘制...

    现功能,1L水由1KW电炉加热,要求水温在一定范围内人工设定,并能随着环境温度改变自动调节,以维持设定的温度不变. 矩阵键盘输入设定温度,LCD1602显示温度值,VB上位机绘制温度曲线 /***** ...

  8. 土壤湿度检测仪c语言代码,单片机测土壤湿度可自动浇水并报警 带C#上位机源码...

    #include                  //调用单片机头文件 #define uchar unsigned char  //无符号字符型 宏定义        变量范围0~255 #def ...

  9. 易语言和c51通信,51单片机与PC上位机串口通信之LED控制

    #include #define uint8 unsigned char #define uint16 unsigned int uint8 receive_buffer[6];            ...

  10. 跑马灯C语言实验报告,51单片机跑马灯实验报告 分析与小结,思考题源码下载

    一.实验目的与要求 1.熟悉 Keil C51 集成环境软件的使用方法. 2.熟悉 MCS51 汇编指令,能自己编写简单的程序,控制硬件. 3.熟悉畅学开发平台,掌握单片机最小系统及 IO 口的简单控 ...

最新文章

  1. Windows启动exe应用程序,无法正常启动(0xc000007b)的解决办法
  2. 来体验一把职场人的真实训练,检验你的工程化交付能力!
  3. 250g硬盘linux分区,linux分区格式化命令使用方法
  4. Java系统变量之System.getenv()和System.getProperty()
  5. 用ModSecurity+PhantomJS进行服务器端XSS攻击检测
  6. 浅谈js与jq给新增元素动态绑定事件(事件委托)
  7. 转帖一则——从医学角度论成熟
  8. Spark部署模式入门
  9. 【剑指offer】面试题 14. 剪绳子
  10. git 拉取某个分支到本地
  11. matlab gui的callback,matlab GUI callback 函数实现
  12. MATLAB学习之泰勒展开(四)
  13. python颜色对照表及颜色搭配
  14. U3V实现——CYUSB3014之GPIF总结
  15. NB-IoT的DRX、eDRX、PSM三个模式是什么?
  16. 压缩包的加密、去除密码、解密
  17. 天天写业务代码的那些年,我们是如何成长过来的
  18. java 声明式编程_声明式编程 - SegmentFault 思否
  19. Windows CE下中文输入法编辑器
  20. 计算机怎样禁用中等加密算法,教你win10系统BitLocker加密功能禁用硬件加密

热门文章

  1. 如何使用c语言制作微信小程序,不懂代码如何制作微信小程序?微信小程序的步骤?...
  2. 计算机本地用户和组winx,计算机(Winx系统)实用操作手册.doc
  3. 操作系统实验报告-多线程编程解决进程间同步和互斥问题
  4. 操作系统原理(三)操作系统用户界面
  5. 电商生鲜网站开发(接口文档)
  6. 2021 年 6 个GitHub推荐前端项目
  7. html 【一个简单的用户登录页面代码】
  8. 酒店管理系统程序设计
  9. Code-NFine:NFine介绍
  10. 第一届前端早早聊笔记--wsdchong