版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
圖5.1所示,然后編譯連接工程。選擇Project->Debug,啟動AXD進行JTAG仿真調(diào)試(需要正確設(shè)置仿真器)。圖5.SEQ圖5.\*ARABIC1全速運行程序,程序?qū)贐EEPCON.C文件的主函數(shù)中停止(因為main函數(shù)起始處默認(rèn)設(shè)置有斷點)。選擇ProcessorViews->Variables打開變量觀察窗口,通過此窗口可以觀察局部變量和全局變量。選擇SystemViews->DebuggerInternals即可打開LPC2000系列ARM7微控制器的片內(nèi)外設(shè)寄存器窗口??梢詥尾竭\行程序,可以設(shè)置/取消斷點,或者全速運行程序,停止程序運行,觀察變量的值,LED閃爍是否正確。當(dāng)仿真調(diào)試通過后關(guān)閉AXD,在ADS1.2集成開發(fā)環(huán)境中選用RelOutChip生成目標(biāo),然后編譯連接工程。選擇Project->Debug,啟動AXD進行JTAG仿真調(diào)試。此時EasyJTAG仿真器將會把程序下載到片外FLASH上。把LPC2131核心板上的ISP跳線斷開,按下RST鍵,觀察程序是否能脫機運行。運行結(jié)果可以通過鍵盤顯示板的數(shù)碼管顯示來觀察,也可在AXD的變量觀察窗口中跟蹤觀察:5.3軟硬件整體的調(diào)試硬件電路板的制作和程序軟件編寫完成后,按設(shè)計要求正確接線,檢查無誤后,啟動程序開始運行。系統(tǒng)正常啟動后,在測重部分加上已知重量的砝碼,通過觀察鍵鍵盤板上數(shù)碼管的重量顯示和AXD的變量觀察窗口來驗正A/D采樣程序、數(shù)字濾波程序、數(shù)碼管顯示程序和采樣電路是否正確,如果誤差過大,應(yīng)對相應(yīng)部分加以修改完善,最終達(dá)到系統(tǒng)設(shè)計目標(biāo)。檢測和顯示部分都正常后,就該調(diào)節(jié)部分了。連接上設(shè)備之后,可以通過人為加大或減小下料量來觀察系統(tǒng)是否能自動調(diào)節(jié),并最終穩(wěn)定。若不能自動調(diào)節(jié)或無法穩(wěn)定,在確認(rèn)電路設(shè)計無誤后,可通過修改程序來逐步完成設(shè)計任務(wù),最終使系統(tǒng)穩(wěn)定可靠運行。第六章結(jié)束語歷經(jīng)兩個多月,畢業(yè)設(shè)計終于接近尾聲了,從資料的搜集到最終的調(diào)試,在整個設(shè)計過程中,感覺自己學(xué)到了許多東西,雖然以前對配料系統(tǒng)有些了解,但是自己真正接觸這個畢業(yè)設(shè)計課題時,還是感到有點茫然,但經(jīng)過自己查閱資料和指導(dǎo)老師的指導(dǎo),使自己從初步的認(rèn)識到現(xiàn)在能結(jié)合實物進行具體的實踐。本系統(tǒng)從設(shè)計之初就選擇時下流行的嵌入式ARM微處理器為系統(tǒng)的核心,并配合鍵盤顯示模塊建立人機交互界面,增強了系統(tǒng)的實時監(jiān)控能力和可操作性。在系統(tǒng)的設(shè)計過程中,仍然存在一些實際問題,如A/D采樣電路及程序造成的一些誤差導(dǎo)致配料精度有所降低等,仍需要進一步的努力,最終達(dá)成設(shè)計目標(biāo)。參考文獻(xiàn)[1]周立功、張華,等?!渡钊霚\出ARM7——LPC213x/214x》(上冊)北京:北京航空航天大學(xué)出版社,2005 [2]周立功公司?!禔RM嵌入式系統(tǒng)基礎(chǔ)教程(第二版)》北京:北京航空航天大學(xué)出版社,2007[3]周立功公司?!禔RM嵌入式系統(tǒng)實驗教程(三)》北京:北京航空航天大學(xué)出版社,2005[4]周立功公司?!禔RM嵌入式系統(tǒng)實驗教程(三)擴展實驗》北京:北京航空航天大學(xué)出版社,2005[5]周航慈、吳光文?!痘谇度胧綄崟r操作系統(tǒng)的程序設(shè)計技術(shù)》北京:北京航空航天大學(xué)出版社,2006[6]閻石?!稊?shù)字電子技術(shù)基礎(chǔ)》北京高等教育出版社2006.4[7]童詩白、華成英。《模擬電子技術(shù)基礎(chǔ)》北京高等教育出版社2004.4[8]黃志偉編著.全國大學(xué)生電子設(shè)計競賽系統(tǒng)設(shè)計.北京:北京航空航天大學(xué)出版社,2006.[9]JeanJ.Labrosse[美],邵貝貝,等,譯.嵌入式實時操作系統(tǒng)uC/OS-II(第二版).北京:北京航空航天大學(xué)出版社,2003.[10]任哲.嵌入式實時操作系統(tǒng)uC/OS-II原理及應(yīng)用.北京:北京航空航天大學(xué)出版社,2006.[11]佐藤一朗[日],韓健青譯.集成運算運算放大器電路設(shè)計實用手冊.北京:北京航空航天大學(xué)出版社,1989.[12]BonnieBaker[美],李喻奎譯.嵌入式系統(tǒng)中的模擬設(shè)計.北京:北京航空航天大學(xué)出版社,2006.[13]brianW.KernighanandDennisM.Ritchie.C程序設(shè)計語言。北京:機械工業(yè)出版社2004.1[14]譚浩強。C程序設(shè)計。北京:清華大學(xué)出版社,1999[15]韓亞萍。ProtelDXP基礎(chǔ)教程。北京:清華大學(xué)出版社,2004附錄附錄ALPC2131引腳連接圖和功能框圖附錄B元件清單元件名稱數(shù)量(個)元件參數(shù)H-JTAG接口1LPC2131系統(tǒng)板174HC164N2LM324N1GF-2橋式稱重傳感器1S1612NH1電容30.1uF電解電容1470uF/50V滑動變阻器210K電阻151K電阻22100K電阻3215K脈沖變壓器1901424位數(shù)碼管2LM78051LM78121按鍵8附錄C程序清單/********************************************************************************************************Modifieddate: 2008-03**Version:**Descriptions: 配料采樣與控制程序。**********************************************************************************************************/#include"config.h"#defineScr(1<<3)//可控硅脈沖信號#defineKEY (1<<2)//P0.2口(MISO)為按鍵輸入腳#defineUtestCS[0]//測得電壓#defineGtestCS[1]//測得皮帶上物料的總重量#defineGsetCS[2]//設(shè)定皮帶上物料的總重量uint8T0Flag=0,Display=0;uint16CS[6]={0,1,2,3,4,5}; //可以輸入的參數(shù)數(shù)組uint8DATA[8]; uint8digitable[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //顯示段碼表uint8selectable[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //顯示位碼表uint8x=0,y=0,k=0;//變量,k對DATA0&DATA1&selectable;x&y對digitable;uint8w=0; //顯示刷新時間計數(shù)器uint8SF=0; //閃爍標(biāo)志位uint8TK=0x09; //按鍵按下記錄位寄存器,有效數(shù)據(jù)位為0~7uint8M=0,R=0; //按鍵選項計數(shù)器uint32ADC_R1,ADC_Result=0,ADC_Ave=0,Count=30;floatG=0;uint32Gstart=0;//用于去皮/************************************************************************************************************函數(shù)名稱:ADC_Init()**函數(shù)功能:ADC模塊初始化**入口參數(shù):無**出口參數(shù):無**********************************************************************************************************/voidADC_Init(void){ uint32T; PINSEL1|=(1<<28); //P0.30連接到AD0.3 //引腳設(shè)置必須緊跟初始化程序,否則出錯 AD0CR=(1<<3) | //SEL=0x0a,選擇通道1.3 ((Fpclk/1000000-1)<<8) | //CLKDIV=Fpclk/1000000-1,轉(zhuǎn)換時鐘為1MHz (0<<16) | //BURST=0,軟件控制轉(zhuǎn)換操作 (0<<17) | //CLKS=0,使用11clock轉(zhuǎn)換 (1<<21) | //PDN=1,正常工作模式 (0<<22) | //TEST1:0=00,正常工作模式 (1<<24) | //START=1,直接啟動ADC轉(zhuǎn)換 (0<<27); //直接啟動ADC轉(zhuǎn)換時,此位無效 while((AD0DR&0x80000000)==0); //等待轉(zhuǎn)換結(jié)束 T=AD0DR; //讀取ADC結(jié)果,并清除DONE標(biāo)志位} /**********************************************************************************************************函數(shù)名稱:ADC()**函數(shù)功能:AD轉(zhuǎn)換程序**入口參數(shù):無**出口參數(shù):無*********************************************************************************************************/voidADC(void){ uint32ADC_R; AD0CR|=(1<<24); //START=1,直接啟動ADC轉(zhuǎn)換 while((AD0DR&0x80000000)==0); //等待轉(zhuǎn)換結(jié)束 AD0CR=AD0CR|(1<<24);//再次啟動A/D轉(zhuǎn)換 while((AD0DR&0x80000000)==0); //等待轉(zhuǎn)換結(jié)束 ADC_R=AD0DR; //讀取AD0.3結(jié)果 ADC_R1=(ADC_R>>6)&0x3ff; ADC_R1=ADC_R1*2480/1024; //將AD結(jié)果轉(zhuǎn)換為電壓mv值(參考電壓經(jīng)過3/4分壓) return;}/*********************************************************************************************函數(shù)名稱:delays()**功能描述:軟件延時**入口參數(shù):無**出口參數(shù):無*******************************************************************************************/voiddelays(void){uint8i,j;for(i=100;i>0;i--)for(j=50;j>0;j--);}/*********************************************************************************************函數(shù)名稱:Timer0_Init()**功能描述:TIMER0初始化**入口參數(shù):無**出口參數(shù):無*******************************************************************************************/voidTimer0_Init(void){ T0TC=0; /*定時器設(shè)置為0 */ T0PR=0; /*時鐘不分頻 */ T0MCR=0x03; /*設(shè)置T0MR0匹配后復(fù)位T0TC,并產(chǎn)生中斷標(biāo)志 */ T0MR0=Fpclk/400; /*2.5毫秒定時 */ T0TCR=0x01; /*啟動定時器 */}/*********************************************************************************************函數(shù)名稱:IRQ_Timer0()**功能描述:TIMER0中斷服務(wù)程序**入口參數(shù):無**出口參數(shù):無*******************************************************************************************/void__irqIRQ_Timer0(void){ T0Flag=1; //T0中斷標(biāo)志置位 T0IR=0x01; //清除中斷標(biāo)志 VICVectAddr=0;}/*********************************************************************************************函數(shù)名稱:Timer1_Init()**功能描述:TIMER1初始化**入口參數(shù):無**出口參數(shù):無*******************************************************************************************/voidTimer1_Init(void){ T1TC=0; /*定時器設(shè)置為0 */ T1PR=0; /*時鐘不分頻 */ T1MCR=0x03; /*設(shè)置T1MR0匹配后復(fù)位T1TC,并產(chǎn)生中斷標(biāo)志 */ T1MR0=Fpclk/100; /*10毫秒定時,50Hz為20ms,10ms定時設(shè)置為中點時導(dǎo)通*/ T1TCR=0x01; /*啟動定時器 */}/*********************************************************************************************函數(shù)名稱:IRQ_Timer1()**功能描述:TIMER1中斷服務(wù)程序**入口參數(shù):無**出口參數(shù):無*******************************************************************************************/void__irqIRQ_Timer1(void){T1TCR=0x00;//關(guān)閉定時器IO0SET=IO0SET|Scr;//使可控硅導(dǎo)通 T1IR=0x01; //清除中斷標(biāo)志 VICVectAddr=0;}/**********************************************************************************************************函數(shù)名稱:EXT_Init()**函數(shù)功能:初始化外部中斷**入口參數(shù):無**出口參數(shù):無********************************************************************************************************/voidEXT_Init(void){PINSEL0=(PINSEL0&0xFFFFFFF3)|0x0C;//設(shè)置P0.1為外部中斷EINT0EXTMODE=EXTMODE|0x01;//邊沿觸發(fā)EXTPOLAR=EXTPOLAR&0x0E;//下降沿有效}/**********************************************************************************************************函數(shù)名稱:IRQ_EINT0()**函數(shù)功能:外部中斷服務(wù)程序**入口參數(shù):無**出口參數(shù):無********************************************************************************************************/void__irqIRQ_EINT0(void){IO0CLR=IO0CLR|Scr;//確保定時器1定時到之前可控硅不導(dǎo)通IO1CLR=IO1CLR|(1<<18);//觀察變量if(Gtest<Gset)T1MR0=Fpclk/(100-10);//料不足時減小可控硅導(dǎo)通角以增大導(dǎo)通時間從而加大料斗振動if(Gtest>Gset)T1MR0=Fpclk/(100+10);T1TCR=0x01;//打開定時器EXTINT=0x01;//清除中斷標(biāo)志VICVectAddr=0x00;//中斷返回}/*********************************************************************************************函數(shù)名稱:IRQ_Init()**功能描述:設(shè)置定時器0中斷IRQ**入口參數(shù):無**出口參數(shù):無*******************************************************************************************/voidIRQ_Init(void){ VICIntSelect=0x00; //所有中斷通道設(shè)置為IRQ中斷 VICVectCntl0=0x20|0x04; //設(shè)置定時器0中斷通道分配最高優(yōu)先級 VICVectCntl1=0x20|0x05; //設(shè)置定時器1中斷優(yōu)先級為1 VICVectCntl2=0x20|0x0e;//設(shè)置外部中斷0為2級 VICVectAddr0=(uint32)IRQ_Timer0; //設(shè)置中斷服務(wù)程序地址 VICVectAddr1=(uint32)IRQ_Timer1; VICVectAddr2=(uint32)IRQ_EINT0; VICIntEnable=1<<0x04; //使能定時器0中斷 VICIntEnable=1<<0x05; VICIntEnable=1<<0x0e;//使能外部中斷 }//二進制數(shù)轉(zhuǎn)BCD碼子程序0voidCONVBIT(uint16num,uint8hor){ DATA[hor+3]=num/1000; //計算千位DATA[hor+2]=num%1000/100; //計算百位DATA[hor+1]=num%100/10; //計算十位DATA[hor]=num%10/1; //計算個位return; }/**********************************************************************************************************函數(shù)名稱:MSPI_Init()**函數(shù)功能:初始化SPI接口,設(shè)置為主機。**入口參數(shù):無**出口參數(shù):無*********************************************************************************************************/voidMSPI_Init(void){ PINSEL0=(PINSEL0&(~(0xFF<<8)))|(0x55<<8);SPI_SPCCR=0x52; //設(shè)置SPI時鐘分頻 SPI_SPCR=(0<<3)| //CPHA=0,數(shù)據(jù)在SCK的第一個時鐘沿采樣 (1<<4)| //CPOL=1,SCK為低有效 (1<<5)| //MSTR=1,SPI處于主模式 (0<<6)| //LSBF=0,SPI數(shù)據(jù)傳輸MSB(位7)在先 (0<<7); //SPIE=0,SPI中斷被禁止}/**********************************************************************************************************函數(shù)名稱:MSPI_SendData()**函數(shù)功能:向SPI總線發(fā)送數(shù)據(jù)。**入口參數(shù):data待發(fā)送的數(shù)據(jù)**出口參數(shù):返回值為讀取的數(shù)據(jù)********************************************************************************************************/uint8MSPI_SendData(uint8data){SPI_SPDR=data;while(0==(SPI_SPSR&0x80)); //等待SPIF置位,即等待數(shù)據(jù)發(fā)送完畢return(SPI_SPDR);}/**********************************************************************************************************函數(shù)名稱:main()**函數(shù)功能:使用硬件SPI,74HC595驅(qū)動控制7段數(shù)碼管顯示。********************************************************************************************************/uint8rcv_data;intmain(void){ inti;PINSEL0=PINSEL0&0xffffffcf;PINSEL2=PINSEL2&0xfffffff7;IO0DIR=IO0DIR|Scr;//設(shè)置為輸出口,控制可控硅IO1DIR=1<<18;IO1SET=1<<18;//觀察窗口IO0CLR=IO0CLR|Scr;MSPI_Init(); //初始化SPI接口Timer0_Init();Timer1_Init(); EXT_Init(); IRQEnable(); //IRQ中斷使能 IRQ_Init(); ADC_Init(); while(1) { if(T0Flag) //中斷定時到 { while(w==40) //顯示數(shù)據(jù)刷新時間到,執(zhí)行數(shù)據(jù)變換。 { if(M==0) //如果M=0表示運行態(tài),顯示運行參數(shù)。 { switch(Display) { case0: { CONVBIT(CS[2],4); CONVBIT(CS[1],0); } break; case1: { CONVBIT(CS[0],4); CONVBIT(CS[1],0); } break; } } w=0; //清除顯示刷新計數(shù)器 if(SF) //閃爍標(biāo)志取反 SF=0; else SF=1; } if(M==0) //顯示掃描送運行參數(shù) { x=DATA[k]; } else //否則送修改參數(shù) { if(k==R) //如果當(dāng)前顯示位與鍵盤修改位相等,則根據(jù)閃爍標(biāo)志送黑碼。 { if(SF==0) x=10; else x=DATA[k]; } else x=DATA[k]; //否則直接送顯示數(shù) } w++; //顯示刷新計數(shù)器+1。 T0Flag=0; //顯示標(biāo)志位清除。 rcv_data=MSPI_SendData(digitable[x]); //發(fā)送顯示數(shù)據(jù) rcv_data=MSPI_SendData(selectable[k]);//發(fā)送顯示位碼 if((IO0PIN&KEY)!=0) { if(TK==k) //如果鍵盤輸入位=1且鍵盤記錄位與當(dāng)前輸入位相等,執(zhí)行鍵功能。 { switch(TK) //執(zhí)行TK鍵盤號功能0~3。 { case0: //0#功能為模式鍵M+1。 { if(M==4) M=1; else M++; switch(M) //取出1~4#參數(shù)送顯示,以便人機對話修改參數(shù)。 { case1: { CONVBIT(CS[0],0); CONVBIT(M-1,4); } break; case2: { CONVBIT(CS[1],0); CONVBIT(M-1,4); } break; case3: { CONVBIT(CS[2],0); CONVBIT(M-1,4); } break; case4: { CONVBIT(CS[3],0); CONVBIT(M-1,4); } break; } } break; case1: //1#功能為右移鍵標(biāo)志位R+1。 { if(R==3) R=0; else R++; } break; case2: //2#功能為加鍵,當(dāng)前閃爍位+1。 { if(DATA[R]==9) DATA[R]=0; else DATA[R]++; } break; case3: //3#功能為回車確認(rèn)鍵操作,將修改好的參數(shù)送回參數(shù)區(qū)。 { while(!M==0) { CS[M-1]=DATA[0]+DATA[1]*10+DATA[2]*100+DATA[3]*1000; R=0; //R、M標(biāo)志歸零。 M=0; } } break; case4: //4#功能為換屏鍵,Display+1。 { if(Display==1) Display=0; else Display++; } break; case5: //5#功能為去皮鍵,保證所測重量為物料實際重量。 {Gstart=CS[1]; } break; }; TK=0x09; //鍵記錄位清除。 } } elseif((IO0PIN&KEY)==0) //如果當(dāng)前鍵盤位=0,則再讀鍵盤、延時再讀=0則記錄鍵盤位TK=K。 { delays(); if((IO0PIN&KEY)==0) TK=k; } i
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年臨時倉儲設(shè)施租賃及管理服務(wù)合同
- 標(biāo)準(zhǔn)新工程設(shè)計合同樣本
- 2024年多人合伙共盈合同書范本
- 2024年度智能倉庫設(shè)備安裝合同
- 代銷協(xié)議書范例2024
- 全面房屋裝修合同模板集成
- 出口業(yè)務(wù)代理協(xié)議范本
- 2024物流合同范本
- 常見勞務(wù)派遣委托協(xié)議樣本
- 廣州建設(shè)工程裝修施工合同范例
- 雅魯藏布江大拐彎巨型水電站規(guī)劃方案
- 廣西基本醫(yī)療保險門診特殊慢性病申報表
- 城市經(jīng)濟學(xué)習(xí)題與答案
- 國開成本會計第14章綜合練習(xí)試題及答案
- 幼兒園大班科學(xué):《樹葉為什么會變黃》課件
- 1到50帶圈數(shù)字直接復(fù)制
- 鐵路工程施工組織設(shè)計(施工方案)編制分類
- 幼兒園中班數(shù)學(xué)《有趣的圖形》課件
- 《規(guī)劃每一天》教案2021
- 草莓創(chuàng)意主題實用框架模板ppt
- 山大口腔頜面外科學(xué)課件第5章 口腔種植外科-1概論、口腔種植的生物學(xué)基礎(chǔ)
評論
0/150
提交評論