版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、#include #include #include funs.h/* 名稱 : motor.c* 功能 : XY 軸電機正反轉(zhuǎn)*/void DelayMs(int z)/ 延時 msint x,y;for(x=z;x0;x-)for(y=12000;y0;y-);void motor_init()PINSEL1 &=(0xFF22);IO0DIR |=(0xF12);IO0DIR |=(0xF27);void motor_x_p()/x 電機正轉(zhuǎn)if(8=k_p)k_p=0;IO0CLR=0xF12;IO0SET=(motor_pk_p12);k_p+;void motor_x_r()/x
2、電機反轉(zhuǎn)if(8=k_r)k_r=0;IO0CLR=0xF12;IO0SET=(motor_rk_r12);k_r+;void motor_y_r()/y 反轉(zhuǎn)1 / 19if(8=j_r)j_r=0;IO0CLR=0xF27;IO0SET=(motor_rj_r27);j_r+;void motor_y_p()/y 正轉(zhuǎn)if(8=j_p)j_p=0;IO0CLR=0xF27;IO0SET=(motor_pj_p27);j_p+;/* 名稱 : UART.c* 功能 : UART 初始化和設(shè)置*/void UART_init(void)uint16 Fdiv;PINSEL0 |=0x05;U0
3、LCR=0x83;Fdiv =(Fpclk/16)/UART_BPS;U0DLM=Fdiv/256;U0DLL=Fdiv%256;U0LCR=0x03;void UART0_SendByte(uint8 data)U0THR=data;while(U0LSR&0x40)=0);void UART0_SendStr(int8 strs)2 / 19uint32 j=0;while(strsj!=0)UART0_SendByte(strj); j+;uint8 UART0_RcvByte(void)uint8 rcv_byte;while(U0LSR&0x01)=0);rcv_byte = U0R
4、BR;/rcv_byte=rcv_byte-0x30;return (rcv_byte);/* 名稱 : led.c* 功能 : led*/void show_init()/led 管腳的初始化IODIR0|=(0x7FF1);IOCLR0=0x7FF1;/IOSET0=0x7FF1;/while(1);void show_led(uint8 data,uint8 bit)IOSET0=0x7FF1;IOCLR0=(numdata1|selectbit8);/* 在 led 燈中顯示x 和 y 值 */void show_x_y(uint8 x,uint8 y)uint8 x_data_bit
5、,x_data_rem,y_data_bit,y_data_rem;x_data_bit=x/10;show_led(x_data_bit,1);DelayMs(1);x_data_rem=x%10;show_led(x_data_rem,2);DelayMs(1);3 / 19y_data_bit=y/10;show_led(y_data_bit,3);DelayMs(1);y_data_rem=y%10;show_led(y_data_rem,4);DelayMs(1);/*led顯示 x 和 y 的值,跟show 一樣 */void led_init()IODIR0|=(0x3FF2);
6、IOCLR0=(0x3FF2);void led_show_x(uint8 x)IOCLR0=0x1F2;x &= 0x1f;IOSET0 = (x2);void led_show_y(uint8 y)IOCLR0=0x1F7;y &=0x1f;IOSET0=(y7);/*按鍵掃描程序*/void key_init()PINSEL1 &=(0x30);PINSEL1 |=(0x010);/P0.16 為外部中斷0EXTMODE|=(10);4 / 19VICVectCntl0 =0x2E;VICVectAddr0= (unsigned)key_irq;VICIntEnable= 0x6000;
7、/* 掃描鍵盤的列,返回列的序號03*/uint8 row_scan()IO0CLR=0x0F22;IO0SET=0X0E18)&0x0F;/p0.1821,行的狀態(tài),本應(yīng)全為1if(0x0f!=key_null)while(0x0f!=key_null)/ 等待按鍵放開key_null= (IO0PIN18)&0x0F;return 0;/ 返回列序號IO0CLR=0x0F22;IO0SET=0X0D18)&0x0F;if(0x0f!=key_null)while(0x0f!=key_null)key_null= (IO0PIN18)&0x0F;return 1;IO0CLR=0x0F22;
8、IO0SET=0X0B18)&0x0F;if(0x0f!=key_null)while(0x0f!=key_null)key_null= (IO0PIN18)&0x0F;return 2;5 / 19IO0CLR=0x0F22;IO0SET=0X0718)&0x0F;if(0x0f!=key_null)while(0x0f!=key_null)key_null= (IO0PIN18)&0x0F;return 3;/* 掃描鍵盤的值,返回按鍵號real_row*/uint8 key_scan()if(0x0e=key_null)/line1有按鍵real_row=row_scan();/ 得到列
9、號return real_row;if(0x0d=key_null)/line2real_row=row_scan();return(real_row+4);if(0x0b=key_null)/line3real_row=row_scan();return(real_row+8);if(0x07=key_null)/line4real_row=row_scan();return(real_row+12);/* 中斷程序,有按鍵時運行*/void key_irq() _irq/UART0_SendByte(8);key_flag=1;EXTINT =0x01;6 / 19VICVectAddr=
10、 0x00000000;/wait the next buttonvoid wait_next()uint8 next;donext =(IOPIN116)&0x01;while(next);/ 等 next 按下才繼續(xù)運行/wait the clear buttonvoid wait_clear()uint8 next,clear;donext =(IOPIN116)&0x01;clear =(IOPIN118)&0x01;if(!clear)/ 若 clear 鍵按下set_line(0);clearscreen(1);clearscreen(2);/ 重新顯示坐標(biāo)軸,即清除圖像while
11、(next&clear);/next和 clear 其中一個按下繼續(xù)運行/wait the CONTINUS buttonvoid wait_continus()uint8 con;docon =(IOPIN117)&0x01;while(con);/ 等 continus 鍵按下7 / 19/*G01 直線插補, x, y,f 分別為 ,終點坐標(biāo) (x, y)和轉(zhuǎn)速f,起點為 (0,0)*/void G01(uint16 x,uint16 y,uint16 f)float f_i,f_new,k_g;uint16 x_i,y_i,number,i,show_time,k_x,k_y,show
12、_x,show_y;number=y+x;show_x=0;show_y=0;k_x=0;k_y=0;x_i=0;/ 起 點坐標(biāo)y_i=0;f_i=0;/ 斜率 kk_g = (float)y/x;for(i=0;i=0)/ 進給 +xx_i +=1;f_new=f_i-k_g;motor_x_p();/x 電機正轉(zhuǎn)一步k_x+;if(8=k_x)/ 若夠一圈k_x=0;show_x+;/x的 圈數(shù)加 1led_show_x(show_x);/led燈顯示 x 的圈數(shù)8 / 19else/ 進給 +yy_i +=1;f_new =f_i+1;motor_y_p();k_y+;if(8=k_y)
13、k_y=0;show_y+;led_show_y(show_y);DelayMs(show_time);/ 延 時 電 機轉(zhuǎn)一步的時間(ms)f_i=f_new;wait_continus();/ 是 否 繼 續(xù) ,continus 按下繼續(xù)/*G03 逆圓插補 */ void G03(uint16 x1,uint16 y1,uint16 x2,uint16 y2,uint16 f) uint16 k,x_i,y_i,number,show_time,k_x,k_y,show_x,show_y;float f_i,new_f_i;show_x=0;x_i=x1;y_i=y1;k_x=0;k_y
14、=0;f_i=0;show_time=(1000*60)/(8*f);number=x1+y2-x2-y1; / 總插補次數(shù) number for(k=0;k=0)new_f_i=f_i-2*x_i+1;x_i-;9 / 19k_x+;motor_x_r();if(8=k_x)k_x=0;show_x+;led_show_x(show_x);elsenew_f_i=f_i+2*y_i+1;y_i+;k_y+;motor_y_p();if(8=k_y)k_y=0;show_y+;led_show_y(show_y);f_i=new_f_i;DelayMs(show_time);wait_cont
15、inus();/*G02 順圓插補 */ void G02(uint16 x1,uint16 y1,uint16 x2,uint16 y2,uint16 f) uint16 k,x_i,y_i,number,show_time,k_x,k_y,show_x,show_y;float f_i,new_f_i;k_x=0;k_y=0;show_x=0;show_y=0;x_i=x1;y_i=y1;f_i=0;show_time=(1000*60)/(8*f);number=x2+y1-x1-y2;/ 總次數(shù)10 / 19for(k=0;k=0)new_f_i=f_i-2*y_i+1;y_i-;k_
16、y+;motor_y_r();if(8=k_y)k_y=0;show_y+;led_show_y(show_y);elsenew_f_i=f_i+2*x_i+1;x_i+;k_x+;motor_x_p();if(8=k_x)k_x=0;show_x+;led_show_x(show_x);f_i=new_f_i;DelayMs(show_time);wait_continus();11 / 19/* 檢測 G 代碼,返回 G 值 */ uint16 check_g(uint8 a40)uint16 check_k,g_value=0;for(check_k=0;check_k40;check_
17、k+)if(G=button_numberacheck_k)/ 檢查按鍵是否為Gcheck_k+=2;/ 檢查是 G01,或 G02,或G03g_value=(button_numberacheck_k-48);return g_value;/ 返回 1,或 2,或 3/* 檢測 G01 中的 x 值 */uint16 check_x(uint8 a40)uint16check_k,x_value=0,temp;for(check_k=0;check_k127)/UART0_SendStr(str);x_value=127;return x_value;/* 檢測 G01 中的 y 值 */u
18、int16 check_y(uint8 a40)12 / 19uint16 check_k,y_value=0,temp;for(check_k=0;check_k63)/UART0_SendStr(str);y_value=63;return y_value;/* 檢測速度f 的值 */uint16 check_f(uint8 a40)uint16 check_k,f_value=0,temp;for(check_k=0;check_k40;check_k+)if(F=button_numberacheck_k)check_k+;for(; !=button_numberacheck_k;c
19、heck_k+)temp=(button_numberacheck_k-48);f_value= 10*f_value+temp;return f_value;13 / 19/* 檢測 G02 G03 中的 x 值 */uint16 check_x1(uint8 a40)uint16 check_k,x1_value=0,temp=0;for(check_k=0;check_k127)/UART0_SendStr(str);x1_value=127;return x1_value;uint16 check_x2(uint8 a40)uint16 check_k,x2_value=0,temp=
20、0;for(check_k=0;check_k127)/UART0_SendStr(str);x2_value=127;return x2_value;/* 檢測 G02 G03 中的 y 值 */uint16 check_y1(uint8 a40)uint16 check_k,y1_value=0,temp=0;for(check_k=0;check_k63)/UART0_SendStr(str);y1_value=63;return y1_value;uint16 check_y2(uint8 a40)15 / 19uint16 check_k,y2_value=0,temp=0;for(
21、check_k=0;check_k63)/UART0_SendStr(str);y2_value=63;return y2_value;/*譯碼與執(zhí)行插補*/void operate(uint8 a40)uint16 operate_x,operate_y,operate_f,operate_g;uint16 operate_x1,operate_x2,operate_y1,operate_y2;operate_g=check_g(a);switch(operate_g)case 1:operate_x=check_x(a);/ 得到終點坐標(biāo)(x,y)和轉(zhuǎn)速 foperate_y=check_
22、y(a);operate_f=check_f(a);16 / 19G01(operate_x,operate_y,operate_f);/ 畫直線break;case 2:operate_x1=check_x1(a);operate_x2=check_x2(a);operate_y1=check_y1(a);operate_y2=check_y2(a);operate_f=check_f(a);G02(operate_x1,operate_y1,operate_x2,operate_y2,operate_f);/G02(0,60,60,0,300);/ 畫順圓break;case 3:oper
23、ate_x1=check_x1(a);operate_x2=check_x2(a);operate_y1=check_y1(a);operate_y2=check_y2(a);operate_f=check_f(a);G03(operate_x1,operate_y1,operate_x2,operate_y2,operate_f);break;/ 畫逆圓default :break;/* 清除數(shù)組 */void clear_number(uint8 a40)uint8 k;for(k=0;k40;k+)ak= ;DelayMs(5);17 / 19/*main函數(shù) */int main()i=0;motor_init();/x ;p0.1215 ,y:p0.2730 ,八個管腳都是輸出led_init();/p0.211為 X.Y 值得顯示引腳,初始化為全滅UART_init();key_init();/p0.16 為外部中斷0IO_set();/p1.2731為輸出lcd_init();/ 開顯示,起始行為0 行clearscreen(0);set_line(0);show_name();/ 顯示姓名信息selectscre
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年心理診斷技術(shù)考試題庫及一套答案
- 2026廣東佛山南海區(qū)西樵鎮(zhèn)樵北中學(xué)招聘一名筆試備考試題及答案解析
- 2026年心理品格考試題庫及完整答案一套
- 2026四川內(nèi)江市隆昌市發(fā)展和改革局招聘2人筆試備考題庫及答案解析
- 2026年新疆輕工職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫附答案
- 2026年濰坊保密知識網(wǎng)上測試題及完整答案1套
- 2026年成都工貿(mào)職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)考試模擬測試卷附答案
- 2026年廣東省汕尾市單招職業(yè)傾向性測試模擬測試卷附答案
- 2025內(nèi)蒙古呼和浩特春華水務(wù)開發(fā)集團有限責(zé)任公司招聘遞補進入體檢考察范圍人員筆試備考題庫及答案解析
- 2026云南云廣文化傳媒有限公司財務(wù)人員招聘1人筆試模擬試題及答案解析
- 四川省遂寧市射洪縣九年級2024-2025學(xué)年(上)期末化學(xué)試卷(含答案)
- 2025-2030中國器官芯片行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略研究報告
- 醫(yī)院醫(yī)療保險費用審核制度
- 村衛(wèi)生室醫(yī)療質(zhì)量相關(guān)管理制度
- 非遺傳承人激勵機制探索-深度研究
- 中小學(xué)校園中匹克球推廣策略與實踐研究
- 2024年世界職業(yè)院校技能大賽高職組“體育活動設(shè)計與實施組”賽項考試題庫(含答案)
- 高中地理選擇性必修一(湘教版)期末檢測卷02(原卷版)
- 滬教版九年級化學(xué)上冊(上海版)全套講義
- 三角函數(shù)圖像變化課件
- 《內(nèi)存條知識培訓(xùn)》課件
評論
0/150
提交評論