找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

為什么STC12C5A雕刻機固件和上位機連不上 求幫助

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:688775 發(fā)表于 2020-2-6 21:25 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 啊哈哈哈啊哈 于 2020-2-7 10:43 編輯

為什么STC12C5A雕刻機固件和上位機連不上,剛從網(wǎng)上下了個智成雕刻機上位機和固件下進去了,就是連不上,有沒有高手幫忙看看程序有問題嗎?

21ic下載_基于51單片機的三軸雕刻機上位機 使用說明 keil源碼.rar

3.86 MB, 下載次數(shù): 20, 下載積分: 黑幣 -5

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

使用道具 舉報

沙發(fā)
ID:688775 發(fā)表于 2020-2-7 10:44 | 只看該作者
  #include <STC12C5A60S2.H> #define uchar unsigned char #define uint unsigned int #define FOSC 12000000L      //System frequenc #define BAUD 2400           //UART baudrate sbit dirx=P1^0;        //方向 sbit stepx=P1^1;       //脈沖 sbit diry=P1^2;        //方向 sbit stepy=P1^3;       //脈沖 sbit hongwai=P1^4;       //紅外管 uint x=0; uint y=0; bit ruoguang=1;           //弱光定位 uchar shuju[5];//頭,功能碼,顏色,附加參數(shù),lrc uchar lrc(uchar *shu,chang)                  //lrc校驗 {         uchar ii=0,ff=0;         for(ii=0;ii<chang;ii++)         {                 ff=ff+shu[ii];         }         ff=~ff+1;         return ff; }  void yanshi(uint a)                                //短時間延時 {                 while(a--);         } void yanshi2(uint a)                        //長時間延時 {                 uchar j=100;         while(a--)         {                 j=100;                 while(j--);         }                  } void UartInit(void)                //2400bps@12.000MHz {     SCON = 0x50;            //8-bit variable UART       TMOD = 0x20;            //Set Timer1 as 8-bit auto reload mode     TH1 = TL1 = -(FOSC/12/32/BAUD); //Set auto-reload vaule     TR1 = 1;                //Timer1 start run     ES = 0;                 //Enable UART interrupt     EA = 0;                 //Open master interrupt switch } void go(bit l)//1為X,0為Y.每調(diào)用一次相應(yīng)的軸走一個像素,對應(yīng)步進電機走8個脈沖 {         uchar i=0;         if(l)         {                 for(i=0;i<8;i++)                 {stepx=1;yanshi(1000);stepx=0;yanshi(1000);}//一個像素走8步         }         else         {                 for(i=0;i<8;i++)                 {stepy=1;yanshi(1000);stepy=0;yanshi(1000);        }         } } void zhixing()                        //對上位機發(fā)來的數(shù)據(jù)進行處理 {         uint j=0;         switch(shuju[1])         {                 case 1:                         //x軸減1                         dirx=0;go(1);                 break;                 case 2:                         //x軸加1                         dirx=1;go(1);                 break;                 case 3:                         //Y軸減1                         diry=1;go(0);                 break;                 case 4:                         //Y軸加1                         diry=0;go(0);                 break;                 case 5:                         //復(fù)位系統(tǒng)的x,y坐標,上位機和下位機都復(fù)位到0,0.                         x=0;y=0;                 break;                 case 6:                         //點燈亮燈                         j=shuju[2];                         j=j<<8;                         j=j|shuju[3];                                  hongwai=1;                         yanshi2(j);                         hongwai=0;                 break;                 case 7:                          //打開弱光定位,這個很實用哦                         ruoguang=1;                 break;                 case 8:                          //關(guān)閉弱光定位,這個很實用哦                         ruoguang=0;                 break;         }         shuju[0]=0;                 //每次執(zhí)行完,清空接受數(shù)組         shuju[1]=0;         shuju[2]=0;         shuju[3]=0;         shuju[4]=0; } void main() {         uchar shu=0,jishu=0;         hongwai=0;         UartInit();         while(1)                        //大循環(huán)         {                                                  while(!RI)                                          //在這個循環(huán)里,實現(xiàn)弱光定位                 {                                                        //原理很簡單撒,就是在紅外管                         if(ruoguang)                        //端口發(fā)出不同占空比的方波就行了。                         {                                                //單片機的大部分時間都是在這個循環(huán)里。                                 hongwai=1;                                 yanshi(34);                                 hongwai=0;                                 yanshi(30);                         }                 }                 RI=0;                 shu = SBUF;                                   //有數(shù)據(jù)過來就讀取                 if(jishu==0)                           //判斷讀數(shù)計數(shù)器為零的時候                 {                                                   //讀到的數(shù)是不是數(shù)據(jù)頭                         if(shu==0xff)                   //只有第一個數(shù)是0xff才往下面讀哦!                         {                                 shuju[0]=0xff;                                 jishu++;                         }                         else                                                           {                                 jishu=0;                   //要不是的話就重新讀。                         }                 }                 else                 {                         shuju[jishu]=shu;           //從第二個數(shù)開始就直接放在數(shù)組里                         jishu++;                           //然后計數(shù)加1.                                                          if(jishu==5)                   //判斷是否讀完4個數(shù)                         {                                         jishu=0;                   //讀完后,清零                                 if(lrc(shuju,4)==shuju[4])          //驗證數(shù)據(jù)                                 {                                         zhixing();                                 //執(zhí)行命令                                         SBUF=99;                                 //返回確認碼0x63,也就是99                                         while(!TI);                                         TI=0;                                 }                         }                 }                                          } }
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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