版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、2011 - 2012 學(xué)年 第 1 學(xué)期學(xué)生課程實(shí)習(xí)報(bào)告 環(huán)節(jié)名稱計(jì)算機(jī)控制技術(shù)課程實(shí)習(xí)所屬課程計(jì)算機(jī)控制技術(shù)學(xué)生姓名冼燎剛學(xué)號(hào)200811631128所在班級(jí)電氣1081成績(jī)?cè)u(píng)語(yǔ)指導(dǎo)教師簽名一、 設(shè)計(jì)題目: 控制步進(jìn)電機(jī)LCD顯示二、 設(shè)計(jì)要求: 設(shè)計(jì)一個(gè)單片機(jī)三相步進(jìn)電機(jī)控制系統(tǒng),要求系統(tǒng)具有以下功能。(1)用K0-K2作為通電方式選擇鍵,K0為單三拍,K1為雙三拍,K2為三相六拍。(2)K3-K4作為啟動(dòng)和方向控制。(3)正轉(zhuǎn)時(shí)紅色指示燈亮,反轉(zhuǎn)時(shí)黃色指示燈亮,不轉(zhuǎn)時(shí)綠燈亮。(4)可通過(guò)鍵盤(pán)設(shè)定步進(jìn)電機(jī)步數(shù)給定值。(5)用三位LED數(shù)碼管顯示剩余工作步數(shù)三、 系統(tǒng)總體框圖與原理說(shuō)明 系
2、統(tǒng)的整體框圖四、 硬件電路圖 五、 程序流程圖開(kāi)始鍵盤(pán)讀取步數(shù)鍵盤(pán)讀取正反轉(zhuǎn)鍵盤(pán)讀取工作方式鍵盤(pán)讀取是否按下 ENTER液晶顯示數(shù)字液晶顯示數(shù)字液晶顯示數(shù)字相應(yīng)的燈發(fā)光步進(jìn)電機(jī)轉(zhuǎn)動(dòng)一拍總步數(shù)減一并顯示總步數(shù)是否為0顯示OVERYN結(jié)束六、 仿真說(shuō)明 輸入一個(gè)三位數(shù) 按下DIRECTION 選擇方向 相應(yīng)的燈會(huì)亮 選擇不同的工作方式 按下START按鈕,倒數(shù)開(kāi)始,電機(jī)按剩余步數(shù)轉(zhuǎn)動(dòng)。 倒數(shù)完畢,顯示OVER,綠燈亮。七、 心得體會(huì)通過(guò)自己幾天的辛勤努力并查閱諸多資料,終于完成了本次課程設(shè)計(jì)。從系統(tǒng)框圖到程序,自己逐一完成。程序雖然很長(zhǎng),但通過(guò)分成不同的H文件,有序地把它們分割成幾部分。不僅對(duì)于自
3、己,還對(duì)查看程序的人有不少的幫助。設(shè)計(jì)的思路按照對(duì)于仿真的步驟編程。從按下第一個(gè)按鍵開(kāi)始,就已經(jīng)進(jìn)入到設(shè)計(jì)者的程序當(dāng)中。程序有較強(qiáng)的邏輯性,這些都依賴于平時(shí)的練習(xí)及老師的教導(dǎo)。 附錄:程序清單 /*程序的總體文件*/#include<reg51.h> #include<led_show.h> #include<keyscan.h> #include<keycount.h> void initial(); un i,motor_step=0,time_control=0;uc keyscan();uc loop124=0x01,0x02,0x04,
4、0x08,0x08,0x04,0x02,0x01; /A B C Duc loop224=0x03,0x06,0x0C,0x09,0x09,0x0C,0x06,0x03; /AB BC CD DAuc loop328=0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x0A,0x0A,0x08,0x0C,0x04,0x06,0x02,0x03,0x01; /A AB B BC C CD D DA void initial_show(); /函數(shù)申明void clr(); void wirte_com(uc com);void wirte_data(uc date);voi
5、d delay(unsigned int z);void input_keycode() ;void output_key();void count(); void swith();void test(); void main()/主函數(shù)initial();/初始化 initial_show();clr();while(1) input_keycode(); output_key(); TMOD=0x01; /fangshi yi TL1=0xB0; TH1=0x3C; ET0=1; /yun xu TO zhongduanTR0=1; EA=1;while(1);/*中斷服務(wù)函數(shù)*/void
6、 T0_time() interrupt 1/ TL1=0xB0; TH1=0x3C;time_control+; if(a>0) if(time_control=2)swith(); else red=1;green=0;yellow=1; wirte_com(0xc0+10);for(i=0;i<4;i+) / over wirte_data(table6i); void count()t=a/100;f=a%100/10;g=a%10;wirte_com(0xC0+10); /rewrite stepwirte_data(tablet);wirte_data(tablef);
7、wirte_data(tableg);void swith() switch(motor1) case 0: if(motor_step<4) P3=loop1fanzhuanmotor_step ; else motor_step=0; P3=loop1fanzhuanmotor_step ; motor_step+; break; case 1: if(motor_step<4) P3=loop2fanzhuanmotor_step ; else motor_step=0; P3=loop2fanzhuanmotor_step ; motor_step+; break; cas
8、e 2: if(motor_step<8) P3=loop3fanzhuanmotor_step ; else motor_step=0; P3=loop3fanzhuanmotor_step ; motor_step+; break; count(); time_control=0; a-; /zong bu shu/*鍵盤(pán)掃描電路*/uc temp,ge,shi,bb,num;uc keyscan()/鍵盤(pán)掃描子程序 while(1)P1=0xfe; temp=P1;temp=temp&0xf0;if(temp!=0xf0)delay(10); temp=P1; /重新賦值b
9、b=P1;/保留值 temp=temp&0xf0;/去抖動(dòng) if(temp!=0xf0)temp=P1;switch(temp) case 0xee:num=0;break;case 0xde:num=1;break;case 0xbe:num=2;break;case 0x7e:num=3;break;default:break;while(P1=bb); / 等待放手delay(10);while(P1=bb); P1=0xfd; temp=P1;bb=P1;temp=temp&0xf0;if(temp!=0xf0)delay(10); temp=P1; temp=temp
10、&0xf0; if(temp!=0xf0)temp=P1;switch(temp) case 0xed:num=4;break;case 0xdd:num=5;break;case 0xbd:num=6;break;case 0x7d:num=7;break;default:break;while(P1=bb);delay(10);while(P1=bb); P1=0xfb; temp=P1;bb=P1;temp=temp&0xf0;if(temp!=0xf0)delay(10); temp=P1; temp=temp&0xf0; if(temp!=0xf0)temp=
11、P1;switch(temp) case 0xeb:num=8;break;case 0xdb:num=9;break;case 0xbb:num=10;break;case 0x7b:num=11;break;default:break;while(P1=bb);delay(10);while(P1=bb); P1=0xf7; temp=P1;bb=P1;temp=temp&0xf0;if(temp!=0xf0)delay(10); temp=P1; temp=temp&0xf0; if(temp!=0xf0)temp=P1;switch(temp) case 0xe7:nu
12、m=12;break;case 0xd7:num=13;break;case 0xb7:num=14;break;case 0x77:num=15;break;default:break;while(P1=bb);delay(10);while(P1=bb); if(num!=99) return(num);/*LCD顯示電路*/#define uc unsigned char #define un unsigned int unsigned int i; sbit rs=P20;/位申明sbit rw=P21;sbit e=P22; uc code table2="designed
13、 by xlg" uc code table3="setting:"uc code table4="remaining:"uc code table5=" "uc code table6="over:"void wirte_com(uc com);void wirte_data(uc date);void delay(un z); void initial() /初始化子函數(shù)rs=1;rw=1;e=1; wirte_com(0x01);/顯示清零 delay(10); wirte_com(0x38); /
14、16*2顯示 ;5*7點(diǎn)陣;八位數(shù)據(jù)接口 delay(10); wirte_com(0x0f); / 1 開(kāi)顯示,有光標(biāo) 光標(biāo)閃手 (1 1 1) delay(10); wirte_com(0x06);/000001NS (N=1時(shí)右移) (S=0時(shí)整屏不移動(dòng)) delay(10); wirte_com(0x80);/初始化指針 delay(10);void initial_show() for(i=0;i<16;i+)wirte_data(table2i);delay(100);wirte_com(0x01);wirte_com(0x80); for(i=0;i<8;i+)wir
15、te_data(table3i);wirte_com(0xC0);for(i=0;i<10;i+)wirte_data(table4i); void clr() wirte_com(0x80+10); for(i=0;i<3;i+)wirte_data(table5i); wirte_com(0x80+10);void wirte_com(uc com) /液晶寫(xiě)指令P0=com;rs=0;rw=0;e=0; /上升沿 delay(10); e=1;void wirte_data(uc date)/液晶寫(xiě)數(shù)據(jù)P0=date;rs=1;rw=0;e=0; /上升沿delay(100)
16、;e=1;void delay(un z)/延時(shí)子程序un x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);/*鍵盤(pán)電路讀取*/sbit start=P23 ; sbit red=P24 ; sbit green=P25 ; sbit yellow=P26 ; un a,b,c,d,t,f,g,fanzhuan=1,motor1=0,output_type;uc code table="0123456789ABCDEF" /定義表格 void input_keycode() num=99; keyscan(); while (table
17、num!='A') while (tablenum>='0'&&tablenum<='9' ) wirte_com(0x80+10);t=tablenum;wirte_data(t); /bai位數(shù) abc tfga=tablenum-48;num=99; /shi位數(shù)keyscan();b=tablenum-48;a=a*10+b; f=tablenum ;wirte_data(f); num=99; /ge位數(shù) 輸入的數(shù)據(jù)存在Akeyscan();c=tablenum-48;a=a*10+c; g=tablenum
18、 ;wirte_data(g); wirte_com(0x0c); wirte_com(0x80+10); num=99; keyscan(); while (tablenum='C') wirte_com(0x80+15); if(fanzhuan=1) fanzhuan=0; wirte_data('a'); red=0;green=1;yellow=1; else fanzhuan=1; wirte_data('b'); red=1;green=1;yellow=0; wirte_com(0x80+15); num=99; keyscan(); while (tablenum='D'|tablenum='E'|tablenum='F') switch(tablenum) case 'D': motor1=0; wirte_com(0xC0+15); wirte_data('1'); /類型 a/bwirte_com(0xC0+15);break; case 'E': motor1=1; wirte_com(0xC0+15); wirte_data('2'); /類型 a/bwirte_co
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 娛樂(lè)設(shè)備收購(gòu)合同范例
- pcb板訂貨合同范例
- 安置房正規(guī)合同范例
- 約定購(gòu)房合同范例
- 車庫(kù)清潔托管合同范例
- 合同范例社保
- 小型合作合同范例
- 公司按揭買車合同范例
- 小院出售景區(qū)合同范例
- 珠寶檢測(cè)機(jī)構(gòu)簽訂合同范例
- 2024年美國(guó)壓力襪市場(chǎng)現(xiàn)狀及上下游分析報(bào)告
- 2012建設(shè)工程造價(jià)咨詢成果文件質(zhì)量標(biāo)準(zhǔn)
- 心內(nèi)科介入手術(shù)圍手術(shù)期處理
- 2024年春季學(xué)期言語(yǔ)交際期末綜合試卷-國(guó)開(kāi)(XJ)-參考資料
- 重慶空港貴賓服務(wù)有限公司招聘筆試真題2021
- 食品機(jī)械與設(shè)備智慧樹(shù)知到期末考試答案章節(jié)答案2024年西北農(nóng)林科技大學(xué)
- MOOC 信息檢索-西南交通大學(xué) 中國(guó)大學(xué)慕課答案
- 護(hù)士條例課件
- 創(chuàng)業(yè)基礎(chǔ)知識(shí)競(jìng)賽題庫(kù)及答案
- 2024年中考語(yǔ)文考前抓大分技法之小說(shuō)閱讀專題01小說(shuō)標(biāo)題的含義和作用(原卷版+解析)
- 有機(jī)肥料突發(fā)事件的應(yīng)急預(yù)案
評(píng)論
0/150
提交評(píng)論