




已閱讀5頁,還剩73頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
計算機控制技術(shù)實驗,邵長友,實驗一、串口通信實驗,一、實驗?zāi)康模?.認(rèn)識串口在控制中的應(yīng)用2.學(xué)會用C語言給串口編程二、實驗器材:PC機、串口線三、實驗內(nèi)容:用C語言編程實現(xiàn)兩個PC機之間的串行通信,實驗一、串口通信實驗,一、認(rèn)識串口,在PC機上,有各種各樣的接頭,其中有兩個9針的接頭區(qū),見這就是串行通信端口。PC機上的串行接口有多個名稱:232口、串口、通信口、COM口、異步口等。,實驗一、串口通信實驗,相關(guān)知識一、認(rèn)識串口,實驗一、串口通信實驗,一、認(rèn)識串口,1查看設(shè)備信息進(jìn)入Windows“我的電腦”系統(tǒng)屬性,在“設(shè)備管理器”列表中有端口COM和LPT設(shè)備信息,如圖所示。,實驗一、串口通信實驗,一、認(rèn)識串口,RS-232-C標(biāo)準(zhǔn):信號電平標(biāo)準(zhǔn):邏輯“1”:-15V-5V邏輯“0”:+5V+15V,實驗一、串口通信實驗,RS-232-C控制信號的定義,實驗一、串口通信實驗,一、認(rèn)識串口二、實驗(1)用串口調(diào)試助手實現(xiàn)兩個PC之間的通信(2)用C語言編程實現(xiàn)兩個PC之間的通信三、編寫程序?qū)崿F(xiàn)PC和單片機之間的串行通信(單片機程序),實驗一、串口通信實驗,編程知識,編程知識,COM1與COM2的I/O端口地址,線路狀態(tài)寄存器(讀/寫),D0:接收數(shù)據(jù)就緒。D1:超越錯。D2:奇偶校驗錯。D3:幀格式錯。D4:間斷錯。D5:發(fā)送保持寄存器空。D6:發(fā)送移位寄存器空。D7:恒為0。,接收數(shù)據(jù)寄存器收到了一個完整的字符,CPU可以讀這個數(shù)據(jù)。,接口可以接收下一個要發(fā)送的字符,CPU可以寫數(shù)據(jù)。,編程知識,地址:3FDH,線路狀態(tài)寄存器(讀/寫),D0:接收數(shù)據(jù)就緒。D1:超越錯。D2:奇偶校驗錯。D3:幀格式錯。D4:間斷錯。D5:發(fā)送保持寄存器空。D6:發(fā)送移位寄存器空。D7:恒為0。,接收數(shù)據(jù)寄存器收到了一個完整的字符,CPU可以讀這個數(shù)據(jù)。,可以接收下一個要發(fā)送的字符,CPU可以寫數(shù)據(jù)。,編程知識,地址:3FDH,TurboC的串口通信函數(shù),intbioscom(intcmd,charbyte,intport);,cmd=0:設(shè)置通訊參數(shù)byte的值1:把字符按字節(jié)送到通訊線上2:從通訊線上接收一個字符3:返回通訊端口的狀態(tài),port=0:COM1;port=1:COM2,初始化串口,byte值是下列各位的組合,0 x027個數(shù)據(jù)位0 x038個數(shù)據(jù)位,0 x00110波特率0 x20150波特率0 x40300波特率0 x60600波特率0 x801200波特率0 xa02400波特率0 xc04800波特率0 xe09600波特率,0 x001個停止位0 x042個停止位,0 x00無校驗0 x08奇校驗0 x18偶校驗,若要求:8位數(shù)據(jù)位,1個停止位,奇校驗,9600波特。byte=0 x03|0 x00|0 x08|0 xe0D7D6D5D4D3D2D1D0,#include#includemain()inti;bioscom(0,0 x83,0);doi=inportb(0X3fd);if(i,初始化串口11200波特,無校驗,1位停止位,8個數(shù)據(jù)位,讀線路狀態(tài)寄存器,判斷是否有錯(D1:超越錯D2:奇偶校驗錯D3:幀格式錯D4:間斷錯),判斷接收數(shù)據(jù)是否就緒,讀接收數(shù)據(jù)寄存器,顯示字符。,判斷發(fā)送保持寄存器是否空,如果有鍵按下,寫發(fā)送保持寄存器輸出字符。,實驗二、8254定時器實驗,一、實驗?zāi)康模?)掌握8254定時器/計數(shù)器的工作原理與編程2)熟悉8259中斷控制器的工作原理和使用方法3)掌握硬件中斷程序設(shè)計的原理與編程方法4)為數(shù)據(jù)采集程序打下控制采樣的基礎(chǔ)二、實驗內(nèi)容(1)用TPC-UP微機原理實驗箱上的定時器芯片編程完成脈沖計數(shù)(2)編寫程序使PC機主板上的芯片完成定時器(已經(jīng)集成到一個大的芯片組中)中斷實驗,微機原理實驗箱上的片選地址280h,280h,方式控制字,方式0:計數(shù)初值一個八位數(shù)()二進(jìn)制,控制字10h,實驗箱上的電路,參考程序,/*/*可編程定時器計數(shù)器(一)*/*/*8253CS-280H-287HGATE0-+5VCLK0-單脈沖OUT0-邏輯筆*/#include#include#include.ApiEx.h#pragmacomment(lib,.ApiEx.lib),voidmain()BYTEdata;if(!Startup()/*打開設(shè)備*/printf(ERROR:OpenDeviceError!n);return;PortWriteByte(0 x283,0 x10);/*設(shè)8253計數(shù)器0工作方式0,只寫低字節(jié)*/PortWriteByte(0 x280,0 x0f);/*寫入計數(shù)初值16*/while(!kbhit()/*有鍵按下則退出*/PortReadByte(0 x280,/*關(guān)閉設(shè)備*/,#include#includevoidinterruptmyint8(void);voidmain(void)disable();outportb(0 x43,0 x36);/0 x43是定時器控制寄存器地址outportb(0 x40,0 x9d);/0 x40是定時器0通道地址outportb(0 x40,0 x2e);/0 x9d,0 x2e分別是計數(shù)值低八位和高八位setvect(0 x08,myint8);/設(shè)置中斷向量enable();while(1);,利用PC機上的定時器通道0工作在方式3,計數(shù)時間到產(chǎn)生中斷,voidinterruptmyint8(void)putchar(8);outportb(0 x20,0 x20);/第一個0 x20主8259的OCW2的地址,/第二個0 x20是中斷結(jié)束命令,#includevoidinterruptmyint8(void);intcount=1;voidmain(void)disable();outportb(0 x43,0 x30);outportb(0 x40,0 x0);outportb(0 x40,0 x0);setvect(0 x08,myint8);enable();while(1);,voidinterruptmyint8(void)chars=中國海洋大學(xué)青島學(xué)院機電工程系;FILE*fp;fp=fopen(E:test.txt,w);fwrite(s,2,15,fp);fclose(fp);outportb(0 x20,0 x20);,通道0,方式0,定時時間到調(diào)用中斷服務(wù)程序,實驗三、中斷方式實現(xiàn)串口通信,通過“設(shè)備管理器查看鍵盤和COM1的中斷源,8259主片中斷源:,鍵盤,COM1,#include#includemain()inti;disable();bioscom(0,0 x83,0);doi=inportb(0X3fd);if(i,初始化串口1:1200波特,無校驗,1位停止位,8個數(shù)據(jù)位,實驗四、pid程序演示實驗,一、實驗?zāi)康模豪斫鈹?shù)字PID控制器的設(shè)計方法二、實驗內(nèi)容(1)運行C語言PID演示程序,分析設(shè)定值、被控量、偏差,控制量的變化(2)編寫PIDMATLAB仿真程序,分析運行結(jié)果,C語言PID演示程序#include#includetypedefstructPIDdoubleCommand;/輸入指令doubleProportion;/比例系數(shù)doubleIntegral;/積分系數(shù)doubleDerivative;/微分系數(shù)doublepreErr;/前一拍誤差doublesumErr;/誤差累積PID;,voidmotorInit(motor*m)memset(m,0,sizeof(motor);,doublePIDCale(PID*p,doublefeedback)doubledErr,Err;Err=p-Command-feedback;/當(dāng)前誤差p-sumErr+=Err;/誤差累加dErr=Err-p-preErr;/誤差微分p-preErr=Err;return(p-Proportion*Err/比例項+p-Derivative*dErr/微分項+p-Integral*p-sumErr);/積分項,typedefstructmotordoublelastY;doublepreY;doublelastU;doublepreU;motor;voidmotorInit(motor*m)memset(m,0,sizeof(motor);,doublemotorCal(motor*m,doubleu)doubley=1.9753*m-lastY-0.9753*m-preY+0.00003284*u+0.00006568*m-lastU+0.00003284*m-preU;/二階系統(tǒng)m-preY=m-lastY;m-lastY=y;m-preU=m-lastU;m-lastU=u;returny;,y(k)=y(k-1)-0.9753*y(k-2)+0.00003284*u(k)+0.00006568*u(k-1)+0.00003248*u(k-2),voidmain()FILE*fp=fopen(data.txt,w+);PIDsPID;motorm_motor;intk=0;doubleu;doubley=0;PIDInit(,while(k=5u(k)=5;endifu(k)=-5u(k)=-5;end%Linearmodelyout(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2;error(k)=rin(k)-yout(k);%Returnofparametersu_2=u_1;u_1=u(k);y_2=y_1;y_1=yout(k);,x(1)=error(k)-error_1;%CalculatingPx(2)=error(k)-2*error_1+error_2;%CalculatingDx(3)=error(k);%CalculatingIerror_2=error_1;error_1=error(k);endfigure(1);plot(time,rin,b,time,yout,r);xlabel(time(s),ylabel(rin,yout);figure(2);plot(time,error,r)xlabel(time(s);ylabel(error);,實驗五、RS485總線實驗,實驗?zāi)康模?、理解RS485的通信原理2、學(xué)會RS485的C語言編程實驗內(nèi)容:1、利用RS232-RS485無源轉(zhuǎn)換器給PC機組網(wǎng)2、利用C語言編寫RS485的通信程序,1.RS-485的電氣特性:邏輯“1”以兩線間的電壓差為+(2-6)V表示;邏輯“0”以兩線間的電壓差為-(2-6)V表示。接口信號電平比RS-232-C降低了,就不易損壞接口電路的芯片,且該電平與TTL電平兼容,可方便與TTL電路連接。2.RS-485的數(shù)據(jù)最高傳輸速率為10Mbps。3.RS-485接口是采用平衡驅(qū)動器和差分接收器的組合,抗共模干能力增強,即抗噪聲干擾性好。4.RS-485接口的最大傳輸距離標(biāo)準(zhǔn)值為4000英尺,實際上可達(dá)3000米,另外RS-232-C接口在總線上只允許連接1個收發(fā)器,即單站能力。而RS-485接口在總線上是允許連接多達(dá)128個收發(fā)器。即具有多站能力,這樣用戶可以利用單一的,RS485網(wǎng)絡(luò),RS485網(wǎng)絡(luò),連線時“手拉手”,實驗程序,/*-通信協(xié)議-發(fā)送的命令:#xxRn$#-命令前導(dǎo)符xx-兩位ASCII從機地址R-表示要求從機發(fā)送數(shù)據(jù)n-一位ASCII碼0-9,表示發(fā)送數(shù)據(jù)的類型$-命令結(jié)束符接收的數(shù)據(jù)格式:=xxddddddddd$=-命令前導(dǎo)符xx-兩位ASCII從機地址ddddddddd-九位ASCII碼數(shù)據(jù)$-命令結(jié)束符-*/,/*-通信協(xié)議-發(fā)送的命令:#xxRn$#-命令前導(dǎo)符xx-兩位ASCII從機地址R-表示要求從機發(fā)送數(shù)據(jù)n-一位ASCII碼0-9,表示發(fā)送數(shù)據(jù)的類型$-命令結(jié)束符接收的數(shù)據(jù)格式:=xxddddddddd$=-命令前導(dǎo)符xx-兩位ASCII從機地址ddddddddd-九位ASCII碼數(shù)據(jù)$-命令結(jié)束符-*/#include#includemain()inti,j,k,n;charc,cmd=#xxRn$;charaddress=xx;chardata=xxAAAAAAAAA$;bioscom(0,0 x83,0);doprintf(pleaseinputtheslavecomputeraddressyouwanttocommunicatewith(00-99):);scanf(%d,主機程序,/*-通信協(xié)議-接收到的信號:#xxRn$#-命令前導(dǎo)符xx-兩位ASCII從機地址R-表示要求從機發(fā)送數(shù)據(jù)n-一位ASCII碼0-9$-命令結(jié)束符發(fā)回的數(shù)據(jù)格式:=xxddddddddd$=-命令前導(dǎo)符xx-兩位ASCII從機地址ddddddddd-九位ASCII碼數(shù)據(jù)$-命令結(jié)束符-*/#include#includemain()inti,j,n;charc,cmd5;charaddress=00;chardata0=AAAAAAAAA$;chardata1=BBBBBBBBB$;chardata2=CCCCCCCCC$;chardata3=DDDDDDDCC$;printf(pleasesetupthiscomputeraddress(00-99):);scanf(%d,從機程序,實驗四、標(biāo)度變換和非線性補償,實驗?zāi)康模?、理解標(biāo)度變換和非線性補償原理2、學(xué)會標(biāo)度變換和非線性補償C語言編程實驗內(nèi)容:1、標(biāo)度變換的C語言編程2、非線性補償?shù)腃語言編程3、牛頓迭代法的C語言編程,一、標(biāo)度變換,某熱處理爐溫度測量儀表的量程為0800C,在某一時刻計算機采樣并經(jīng)數(shù)字濾波后的數(shù)字量為CDH,求此時的溫度是多少?(設(shè)該儀表的量程是線性的)。8位A/D,0800C經(jīng)熱電偶和信號調(diào)理電路后0-5V,再經(jīng)過模數(shù)轉(zhuǎn)換后:0-255(0-FFH),includestdio.h#defineAM800#defineA00#defineNM255#defineN00intScale_transform(intx)inty;y=A0+(AM-A0)*(x-N0)/(NM-N0);return(y);,voidmain(void)intx,y;printf(請輸入整數(shù)0-255:);scanf(%d,二、非線性補償(線性插值算法),退火爐的溫度(0-800)檢測采用K型熱電偶,經(jīng)過150倍兩級放大,變成0-5V的標(biāo)準(zhǔn)電壓信號,再經(jīng)過A/D轉(zhuǎn)換變?yōu)?-FFH的數(shù)字信號。其熱電勢V與溫度t之間的分度值下表所示??梢钥闯?,熱電偶溫度與mV變化曲線比較平緩,故可采用線性插值法進(jìn)行補償。,非線性補償程序,/*Note:YourchoiceisCIDE*/#includestdio.hintvolttotmp(unsignedcharvlt)unsignedcharvolt=0,0 x0f,0 x1f,0 x2f,0 x3e,0 x4e,0 x5d,0 x6d,0 x7d,0 x8e,0 x9e,0 xae,0 xbf,0 xcf,0 xdf,0 xef,0 xff;inttemp=0,50,100,150,200,250,300,350,400,450,500,550,600,650,700,750,800;inti,tmp;for(i=0;i17;i+)if(vlt=0.001);printf(%f的平方根:%fn,x,y);,實驗六、鍵盤和LED顯示實驗,實驗?zāi)康模?、理解非編碼矩陣鍵盤的掃描原理2、理解LED動態(tài)掃描工作原理3、理解串行通信的工作原理實驗內(nèi)容:1、4X4矩陣掃描的C語言編程2、74HC595串行移位的C語言編程3、LED動態(tài)顯示的C語言編程,4X4矩陣鍵盤,4X4矩陣鍵盤,rcode=0 xEF;/逐行掃描初值for(i=0;i4;i+)P2=rcode;/輸出行掃描碼if(P2/行掃描碼左移一位,P20-P23:列P24-P27:行,74HC595,74HC595,74HC595,st_cp595=0;for(i=0;ioffset)sample_value=old_value;elsesample_value=new_value;return(sample_value);main()inti;floatvalue;floata12=2,2.3,8.1,2.5,3.3,2.9,5.4,3.3,7.3,3.6,7.2,3.9;for(i=0;i12;i+)printf(%.1f,ai);printf(n);for(i=0;imiddle_valuej)data=middle_valuej-1;middle_valuej-1=middle_valuej;middle_valuej=data;sample_value=middle_value(count-1)/2;return(sample_value);main()floatx;floata5=2,9,5.2,7,0;x=middle_filter(a,5);printf(%f,x);printf(hekkk);getch();,加權(quán)平均值濾波,/*Note:YourchoiceisCIDE*/#includestdio.h#includefloattimes_filter(floatdata_buf)floatsample_value;floatfilter_k5=0.05,0.15,0.25,0.25,0.3;sample_value=filter_k0*data_buf0+filter_k1*data_buf1+filter_k2*data_buf2+filter_k3*data_buf3+filter_k4*data_buf4;return(sample_value);main()floatx;floata5=2,2,4,5,9;x=times_filter(a);printf(%f,x);getch();,一階慣性濾波,/*Note:YourchoiceisCIDE*/#includestdio.h#includefloatlow_filter(floatsensing_value,floatprevious_value,floatfactor)floatsample_value;sample_value=(1-factor)*sensing_value+factor*previous_value;return(sample_value);main()inti;floatx;floata10=1.9,2,2.1,5,2.3,2.4,2.8,5,3.0,3.2;floatb10;for(i=0;i10;i+)printf(%.1f,ai);printf(n);b0=a0;for(i=1;i10;i+)bi=low_filter(ai,bi-1,0.8);for(i=0;i10;i+)printf(%.1f,bi);getch();,實驗八,1,2,3,1,1,2,3,4,3,4,2,1,3,4,2,1,0011011011001001,順時針,逆時針,0011100111000110,tab1=0 x03,0 x06,0 x0c,0 x09,tab2=0 x03,0 x09,0 x0c,0 x06;,if(data,001
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 寶安壹方城廣場活動方案
- 實踐站最美庭院活動方案
- 寶寶藝術(shù)照活動方案
- 宣傳文化室活動方案
- 家居活動充值活動方案
- 寒假輔導(dǎo)學(xué)科活動方案
- 家具建材聯(lián)盟活動方案
- 小城鎮(zhèn)職場活動方案
- 家具公司中秋活動方案
- 家用空調(diào)營銷活動方案
- 禁種鏟毒培訓(xùn)
- “世界濕地日”宣傳活動方案范例(3篇)
- 工程造價軟件應(yīng)用-形考任務(wù)3-國開(SC)-參考資料
- 事故隱患排查治理培訓(xùn)課件
- 專項8 非連續(xù)性文本閱讀- 2022-2023學(xué)年五年級語文下冊期末專項練習(xí)
- 醫(yī)務(wù)人員職業(yè)暴露預(yù)防及處理課件(完整版)
- 翻新沙發(fā)合同模板
- 客戶投訴數(shù)據(jù)分析及應(yīng)對策略
- 臨床常見操作-灌腸
- 2024年中國流行T恤市場調(diào)查研究報告
- (完整版)小學(xué)六年級奧數(shù)應(yīng)用題100道附答案
評論
0/150
提交評論