欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
為什么STC12C5A雕刻機固件和上位機連不上 求幫助
[打印本頁]
作者:
啊哈哈哈啊哈
時間:
2020-2-6 21:25
標題:
為什么STC12C5A雕刻機固件和上位機連不上 求幫助
本帖最后由 啊哈哈哈啊哈 于 2020-2-7 10:43 編輯
為什么STC12C5A雕刻機固件和上位機連不上,剛從網上下了個智成雕刻機上位機和固件下進去了,就是連不上,有沒有高手幫忙看看程序有問題嗎?
21ic下載_基于51單片機的三軸雕刻機上位機 使用說明 keil源碼.rar
2020-2-7 10:42 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
3.86 MB, 下載次數: 20, 下載積分: 黑幣 -5
作者:
啊哈哈哈啊哈
時間:
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];//頭,功能碼,顏色,附加參數,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.每調用一次相應的軸走一個像素,對應步進電機走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() //對上位機發來的數據進行處理 { 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: //復位系統的x,y坐標,上位機和下位機都復位到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: //關閉弱光定位,這個很實用哦 ruoguang=0; break; } shuju[0]=0; //每次執行完,清空接受數組 shuju[1]=0; shuju[2]=0; shuju[3]=0; shuju[4]=0; } void main() { uchar shu=0,jishu=0; hongwai=0; UartInit(); while(1) //大循環 { while(!RI) //在這個循環里,實現弱光定位 { //原理很簡單撒,就是在紅外管 if(ruoguang) //端口發出不同占空比的方波就行了。 { //單片機的大部分時間都是在這個循環里。 hongwai=1; yanshi(34); hongwai=0; yanshi(30); } } RI=0; shu = SBUF; //有數據過來就讀取 if(jishu==0) //判斷讀數計數器為零的時候 { //讀到的數是不是數據頭 if(shu==0xff) //只有第一個數是0xff才往下面讀哦! { shuju[0]=0xff; jishu++; } else { jishu=0; //要不是的話就重新讀。 } } else { shuju[jishu]=shu; //從第二個數開始就直接放在數組里 jishu++; //然后計數加1. if(jishu==5) //判斷是否讀完4個數 { jishu=0; //讀完后,清零 if(lrc(shuju,4)==shuju[4]) //驗證數據 { zhixing(); //執行命令 SBUF=99; //返回確認碼0x63,也就是99 while(!TI); TI=0; } } } } }
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1