接口實(shí)驗(yàn)報(bào)告_第1頁(yè)
接口實(shí)驗(yàn)報(bào)告_第2頁(yè)
接口實(shí)驗(yàn)報(bào)告_第3頁(yè)
接口實(shí)驗(yàn)報(bào)告_第4頁(yè)
接口實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩31頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

計(jì)算機(jī)接口與控制技術(shù)實(shí)驗(yàn)報(bào)告中南大學(xué)機(jī)電工程學(xué)院機(jī)械1304班俞文龍實(shí)驗(yàn)一穿行靜態(tài)顯示實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康?.掌握數(shù)字、字符轉(zhuǎn)換成顯示段碼的軟件譯碼方法2.靜態(tài)顯示的原理和相關(guān)程序的編寫(xiě)3.掌握C51程序設(shè)計(jì)方法二、實(shí)驗(yàn)說(shuō)明輸入給定程序,配置選項(xiàng),調(diào)試并運(yùn)行程序,觀察程序控制下仿真器輸出的變化。選中此項(xiàng)keil為硬件仿真設(shè)置Port串口:一般為COM3,Baudrate波特率為最大值:115200bit/s,最后確認(rèn)顯示器由8個(gè)共陰極LED數(shù)碼管組成。輸入只有兩個(gè)信號(hào),它們是串行數(shù)據(jù)線DIN和移位信號(hào)CLK。8個(gè)串/并移位存放器芯片74LS164首尾相連。每片的并行輸出作為L(zhǎng)ED數(shù)碼管的段碼。74LS164為8位串入并出移位存放器,1、2為串行輸入端,QA~QH為并行輸出端,CLK為移位時(shí)鐘脈沖,上升沿移入一位;CLR為清零端,低電平時(shí)并行輸出為零。用C51進(jìn)行程序設(shè)計(jì),選擇匯編或者C語(yǔ)言編程均可,要求程序結(jié)構(gòu)清晰,模塊化結(jié)構(gòu),反復(fù)調(diào)用局部做成子模塊,有必要的注釋。編寫(xiě)程序上機(jī)調(diào)試通過(guò),實(shí)驗(yàn)報(bào)告要求提交程序流程圖及源程序。三、實(shí)驗(yàn)內(nèi)容本實(shí)驗(yàn)需要用到單片機(jī)的最小應(yīng)用系統(tǒng)〔F1區(qū)〕和串行靜態(tài)顯示模塊〔I3區(qū)〕。使用單片機(jī)最小應(yīng)用系統(tǒng)模塊,用導(dǎo)線將連接P3.0〔RXD〕、P3.1〔TXD〕連接到串行靜態(tài)顯示模塊的DIN、CLK端。用串行數(shù)據(jù)通信線連接計(jì)算機(jī)與仿真器,把仿真頭插到模塊的單片機(jī)鎖緊插座中,請(qǐng)注意仿真器的方向:缺口朝上。請(qǐng)指導(dǎo)老師檢查接線后再翻開(kāi)模塊電源。翻開(kāi)KeiluVision2仿真軟件,首先建立本實(shí)驗(yàn)的工程文件,接著添加源程序,進(jìn)行編譯,直到編譯無(wú)誤。全速運(yùn)行程序。8LED顯示“89C51”。程序停止運(yùn)行時(shí),顯示不變,說(shuō)明靜態(tài)顯示模塊具有數(shù)據(jù)鎖存功能。四、實(shí)驗(yàn)程序及原理圖#include<reg51.h>sbitDin=P1^0;sbitClk=P1^1;voiddelay(void){unsignedinti;for(i=0;i<10;i++);}voidmain(void){unsignedchari,j,chr,sel;unsignedcharcodeTab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0-9顯示代碼unsignedcharxs[8]={5,0,1,6,2,3,2,8};for(i=0;i<8;i++){chr=Tab[xs[i]];//sel=0x06; for(j=0;j<8;j++) { Din=chr&sel; Clk=0;//P1.·同步時(shí)鐘 sel=sel>>1; delay(); Clk=1;delay(); }}while(1);}

