历史上的今天
今天是:2025年02月14日(星期五)
2020年02月14日 | 基于51单片机的光驱激光雕刻机源程序电路图+上位机
2020-02-14 来源:51hei
根据他人DIY 激光雕刻机 手绘原理图 画得不好勿怪,实验操中
电路原理图如下:
单片机源程序如下:
/*z地址定义
50 1=x+,2=x-,3=y+,4=y-
51 前进后退步数高
52 前进后退步数低
53
54/55 字宽
56
57 弱光开关
58/59 激光强度
60 x轴速度
61 y轴速度
62 开始打印0,57
63 暂停
64 停止标志
65
66 左右标记
100开始时灰度图数据
*/
#include #define uint unsigned int #define uchar unsigned char #define N z[60] //X速度 #define M z[61] //Y速度 sbit a=P1^3;//步进电机接线定义 移动激光头 sbit a_=P1^2; sbit b=P1^1; sbit b_=P1^0; sbit xa=P1^4; sbit xa_=P1^5; sbit xb=P1^6; sbit xb_=P1^7; /*sbit a=P1^4;//步进电机接线定义 移动底板 sbit a_=P1^5; sbit b=P1^6; sbit b_=P1^7; sbit xa=P1^3; sbit xa_=P1^2; sbit xb=P1^1; sbit xb_=P1^0; */ sbit jg=P2^0; sbit led=P2^1;//指示灯 uchar xdata z[500]={0};//缓存 uchar buff[3];//串口缓存 uchar x1,x0,y1,y0,cont2=0; uchar xfb=4,yfb=4;//走步标志位 unsigned char HighRH = 0; //高电平重载值的高字节 unsigned char HighRL = 0; //高电平重载值的低字节 unsigned char LowRH = 0; //低电平重载值的高字节 unsigned char LowRL = 0; //低电平重载值的低字节 void delayms(uint xms) { uint i,j; for(i=xms;i>0;i--) //i=xms即延时约xms毫秒 for(j=110;j>0;j--); } /* 配置并启动PWM,fr-频率,dc-占空比 */ void ConfigPWM(unsigned int fr, unsigned char dc) { unsigned int high, low; unsigned long tmp; tmp = (11059200/12) / fr; //计算一个周期所需的计数值 high = (tmp*dc) / 100; //计算高电平所需的计数值 low = tmp - high; //计算低电平所需的计数值 high = 65536 - high + 12; //计算高电平的重载值并补偿中断延时 low = 65536 - low + 12; //计算低电平的重载值并补偿中断延时 HighRH = (unsigned char)(high>>8); //高电平重载值拆分为高低字节 HighRL = (unsigned char)high; LowRH = (unsigned char)(low>>8); //低电平重载值拆分为高低字节 LowRL = (unsigned char)low; TMOD &= 0xF0; //清零T0的控制位 TMOD |= 0x01; //配置T0为模式1 TH0 = HighRH; //加载T0重载值 TL0 = HighRL; ET0 = 1; //使能T0中断 TR0 = 1; //启动T0 jg = 1; //输出低电平,关闭激光 } /* 关闭PWM */ void ClosePWM() { TR0 = 0; //停止定时器0 ET0 = 0; //禁止定时器0中断 jg = 1; //输出低电平,关闭激光 } /* T0中断服务函数,产生PWM输出 */ void InterruptTimer0() interrupt 1 { if (jg == 1) //当前输出为低电平时,装载高电平值并输出高电平 { TH0 = LowRH; TL0 = LowRL; jg = 0; } else //当前输出为高电平时,装载低电平值并输出低电平 { TH0 = HighRH; TL0 = HighRL; jg = 1; } } void xfor(uint i) //x轴前进函数,前进多少步 { while(1) { if(xfb==4) { xa=xb=1; xb_=xa_=0; xfb=1; i--; delayms(N); if(i==0){xa=xb=0; break;} } if(xfb==1) { xb=xa_=1; xa=xb_=0; xfb=2; i--; delayms(N); if(i==0){xa_=xb=0; break;} } if(xfb==2) { xa_=xb_=1; xb=xa=0; xfb=3; //走步标志位 i--; delayms(N); if(i==0){xa_=xb_=0; break;} } if(xfb==3) { xa_=xb=0; xb_=xa=1; xfb=4; i--; delayms(N); if(i==0){xa=xb_=0; break;} } } } void xbac(uint i) //xxx后退函数 { while(1) { if(xfb==1) { xa_=xb=0; xb_=xa=1; xfb=4; i--; //走步标志位 delayms(N); if(i==0){xa=xb_=0; break;} } if(xfb==4) { xa_=xb_=1; xb=xa=0; xfb=3; i--; delayms(N); if(i==0){xa_=xb_=0; break;} } if(xfb==3) { xb=xa_=1; xa=xb_=0; xfb=2; //走步标志位 i--; delayms(N); if(i==0){xa_=xb=0; break;} } if(xfb==2) { xa=xb=1; xb_=xa_=0; xfb=1; i--; delayms(N); if(i==0){xa=xb=0; break;} } } } void yfor(uint i) //y轴前进函数 { while(1) { switch(yfb) { case 4:{a=b=1; b_=a_=0; yfb=1; i--; delayms(M); if(i==0){a=b=0;break;}} case 1:{b=a_=1; a=b_=0; yfb=2; i--; delayms(M); if(i==0){a_=b=0;break;}} case 2:{a_=b_=1; b=a=0; yfb=3; i--; delayms(M); if(i==0){a_=b_=0;break;}}
史海拾趣
|
转自:www.embed-training.com/ 触摸屏篇: Samsung-2.6.28 Patch: S3C6410 Android 触摸屏校准可以在应用层用tslib来触准,生成校准文件,也可以将校准数据直接写到内核触摸屏驱动里面。 下面我将XXXX6410 2.6.28的android的触摸屏patch ...… 查看全部问答> |
|
最近想做个项目参加比赛,想利用PDA嵌入一个软件,实现信息的交换,可是现在一头雾水不知道从什么地方开始,另外还想问下各位大虾,PDA能实现局域网无线通讯吗?… 查看全部问答> |
|
岗位描述: 1、嵌入式软件设计与开发。 2、根据项目需要进行软件技术支持。 3、嵌入式项目软件开发过程控制 任职要求: 1、熟悉linux开发环境,熟悉C/C++语言 2、具有 Linux、WinCE、VxWorks、ucos或其他至少一种嵌入式操作系统的开发、调 ...… 查看全部问答> |
|
直接存取I/O埠與記憶體(Direct access I/O and Memory) 網路上有一個工具程式名為WINIO,透過它我們可以輕易的存取記憶體與I/O埠,但是它使用了一些已經過時或未公開的函數,因為不知微軟何時會將這些函數移除,所以使用這些函數會有一定的危險性,雖然到目前32位元的Windows 7版本中還可使用。 在此, ...… 查看全部问答> |
|
想在内核模块中软件触发一个ACPI SCI。但是显示 ACPI Error.. No hander for GPE....。 不知道是不是端口弄错了。但是我查看了系统的端口映射表。和Intel ICH8手册上第一的有些不同。特别是GPE0_BLK。 我用的内核是2.6.18。 哪个兄弟对这个比较 ...… 查看全部问答> |
|
电源为AC220V±5%;用有保护接地线的三眼插座,插座数与投影屏数有关,一般控制器一个,三个投影屏用一路插座; 投影系统和大屏控制器及控制PC等要求同相供电; 电源电压要稳定,可靠,特别防止断电后立即加电。因此 ...… 查看全部问答> |
|
各位DX:小弟在用430f149做用户终端,要实现远程升级的功能。这势必要固定某些程序的位置,试问430的IAR c编译器有没有这个功能。怎么去实现,请DX赐教!… 查看全部问答> |
|
1. 目前,已经完成所有器件资料阅读,并初步理解。 2. 收到EEWORLD提供主要器件。 3. FPGA平台已经到位,利用联华众科的EP1C06的NIOSII平台。 4. 三相信号发生器接口板的DDB原理图设计完成 下面是DDB原理图,本原理图设计有许多0欧姆电阻 ...… 查看全部问答> |




