找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 31937|回復(fù): 64
收起左側(cè)

51單片機(jī)激光雕刻機(jī)制作 含易語(yǔ)言上位機(jī)源碼等資料

  [復(fù)制鏈接]
ID:278155 發(fā)表于 2018-1-20 22:51 | 顯示全部樓層 |閱讀模式
剛剛注冊(cè)的論壇,純純的萌新。
習(xí)慣性的瀏覽論壇版塊中的精華帖子,看看到很多前輩大佬的作品。其中自己也做過(guò)一些差不多的項(xiàng)目,后悔當(dāng)初沒(méi)來(lái)論壇學(xué)習(xí)下,走過(guò)不少?gòu)澛钒 ?br /> 剛剛瀏覽到本版塊的時(shí)候看到
基于STM32的簡(jiǎn)易激光雕刻機(jī)這個(gè)帖子。就像順路我也發(fā)一個(gè)吧
首先這個(gè)激光雕刻機(jī)是沒(méi)有實(shí)物了的,這是我大一的時(shí)候參加校內(nèi)競(jìng)賽做的。當(dāng)然這種東西的水平是拿不到什么獎(jiǎng)的啦。后來(lái)同學(xué)拿去玩把激光頭給燒了就直接把他分尸了。
幸虧我有保存些資料的習(xí)慣,不然真的尸骨無(wú)存了。
忘記當(dāng)初為什么要做這個(gè)東西了,可能是為了后來(lái)的CNC雕刻機(jī)做的初代版本練手,具體原因我記不清了。
一共貌似用了一周左右的時(shí)間,使用的是STC89C52RC單片機(jī),也是當(dāng)時(shí)我唯一會(huì)的啦。XY軸電機(jī)使用拆機(jī)光驅(qū),光驅(qū)來(lái)自實(shí)驗(yàn)室古董臺(tái)式機(jī),當(dāng)時(shí)還拆了軟驅(qū)的很多人都沒(méi)見(jiàn)過(guò)軟驅(qū)了現(xiàn)在。
激光頭是后來(lái)才郵過(guò)來(lái)的,12V 500mW應(yīng)該,反正很小。前面幾天測(cè)試使用的油筆芯畫(huà)圖的。
機(jī)架用的是文具店的A4板夾就是這個(gè)樣子的

8

8

我們記得是買(mǎi)了好幾個(gè),用壁紙刀劃開(kāi),用膠槍拼成的機(jī)架
由于當(dāng)時(shí)單片機(jī)水平垃圾,所以下位機(jī)沒(méi)有處理過(guò)多的程序。大部分的處理是通過(guò)上位機(jī)進(jìn)行的。
上位機(jī)用的是易語(yǔ)言,話說(shuō)這個(gè)也是第一次,當(dāng)時(shí)找破jie就找了一天多。
還好是中文編程上手快。
上位機(jī)支持拖拽,可以轉(zhuǎn)換灰度圖。其他記不清了。
因?yàn)槭褂靡渍Z(yǔ)言寫(xiě)的因此很可能或者說(shuō)肯定360等安全軟件會(huì)報(bào)毒,但是放心吧各位,當(dāng)初我那個(gè)水平是沒(méi)有能力的。源碼也會(huì)上傳大家自己修改編譯就好
當(dāng)初也百度搜索下載了很多大神的文件上位機(jī)等,也一并上傳了。
等下。。。我看看還有啥
啊哈哈 這個(gè)后來(lái)去參加過(guò)博創(chuàng)杯,但是呢~并沒(méi)有完成參賽手續(xù),學(xué)校的某些領(lǐng)導(dǎo)公務(wù)過(guò)于繁忙而忘記了給組委會(huì)交付一些文件
但是當(dāng)初為博創(chuàng)杯準(zhǔn)備的視頻還有。不過(guò)上傳視頻還得等待審核,只好等等啦