五實(shí)驗(yàn)體會(huì)通過(guò)實(shí)驗(yàn),再次熟悉了51單片機(jī)的仿真軟件,更加的熟練使用軟件。同時(shí),也掌握數(shù)字、字符轉(zhuǎn)換成顯示段碼的軟件譯碼方法,初步學(xué)會(huì)了軟件譯碼方法。對(duì)靜態(tài)顯示的原理和相關(guān)程序的編寫(xiě)有了進(jìn)一步的認(rèn)識(shí)。根本掌握C51程序設(shè)計(jì)方法實(shí)驗(yàn)二交通燈模擬實(shí)驗(yàn)串行靜態(tài)顯示實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?.掌握ULN2003芯片工作原理2.掌握十字路口交通燈控制方法二、實(shí)驗(yàn)說(shuō)明輸入給定程序,配置選項(xiàng),調(diào)試并運(yùn)行程序,觀察程序控制下仿真器輸出的變化。選中此項(xiàng)keil為硬件仿真設(shè)置Port串口:一般為COM3,Baudrate波特率為最大值:115200bit/s,最后確認(rèn)ULN2003是大電流驅(qū)動(dòng)陣列,由七個(gè)硅NPN達(dá)林頓管組成,具有電流增益高、工作電壓高、溫度范圍寬、帶負(fù)載能力強(qiáng)等特點(diǎn),適應(yīng)于各類要求高速大功率驅(qū)動(dòng)的系統(tǒng),可直接驅(qū)動(dòng)繼電器等負(fù)載。輸入5VTTL電平,輸出可達(dá)500mA/50V。用C51進(jìn)行程序設(shè)計(jì),選擇匯編或者C語(yǔ)言編程均可,要求程序結(jié)構(gòu)清晰,模塊化結(jié)構(gòu),反復(fù)調(diào)用局部做成子模塊,有必要的注釋。編寫(xiě)程序上機(jī)調(diào)試通過(guò),實(shí)驗(yàn)報(bào)告要求提交程序流程圖及源程序。三、實(shí)驗(yàn)內(nèi)容及步驟〔完成分值:60分/單個(gè)程序〕本實(shí)驗(yàn)需要用到本實(shí)驗(yàn)需要用到單片機(jī)最小應(yīng)用系統(tǒng)〔F1區(qū)〕和汽車信號(hào)燈/交通燈/舞臺(tái)燈模塊〔D1區(qū)〕。用十字路口交通燈控制模塊。單片機(jī)最小應(yīng)用系統(tǒng)的P2口JD2F接至汽車信號(hào)燈/交通燈/舞臺(tái)燈模塊的JD4D。汽車信號(hào)燈/交通燈/舞臺(tái)燈模塊的DIN、CLK分別對(duì)應(yīng)的接單片機(jī)最小應(yīng)用系統(tǒng)的P1.1、P1.0口。翻開(kāi)相關(guān)模塊電源。用串行數(shù)據(jù)通信線連接計(jì)算機(jī)與仿真器,把仿真頭插到模塊的單片機(jī)鎖緊插座中,請(qǐng)注意仿真器的方向:缺口朝上。請(qǐng)指導(dǎo)老師檢查接線后再翻開(kāi)模塊電源。翻開(kāi)KeiluVision2仿真軟件,首先建立本實(shí)驗(yàn)的工程文件,接著添加源程序,進(jìn)行編譯,直到編譯無(wú)誤。全速運(yùn)行程序。觀察交通燈的模擬情況。東西向綠燈亮假設(shè)干秒,黃燈閃爍3次后紅燈亮,南北向由紅燈變?yōu)榫G燈,假設(shè)干秒后南北向黃燈閃爍3次此后變紅燈,東西向變綠燈,如此重復(fù)。LED燈控制說(shuō)明:P2.7控制東西向紅燈;P2.6控制東西向黃燈;P2.5控制東西向綠燈;P2.4控制南北向紅燈;P2.3控制南北向黃燈;P2.2控制南北向綠燈。四、電路原理圖及實(shí)驗(yàn)程序#include<reg51.h>#include<absacc.h>#defineucharunsignedcharuchardataR2,R3,R4;sbitLED_G2=P2^2;//南北綠燈sbitLED_Y2=P2^3;//南北黃燈sbitLED_R2=P2^4;//南北紅燈sbitLED_G1=P2^5;//東西綠燈sbitLED_Y1=P2^6;//東西黃燈sbitLED_R1=P2^7;//東西紅燈voiddelay(intcount){unsignedinti; for(i=0;i<count;i++);}//狀態(tài)1voidstate1(){LED_G1=1;//東西綠燈亮LED_Y1=0;LED_R1=0;LED_G2=0;LED_Y2=0;LED_R2=1;//南北紅燈亮}//狀態(tài)2voidstate2(){LED_Y1=0;LED_R1=0;LED_G2=0;LED_Y2=0;LED_R2=1;//南北紅燈亮}//狀態(tài)3voidstate3(){LED_G1=0;LED_R1=0;LED_G2=0;LED_Y2=0;LED_R2=1;//南北紅燈亮LED_Y1=1;//東西黃燈亮}//狀態(tài)4voidstate4(){LED_G1=0;LED_Y1=0;LED_R1=1;//東西紅燈亮LED_G2=1;//南北綠燈亮LED_Y2=0;LED_R2=0;}//狀態(tài)5voidstate5(){LED_G1=0;LED_Y1=0;LED_R1=1;//東西紅燈亮LED_Y2=0;LED_R2=0;}//狀態(tài)6voidstate6(){LED_G1=0;LED_Y1=0;LED_R1=1;//東西紅燈亮LED_G2=0;LED_R2=0;LED_Y2=1;//南北黃燈亮}voidmain(){P2=0x00;//關(guān)閉不相關(guān)的LEDP0=0xff;P1=0xff;TMOD=0x01;//置T0工作方式1TH0=0x3c;//置T0定時(shí)初值50mSTL0=0xb0;TR0=1;//啟動(dòng)T0EA=0;LOOP:R2=20;//置1S計(jì)數(shù)初值50mS*20=1SR3=20;//紅燈20Sstate1();//調(diào)用狀態(tài)1WAIT1:while(!TF0);TF0=0;TH0=0x3c;TL0=0xb0;TR0=1;//啟動(dòng)T0R2--; if(R2>0)gotoWAIT1;//判1S到否?未到繼續(xù)狀態(tài)1R2=20;//置50mS計(jì)數(shù)初值R3--;if(R3>0)gotoWAIT1;//狀態(tài)1維持20S//***************************************************R2=5;//置50mS計(jì)數(shù)初值5*4=20R3=3;//綠燈閃3SR4=4;//閃爍間隔200mSWAIT2:state2();//調(diào)用狀態(tài)2if(!TF0)gotoWAIT2;//查詢50mS到否TF0=0;TH0=0x3c;//恢復(fù)T0定時(shí)初值50mSTL0=0xb0;R4--;if(R4>0)gotoWAIT2;//判200mS到否?未到繼續(xù)狀態(tài)2LED_G1=~LED_G1;//東西綠燈閃R4=4;//閃爍間隔200mSR2--;if(R2>0)gotoWAIT2;//判1S到否?未到繼續(xù)狀態(tài)2R2=5;//置50mS計(jì)數(shù)初值R3--;if(R3>0)gotoWAIT2;//狀態(tài)2維持3S//***************************************************R2=20;//置50mS計(jì)數(shù)初值R3=2;//黃燈2SWAIT3:state3();//調(diào)用狀態(tài)3if(!TF0)gotoWAIT3;//查詢30mS到否TF0=0;TH0=0x3c;//恢復(fù)T0定時(shí)初值50mSTL0=0xb0; R2--;if(R2>0)gotoWAIT3;//判1S到否?未到繼續(xù)狀態(tài)3R2=20;//置50mS計(jì)數(shù)初值R3--;if(R3>0)gotoWAIT3;//狀態(tài)3維持2S//;***************************************************R2=20;//置50mS計(jì)數(shù)初值R3=20;//黃燈2SWAIT4:state4();//調(diào)用狀態(tài)4if(!TF0)gotoWAIT4;//查詢30mS到否TF0=0;TH0=0x3c;//恢復(fù)T0定時(shí)初值50mSTL0=0xb0; R2--;if(R2>0)gotoWAIT4;//判1S到否?未到繼續(xù)狀態(tài)3R2=20;//置50mS計(jì)數(shù)初值R3--;if(R3>0)gotoWAIT4;//狀態(tài)4維持20S /////////////////////////////////////R2=5;//置50mS計(jì)數(shù)初值5*4=20R4=4;//閃爍間隔200mSR3=3;//綠燈閃3SWAIT5:state5();//調(diào)用狀態(tài)35if(!TF0)gotoWAIT5;//查詢50mS到否TF0=0;TH0=0x3c;//恢復(fù)T0定時(shí)初值100mSTL0=0xb0;R4--;if(R4>0)gotoWAIT5;//判200mS到否?未到繼續(xù)狀態(tài)5LED_G2=~LED_G2;//南北綠燈閃R4=4;//閃爍200mSR2--;if(R2>0)gotoWAIT5;R2=5;//置100mS計(jì)數(shù)初值R3--;if(R3>0)gotoWAIT5;//狀態(tài)5維持3S//;***************************************************R2=20;//置50mS計(jì)數(shù)初值R3=2;//黃燈2SWAIT6:state6();//調(diào)用狀態(tài)6if(!TF0)gotoWAIT6;//查詢100mS到否TF0=0;TH0=0x3c;//恢復(fù)T0定時(shí)初值100mSTL0=0xb0;R2--;if(R2>0)gotoWAIT6;//判1S到否?未到繼續(xù)狀態(tài)6R2=20;//置100mS計(jì)數(shù)初值R3--;if(R3>0)gotoWAIT6;//狀態(tài)6維持2gotoLOOP;//大循環(huán)}五實(shí)驗(yàn)心得體會(huì)通過(guò)實(shí)驗(yàn)及仿真,根本熟悉了解了ULN2003芯片工作原理,通過(guò)軟件的仿真,了解了交通燈的運(yùn)行原理,同時(shí),對(duì)于51單片機(jī)的應(yīng)用有了進(jìn)一步的認(rèn)識(shí)。實(shí)驗(yàn)三串行A/D轉(zhuǎn)換實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?.掌握單片機(jī)I/O的編程方法2.掌握TLC549芯片使用方法二、實(shí)驗(yàn)說(shuō)明輸入給定程序,配置選項(xiàng),調(diào)試并運(yùn)行程序,觀察程序控制下仿真器輸出的變化。選中此項(xiàng)keil為硬件仿真設(shè)置Port串口:一般為COM3,Baudrate波特率為最大值:115200bit/s,最后確認(rèn)TLC549是美國(guó)德州儀器公司生產(chǎn)的8位串行A/D轉(zhuǎn)換器芯片,可與通用微處理器、控制器通過(guò)CLK、CS、DATAOUT三條口線進(jìn)行串行接口。具有4MHz片內(nèi)系統(tǒng)時(shí)鐘和軟、硬件控制電路,轉(zhuǎn)換時(shí)間最長(zhǎng)17μs,TLC549為40000次/s??偸д{(diào)誤差最大為±0.5LSB,典型功耗值為6mW。采用差分參考電壓高阻輸入,抗干擾,可按比例量程校準(zhǔn)轉(zhuǎn)換范圍,VREF-接地,VREF+-VREF-≥1V,可用于較小信號(hào)的采樣。用C51進(jìn)行程序設(shè)計(jì),選擇匯編或者C語(yǔ)言編程均可,要求程序結(jié)構(gòu)清晰,模塊化結(jié)構(gòu),反復(fù)調(diào)用局部做成子模塊,有必要的注釋。編寫(xiě)程序上機(jī)調(diào)試通過(guò),實(shí)驗(yàn)報(bào)告要求提交程序流程圖及源程序。三、實(shí)驗(yàn)內(nèi)容及步驟〔完成分值:100分/單個(gè)程序〕本實(shí)驗(yàn)需要用到本實(shí)驗(yàn)用到單片機(jī)最小系統(tǒng)〔F1區(qū)〕、串行靜態(tài)數(shù)碼顯示〔I3區(qū)〕、電位器〔A2區(qū)〕和串行A/D轉(zhuǎn)換〔H6區(qū)〕。串行靜態(tài)數(shù)碼顯示的DIN、CLK分別接單片機(jī)最小系統(tǒng)的P1.0、P1.1口;單片機(jī)最小系統(tǒng)的P2.1、P2.0分別接串行A/D轉(zhuǎn)換的DATA、CLK,串行A/D轉(zhuǎn)換的CS-549接P2.2,AIN接電位器〔A2區(qū)〕0~5V可調(diào)輸出端。翻開(kāi)單片機(jī)最小系統(tǒng)的電源開(kāi)關(guān),串行A/D轉(zhuǎn)換的JT1H電源短路帽打在VCC處。用串行數(shù)據(jù)通信線連接計(jì)算機(jī)與仿真器,把仿真頭插到模塊的單片機(jī)鎖緊插座中,請(qǐng)注意仿真器的方向:缺口朝上。請(qǐng)指導(dǎo)老師檢查接線后再翻開(kāi)模塊電源。翻開(kāi)KeiluVision2仿真軟件,首先建立本實(shí)驗(yàn)的工程文件,接著添加源程序,進(jìn)行編譯,直到編譯無(wú)誤。全速運(yùn)行程序。數(shù)碼管顯示電壓轉(zhuǎn)化的數(shù)字量,調(diào)節(jié)模擬信號(hào)輸入端的電位器旋鈕。觀察數(shù)碼管數(shù)字隨著旋鈕旋轉(zhuǎn)而線性變化。注意:電位器旋鈕容易被擰壞,不要過(guò)分旋轉(zhuǎn)旋鈕。四、電路原理圖實(shí)驗(yàn)程序#include<reg51.h>#defineuintunsignedint#defineucharunsignedchar//sbitclock=P2^0;//sbitdout=P2^1;//sbitcs=P2^2;sbitTLC549_CLK=P2^0;sbitTLC549_DOUT=P2^1;sbitTLC549_CS=P2^2;sbitDin=P1^0;sbitClk=P1^1;unsignedcharcodeTab[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x58,0x5e,0x79,0x71,0x00};//0-Fvoiddelay(intcount){unsignedinti; for(i=0;i<count;i++);}//顯示函數(shù)voiddisplay(uchardatax){ uchari,j,chr,sel;ucharxs[8]={16,16,16,16,16,16,16,16};//針對(duì)實(shí)驗(yàn)中8個(gè)串口LED靜態(tài)顯示器 xs[7]=x&0x0f; xs[6]=x&0xf0; xs[6]=x>>4;for(i=0;i<8;i++){chr=Tab[xs[i]];// sel=0x80; for(j=0;j<8;j++) { Clk=0;//P1.1發(fā)出同步信號(hào)Din=chr&sel; Clk=1;sel=sel>>1; }}}unsignedcharTLC549_ReadByte(void){ unsignedcharvalue=0,i=0; TLC549_DOUT=1; for(i=0;i<8;i++) { if(TLC549_DOUT==1) value|=(0x80>>i); TLC549_CLK=1; TLC549_CLK=0; delay(50); }returnvalue;}unsignedcharTLC549_GetValue(void){ unsignedcharConvertValue; TLC549_CS=0; ConvertValue=TLC549_ReadByte(); TLC549_CS=1; delay(150);returnConvertValue;}voidmain(){uchari,dataad; while(1){ad=TLC549_GetValue(); display(ad); for(i=0;i<255;i++)delay(100); }}五實(shí)驗(yàn)心得與體會(huì)通過(guò)實(shí)驗(yàn),認(rèn)識(shí)掌握TLC549芯片使用方法,并且運(yùn)用實(shí)驗(yàn)程序做出了正確的結(jié)果。同時(shí),對(duì)于單片機(jī)的i/o編程有了認(rèn)識(shí),掌握單片機(jī)I/O的編程方法。實(shí)驗(yàn)四DS18B20溫度傳感器實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康牧私鉁囟葌鞲衅麟娐返墓ぷ髟砹私鉁囟瓤刂频母驹碚莆找痪€總線接口的使用二、實(shí)驗(yàn)說(shuō)明輸入給定程序,配置選項(xiàng),調(diào)試并運(yùn)行程序,觀察程序控制下仿真器輸出的變化。選中此項(xiàng)keil為硬件仿真設(shè)置Port串口:一般為COM3,Baudrate波特率為最大值:115200bit/s,最后確認(rèn)Dallas半導(dǎo)體公司的數(shù)字化溫度傳感器DS1820是世界上第一片支持“一線總線”接口的溫度傳感器?,F(xiàn)場(chǎng)溫度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。DS18B20內(nèi)部結(jié)構(gòu)主要由四局部組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TL、配置存放器。DS18B20的管腳排列如下,DQ為數(shù)字信號(hào)輸入/輸出端;GND為電源地;VDD為外接供電電源輸入端〔在寄生電源接線方式時(shí)接地〕。DS18B20中的溫度傳感器可完成對(duì)溫度的測(cè)量,以12位轉(zhuǎn)化為例:用16位符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供,以0.0625℃/LSB形式表達(dá),其中S為符號(hào)位。這是12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲(chǔ)在18B20的兩個(gè)8比特的RAM中,二進(jìn)制中的前面5位是符號(hào)位,如果測(cè)得的溫度大于0,這5位為0,只要將測(cè)到的數(shù)值乘于0.0625即可得到實(shí)際溫度;如果溫度小于0,這5位為1,測(cè)到的數(shù)值需要取反加1再乘于0.0625即可得到實(shí)際溫度。例如+125℃的數(shù)字輸出為07D0H,+25.0625℃的數(shù)字輸出為0191H,-25.0625℃的數(shù)字輸出為FF6FH,-55℃的數(shù)字輸出為FC90H。本實(shí)驗(yàn)在讀取溫度的根底上,完成類似空調(diào)恒溫控制的實(shí)驗(yàn)。用加熱電阻代替加熱電機(jī)。溫度值通過(guò)LED靜態(tài)顯示電路以十進(jìn)制形式顯示出來(lái),制冷采用自然冷卻。用C51進(jìn)行程序設(shè)計(jì),選擇匯編或者C語(yǔ)言編程均可,要求程序結(jié)構(gòu)清晰,模塊化結(jié)構(gòu),反復(fù)調(diào)用局部做成子模塊,有必要的注釋。編寫(xiě)程序上機(jī)調(diào)試通過(guò),實(shí)驗(yàn)報(bào)告要求提交程序流程圖及源程序。三、實(shí)驗(yàn)內(nèi)容及步驟〔完成分值:100分/單個(gè)程序〕本實(shí)驗(yàn)需要用到本實(shí)驗(yàn)需要用到單片機(jī)最小應(yīng)用系統(tǒng)〔F1區(qū)〕、串行靜態(tài)顯示〔I3區(qū)〕和溫度傳感器模塊〔C3區(qū)〕。DS18B20的CONTROL接最小應(yīng)用系統(tǒng)P1.4,OUT接最小應(yīng)用系統(tǒng)P2.0。最小系統(tǒng)的P1.0,P1.1接串行靜態(tài)顯示的DIN,CLK端。翻開(kāi)相關(guān)模塊電源。用串行數(shù)據(jù)通信線連接計(jì)算機(jī)與仿真器,把仿真頭插到模塊的單片機(jī)鎖緊插座中,請(qǐng)注意仿真器的方向:缺口朝上。請(qǐng)指導(dǎo)老師檢查接線后再翻開(kāi)模塊電源。翻開(kāi)KeiluVision2仿真軟件,首先建立本實(shí)驗(yàn)的工程文件,接著添加源程序,進(jìn)行編譯,直到編譯無(wú)誤。全速運(yùn)行程序。程序正常運(yùn)行后,按下自鎖開(kāi)關(guān)‘控制’SIC。LED數(shù)顯為“XX”為十進(jìn)制溫度測(cè)量值,“XX”為十進(jìn)制溫度設(shè)定值,按下自鎖開(kāi)關(guān)“控制”SIC那么加熱源開(kāi)始加熱,溫度也隨著變化,當(dāng)加熱到設(shè)定的控制溫度時(shí)如40度時(shí),停止加熱。注意:實(shí)驗(yàn)完成以后務(wù)必關(guān)閉該模塊,防止沒(méi)有控制無(wú)限加熱造成模塊損壞四、電路原理圖實(shí)驗(yàn)程序#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintsbitDQ=P2^0;//ds18b20與單片機(jī)連接口sbitDin=P1^0;//sbitCLK=P1^1;//unsignedcharcodeLED_Map[18]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x58,0x5e,0x79,0x71,0,0x40};//0-F,,-uchardatadisdata[5];uinttvalue;//溫度值uchartflag;//溫度正負(fù)標(biāo)志voiddelay(intcount){unsignedinti; for(i=0;i<count;i++);}//數(shù)碼顯示voiddisplay(){ucharLED_code[5];uchari,j,chr,sel;///////////////for(i=0;i<4;i++)LED_code[i]=LED_Map[disdata[i]];//LED_code[i]=LED_Map[0]; if((LED_code[0]==0)&&(tflag==1)&&(LED_code[1]!=0))LED_code[0]=0x40;//顯示負(fù)號(hào) if((LED_code[1]==0)&&(tflag==1))LED_code[0]=0x40;for(i=0;i<4;i++){chr=LED_code[3-i];//if(i==1)chr=chr|0x80; sel=0x80;for(j=0;j<8;j++) { Din=chr&sel; CLK=0; sel=sel>>1; delay(1); CLK=1;delay(1); } }}/******************************ds1820程序***************************************/voiddelay_18B20(unsignedinti)//延時(shí)1微秒{ while(i--);}voidds1820rst()/*ds1820復(fù)位*/{unsignedcharx=0; DQ=1;//DQ復(fù)位 delay_18B20(4);//延時(shí) DQ=0;//DQ拉低 delay_18B20(100);//精確延時(shí)大于480us DQ=1;//拉高 delay_18B20(40); }uchards1820rd()/*讀數(shù)據(jù)*/{unsignedchari=0; unsignedchardat=0; for(i=8;i>0;i--) {DQ=0;//給脈沖信號(hào) dat>>=1; DQ=1;//給脈沖信號(hào) if(DQ) dat|=0x80; delay_18B20(10); } return(dat);}voidds1820wr(ucharwdata)/*寫(xiě)數(shù)據(jù)*/{unsignedchari=0;for(i=8;i>0;i--){DQ=0;DQ=wdata&0x01;delay_18B20(10);DQ=1;wdata>>=1;}}////////////////////////////////////////////////////////read_temp()/*讀取溫度值并轉(zhuǎn)換*/{uchara,b;ds1820rst();ds1820wr(0xcc);//*跳過(guò)讀序列號(hào)*/ds1820wr(0x44);//*啟動(dòng)溫度轉(zhuǎn)換*/ds1820rst();ds1820wr(0xcc);//*跳過(guò)讀序列號(hào)*/ds1820wr(0xbe);//*讀取溫度*/a=ds1820rd();b=ds1820rd();tvalue=b;tvalue<<=8;tvalue=tvalue|a;if(tvalue<0x0fff)tflag=0;else{tvalue=~tvalue+1;//求負(fù)數(shù)絕對(duì)值tflag=1;}tvalue=tvalue*(0.625);//溫度值擴(kuò)大10倍,精確到1位小數(shù) return(tvalue);}/*******************************************************************/voidds1820disp()//溫度值顯示{disdata[0]=tvalue/1000;//百位數(shù)disdata[1]=tvalue%1000/100;//十位數(shù)disdata[2]=tvalue%100/10;//個(gè)位數(shù)disdata[3]=tvalue%10;//小數(shù)位if(disdata[0]==0) { disdata[0]=0x10;//如果百位為0,不顯示 if(disdata[1]==0) { disdata[1]=0x10;//如果百位為0,十位為0也不顯示 } }display();}/********************主程序*************************/voidmain(){uinti; while(1) { read_temp();//讀取溫度ds1820disp();//顯示 for(i=0;i<255;i++)delay(100); }}五實(shí)心得體會(huì)通過(guò)軟件編及仿真,了解了溫度傳感器電路的工作原理,編程過(guò)程中,熟悉并了解溫度控制的根本原理,以及熟悉了解并掌握了一線總線接口的使用實(shí)驗(yàn)五步進(jìn)電機(jī)控制實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?.了解步進(jìn)電機(jī)控制的根本原理2.掌握控制步進(jìn)電機(jī)轉(zhuǎn)動(dòng)的編程方法3.了解單片機(jī)控制外部設(shè)備的常用電路二、實(shí)驗(yàn)說(shuō)明輸入給定程序,配置選項(xiàng),調(diào)試并運(yùn)行程序,觀察程序控制下仿真器輸出的變化。選中此項(xiàng)keil為硬件仿真設(shè)置Port串口:一般為COM3,Baudrate波特率為最大值:115200bit/s,最后確認(rèn)步進(jìn)電動(dòng)機(jī)有三線式、五線式、六線式三種,但其控制方式均相同,必須以脈沖電流來(lái)驅(qū)動(dòng)。假設(shè)每旋轉(zhuǎn)一圈以20個(gè)勵(lì)磁信號(hào)來(lái)計(jì)算,那么每個(gè)勵(lì)磁信號(hào)前進(jìn)18度,其旋轉(zhuǎn)角度與脈沖數(shù)成正比,正、反轉(zhuǎn)可由脈沖順序來(lái)控制。步進(jìn)電動(dòng)機(jī)的勵(lì)磁方式可分為全步勵(lì)磁及半步勵(lì)磁,其中全步勵(lì)磁又有1相勵(lì)磁及2相勵(lì)磁之分,而半步勵(lì)磁又稱1-2相勵(lì)磁。圖為步進(jìn)電動(dòng)機(jī)的控制等效電路,適應(yīng)控制A、B、/A、/B的勵(lì)磁信號(hào),即可控制步進(jìn)電動(dòng)機(jī)的轉(zhuǎn)動(dòng)。每輸出一個(gè)脈沖信號(hào),步進(jìn)電動(dòng)機(jī)只走一步。因此,依序不斷送出脈沖信號(hào),即可步進(jìn)電動(dòng)機(jī)連續(xù)轉(zhuǎn)動(dòng)。用C51進(jìn)行程序設(shè)計(jì),選擇匯編或者C語(yǔ)言編程均可,要求程序結(jié)構(gòu)清晰,模塊化結(jié)構(gòu),反復(fù)調(diào)用局部做成子模塊,有必要的注釋。編寫(xiě)程序上機(jī)調(diào)試通過(guò),實(shí)驗(yàn)報(bào)告要求提交程序流程圖及源程序。三、實(shí)驗(yàn)內(nèi)容及步驟〔完成分值:100分/單個(gè)程序〕本實(shí)驗(yàn)需要用到本實(shí)驗(yàn)需要用到單片機(jī)最小應(yīng)用系統(tǒng)〔F1區(qū)〕、步進(jìn)電機(jī)模塊〔M2區(qū)〕和查詢式鍵盤(pán)〔B2區(qū)〕。單片機(jī)最小應(yīng)用系統(tǒng)的P1.0、P1.1、P1.2、P1.3口分別接步進(jìn)電機(jī)模塊的SA、SB、SC、SD。最小系統(tǒng)的P2.0、P2.1、P2.2分別對(duì)應(yīng)的接查詢式鍵盤(pán)的K0、K1、K2鍵。翻開(kāi)相關(guān)模塊的電源開(kāi)關(guān)。用串行數(shù)據(jù)通信線連接計(jì)算機(jī)與仿真器,把仿真頭插到模塊的單片機(jī)鎖緊插座中,請(qǐng)注意仿真器的方向:缺口朝上。請(qǐng)指導(dǎo)老師檢查接線后再翻開(kāi)模塊電源。翻開(kāi)KeiluVision2仿真軟件,首先建立本實(shí)驗(yàn)的工程文件,接著添加源程序,進(jìn)行編譯,直到編譯無(wú)誤。全速運(yùn)行程序。按下K0鍵電機(jī)正轉(zhuǎn),K1反轉(zhuǎn),K2電機(jī)STOP。四、電路原理圖實(shí)驗(yàn)程序#include<reg52.h>#defineucharunsignedchar#defineuintunsignedint voiddelay(uinta);constucharstep_table1[]={0x01,0x02,0x04,0x08};//sbitzhengzhuang=P2^0;sbitfanzhuang=P2^1;sbitstop=P2^2;voiddelay(uinta){uinti,j;for(i=a;i>0;i--)for(j=122;j>0;j--);}voidmain(){uchari,flag0;while(1){zhengzhuang=1;fanzhuang=1; stop=1; flag0=0; if((!zhengzhuang)&&(fanzhuang)&&(stop))flag0=1; if((zhengzhuang)&&(!fanzhuang)&&(stop))flag0=2; if(!stop)flag0=3; if(flag0!=0) { for(i=0;i<4;i++){if(flag0==1) P1=step_table1[i]; if(flag0==2) P1=step_table1[3-i]; if(flag0==3) P1=0; P1=~P1;delay(100);} }}}五實(shí)驗(yàn)心得體會(huì)本次實(shí)驗(yàn)成功的實(shí)現(xiàn)了步進(jìn)電機(jī)的正反轉(zhuǎn)控制,對(duì)仿真軟件以及51單片機(jī)編譯軟件能更加熟練地運(yùn)用,試驗(yàn)中,了解了步進(jìn)電機(jī)的根本原理,掌握控制步進(jìn)電機(jī)轉(zhuǎn)動(dòng)的編程方法。對(duì)試驗(yàn)臺(tái)中外部電路也有了進(jìn)一步的人是和了解,了解了單片機(jī)控制外部設(shè)備的常用電路。實(shí)驗(yàn)六直流電機(jī)控制實(shí)驗(yàn)串行靜態(tài)顯示實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?.了解脈寬調(diào)制〔PWM〕的原理2.學(xué)習(xí)用PWM輸出模擬量驅(qū)動(dòng)直流電機(jī)3.熟悉51系列單片機(jī)的延時(shí)程序二、實(shí)驗(yàn)說(shuō)明輸入給定程序,配置選項(xiàng),調(diào)試并運(yùn)行程序,觀察程序控制下仿真器輸出的變化。選中此項(xiàng)keil為硬件仿真設(shè)置Port串口:一般為COM3,Baudrate波特率為最大值:115200bit/s,最后確認(rèn)PWM是單片機(jī)上常用的模擬量輸出方法,用占空比不同的脈沖驅(qū)動(dòng)直流電機(jī)轉(zhuǎn)動(dòng),從而得到不同的轉(zhuǎn)速。程序中通過(guò)調(diào)整輸出脈沖的占空比來(lái)調(diào)節(jié)直流電機(jī)的轉(zhuǎn)速。使用光電測(cè)速元件測(cè)速,當(dāng)它與圓盤(pán)上的空位相靠近時(shí),光電元件輸出低電平,當(dāng)它被遮住時(shí),光電元件輸出高電平。圓盤(pán)轉(zhuǎn)動(dòng)一周時(shí)那么產(chǎn)生12個(gè)脈沖,直流電機(jī)轉(zhuǎn)動(dòng)時(shí),光電元件輸出連續(xù)的脈沖信號(hào),單片機(jī)記錄其脈沖信號(hào),就可以測(cè)出直流電機(jī)的轉(zhuǎn)速。另外增加顯示電路,可把電機(jī)的轉(zhuǎn)速顯示出來(lái)。用C51進(jìn)行程序設(shè)計(jì),選擇匯編或者C語(yǔ)言編程均可,要求程序結(jié)構(gòu)清晰,模塊化結(jié)構(gòu),反復(fù)調(diào)用局部做成子模塊,有必要的注釋。編寫(xiě)程序上機(jī)調(diào)試通過(guò),實(shí)驗(yàn)報(bào)告要求提交程序流程圖及源程序。順便說(shuō)一下:易念恩老師處有大量關(guān)于各種單片機(jī)的資料〔8G以上〕,如果確實(shí)有興趣在這方面開(kāi)展可以帶上USB3.0的U盤(pán)或者移動(dòng)硬盤(pán)〔USB2.0拷貝太慢〕找易老師拷貝資料。三、實(shí)驗(yàn)內(nèi)容及步驟〔完成分值:60分/單個(gè)程序〕本實(shí)驗(yàn)需要用到本實(shí)驗(yàn)需要用到單片機(jī)最小應(yīng)用系統(tǒng)〔F1區(qū)〕、串行靜態(tài)顯示〔I3區(qū)〕和直流電機(jī)驅(qū)動(dòng)模塊〔M1區(qū)〕。單片機(jī)最小應(yīng)用系統(tǒng)的P1.7接直流電機(jī)驅(qū)動(dòng)模塊的PWM輸入口Control,最小系統(tǒng)的INTO接直流電機(jī)驅(qū)動(dòng)模塊PULSEOUT,最小系統(tǒng)的P1.0、P1.1接串行靜態(tài)顯示的DIN、CLK。翻開(kāi)相關(guān)模塊電源。用串行數(shù)據(jù)通信線連接計(jì)算機(jī)與仿真器,把仿真頭插到模塊的單片機(jī)鎖緊插座中,請(qǐng)注意仿真器的方向:缺口朝上。請(qǐng)指導(dǎo)老師檢查接線后再翻開(kāi)模塊電源。翻開(kāi)KeiluVision2仿真軟件,首先建立本實(shí)驗(yàn)的工程文件,接著添加源程序,進(jìn)行編譯,直到編譯無(wú)誤。全速運(yùn)行程序。觀察直流電機(jī)轉(zhuǎn)速,一段時(shí)間后控制在程序設(shè)定的值30轉(zhuǎn)/S的左右。四、電路原理圖實(shí)驗(yàn)程序#include<reg51.h>typedefunsignedcharuchar; typedefunsignedintuint; sbitPWM_out=P1^7; sbitmRun=P2^0; sbitDin=P1^0;//sbitCLK=P1^1;// uintperiod=300; uinttime=0; uintPWM_h=100; uintcount=0; uintspeed=0; uintdat_t=0; uchardispflag=0; uchardatadisdata[8];unsignedcharcodeLED_Map[18]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x58,0x5e,0x79,0x71,0,0x40};//0-F,,-voiddelay(intcount){unsignedinti; for(i=0;i<count;i++);}//數(shù)碼顯示voiddisplay(){ucharLED_code[8];uchari,j,chr,sel;///////////////for(i=0;i<8;i++)LED_code[i]=LED_Map[disdata[i]];//LED_code[i]=0x3f; for(i=0;i<8;i++){chr=LED_code[i];// if(i==1)chr=chr|0x80; sel=0x80;for(j=0;j<8;j++) { Din=chr&sel; CLK=0; sel=sel>>1; delay(1); CLK=1;delay(1); } }}voidspeed_disp()//速度顯示 {//speed=123; disdata[0]=speed/100;//取10位disdata[1]=speed%100/10;//取個(gè)位disdata[2]=speed%10;//取個(gè)位 disdata[3]=16; disdata[4]=16; disdata[5]=16; disdata[6]=16; disdata[7]=16;if(disdata[2]==0) { disdata[2]=0x10;//如果十位為零那么不顯示 }display();}voidint0()interrupt0using0 { count++; if(dat_t>=1000) {speed=(count-1)*10/12; dispflag=1; count=0; dat_t=0; } } voidtimer0()interrupt1using1{ TH0=0xfc;//定時(shí)器裝載初值,設(shè)置脈沖信號(hào)的占空比1ms(65536-1000=fc18)TL0=0x18; time++; dat_t++; if(time>period)time=0; if(time<=PWM_h)/*高電平持續(xù)時(shí)間結(jié)束,變低*/PWM_out=1; /*經(jīng)過(guò)反相器反相*/ elseif((time>PWM_h)&&(time<=period))/*周期時(shí)間到,變高*/{ //time=0;PWM_out=0; /*經(jīng)過(guò)反相器反相*/ } //if(time==period)time=0;}voidmain(){ucharflag0=0;P1=0x00;PWM_out=0;speed=0;speed_disp();TMOD=0x01;/*定時(shí)器0方式1*/TH0=0xfc;//定時(shí)器裝載初值,設(shè)置脈沖信號(hào)的占空比1ms(65536-1000=fc18)TL0=0x18;dat_t=0;ET0=1;/*開(kāi)定時(shí)器0中斷*/TR0=1;/*啟動(dòng)定時(shí)器0*/IT0=1;EX0=1;EA=1;while(1){ if(mRun==0) { EA=1;/*開(kāi)CPU中斷*/ flag0=1; if(dispflag==1) { dispflag=0; speed_disp(); } } if(mRun==1) { EA=0; /*關(guān)CPU中斷*/ PWM_out=0; if(flag0==1) { speed=0; speed_disp(); flag0=0; } }}}附加題修改程序,使電機(jī)從高速到低速再到高速,反復(fù)循環(huán)程序#include<reg51.h>typedefunsignedcharuchar; typedefunsignedintuint; sbitPWM_out=P1^7; sbitmRun=P2^0; sbitDin=P1^0;//sbitCLK=P1^1;// uintperiod=300; uinttime=0; uintPWM_h=80; uintcount=0; uintspeed=0; uintdat_t=0; uintturn_flag=1; uchardispflag=0; uchardatadisdata[8];unsignedcharcodeLED_Map[18]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x58,0x5e,0x79,0x71,0,0x40};//0-F,,-voiddelay(intcount){unsignedinti; for(i=0;i<count;i++);}//數(shù)碼顯示voiddisplay(){ucharLED_code[8];uchari,j,chr,sel;///////////////for(i=0;i<8;i++)LED_code[i]=LED_Map[disdata[i]];//LED_code[i]=0x3f; for(i=0;i<8;i++){chr=LED_code[i];// if(i==1)chr=chr|0x80; sel=0x80;for(j=0;j<8;j++) { Din=chr&sel; CLK=0; sel=sel>>1; delay(1); CLK=1;delay(1); } }}voidspeed_disp()//速度顯示 {//speed=123; disdata[0]=speed/100;//取10位disdata[1]=speed%100/10;//取個(gè)位disdata[2]=speed%10;//取個(gè)位 disdata[3]=16; disdata[4]=16; disdata[5]=16; disdata[6]=16; disdata[7]=16;if(disdata[2]==0) { disdata[2]=0x10;//如果十位為零那么不顯示 }display();}voidint0()interrupt0using0 { count++; if(dat_t>=1000) {speed=(count-1)*10/12; dispflag=1; count=0; dat_t=0; } } voidtimer0()interrupt1using1{ TH0=0xfc;//定時(shí)器裝載初值,設(shè)置脈沖信號(hào)的占空比1ms(65536-1000=fc18)TL0=0x18; time++; dat_t++; if(time>period)time=0; if(time<=PWM_h)/*高電平持續(xù)時(shí)間結(jié)束,變低*/PWM_out=1; /*經(jīng)過(guò)反相器反相*/ elseif((time>PWM_h)&&(time<=period))/*周期時(shí)間到,變高*/{ //time=0;PWM_out=0; /*經(jīng)過(guò)反相器反相*/ } //if(time==period)time=0;}voidmain(){ucharflag0=0;P1=0x00;PWM_out=0;speed=0;speed_disp();TMOD=0x01;/*定時(shí)器0方式1*/TH0=0xfc;//定時(shí)器裝載初值,設(shè)置脈沖信號(hào)的占空比1ms(65536-1000=fc18)TL0=0x18;dat_t=0;ET0=1;/*開(kāi)定時(shí)器0中斷*/TR0=1;/*啟動(dòng)定時(shí)器0*/IT0=1;EX0=1;EA=1;while(1){ if(mRun==0) { EA=1;/*開(kāi)CPU中斷*/ flag0=1; if(dispflag==1) { dispflag=0; speed_disp(); PWM_h=200; turn_flag=0; if((PWM_h<200)&(turn_flag==1)) { PWM_h+=20; } turn_flag=0; if((20<=PWM_h<300)&&(turn_flag==0)) { PWM_h-=20; } //if(PWM_h<=20)turn_flag=1; } // if(t_flag>=1000){ //PWM_h++; //t_flag==0;} } if(mRun==1) { EA=0; /*關(guān)CPU中斷*/ PWM_out=0; if(flag0==1) { speed=0; speed_disp(); flag0=0; } }}}2. 參加控制開(kāi)關(guān),不同開(kāi)關(guān)控制對(duì)應(yīng)電機(jī)高轉(zhuǎn)速、中等轉(zhuǎn)速、低轉(zhuǎn)速。程序#include<reg51.h>typedefunsignedcharuchar; typedefunsignedintuint; sbitPWM_out=P1^7; sbitmRun=P2^0; sbitDin=P1^0;//sbitCLK=P1^1;//sbitdi=P2^5;sbitzhong=P2^6;sbitgao=P2^7; uintperiod=300; uinttime=0; uintPWM_h=80; uintcount=0; uintspeed=0; uintdat_t=0; uintturn_flag=1; uchardispflag=0; uchardatadisdata[8];unsignedcharcodeLED_Map[18]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x58,0x5e,0x79,0x71,0,0x40};//0-F,,-voiddelay(intcount){unsignedinti;

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論