易语言与stc89c52通信,51单片机激光雕刻机制作 含易语言上位机源码等资料
#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单片机激光雕刻机制作 含易语言上位机源码等资料相关推荐
- 基于51单片机的人体红外探测防盗报警(仿真+源码+全套资料)
资料编号:128 功能说明: 1.按下紧急报警按键,紧急报警灯闪烁,蜂鸣器报警 2.按下布防按键,布防指示灯开始闪烁,闪烁大约30秒,保持亮的状态,进入布防模式 3.按下取消报警/布防按键,取消布防 ...
- 基于51单片机的室内温度可燃气体检测报警系统Proteus仿真(源码+仿真+全套资料)
资料编号:133 讲解视频: 133-基于51单片机的室内温度可燃气体检测报警系统Proteus仿真(源码+仿真+全套资料) 功能介绍: 采用51单片机作为主控,LCD1602显示当前温度和可燃气体浓 ...
- 基于51单片机的舞蹈机器人四路步进电机控制仿真(源码+仿真+全套资料)
资料编号:091 通过51单片机控制4个步进电机旋转,模拟出机器人的四肢动作,全套资料齐全:具体功能请下方看演示视频 91-基于51单片机的舞蹈机器人四路步进电机控制仿真(源码+仿真+全套资料) 单片 ...
- 模块称重51单片机电子秤称重压力检测阈值报警仪系统 源码+原理图仿
HX711模块称重51单片机电子秤称重压力检测阈值报警仪系统 源码+原理图仿真(文件,文件,文件) 本系统由STC89C52单片机.LCD1602液晶显示.HX711称重传感器. 蜂鸣器报警.按键及电 ...
- 基于stm32单片机有害气体监测检测Proteus仿真(仿真+源码+全套资料)
资料编号:097 检测当前的有害气体浓度,LCD1602显示,并且可以自动打开关闭风扇,也可以通过手动按键打开关闭风扇通风,全套资料齐全,具体功能请看下面演示视频 97-基于stm32单片机有害气体监 ...
- 基于STM32单片机闭环步进电机驱动调速仿真(仿真+源码+全套资料)
资料编号:081 (1) 基本功能:本任务通过输出脉冲控制步进电机的停止.运动.方向.使用 两个按键分别控制步进电机的正转和反转,再次按下这两个按键,步进电机停止, 同时 LCD 显示电机状态信息. ...
- 单片机 c语言百位加上小数点,51单片机水温控制LCD显示加VB上位机温度曲线绘制...
现功能,1L水由1KW电炉加热,要求水温在一定范围内人工设定,并能随着环境温度改变自动调节,以维持设定的温度不变. 矩阵键盘输入设定温度,LCD1602显示温度值,VB上位机绘制温度曲线 /***** ...
- 土壤湿度检测仪c语言代码,单片机测土壤湿度可自动浇水并报警 带C#上位机源码...
#include //调用单片机头文件 #define uchar unsigned char //无符号字符型 宏定义 变量范围0~255 #def ...
- 易语言和c51通信,51单片机与PC上位机串口通信之LED控制
#include #define uint8 unsigned char #define uint16 unsigned int uint8 receive_buffer[6]; ...
- 跑马灯C语言实验报告,51单片机跑马灯实验报告 分析与小结,思考题源码下载
一.实验目的与要求 1.熟悉 Keil C51 集成环境软件的使用方法. 2.熟悉 MCS51 汇编指令,能自己编写简单的程序,控制硬件. 3.熟悉畅学开发平台,掌握单片机最小系统及 IO 口的简单控 ...
最新文章
- Windows启动exe应用程序,无法正常启动(0xc000007b)的解决办法
- 来体验一把职场人的真实训练,检验你的工程化交付能力!
- 250g硬盘linux分区,linux分区格式化命令使用方法
- Java系统变量之System.getenv()和System.getProperty()
- 用ModSecurity+PhantomJS进行服务器端XSS攻击检测
- 浅谈js与jq给新增元素动态绑定事件(事件委托)
- 转帖一则——从医学角度论成熟
- Spark部署模式入门
- 【剑指offer】面试题 14. 剪绳子
- git 拉取某个分支到本地
- matlab gui的callback,matlab GUI callback 函数实现
- MATLAB学习之泰勒展开(四)
- python颜色对照表及颜色搭配
- U3V实现——CYUSB3014之GPIF总结
- NB-IoT的DRX、eDRX、PSM三个模式是什么?
- 压缩包的加密、去除密码、解密
- 天天写业务代码的那些年,我们是如何成长过来的
- java 声明式编程_声明式编程 - SegmentFault 思否
- Windows CE下中文输入法编辑器
- 计算机怎样禁用中等加密算法,教你win10系统BitLocker加密功能禁用硬件加密