freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于msp430單片機的壁掛式空調(diào)風門運動控制系統(tǒng)設(shè)計(編輯修改稿)

2025-02-14 16:16 本頁面
 

【文章內(nèi)容簡介】 總體框架圖圖41 系統(tǒng)設(shè)計框圖本系統(tǒng)的MSP430G2553單片機由USB供電,步進電機驅(qū)動電路由5V獨立電壓源供電。,若按鍵被按下,再經(jīng)過步進電機驅(qū)動電路功率放大后,通過這兩個按鍵分別來實現(xiàn)電機的正反轉(zhuǎn)控制,調(diào)速系統(tǒng)由軟件方式完成,即用中斷定時器控制轉(zhuǎn)速。此系統(tǒng)將應(yīng)用于壁掛式空調(diào)風門的控制,具有很強的現(xiàn)實意義,壁掛式風門如圖42。 圖42 壁掛式風門鍵盤控制模塊包括方向控制鍵、啟停鍵。實現(xiàn)對步進電機的方向和啟動停止控制。 按鍵功能的簡單介紹鍵盤在單片機的應(yīng)用中能實現(xiàn)向單片機輸入數(shù)據(jù)、傳送命令等的功能,是人工干預(yù)單片機的主要手段之一。鍵盤的實質(zhì)是一組按鍵開關(guān)的集合。鍵盤所用的開關(guān)為機械彈性開關(guān),結(jié)合了機械觸點的合、斷作用。一個電壓信號在機械觸點的斷開,閉合過程中,都會產(chǎn)生抖動,一般為5—10ms;兩次抖動之中為穩(wěn)定的閉合狀態(tài),時間由按鍵動作所決定;第一次抖動前和第二次抖動后為開斷狀態(tài)。按鍵閉合與否,反映在輸出電壓上就是呈現(xiàn)出高電平或者低電平。通過對輸出電平的高低狀態(tài)的檢測,便可以確認按鍵是否按下。高電平表示按鍵斷開,低電平表示按鍵閉合狀態(tài)。并且,為了能直觀的表示按鍵閉合與否,還可以為每個按鍵相應(yīng)增加了發(fā)光二極管,按鍵斷開時,發(fā)光二極管滅,當有鍵閉合時,相應(yīng)的發(fā)光二極管變亮。為了確保單片機對一次按鍵動作只確認一次按鍵,必須消除抖動的影響。消除按鍵抖動通常采用硬件、軟件兩種方法。由于硬件消抖電路設(shè)計復(fù)雜,本設(shè)計只做簡單敘述;軟件消抖適合按鍵較多的情況,方便簡單。其原理是在第一次檢測到有鍵按下時,執(zhí)行一段延時10ms的子程序后在確認該鍵電平是否仍保持閉合狀態(tài)電平,如果保持閉合狀態(tài)電平則確認為真正有鍵按下,從而消除了抖動的影響。按鍵在被按下和松手被釋放時產(chǎn)生抖動的示意圖如圖43所示。圖43 按鍵在被按下和松手被釋放時產(chǎn)生抖動按鍵的抖動將會引起一次按鍵被誤讀多次,所以為了避免這種不合理情況的發(fā)生,我們在做鍵盤輸入時必須要進行消除抖動,消抖的方法分為兩種:硬件消抖,軟件消抖。1硬件消抖:利用硬件電路消除抖動,是將按鍵產(chǎn)生的抖動變成理想的高低電平,使之不會造成單片機的誤讀。其中利用RS觸發(fā)器就是一種較為理想的的硬件消抖電路,硬件消抖具有速度快、效果好等優(yōu)點,缺點是會增加硬件成本。硬件消抖電路如圖44所示。圖44 硬件消抖電路2軟件消抖:軟件消抖是通過軟件延時的方法,將按鍵產(chǎn)生的邊沿抖動過濾掉,具體做法是:測出一次低電平后執(zhí)行一個延時程序(大約1020ms),前沿抖動消失后再測該端口的電平狀態(tài),如果仍然是低電平,則認為是有按鍵按下,當按鍵松開后也要執(zhí)行一段延時程序,避開后沿抖動后,再檢測按鍵是否真的已經(jīng)釋放。通過以上分析便知,軟件消抖無論在操作上或者成本上都優(yōu)于硬件消抖,所以我們采用軟件消抖。 ULN2003芯片的基本介紹本系統(tǒng)的設(shè)計目的是為了高效控制步進電機的轉(zhuǎn)動,因此需要將單片機發(fā)出的脈沖轉(zhuǎn)換為步進角度,才能控制步進電機的轉(zhuǎn)動,我們這里采用ULN2003為步進電機提供脈沖信號。ULN2003的七個NPN達林頓連接晶體管是低邏輯電平數(shù)字電路(如TTL,CMOS或PMOS/NMOS)和大電流高電壓要求的燈、繼電器、打印機和其他類似負載間的接口的理想器件。廣泛用于計算機,工業(yè)和消費類產(chǎn)品中。所有器件有集電極開路輸出和用于瞬變抑制的續(xù)流箝位二極管。ULN2003的設(shè)計和標準TTL系列兼容。 ULN2003芯片的引腳介紹:引腳1:CPU脈沖輸入端,端口對應(yīng)一個信號輸出端。 引腳2:CPU脈沖輸入端。引腳3:CPU脈沖輸入端。引腳4:CPU脈沖輸入端。引腳5:CPU脈沖輸入端。引腳6:CPU脈沖輸入端。引腳7:CPU脈沖輸入端。引腳8:接地。 引腳9:該腳是內(nèi)部7個續(xù)流二極管負極的公共端,各二極管的正極分別接各達林頓管的集電極。用于感性負載時,該腳接負載電源正極,實現(xiàn)續(xù)流作用。如果該腳接地,實際上就是達林頓管的集電極對地接通。 引腳10:脈沖信號輸出端,對應(yīng)7腳信號輸入端。 引腳11:脈沖信號輸出端,對應(yīng)6腳信號輸入端。 引腳12:脈沖信號輸出端,對應(yīng)5腳信號輸入端。 引腳13:脈沖信號輸出端,對應(yīng)4腳信號輸入端。 引腳14:脈沖信號輸出端,對應(yīng)3腳信號輸入端。 引腳15:脈沖信號輸出端,對應(yīng)2腳信號輸入端?!∫_16:脈沖信號輸出端,對應(yīng)1腳信號輸入端。它的管腳連接圖與芯片內(nèi)部結(jié)構(gòu)圖如圖45與46所示: 圖45 ULN2003管腳連接圖圖46 ULN2003芯片內(nèi)部結(jié)構(gòu) ULN2003芯片的特點和功能ULN2003芯片是高耐壓,大電流達林頓陣列,它由7組達林頓晶體管陣列和相應(yīng)的電阻網(wǎng)絡(luò)和鉗位二極管網(wǎng)絡(luò)構(gòu)成,它具有同時驅(qū)動7組負載的能力,是單片雙極型大功率高速集成電路。功率電子電路大多數(shù)要求具有大電流輸出能力,以便用于驅(qū)動各種類型的負載。功率驅(qū)動電路是功率電子設(shè)備輸出電路的一個必要組成部分。ULN2003芯片高壓大電流達林頓晶體管陣列產(chǎn)品是可控大功率器件。ULN2003 的基極電阻,在5V 的工作電壓下它能與TTL 和CMOS 電路直接相連,可以直接處理原先需要標準邏輯緩沖器來處理的數(shù)據(jù)。ULN2003 工作電壓高,工作電流大,灌電流可達500mA,并且能夠在關(guān)態(tài)時承受50V 的電壓,輸出還可以在高負載電流并行運行。ULN2003 采用DIP—16 或SOP—16 塑料封裝。ULN2003是大電流驅(qū)動陣列,多用于單片機、智能儀表、PLC、數(shù)字量輸出等控制電路中。可直接驅(qū)動繼電器等負載。輸入5VTTL電平,輸出可達500mA/50V。ULN2003是高耐壓、大電流達林頓陳列,由七個硅NPN達林頓管組成。 該電路的特點如下: ,在5V的工作電壓下它能與TTL和CMOS電路 直接相連,可以直接處理原先需要標準邏輯緩沖器來處理的數(shù)據(jù)。ULN2003 是高壓大電流達林頓晶體管陣列系列產(chǎn)品,具有電流增益高、工作電壓高、溫度范圍寬、帶負載能力強等特點,適應(yīng)于各類要求高速大功率驅(qū)動的系統(tǒng) ULN2003步進電機的驅(qū)動電路與步進電機的結(jié)合首先介紹ULN2003步進電機驅(qū)動電路板模塊的各個功能,如圖47所示圖47 ULN2003步進電機驅(qū)動電路板模塊圖48 步進電機驅(qū)動原理圖從原理圖48中我們可以很清楚的看出MSP430G2553單片機的I/O口輸出的有序的脈沖序列從ULN2003芯片的輸入端輸入,輸入端口分別為IN1,IN2,IN3,IN4。并從其13,14,15,16引腳輸出又與步進電機的接口連接,若連接成功則電機運行指示燈將會發(fā)光。此外,ULN2003芯片還要外接5V電源,獨立供電。所有模塊組合后,得到系統(tǒng)實物圖49。圖49 系統(tǒng)實物圖 第五章 軟件設(shè)計 軟件設(shè)計平臺CCS(Code Composer Studio)是TI公司研發(fā)的一款具有環(huán)境配置、源文件編輯、程序調(diào)試、跟蹤和分析等功能的集成開發(fā)環(huán)境,能夠幫助用戶在一個軟件環(huán)境下完成編輯、編譯、鏈接、調(diào)試和數(shù)據(jù)分析等工作。,功能更強大、性能更穩(wěn)定、可用性更高,是MSP430軟件開發(fā)的理想工具。Code Composer Studio(CCS 是用于 TI DSP、微處理器和應(yīng)用處理器的集成開發(fā)環(huán)境)。 Code Composer Studio 包含一整套用于開發(fā)和調(diào)試嵌入式應(yīng)用的工 具。 它包含適用于每個 TI 器件系列的編譯器、源碼編輯器、項目構(gòu)建環(huán)境、調(diào)試器、描述器、仿真器以及多種其它功能。 Code Composer Studio IDE 提供了 單個用戶界面,可幫助您完成應(yīng)用開發(fā)流程的每個步驟。 借助于精密的高效工具,用戶能夠利用熟悉的工具和界面快速上手并將功能添加至他們的應(yīng)用。 Code Composer Studio IDE 的交互式描述器可以快速測量代碼性能,確保在調(diào)試和開發(fā)階段高效地使用 DSP 目標資源。 該描述器使開發(fā)人員能夠在他們 的應(yīng)用中輕松描述指令周期或其它事件(例如高速緩沖存儲器未命中數(shù)/命中數(shù)、管道拖延和分支)的所有 C/C++ 函數(shù)。 描述范圍可用于在優(yōu)化期間專注于 代碼的高使用率區(qū)域,幫助開發(fā)人員生成經(jīng)過精細調(diào)節(jié)的代碼。 描述可用于任何組合形式的匯編、C++ 或 C 代碼。 為提高生產(chǎn)力,所有描述設(shè)備在整個開發(fā)周期內(nèi)均可用。CCSV5軟件開發(fā)環(huán)境界面如圖51所示。圖51 CCSV5軟件開發(fā)環(huán)境界面系統(tǒng)初始化:include unsigned char MotorStep=0。 //步進馬達步序,將在Switch包含的語句中得到體現(xiàn)。unsigned int MotorDelay,TIM,CT。//初始變量的賦值。unsigned char key1=1,key2=1。// 初始變量的賦值。define speed 4 // 調(diào)整速度 數(shù)值不要設(shè)的太低 低了會引起震動。void SetMotorzheng()。//子函數(shù)設(shè)定電機正傳void SetMotorfan()。//子函數(shù)設(shè)定電機反轉(zhuǎn)進入主函數(shù):void main(void){WDTCTL = WDTPW + WDTHOLD。// Stop WDT(關(guān)閉看門狗)。P1DIR |= 0x17。//,其他P1口設(shè)為輸出狀態(tài)。P1REN |= 0x08。 //,即啟動上拉電阻,滿足高電平要求。P2DIR |= 0x00。// 將P2口設(shè)為輸入。P2REN |= 0x01。 //通過寄存器,啟動上拉電阻功能。 CCTL0 = CCIE。// CCR0 interrupt enabled(讓中斷使能)。CCR0 = 5000。TACTL = TASSEL_2 + MC_1。// SMCLK, contmode。_BIS_SR(GIE)。// Enter LPM0 w/ interrupt。MotorStep=0。確認一下MotorStep確實給低電平。重復(fù)掃描按鍵:while(1)//重復(fù)掃描是否有按鍵被按下{key1=P1INamp。0x08。//將P1口輸入的值與0X08相與,,即相與之后key1為低電平。key2=P2INamp。0x01。key2同上。if(key1==0)//若key1為低電平。{SetMotorzheng()。//就調(diào)用SetMotorzheng ()子函數(shù)。}else if(key2==0) 若key2為低電平。{ SetMotorfan()。//就調(diào)用SetMotorfan()子函數(shù)。}}}調(diào)用子函數(shù),完成電機轉(zhuǎn)動功能:void SetMotorzhen(){ switch(MotorStep){ case 0://在此條件下,將A相設(shè)為低電平,其他B,C,D為高電平。 if(TIM)//利用Timer A0 interrupt service routine中斷程序,可以調(diào)整單片機I/O口是否與驅(qū)動器的IN導(dǎo)通,即完成調(diào)速的功能。 { P1OUT = 0x1A。 //將A相設(shè)為低電平,其他B,C,D為高電平。 MotorStep = 1。//下次調(diào)用子函數(shù)時,進入Case 1。 TIM=0。//使TIM為0,在中斷程序中繼續(xù)判斷,下一次變?yōu)?時執(zhí)行IF語句。 }break。跳出Switch語句。case 1:// AB if(TIM) { P1OUT = 0x14。 MotorStep = 2。 TIM=0。 } break。case 2://B if(TIM) { P1OUT = 0x15。 MotorStep = 3。 TIM=0。 } break。case 3: //BC if(TIM) { P1OUT = 0x11。 MotorStep = 4。 TIM=0。 } break。 case 4: //C if(TIM) { P1OUT = 0x13。 MotorStep = 5。 TIM=0。 } break。 case 5: //CD if(TIM) { P1OUT = 0x03。 MotorStep = 6。 TIM=0。 } break。 case 6: //D if(TIM) { P1OUT = 0x07。 MotorStep = 7。 TIM=0。 } break。 case 7://DA if(TIM) { P1OUT = 0x06。 MotorStep = 0。 TIM=0。 } break。 }}void SetMotorfan()//反轉(zhuǎn)與正傳原理相同,只是顛倒了通電順序。{ switch(MotorStep) { case 7: if(TIM){
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1