久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

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

QQ登錄

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

搜索
查看: 23994|回復(fù): 13
打印 上一主題 下一主題
收起左側(cè)

基于C語(yǔ)言的51單片機(jī)直線圓弧插補(bǔ)程序

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:77496 發(fā)表于 2015-5-9 17:27 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
經(jīng)過(guò)幾天的鉆研和調(diào)試,終于在51單片機(jī)上實(shí)現(xiàn)了二軸聯(lián)動(dòng),通過(guò)調(diào)用line(x1,y1,x2,y2,v)函數(shù)以及cytu(x1,y1,x2,a,b,r,v)和cyao(x1,y1,x2,a,b,r,v)三個(gè)命令便可實(shí)現(xiàn)任意圓弧和直線的插補(bǔ),注意任意二字,比如直線命令,可以是水平線可以是豎直線,可以是從左往右也可從右往左,可以當(dāng)做一個(gè)繪圖儀使用,如果愿意進(jìn)一步升級(jí),簡(jiǎn)單修改加個(gè)Z軸做成數(shù)控銑床的控制器亦未嘗不可。下面是整個(gè)源程序,有興趣的可以參考參考。

#include <REG51.h>
#include <FLOAT.h>
#include <MATH.h>
sbit mai0=P1^0;
sbit mai1=P1^1;
sbit shuru=P0^0;
sbit dir0=P1^6;
sbit dir1=P1^7;
void delay(unsigned int t){
         unsigned int g;
                      while(t!=0){
                       for(g=0;g++;g<600);
           t--;
           }
        }
void mc_p0(signed long m0,unsigned int n0)
                       {if(m0<0){
               m0=-m0;
         dir0=1;
         }
      else{dir0=0;}
      while(m0--!=0){
                     mai0=0;
                     delay(n0/2);
            mai0=1;
            delay(n0/2);
                 }
        }
void mc_p1(signed long m1,unsigned int n1)
                       {if(m1<0){
               m1=-m1;
         dir1=1;
         }
      else{dir1=0;}
      while(m1--!=0){mai1=0;
                     delay(n1/2);
            mai1=1;
            delay(n1/2);
                 }
        }

void line(float x0,float y0,float x1,float y1,unsigned int v0){
     float k=0;
     float x=0;
     float y=0;
     float ys=0;
     signed long yc=0;
     x=x0;
     ys=y0;
     k=(y1-y0)/(x1-x0);
     if(x0==x1){
                mc_p1((y1-y0)*2,50000/v0);}
     if(y0==y1){
                mc_p0((x1-x0)*2,50000/v0);}
     if((x0!=x1)&&(y0!=y1)){
       if(x0<x1){    while(x<x1){
              mc_p0(2,50000/v0);
        x=x+1;
        y=k*(x-x1)+y1;
        yc=y-ys;
        ys=y;
        mc_p1(yc*2,50000/v0);
           }
        }
       if(x0>x1){    while(x>x1){
              mc_p0(-2,50000/v0);
        x=x-1;
        y=k*(x-x1)+y1;
        yc=y-ys;
        ys=y;
        mc_p1(yc*2,50000/v0);
           }
        }
           }
     }


void cytu(float x3,float y3,float x4,float a1,float b1,
          float r1,unsigned int v1){
                float xx;
          float yy;
          float yys;
          signed int yyc;
    xx=x3;
    yys=y3;
    if(x3<x4){
        while(xx<x4){
              mc_p0(2,50000/v1);
        xx=xx+1;
        yy=b1+sqrt(r1*r1-(xx-a1)*(xx-a1));
        yyc=yy-yys;
        yys=yy;
        mc_p1(yyc*2,50000/v1);
          }
           }
     if(x3>x4){
        while(xx>x4){
              mc_p0(-2,50000/v1);
        xx=xx-1;
        yy=b1+sqrt(r1*r1-(xx-a1)*(xx-a1));
        yyc=yy-yys;
        yys=yy;
        mc_p1(yyc*2,50000/v1);
        
          }
           }
        }
void cyao(float x5,float y5,float x6,float a2,float b2,
          float r2,unsigned int v2){
                float xxx;
          float yyy;
          float yyys;
          signed int yyyc;
    xxx=x5;
    yyys=y5;
    if(x5<x6){
        while(xxx<x6){
              mc_p0(2,50000/v2);
        xxx=xxx+1;
        yyy=b2-sqrt(r2*r2-(xxx-a2)*(xxx-a2));
        yyyc=yyy-yyys;
        yyys=yyy;
        mc_p1(yyyc*2,50000/v2);
          }
           }
     if(x5>x6){
        while(xxx>x6){
              mc_p0(-2,50000/v2);
        xxx=xxx-1;
        yyy=b2-sqrt(r2*r2-(xxx-a2)*(xxx-a2));
        yyyc=yyy-yyys;
        yyys=yyy;
        mc_p1(yyyc*2,50000/v2);
          }
           }
        }

