版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第九章 應(yīng)用實例在本章中,將前幾章所學的內(nèi)容進一步擴展,設(shè)計并完成幾個完整的應(yīng)用實例,鞏固所學的知識。特別是提高程序設(shè)計和調(diào)試能力。9.1 直流電動機的應(yīng)用直流電動機的基本知識1)直流電動機工作原理直流電動機就是將直流電能轉(zhuǎn)換為機械能的轉(zhuǎn)動裝置。直流電動機具有良好的調(diào)速性能、較大的啟動轉(zhuǎn)矩和過載能力強等諸多優(yōu)點,因此在許多行業(yè)中應(yīng)用廣泛。特別在全國大學生電子設(shè)計競賽中,微型直流電機、電動小車多次作為控制類題目主要控制對象。微型直流電機(包括玩具直流電機、小型直流減速電機等)一般為永磁式直流電動機。永磁式直流電動機由定子磁極、轉(zhuǎn)子、換向器、電刷、機殼、軸承等構(gòu)成。定子磁極采用永磁體(永久磁鋼),
2、定子的作用是產(chǎn)生主磁場。轉(zhuǎn)子為進行能量轉(zhuǎn)換的電樞,在磁場中產(chǎn)生感應(yīng)電動勢和電磁轉(zhuǎn)矩。直流電機定子固定有環(huán)狀永磁體,電流通過轉(zhuǎn)子上的線圈產(chǎn)生安培力,當轉(zhuǎn)子上的線圈與磁場平行時,再繼續(xù)旋轉(zhuǎn)受到的磁場方向?qū)⒏淖?,因此此時轉(zhuǎn)子末端的電刷跟換向片交替接觸,從而線圈上的電流方向也改變,產(chǎn)生的洛倫茲力方向不變,所以電機能保持一個方向轉(zhuǎn)動。要改變直流電機旋轉(zhuǎn)方向,只需要改變轉(zhuǎn)子線圈電壓極性。直流電機轉(zhuǎn)速公式:式中,Ud為電機外加直流電壓,Ra為電樞繞組電阻,Ce為電機常數(shù),I為電機電流,電機電流與負載大小有關(guān)。從直流電機轉(zhuǎn)速公式可見,只要改變電樞電壓就能實現(xiàn)直流電機的無極調(diào)速。2)直流電機驅(qū)動電路小功率直流電
3、機驅(qū)動電路可以采用如圖9_1所示的H橋開關(guān)電路。這種驅(qū)動電路可以很方便地實現(xiàn)直流電機的四象限運行,即正轉(zhuǎn)、正轉(zhuǎn)制動、反轉(zhuǎn)和反轉(zhuǎn)制動。UA和UB是互補的TTL驅(qū)動信號。由于大功率PNP晶體管價格高,難實現(xiàn),所以這個電路只在小功率電機驅(qū)動中使用。當四個功率開關(guān)全用NPN晶體管時,需要解決兩個上橋臂晶體管(BG1和BG3)的基極電平偏移問題。圖(b)中H橋開關(guān)電路利用兩個晶體管實現(xiàn)了上橋臂晶體管的電平偏移。但電阻R上的損耗較大,所以也只能在小功率電機驅(qū)動中使用。(a) PNP/NPN管 (b)4個NPN管圖9_1 H橋開關(guān)電路對于H橋驅(qū)動電路,上下橋臂功率晶體管施加互補信號。由于帶載情況下,晶體管的
4、關(guān)斷時間通常比開通時間長,例如當下橋臂晶體管未及時關(guān)斷,而上橋臂搶先開通時就出現(xiàn)所謂“橋臂直通”故障。橋臂直通時,電流迅速變大,造成功率開關(guān)損壞。所以設(shè)置導通延時,是必不可少的。在實際制作中,可以采用大功率達林頓管或場效應(yīng)管等分離元件進行驅(qū)動電路設(shè)計。為了簡化電路設(shè)計,建議使用H橋電機驅(qū)動L298N等專用芯片,其性能穩(wěn)定可靠、電路簡單。對于大功率驅(qū)動系統(tǒng),希望將主回路與控制回路之間實行電氣隔離,此時常采用光電耦合電路來實現(xiàn)。L298N是ST公司生產(chǎn)的一種高電壓、大電流電機驅(qū)動芯片。該芯片主要特點是:工作電壓高,最高工作電壓可達46V;輸出電流大,瞬間峰值電流可達3A,持續(xù)工作電流為2A;額定功
5、率25W。內(nèi)含兩個H橋的高電壓大電流全橋式驅(qū)動器,可以用來驅(qū)動直流電動機和步進電動機、繼電器線圈等感性負載;采用標準邏輯電平信號控制;具有兩個使能控制端,在不受輸入信號影響的情況下允許或禁止器件工作有一個邏輯電源輸入端,使內(nèi)部邏輯電路部分在低電壓下工作;可以外接檢測電阻,將變化量反饋給控制電路。L298N內(nèi)部結(jié)構(gòu)示意圖如圖9_2所示。該芯片可以驅(qū)動一臺兩相步進電機或四相步進電機,也可以驅(qū)動兩臺直流電機。圖9_2 L298N內(nèi)部結(jié)構(gòu)示意圖使用一個L298N驅(qū)動器可以驅(qū)動兩臺直流電機。引腳ENA、ENB可用于輸入PWM脈寬調(diào)制信號對電機進行調(diào)速控制。如果無須調(diào)速可將兩引腳接5V,使電機工作在最高速
6、狀態(tài),實現(xiàn)電機正反轉(zhuǎn)就更容易了。如果輸入信號端IN1接高電平,輸入端IN2接低電平,電機M1正轉(zhuǎn);如果信號端IN1接低電平, IN2接高電平,電機M1反轉(zhuǎn)??刂屏硪慌_電機是同樣的方式,輸入信號端IN3接高電平,輸入端IN4接低電平,電機M2正轉(zhuǎn)。反之則反轉(zhuǎn)。對于電機的調(diào)速,我們采用PWM調(diào)速的方法。其原理就是開關(guān)管在一個周期內(nèi)的導通時間是t,PWM周期為T,則電機兩端的平均電壓為Ud=Vs*t/T=a*Vs。其中,占空比a=t/T,Vs為驅(qū)動電源電壓。電機的轉(zhuǎn)速與電機兩端的電壓成正比,而電機兩端的電壓與控制波形的占空比成正比,因此電機的速度與占空比成正比。占空比越大,電機轉(zhuǎn)得越快。實例9.1直
7、流電機的單片機控制任務(wù)要求:設(shè)計一個能控制直流電機正反轉(zhuǎn)的調(diào)速電路,采用PWM方式調(diào)速,有加減速按鍵、啟動停止按鍵和方向選擇鍵。分析說明:在選擇控制直流電機的PWM周期時,要考慮的因素主要是電樞電感,驅(qū)動器能承受的頻率,散熱條件,對噪聲的要求等等。在驅(qū)動器能承受的范圍內(nèi),周期短一點好(也就是PWM頻率高一點)。這樣轉(zhuǎn)矩更平穩(wěn),噪聲小,電流紋波小。但是驅(qū)動器發(fā)熱會嚴重一些。直流電機用PWM實現(xiàn)調(diào)速的PWM波周期通常在毫秒以下量級,電機功率越大,可以允許周期也大一些。不考慮開關(guān)頻率的限制的話周期越短越好,但實際上電流越大電壓越高開關(guān)的頻率上限越低,或者說周期的下限越高。PWM周期較大時,電機高轉(zhuǎn)速
8、時由于慣性大不會有瞬間停頓問題,但讓電機運轉(zhuǎn)在很低的轉(zhuǎn)速時確實會出現(xiàn)類似蠕動的瞬間停頓的問題。我們選取PWM周期為2.5ms。1)硬件電路設(shè)計為了保證電路簡單可靠高,直流電機驅(qū)動電路采用電機專用驅(qū)動芯片L298N。四個二極管起到保護驅(qū)動芯片L298N的作用,當加到電機上的直流電壓關(guān)斷時,電機電樞線圈將產(chǎn)生很高的感應(yīng)電壓,此感應(yīng)電壓可以通過二極管提供的回路泄放,從而保護驅(qū)動芯片。硬件電路圖參見圖9_3所示。2)程序設(shè)計#include <msp430f249.h>#define key1 0x01#define key2 0x02#define key3 0x03#define ke
9、y4 0x04void key_process_1(void);void key_process_2(void);void key_process_3(void);void key_process_4(void);void key_check (void);unsigned char key_value; /定義全局變量,鍵值unsigned int a=10000; /初值50%占空比void main(void) WDTCTL = WDTPW + WDTHOLD; /停止看門狗 BCSCTL2=SELS; P1DIR = 0xff; / P1輸出 CCR0 = 20000; / PWM 周
10、期2.5ms CCTL1 = OUTMOD_7; / CCR1復位/置位 CCR1 = a; / CCR1 PWM 占空比5% TACTL = TASSEL_2 + MC_1; / 定時器A時鐘源為SMCLK,增計數(shù)模式 P2IE = 0x27; / P2.0-P2.3 IO口中斷使能 P2IES = 0x27; / P2.0-P2.3 IO口下降沿觸發(fā)中斷方式 P2IFG = 0x0; / P2.0-P2.2 IO口中斷標志位清除 _EINT(); /中斷允許 while(1) if(P2IN&BIT4) P1OUT &=(BIT4+BIT7); /正轉(zhuǎn) P1OUT |=BI
11、T0+BIT5; else P1OUT &=(BIT0+BIT5); /反轉(zhuǎn) P1OUT |=BIT4+BIT7; CCR1 = a; key_check (); switch (key_value) /對鍵值進行處理.采switch語法結(jié)構(gòu)查詢 case key1: key_process_1(); /調(diào)用鍵處理程序1 break; case key2: key_process_2(); /調(diào)用鍵處理程序2 break; case key3: key_process_3(); /調(diào)用鍵處理程序3 break; case key4: key_process_4(); /調(diào)用鍵處理程序4
12、 break; default: break; key_value=0x00; /鍵值清除 P2IE = 0x27; / P2.0-P2.2 IO口中斷使能 P2IFG = 0x0; / P2.0-P2.2 IO口中斷標志位清除 #pragma vector=PORT2_VECTOR _interrupt void Port_2(void) /P2中斷服務(wù)程序 switch (P2IFG) case 0x01: key_value=0x01; break; case 0x02: key_value=0x02; break; case 0x04: key_value=0x03; break; c
13、ase 0x20: key_value=0x04; break; default: P2IFG = 0x0; / P2.0-P2.2 IO口中斷標志位清除 break; P2IFG = 0x0; / P2.0-P2.2 IO口中斷標志位清除 void key_check (void) unsigned int i; for(i=0;i<200;i+); /延時去抖動 if(0xff !=(P2IN & 0xD8) /是否有鍵存在? while(0xff !=( P2IN | 0xD8); /一直等待按鍵松開 else key_value = 0x00; /延時去抖動無鍵按下,則清
14、除鍵變量. void key_process_1(void) /啟動 P1SEL |=0X04; / P1.2第二功能TA1輸出PWM TACTL = TASSEL_2 + MC_1; / 定時器A時鐘源為SMCLK,增計數(shù)模式 void key_process_2(void) /停止 P1SEL =0X0; TACTL=MC_0; P1OUT &=BIT2; void key_process_3(void) /加速 a+=1000; if(a>=20000) a=20000; void key_process_4(void) /減速 a-=1000; if(a<=0) a
15、=0; 3)仿真結(jié)果與分析圖9_3 實例9_1仿真結(jié)果注意電路仿真與實物運行有所不同,仿真時電機加減速過程較慢,啟動后要多等待一會兒,等電機加速結(jié)束,運行穩(wěn)定后,再進行加速或減速控制??梢酝ㄟ^示波器觀察PWM信號周期和占空比。9.2 舵機的單片機控制舵機的工作原理舵機是一種位置(角度)伺服的驅(qū)動器,適用于那些需要角度不斷變化并可以保持的控制系統(tǒng)。目前在高檔遙控玩具、航模和遙控機器人中已經(jīng)使用得比較普遍。舵機是伺服馬達俗稱。舵機常用的控制信號是一個周期為20毫秒左右,寬度為0.5毫秒到2.5毫秒的脈沖信號。當舵機收到該信號后,會馬上激發(fā)出一個與之相同的,寬度為1.5毫秒的負向標準的中位脈沖。之后
16、二個脈沖在一個加法器中進行相加得到了所謂的差值脈沖。輸入信號脈沖如果寬于負向的標準脈沖,得到的就是正的差值脈沖。如果輸入脈沖比標準脈沖窄,相加后得到的肯定是負的脈沖。此差值脈沖放大后就是驅(qū)動舵機正反轉(zhuǎn)動的動力信號。舵機電機的轉(zhuǎn)動,通過齒輪組減速后,同時驅(qū)動轉(zhuǎn)盤和標準脈沖寬度調(diào)節(jié)電位器轉(zhuǎn)動。直到標準脈沖與輸入脈沖寬度完全相同時,差值脈沖消失時才會停止轉(zhuǎn)動。這就是舵機的工作原理。小型舵機的工作電壓一般為4.8V或6V,轉(zhuǎn)速也不是很快,一般為0.22秒/60度或0.18秒/60度。假如你更改角度控制脈沖的寬度太快時,舵機可能反應(yīng)不過來。如果需要更快速的反應(yīng),就需要更高的轉(zhuǎn)速了。舵機的控制一般需要一個
17、20ms左右的時基脈沖,該脈沖的高電平部分一般為0.5ms2.5ms范圍內(nèi)的角度控制脈沖部分。以180度角度伺服為例,那么對應(yīng)的控制關(guān)系是這樣的: 0.5ms-0度; 1.0ms-45度; 1.5ms-90度; 2.0ms-135度; 2.5ms-180度;這只是一種參考數(shù)值,具體的參數(shù),請參見舵機的技術(shù)參數(shù)。標準的舵機有3條導線,分別是:電源線、地線、控制線,如圖9_4所示。脈沖寬度與舵機輸出轉(zhuǎn)角的關(guān)系如圖9-5所示。圖9-4標準舵機引腳圖圖9-5脈沖寬度與舵機輸出轉(zhuǎn)角的關(guān)系實例9_2 舵機的單片機控制實例任務(wù)要求:設(shè)計一個舵機控制電路,能夠啟動停止、增加減少轉(zhuǎn)角和回零。1)硬件電路設(shè)計要精
18、確控制PWM脈沖寬度,單片機選用XT2片外晶振8MHz。設(shè)置5個按鍵分別為啟動、停止、增加、減少和回零。硬件電路圖參見9_6所示。2)程序設(shè)計#include <msp430f249.h>#define key1 0x01#define key2 0x02#define key3 0x03#define key4 0x04#define key5 0x05void key_process_1(void);void key_process_2(void);void key_process_3(void);void key_process_4(void);void key_proces
19、s_5(void);void key_check (void);unsigned char key_value; /定義鍵值全局變是unsigned int a=1500;/ 7.5%void main(void) WDTCTL = WDTPW + WDTHOLD; /停止看門狗 BCSCTL2=SELS+DIVS0+DIVS1; /SMCLK = XT2,SMCLK 8分頻 P1DIR = 0xff; / P1輸出 P1OUT &=BIT2; CCR0 = 20000; / PWM 周期 CCTL1 = OUTMOD_7; / CCR1復位/置位 CCR1 = a; / CCR1 P
20、WM 占空比5% TACTL = TASSEL_2 + MC_1; / 定時器A時鐘源為SMCLK,增計數(shù)模式 P2IE = 0x37; / P2.0-P2.3 IO口中斷使能 P2IES = 0x37; / P2.0-P2.3 IO口下降沿觸發(fā)中斷方式 P2IFG = 0x0; / P2.0-P2.2 IO口中斷標志位清除 _EINT(); /中斷允許 while(1) CCR1 = a; key_check (); switch (key_value) /對鍵值進行處理.采switch語法結(jié)構(gòu)查詢 case key1: key_process_1(); /調(diào)用鍵處理程序1 break; c
21、ase key2: key_process_2(); /調(diào)用鍵處理程序2 break; case key3: key_process_3(); /調(diào)用鍵處理程序3 break; case key4: key_process_4(); /調(diào)用鍵處理程序3 break; case key5: key_process_5(); /調(diào)用鍵處理程序3 break; default: break; key_value=0x00; /鍵值清除 P2IE = 0x37; / P2.0-P2.2 IO口中斷使能 P2IFG = 0x0; / P2.0-P2.2 IO口中斷標志位清除 #pragma vector
22、=PORT2_VECTOR _interrupt void Port_2(void) /P2中斷服務(wù)程序 switch (P2IFG) case 0x01: key_value=0x01; break; case 0x02: key_value=0x02; break; case 0x04: key_value=0x03; break; case 0x20: key_value=0x04; break; case 0x10: key_value=0x05; break; default: P2IFG = 0x0; / P2.0-P2.2 IO口中斷標志位清除 break; P2IFG = 0x
23、0; / P2.0-P2.2 IO口中斷標志位清除 void key_check (void) unsigned int i; for(i=0;i<200;i+); /延時去抖動 if(0xff !=(P2IN & 0xC8) /是否有鍵存在? while(0xff !=( P2IN | 0xC8); /一直等待按鍵松開 else key_value = 0x00; /延時去抖動無鍵按下,則清除鍵變量. void key_process_1(void) /啟動 P1SEL |=0X04; / P1.2第二功能TA1輸出PWM TACTL = TASSEL_2 + MC_1; /
24、定時器A時鐘源為SMCLK,增計數(shù)模式 void key_process_2(void) /停止 P1SEL =0X0; TACTL=MC_0; P1OUT &=BIT2; void key_process_3(void) /加 a+=100; if(a>=2500) a=2500; void key_process_4(void) /減 a-=100; if(a<=500) a=500; void key_process_5(void) a=1500; /回零 4)仿真結(jié)果與分析圖9_6 實例9_2仿真結(jié)果9.3 LED點陣漢字顯示屏應(yīng)用實例漢字LED點陣屏簡介按性能和用
25、途分類,LED顯示屏分為條屏、圖文屏、視屏以及數(shù)碼屏四種。條屏系列一般為單基色顯示屏,主要用于顯示標準16x16漢字。這類屏幕多做成條形,故稱為條屏。可用USB輸入,RS232輸入或GPRS無線輸入。圖文屏系列一般為雙基色顯示屏,主要用于顯示文字和圖形,一般無灰度控制。它通過與計算機通訊輸入信息。與條屏相比,圖文屏的優(yōu)點是顯示的字體字型豐富,并可顯示圖形,與視屏相比,圖文屏最大的優(yōu)點是一臺計算機可以控制多塊屏,且可以脫機顯示。視屏系列一般為全彩色顯示屏,與計算機VGA信號點對點同步顯示。視屏開放性好,對操作系統(tǒng)沒有限制,能實時反映計算機監(jiān)視器的顯示。數(shù)碼屏的顯示器件為7段碼數(shù)碼管,適于制作時鐘
26、屏、利率屏等,廣泛用于證券交易所股票行情顯示、銀行匯率、利率顯示、各種價目表等。多數(shù)情況下,在數(shù)碼屏上加裝條屏來顯示歡迎詞、通知、廣告等。 像素是LED顯示屏的最小成像單元。俗稱“點”或“像素點”。為便于組裝和顯示,出廠的半成品通常是以顯示模組形式提供的,一個顯示模組將多個顯示單元加顯示驅(qū)動做在一起。模組也稱單元板,單元板通常有64x32(64列32行)、64x16(64列16行)。將單元板按一定方式拼接在一起,加上控制卡/控制系統(tǒng)、電源和框架等就構(gòu)成為LED顯示屏。掃描方式?jīng)Q定了模組之間連接的形式,掃描方式有1/16、1/8、1/4、1/2、靜態(tài)這幾種。因為LED顯示屏是逐行刷新顯示的,掃描
27、方式也就決定了顯示刷新的方式,如1/16就是每次刷新1行,16行為一個掃描周期,需ABCD四個信號控制;1/8就是每次刷新1行,8行為一個掃描周期,需ABC三個信號控制;其它依次類推。如果采用相同的LED燈,1/16掃的亮度要比1/8低,靜態(tài)的亮度是最高的。戶內(nèi)的屏一般采用1/16掃,戶外和半戶外的一般采用1/16或者1/8。對于放置在屏經(jīng)常受到猛烈陽光照射的環(huán)境,就最好用1/4掃描。實例9_3 LED點陣漢字移動顯示任務(wù)要求:使用16x16點陣顯示四個漢字“漢字顯示”,并且實現(xiàn)漢字向左移動顯示。分析說明:為了在LED點陣上顯示漢字,通常采用字模軟件生成漢字點陣字模。我們采用字模增強版,如圖2
28、所示。該軟件為單色液晶顯示生成字模,同樣適用于為點陣LED漢字顯示生成字模。該軟件不需要安裝,在程序包中雙擊ZimoIII.exe即可使用。首先,進行參數(shù)設(shè)置。字模格式為橫向取模,字節(jié)正序,漢字大小16x16。第二字符輸入。第三生成字模,字模代碼可以直接復制或者導出到文件,供編程使用。圖9_7 字模生成軟件的使用1) 硬件電路設(shè)計為了顯示4個漢字,采用8片74HC595、1片74HC154,掃描方式采用1/16。4個漢字為128x16點陣,16行由74HC154逐行掃描;128列分為8字節(jié),由74HC595提供8個字的段碼。硬件電路圖參見圖9_8所示。2) 程序設(shè)計顯示采用掃描方式為1/16,
29、即每次刷新1行,每行顯示1.5ms,16行為一個掃描周期,共24ms。由于人眼的視覺暫留現(xiàn)象,將感覺到16行LED顯示屏是同時亮的。若顯示的時間太短,則亮度不夠,若顯示的時間太長,將會感覺到閃爍。#include "msp430f249.h"char tab=0x20,0x00,0x10,0x00,0x17,0xFC,0x02,0x08,0x82,0x08,0x49,0x10,0x49,0x10,0x11,0x10, 0x10,0xA0,0x20,0xA0,0xE0,0x40,0x20,0xA0,0x21,0x18,0x26,0x0E,0x28,0x04,0x00,0x00
30、,/漢16x160x02,0x00,0x01,0x00,0x3F,0xFC,0x20,0x04,0x40,0x08,0x1F,0xE0,0x00,0x40,0x00,0x80, 0x01,0x00,0x7F,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00,/字16x160x00,0x00,0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x04,0x40,0x04,0x40, 0x44,0x48,0x24,0x48,0x14,0x50,0x14,0x60,0x0
31、4,0x40,0xFF,0xFE,0x00,0x00,0x00,0x00,/顯16x160x00,0x00,0x1F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFE,0x01,0x00,0x01,0x00,0x11,0x20,0x11,0x10,0x21,0x08,0x41,0x0C,0x81,0x04,0x01,0x00,0x05,0x00,0x02,0x00,/示16x16 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0/第5個漢字保留空白,用于移動顯示 ;void s
32、end_led(char m);void yidong(void);void main(void) char i,n; unsigned int k=0; WDTCTL = WDTPW + WDTHOLD; P1DIR=0xFF; P3DIR=0xFF; P3OUT =0; while (1) for(n=0;n<50;n+) /移動顯示時,保證每一屏點亮時間,也控制了移動速度 for(i=0;i<16;i+) /16行漢字代碼依次送出 P1OUT=i;/74HC154譯碼器輸入 send_led(tabi*2+1+96); /第4個漢字右字節(jié) send_led(tabi*2+96
33、); /第4個漢字左字節(jié) send_led(tabi*2+1+64); /第3個漢字右字節(jié) send_led(tabi*2+64); /第3個漢字左字節(jié) send_led(tabi*2+1+32); /第2個漢字右字節(jié) send_led(tabi*2+32); /第2個漢字左字節(jié) send_led(tabi*2+1); /第1個漢字右字節(jié) send_led(tabi*2); /第1個漢字左字節(jié) P3OUT |=0x04; /P3.2=1 CLK for(k=2;k>0;k-);/ 延時 P3OUT &=0x04; /P3.2=0 CLK for(k=300;k>0;k-);
34、/ 每行顯示1.5ms(仿真時應(yīng)適當調(diào)整) yidong(); void send_led(char m) char i,x; for(i=0;i<8;i+) x=m&0x80;/取最高位判斷是1或者0 if (x=0) P3OUT &=0x02; /若為0,則數(shù)據(jù)輸出0,即P3.1=0 else P3OUT |=0x02; /若為1,則數(shù)據(jù)輸出1,即P3.1=1 P3OUT |=0x04; /時鐘輸出高,即P3.2=1 m=m<<1; /左移一位 P3OUT &=0x04; /時鐘輸出低,即P3.2=0 void yidong(void) char
35、i,j,k=0; for(j=0;j<16;j+) tabj*2+128+1=tabj*2+128+1|tabj*2>>7; /將第1個漢字的第1列送到第5個漢字的第16列tabj*2+128=tabj*2+128|tabj*2+128+1>>7;/將第5個漢字的第9列送到第5個漢字的第8列 for(j=0;j<4;j+)/4個漢字需要移動 for(i=k;i<16+k;i+) tabi*2=tabi*2<<1|tabi*2+1>>7;/漢字左字節(jié)左移1位,合并右字節(jié)的最高位 tabi*2+1=tabi*2+1<<1
36、|tabi*2+1+31>>7;/漢字右字節(jié)左移1位,合并下一漢字的最高位 k=k+16; /取用下一漢字 if(k>48) k=0; /4個漢字移動完成,回零 for(j=0;j<16;j+) tabj*2+128+1=tabj*2+128+1<<1;/第5個漢字右字節(jié)左移1位 tabj*2+128=tabj*2+128<<1; /第5個漢字左字節(jié)左移1位 ;3) 仿真結(jié)果及分析實例9_3仿真結(jié)果如圖9_8所示,漢字的移動效果如圖9_9所示。圖9_8 實例9_3仿真結(jié)果圖9_9 漢字移動效果圖9.4 簡易流量計流量計英文名稱是flow mete
37、r,它的定義為:指示被測流量和(或)在選定的時間間隔內(nèi)流體總量的儀表。簡單來說就是用于測量管道或明渠中流體流量的一種儀表,工程上常用單位m3/h,它可分為瞬時流量(Flow Rate)和累計流量(Total Flow),瞬時流量即單位時間內(nèi)過封閉管道或明渠有效截面的量,流過的物質(zhì)可以是氣體、液體、固體;累計流量即為在某一段時間間隔內(nèi)(一天、一周、一月、一年)流體流過封閉管道或明渠有效截面的累計量。通過瞬時流量對時間積分亦可求得累計流量,所以瞬時流量計和累計流量計之間也是可以相互轉(zhuǎn)化的。流量計又分為有轉(zhuǎn)子流量計、節(jié)流式流量計、細縫流量計、容積流量計、電磁流量計、超聲波流量計等。按介質(zhì)分類:液體流
38、量計和氣體流量計。在工業(yè)現(xiàn)場,測量流體流量的儀表統(tǒng)稱為流量計或流量表。是工業(yè)測量中最重要的儀表之一。隨著工業(yè)的發(fā)展,對流量測量的準確度和范圍要求越來越高,為了適應(yīng)多種用途,各種類型的流量計相繼問世,廣泛應(yīng)用于石油天然氣、石油化工、水處理、食品飲料、制藥、能源、冶金、紙漿造紙和建筑材料等行業(yè)。以脈沖輸出轉(zhuǎn)子流量計為例,實際流量計要求設(shè)計的功能較多,主要特點如下所示。1、可顯示管道內(nèi)流體的瞬時流量、累計流量和單班累計流量。2、內(nèi)部可置入高精度修正曲線,確保流量檢測的準確性。3、表頭采用MSP430芯片,液晶顯示,超低功耗。3、高精度D / A轉(zhuǎn)換芯片,保證4-20mA電流穩(wěn)定輸出。4、具有二線制4
39、20mA電流輸出功能和脈沖輸出功能。5、采用鐵電數(shù)據(jù)存儲器,具有高可靠數(shù)據(jù)掉電保護功能(存儲速度快,無數(shù)次上電沖擊數(shù)據(jù)不丟失)。6、具有485通訊輸出功能,標準Modbus/RTU 協(xié)議, DC24V或 DC12V供電。7、表頭采用電池供電,可供電兩年;或者采用外部DC24V、DC12V供電。限于本書的篇幅,我們僅僅設(shè)計顯示總流量和瞬時流量等主要功能。實例9_4簡易流量計的設(shè)計任務(wù)要求:設(shè)計一個脈沖輸出轉(zhuǎn)子流量計,管道流量經(jīng)轉(zhuǎn)子檢測變換為脈沖輸出,一個脈沖對應(yīng)一個脈沖當量。要求顯示總流量和瞬時流量。1)硬件電路設(shè)計選用msp430f249低功耗單片機,液晶顯示選用1602字符型LCD,硬件電路
40、參見圖9_10所示。2)程序設(shè)計/*流量計主程序設(shè)計main.c*/#include<msp430f249.h> #include "lcd.h"#define M1 10unsigned int new_cap=0;unsigned int old_cap=0;unsigned int cap_diff=0;unsigned int cap1,N1;long diff10=0,0,0,0,0,0,0,0,0,0;char index=0;char buf = 0,0,0,0,0,0; /顯示緩沖區(qū)char buf2 = 0,0,0,0,0,0,0,0,0,0;
41、 /顯示緩沖區(qū)long data,data1;const char table="0123456789"const char table1="flow rate"const char table2="total"void data_to_buf(unsigned long data2) / 值送顯示緩沖區(qū)函數(shù) unsigned char i; for (i=0;i<6;i+) bufi = tabledata2%10;/低位在前 data2=data2/10; for(i=5;i>0;i-) if(bufi='0&
42、#39;) bufi=' '/數(shù)字前面的零不顯示 else break; void data_to_buf2(unsigned long data2) / 值送顯示緩沖區(qū)函數(shù) unsigned char i; for (i=0;i<10;i+) buf2i = tabledata2%10;/低位在前 data2=data2/10; for(i=9;i>0;i-) if(buf2i='0') buf2i=' '/數(shù)字前面的零不顯示 else break; void main() char num,k1; WDTCTL=WDTPW+WDT
43、HOLD; /關(guān)閉看門狗 BCSCTL2 = SELS+DIVS0+DIVS1; / SMCLK = XT2 P4SEL|=0x01; /P4.0作為捕獲模塊功能的輸入端輸入方波 P5DIR=0xFF; /設(shè)置P5口為輸出 P6DIR=0xFF; /設(shè)置P6口為輸出 lcdinit(); / TBCCTL0=0; / 捕獲源為P4.0,即CCI0A(也是CCI0B) TBCCTL0|=CM_1+SCS+CAP+CCIE; /上升沿捕獲,同步捕獲,工作在捕獲模式+中斷允許 TBCTL|=TBSSEL_2+MC_2+ TBIE; /選擇時鐘SMCLK+連續(xù)計數(shù)模式+中斷允許 write_com(0
44、x80); / 顯示第一行字 for(num=0;num<10;num+) write_data(table1num); write_com(0x80+0x40); / 顯示第二行字 for(num=0;num<5;num+) write_data(table2num); _EINT();while(1) data=0; for(k1=0;k1<M1;k1+) data+=diffk1; data=data/M1; data=1000000/data; if(index=0) data_to_buf(data); /數(shù)據(jù)送顯示緩沖區(qū) write_com(0x80+0x0a);
45、 / 第一行顯示瞬時流量 for(num=0;num<6;num+) write_data(buf5-num); data_to_buf2(data1); /數(shù)據(jù)送顯示緩沖區(qū) write_com(0x80+0x40+0x06); / 第二行顯示總流量 for(num=0;num<10;num+) write_data(buf29-num); #pragma vector=TIMERB0_VECTOR _interrupt void TimerB0(void)/定時器TB的CCR0的中斷:用于檢測脈沖上升沿 new_cap = TBCCR0; diffindex = 65536*N1
46、+new_cap-old_cap; /計算周期值 index+;data1+; if (index =M1) index = 0; old_cap = new_cap; / 保存捕獲值 N1=0; /溢出次數(shù)清零 / Timer_B7 Interrupt Vector (TBIV) handler#pragma vector=TIMERB1_VECTOR_interrupt void Timer_B(void) switch( TBIV ) case 14: N1+; break; / 溢出/*定時器脈沖捕捉程序設(shè)計TB_inc.c*/#include<msp430f249.h> unsigned
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 勞動合同簽訂前的員工福利制度
- 臨時客服人員聘用合同樣本
- 足球場膜結(jié)構(gòu)施工合同
- 超分子水楊酸換膚治療
- 2022年大學水利專業(yè)大學物理下冊期末考試試卷C卷-附解析
- 商業(yè)空地租賃合同范本
- 2022年大學電氣信息專業(yè)大學物理二模擬考試試題A卷-含答案
- 餐廳包間地磚鋪設(shè)合同
- IT行業(yè)銷售精英聘用合同
- 通信工程監(jiān)理聘用合同樣本
- T-CBDA 59-2022 家用不銹鋼整體櫥柜應(yīng)用技術(shù)規(guī)程
- 《木雕》課程教學大綱
- 貧困人口大病專項救治醫(yī)臺帳
- 2022檢驗檢測機構(gòu)全套質(zhì)量手冊及程序文件
- 四年級語文上冊教學課件-27.扁鵲治病3-部編版(共13張PPT)
- 嗓音(發(fā)聲)障礙評定與治療
- 臨時封路施工方案
- 4kV無功補償技術(shù)規(guī)范
- 減肥與健康PPT
- 新改版教科版六年級下冊科學全冊知識點歸納 (超全)
- 輸電線路設(shè)計—導線風偏計算及校驗實用教案
評論
0/150
提交評論