剛剛?cè)ブ販亓讼挛壹迅绲囊曨l,濃郁的非主流風(fēng)格哈哈哈
由于時(shí)間倉(cāng)促,后來(lái)沒(méi)有參加上比賽有些心灰意冷,這期間同學(xué)就給拆了。所以就沒(méi)有了后續(xù)版本。運(yùn)動(dòng)軌跡優(yōu)化啥的都沒(méi)有做,現(xiàn)在是單純一行行的打點(diǎn)。諸位誰(shuí)有空可以接著做
開(kāi)發(fā)手冊(cè)
一、系統(tǒng)運(yùn)行環(huán)境
       上位機(jī)軟件支持x86、x64構(gòu)架的Windows操作系統(tǒng)(98以上)
       上位機(jī)軟件屬于小型軟件不要求系統(tǒng)配置,windows運(yùn)行環(huán)境即可運(yùn)行。
       下位機(jī)自帶220v變壓電源,支持210~240v交流電源
二、系統(tǒng)配置
       將激光雕刻機(jī)通電、放置于水平穩(wěn)定的平臺(tái)上,環(huán)境要求通風(fēng)。
       打開(kāi)上位機(jī)軟件,將激光雕刻機(jī)自帶的USB線連接,點(diǎn)擊上位機(jī)刷新按鈕,軟件會(huì)自動(dòng)檢測(cè)使用的串口。(串口通訊需要計(jì)算機(jī)安裝CH340USB轉(zhuǎn)串口驅(qū)動(dòng),具體方法自行尋找)
       選擇打開(kāi)的串口,點(diǎn)擊打開(kāi)按鍵。點(diǎn)擊激光控制按鍵檢測(cè)連接是否正常。
       將需要打印的材料放置于激光頭下部,可以通過(guò)軟件設(shè)置中控制按鍵微調(diào)激光頭位置、激光軸移動(dòng)速度等。
       選擇文字模式或圖片模式,也可以通過(guò)快捷鍵ctrl+M快速切換。
       圖片模式支持BMP等大多數(shù)圖片格式,用戶可以通過(guò)常規(guī)文件打開(kāi)方式或快捷拖動(dòng)到編輯區(qū)來(lái)添加圖片。
       文字模式下、用戶可以在編輯區(qū)中編輯、排版需要打印的內(nèi)容。
三、說(shuō)明
       更多功能說(shuō)明請(qǐng)查看上位機(jī)軟件說(shuō)明部分。
/*z地址定義
50 x+前進(jìn)
51 x-
52 y+
53 y-
54/55 字寬
56 前進(jìn)步
57 激光開(kāi)關(guān)
58/59 激光強(qiáng)度
60 x軸速度
61 y軸速度
62 開(kāi)始打印0,57
63 暫停
64 停止標(biāo)志
65 bmp灰度圖標(biāo)志位
100開(kāi)始時(shí)灰度圖數(shù)據(jù)
*/