void main (void){
                while(1){
         while(shuru==0){
       line(0,0,10,10,5); //直線命令,調(diào)用格式line(起點(diǎn)坐標(biāo)x1,y1,終點(diǎn)坐標(biāo)x2,y2,速度v)
       delay(100000);  //延時(shí)
       line(10,10,0,0,5);
       delay(100000);
       line(0,0,-20,0,5);
       delay(60000);
        cytu(-20,0,20,0,0,20,5); //位于本身圓心上面的圓弧命令,調(diào)用格式cytu(起點(diǎn)x1,y1,終點(diǎn)x2,圓心a,b,半徑r,速度v)
       delay(60000);
        cyao(20,0,60,40,0,20,5);  //位于本身圓心下面的圓弧命令,調(diào)用格式cyao(起點(diǎn)x1,y1,終點(diǎn)x2,圓心a,b,半徑r,速度v)
       delay(60000);
        cytu(60,0,20,40,0,20,5);
       delay(60000);
        cyao(20,0,-20,0,0,20,5); }


評(píng)分

參與人數(shù) 1黑幣 +5 收起 理由
qgcwh + 5 很給力!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂2 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:81653 發(fā)表于 2015-6-18 19:53 | 只看該作者
這個(gè)是對(duì)應(yīng)g代碼的?
回復(fù)

使用道具 舉報(bào)

板凳
ID:81653 發(fā)表于 2015-6-18 20:40 | 只看該作者
樓主在嗎?
回復(fù)

使用道具 舉報(bào)

地板
ID:90474 發(fā)表于 2015-9-18 18:32 | 只看該作者
本帖最后由 yanzaihong 于 2015-9-19 11:52 編輯

樓主該程序,我遇到個(gè)問(wèn)題。就是直線插補(bǔ)中當(dāng):如X0 = 0; Y0 = 0;  X1 = 40; Y1  = 20;  X1 的值小于Y1的值時(shí),好像運(yùn)行的不對(duì)!
回復(fù)

使用道具 舉報(bào)

5#
ID:98031 發(fā)表于 2015-12-21 00:23 | 只看該作者
等了好久終于等到了大神
回復(fù)

使用道具 舉報(bào)

6#
ID:168756 發(fā)表于 2017-3-7 11:33 | 只看該作者
謝謝,學(xué)習(xí)中
回復(fù)

使用道具 舉報(bào)

7#
ID:168756 發(fā)表于 2017-3-7 11:35 | 只看該作者
hippo6 發(fā)表于 2015-6-18 19:53
**** 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽 ****

肯定要轉(zhuǎn)譯的,G代碼是另一回事。也是G代碼要下傳下來(lái),由單片機(jī)再翻成運(yùn)作。
回復(fù)

使用道具 舉報(bào)

8#
ID:184537 發(fā)表于 2017-3-29 17:11 | 只看該作者
師傅 你太厲害了
回復(fù)

使用道具 舉報(bào)

9#
ID:193180 發(fā)表于 2017-5-17 19:18 | 只看該作者
你好,有原理圖嗎?我也想做一個(gè)來(lái)玩?
回復(fù)

使用道具 舉報(bào)

10#
ID:193180 發(fā)表于 2017-5-17 19:20 | 只看該作者
你好,我是初學(xué)者,也想做一個(gè)玩,能給張?jiān)韴D嗎,謝謝了
回復(fù)

使用道具 舉報(bào)

11#
ID:19250 發(fā)表于 2021-10-6 07:38 | 只看該作者
感謝無(wú)私共享,你的程序很有啟發(fā),為別人指出了一個(gè)方向。
回復(fù)

使用道具 舉報(bào)

12#
ID:401973 發(fā)表于 2022-4-24 12:41 | 只看該作者
正在研究
回復(fù)

使用道具 舉報(bào)

13#
ID:1026584 發(fā)表于 2022-5-30 20:56 | 只看該作者
請(qǐng)問(wèn)這個(gè)是如何實(shí)現(xiàn)繪圖的呢?
回復(fù)

使用道具 舉報(bào)

14#
ID:1030689 發(fā)表于 2022-11-24 21:46 | 只看該作者
這個(gè)正是我需要的
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美精品99| 在线免费观看成人 | 国产精品99999| 亚洲国产aⅴ成人精品无吗 综合国产在线 | 久草视频在线播放 | 中文字幕精品一区 | 狼人伊人影院 | 中文字幕一区二区三区四区五区 | 在线观看国产 | 午夜在线精品 | 一区二区精品 | 一区二区精品 | 精品欧美乱码久久久久久 | 久久精品欧美一区二区三区不卡 | 欧美精品在线免费观看 | 日韩免费毛片视频 | 亚洲二区在线 | 日本二区 | 亚洲一区二区三区四区五区午夜 | 日日碰狠狠躁久久躁96avv | 亚洲成人福利在线观看 | 国产精品久久国产精品 | 精品一区二区在线视频 | 99视频免费在线观看 | 精品国产欧美一区二区三区不卡 | 国产成人av免费看 | 中文字幕精品一区二区三区精品 | 一级毛片在线播放 | 交专区videossex农村 | 久久久久香蕉视频 | 日韩一区二区三区视频在线观看 | 天天天天天操 | 日韩不卡在线 | 欧美伊人久久久久久久久影院 | 国产免费福利小视频 | 国产日韩欧美一区二区在线播放 | 观看毛片| 一级黄色片免费在线观看 | 欧美激情一区二区三区 | 美女露尿口视频 | 国产亚洲精品精品国产亚洲综合 |