單片機(jī)下位機(jī)源程序如下:
  1. #include <reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. #define N z[60]           //X速度
  5. #define M z[61]           //Y速度
  6. //#define zil 54]*256+z[55]
  7. unsigned char code Z1[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; // 正轉(zhuǎn)
  8. //unsigned char code F1[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01}; //反轉(zhuǎn)
  9. sbit jg=P2^0;
  10. sbit EN1=P2^7;
  11. sbit EN2=P2^6;
  12. sbit EN3=P2^5;
  13. sbit EN4=P2^4;
  14. sbit led=P2^1;//指示燈
  15. uchar xdata z[500]={0};//緩存
  16. uchar buff[3];//串口緩存
  17. uchar x1,x0,y1,y0,cont2=0;
  18. uchar xfb=4,yfb=4;//走步標(biāo)志位
  19. uchar x,y,k,temp,t;//變量定義,有些沒(méi)有用
  20. char i,j;
  21. uint h=0,jiguang;
  22. void delayms(uint xms)                                
  23. {   
  24.         uint i,j;
  25.         for(i=xms;i>0;i--)                      //i=xms即延時(shí)約xms毫秒
  26.                 for(j=110;j>0;j--);
  27. }


  28. /**********************************************************************
  29. *                                                                                                                                          *
  30. *              步進(jìn)電機(jī)驅(qū)動(dòng)                                  *
  31. *                                                                                                                                          *
  32. ***********************************************************************/

  33. /********x方向正轉(zhuǎn)***********/
  34. void  motor_fxw(uint flag)                 
  35. {
  36.          while(1)
  37.          {
  38.     P0=Z1[i];
  39.                 delayms(N);
  40.                 flag--;
  41.           i++;
  42.           if(i>7)
  43.                         i=0;
  44.                 if(flag==0)
  45.                         break;
  46.          }
  47. }

  48. /********x方向逆轉(zhuǎn)***********/
  49. void  motor_fxz(uint flag)                 
  50. {
  51.     while(1)
  52.          {
  53.     P0=Z1[i];
  54.                 delayms(N);
  55.                 flag--;
  56.           i--;
  57.           if(i<0)
  58.                         i=7;
  59.                 if(flag==0)
  60.                         break;
  61.          }
  62. }

  63. /********y方向正轉(zhuǎn)***********/
  64. void  motor_fyw(uint flag)                 
  65. {
  66.     while(1)
  67.          {
  68.     P1=Z1[j];
  69.           delayms(M);
  70.                 flag--;
  71.           j++;
  72.           if(j>7)
  73.                         j=0;
  74.                 if(flag==0)
  75.                         break;
  76.          }
  77. }

  78. /********y方向逆轉(zhuǎn)***********/
  79. void  motor_fyz(uint flag)                 
  80. {
  81.      while(1)
  82.          {
  83.     P1=Z1[j];
  84.                 delayms(M);
  85.                 flag--;
  86.           j--;
  87.           if(j<0)
  88.                         j=7;
  89.                 if(flag==0)
  90.                         break;
  91.          }
  92. }
  93. /*****************打點(diǎn)完畢激光移至原點(diǎn)****************************/
  94. void huanyuan(uint zix,uint ziy)
  95. {
  96.           while(1)
  97.                   motor_fxz(zix);
  98.           while(1)
  99.                   motor_fyz(ziy);        
  100. }


  101. void dazi(uint zik,uchar bu)//打印函數(shù)                  
  102. {
  103.    uint x;
  104.         uint s;
  105.                 jg=1;

  106.                         for(x=0;x<zik;x++)     //執(zhí)行zik個(gè)循環(huán),x軸右移zik步
  107.                         {
  108.                           while(z[63]);//暫停等待
  109.                                 if(z[64]==1) break;//停止標(biāo)志 跳出循環(huán)
  110.                                 s=z[99+x]*(z[58]*256+z[59])/100;        
  111.                           jg=0;//開(kāi)激光
  112.                                 delayms(s);
  113.                             jg=1;                //關(guān)閉激光
  114. //                 if(y%2==0)
  115.                       motor_fxw(1);                         //x軸前進(jìn)一步
  116. //                        else
  117. //                                         motor_fxz(1);                         //x軸后退一步
  118.                         }
  119.                      if(z[64]==1)    z[64]=0; //停止標(biāo)志 跳出循環(huán)
  120.                      else                        //y軸進(jìn)一行
  121.                                  {
  122.                                         y++;
  123.                                  motor_fxz(zik);
  124.                            motor_fyw(1);               
  125.                                          }
  126. //                if(y==zil)
  127. //                {               
  128. //                        huanyuan(zik,ziy);
  129. //                }                        
  130. }


  131. /* 串口配置函數(shù),baud-通信波特率 */
  132. void ConfigUART(unsigned int baud)
  133. {
  134.     SCON  = 0x50;  //配置串口為模式1
  135.     TMOD &= 0x0F;  //清零T1的控制位
  136.     TMOD |= 0x20;  //配置T1為模式2
  137.     TH1 = 256 - (11059200/12/32)/baud;  //計(jì)算T1重載值
  138.     TL1 = TH1;     //初值等于重載值
  139.     ET1 = 0;       //禁止T1中斷
  140.     ES  = 1;       //使能串口中斷
  141.     TR1 = 1;       //啟動(dòng)T1
  142. }


  143. void chuanlo() interrupt 4
  144. {
  145.   if(RI)
  146.   {
  147.    
  148.      buff[cont2]=SBUF;//每次3字節(jié),地址高,地址低,數(shù)據(jù),,
  149.            cont2++;
  150.      if(cont2==3)//每收3個(gè)字節(jié),把數(shù)據(jù)寫(xiě)入地址中
  151.            {
  152.             z[(buff[0]*256)+buff[1]]=buff[2];
  153.                   cont2=0;
  154.            }
  155.          RI=0;
  156.   }
  157. }

  158. main()
  159. {  
  160.    EA=1;
  161.    P0=0xff;
  162.   ConfigUART(9600)        ;
  163.         z[60]=15;//默認(rèn)的參數(shù)
  164.         z[61]=50;
  165.         z[56]=1;
  166.         z[62]=0;
  167.         jg=1;
  168.         cont2=0;
  169.           EN1=1;
  170.           EN2=1;
  171.           EN3=1;
  172.           EN4=1;
  173.           y=0;
  174.           i=0;
  175.           j=0;
  176.           t=1;
  177. //        z[54]=0;
  178. //        z[55]=44;
  179. //        z[60]=50;
  180. //        z[61]=50;

  181.    while(1)
  182.    {
  183.     if(z[57]==100){jg=0;}//上位機(jī)指令處理,開(kāi)關(guān)激光               
  184.         if(z[57]==0) {jg=1;}
  185. ////         //if(z[57]==100){jg=~jg;z[57]=0;}
  186. ////          if(cont2!=0) led=1;  else led=0;//指示通信是否可用  
  187. ////         // if(cont2!=0) led=0;  else led=1;
  188.     if(z[50]>0){motor_fxw(t);z[50]=0;}   //x軸前進(jìn)一步
  189.           if(z[51]>0){motor_fxz(t);z[51]=0;}
  190.           if(z[52]>0){motor_fyz(t);z[52]=0;}
  191.           if(z[53]>0){motor_fyw(t);z[53]=0;}


  192.      if(z[62])//開(kāi)始打印標(biāo)志
  193.           {
  194.             dazi(z[54]*256+z[55],z[56]);
  195.                 z[62]=0;//一行打印完成
  196.                 SBUF=1;//發(fā)送信息,表示打印完成
  197.           while(!TI);
  198.                 TI=0;
  199.           }
  200.    
  201.   }


  202. }
復(fù)制代碼
0.png

所有資料51hei提供下載:
各版本上位機(jī).zip (3.93 MB, 下載次數(shù): 881)


評(píng)分

參與人數(shù) 6黑幣 +131 收起 理由
zwk34 + 5 共享資料的黑幣獎(jiǎng)勵(lì)!
zqy181818 + 7 共享資料的黑幣獎(jiǎng)勵(lì)!
紅塵過(guò)客 + 5 共享資料的黑幣獎(jiǎng)勵(lì)!
qjzyx + 6 贊一個(gè)!
蘆葦劫 + 8 贊一個(gè)!
admin + 100 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

ID:278155 發(fā)表于 2018-1-21 00:39 | 顯示全部樓層
剛要睡覺(jué)就被通知審核通過(guò)了,趕快用手機(jī)查了一下。然后發(fā)現(xiàn)登陸的賬號(hào)并沒(méi)有帖子。好奇怪啊。趕快起來(lái)開(kāi)電腦看一眼。我的天應(yīng)該有兩個(gè)賬號(hào)了,名字差了一個(gè)字母。上次注冊(cè)之后沒(méi)有怎么登陸,賬號(hào)密碼記憶有點(diǎn)混淆了,今天逛論壇以為自己沒(méi)有賬號(hào)就注冊(cè)了,然后一直沒(méi)有發(fā)覺(jué)自己用戶名打錯(cuò)了啊啊啊
真是不開(kāi)心的一天。
樓上說(shuō)要把全部相關(guān)資料共享的,之前百度云上傳需要一些時(shí)間就直接發(fā)表。剛剛百度云上傳好了。
鏈接:pan點(diǎn)baidu點(diǎn)com/s/1brffs67 (注意點(diǎn)替換一下.)密碼:saht
網(wǎng)絡(luò)上面下載的,看過(guò)但是沒(méi)有驗(yàn)證過(guò)可靠性。既然是網(wǎng)絡(luò)搜集的,相信原作者不會(huì)反對(duì)我發(fā)出來(lái)的。
好啦,郁悶ing睡覺(jué)取
回復(fù)

使用道具 舉報(bào)

ID:153902 發(fā)表于 2018-2-1 20:50 | 顯示全部樓層
不錯(cuò),謝謝分享。!
回復(fù)

使用道具 舉報(bào)

ID:282909 發(fā)表于 2018-2-7 19:05 | 顯示全部樓層
好好學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

ID:266116 發(fā)表于 2018-2-7 22:49 | 顯示全部樓層
謝謝分享
回復(fù)

使用道具 舉報(bào)

ID:240034 發(fā)表于 2018-3-2 16:07 | 顯示全部樓層
DIY樂(lè)趣,
回復(fù)

使用道具 舉報(bào)

ID:111683 發(fā)表于 2018-3-3 23:25 | 顯示全部樓層
謝謝分享
回復(fù)

使用道具 舉報(bào)

ID:286137 發(fā)表于 2018-3-8 21:17 | 顯示全部樓層
這個(gè)是,,上位機(jī)把圖形轉(zhuǎn)換成G代碼,然后傳給下位機(jī),下位機(jī)再解析G代碼控制步進(jìn)電機(jī)嗎
回復(fù)

使用道具 舉報(bào)

ID:288891 發(fā)表于 2018-3-9 19:57 | 顯示全部樓層
有原理圖沒(méi)有啊?
回復(fù)

使用道具 舉報(bào)

ID:46475 發(fā)表于 2018-3-30 15:53 | 顯示全部樓層
共享資料的黑幣獎(jiǎng)勵(lì)!
回復(fù)

使用道具 舉報(bào)

ID:300101 發(fā)表于 2018-4-4 14:20 | 顯示全部樓層
,謝謝分享。!
回復(fù)

使用道具 舉報(bào)

ID:17521 發(fā)表于 2018-5-4 11:08 | 顯示全部樓層
很好很不錯(cuò),樓主威武
回復(fù)

使用道具 舉報(bào)

ID:320474 發(fā)表于 2018-5-15 15:30 | 顯示全部樓層
樓主無(wú)私,感謝!
回復(fù)

使用道具 舉報(bào)

ID:325257 發(fā)表于 2018-5-16 14:40 | 顯示全部樓層

樓主無(wú)私,感謝!
回復(fù)

使用道具 舉報(bào)

ID:326305 發(fā)表于 2018-5-25 22:00 | 顯示全部樓層
學(xué)習(xí)學(xué)習(xí),真好
回復(fù)

使用道具 舉報(bào)

ID:338412 發(fā)表于 2018-5-28 22:13 | 顯示全部樓層
謝謝樓主,試著和單片機(jī)連接了一下,通信正常,剩下就買(mǎi)備件了
回復(fù)

使用道具 舉報(bào)

ID:302712 發(fā)表于 2018-6-18 14:41 | 顯示全部樓層
學(xué)習(xí)中,謝謝分享
回復(fù)

使用道具 舉報(bào)

ID:187559 發(fā)表于 2018-7-14 17:09 來(lái)自觸屏版 | 顯示全部樓層
謝謝樓主的分享
回復(fù)

使用道具 舉報(bào)

ID:106794 發(fā)表于 2018-8-2 16:05 | 顯示全部樓層
感謝分享
回復(fù)

使用道具 舉報(bào)

ID:140183 發(fā)表于 2018-8-25 07:42 | 顯示全部樓層
太好啦!謝謝!
回復(fù)

使用道具 舉報(bào)

ID:389882 發(fā)表于 2018-8-25 11:36 | 顯示全部樓層
你好。我想請(qǐng)教一下,有沒(méi)辦法用Arduino開(kāi)發(fā)出二氧化碳激光管的雕刻機(jī),
回復(fù)

使用道具 舉報(bào)

ID:395511 發(fā)表于 2018-9-8 23:46 | 顯示全部樓層
很好的i東西哦 收下了 謝了
回復(fù)

使用道具 舉報(bào)

ID:187675 發(fā)表于 2018-9-9 09:28 | 顯示全部樓層
謝謝樓主的分享
回復(fù)

使用道具 舉報(bào)

ID:243394 發(fā)表于 2018-9-11 13:58 | 顯示全部樓層
謝謝分享。!
回復(fù)

使用道具 舉報(bào)

ID:361002 發(fā)表于 2018-9-24 09:23 | 顯示全部樓層
謝謝分享
回復(fù)

使用道具 舉報(bào)

ID:404172 發(fā)表于 2018-10-3 17:06 | 顯示全部樓層
109行的bu參數(shù)是干什么的?
回復(fù)

使用道具 舉報(bào)

ID:404696 發(fā)表于 2018-10-4 20:34 | 顯示全部樓層
謝謝分享
回復(fù)

使用道具 舉報(bào)

ID:204213 發(fā)表于 2018-11-11 16:17 | 顯示全部樓層
是不是還要有電路圖呀
回復(fù)

使用道具 舉報(bào)

ID:65956 發(fā)表于 2018-11-14 13:29 | 顯示全部樓層
謝謝分享,學(xué)習(xí)一下
回復(fù)

使用道具 舉報(bào)

ID:426835 發(fā)表于 2018-11-15 08:36 | 顯示全部樓層
學(xué)習(xí)下
回復(fù)

使用道具 舉報(bào)

ID:426941 發(fā)表于 2018-11-15 11:14 | 顯示全部樓層
找資料 慢慢學(xué)
回復(fù)

使用道具 舉報(bào)

ID:434779 發(fā)表于 2018-11-28 14:28 | 顯示全部樓層
很想自己做個(gè)玩玩,先學(xué)習(xí)一下。
回復(fù)

使用道具 舉報(bào)

ID:437546 發(fā)表于 2018-12-2 10:53 | 顯示全部樓層

不錯(cuò),謝謝分享!。
回復(fù)

使用道具 舉報(bào)

ID:446566 發(fā)表于 2018-12-21 21:34 | 顯示全部樓層
感謝分享
回復(fù)

使用道具 舉報(bào)

ID:471805 發(fā)表于 2019-1-22 19:53 | 顯示全部樓層
請(qǐng)問(wèn)樓主,我想用易語(yǔ)言編寫(xiě)個(gè)馬林3d打印機(jī)的上位機(jī),發(fā)什么代碼過(guò)去馬林固件都重啟,不知道應(yīng)該用什么格式的數(shù)據(jù)發(fā)送.郁悶中.
回復(fù)

使用道具 舉報(bào)

ID:471375 發(fā)表于 2019-2-9 22:47 來(lái)自觸屏版 | 顯示全部樓層
厲害厲害,很不錯(cuò)
回復(fù)

使用道具 舉報(bào)

ID:479395 發(fā)表于 2019-2-22 16:36 | 顯示全部樓層
剛來(lái)不知道怎么下載
回復(fù)

使用道具 舉報(bào)

ID:33634 發(fā)表于 2019-4-1 22:21 | 顯示全部樓層
謝謝分享。
回復(fù)

使用道具 舉報(bào)

ID:503478 發(fā)表于 2019-4-2 22:29 | 顯示全部樓層

謝謝分享。
回復(fù)

使用道具 舉報(bào)

ID:210861 發(fā)表于 2019-4-10 08:14 | 顯示全部樓層
請(qǐng)問(wèn)樓主,上位機(jī)用的什么軟件呀?謝謝
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表