2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  目錄</b></p><p><b>  第1章 概述1</b></p><p>  1.1本設(shè)計(jì)研究的背景及意義1</p><p>  1.2本課題研究的主要內(nèi)容1</p><p>  1.3各部分元件介紹1</p><p>  第2章

2、 硬件設(shè)計(jì)3</p><p>  2.1 設(shè)計(jì)的方案3</p><p>  2.2 基本原理3</p><p>  第三章 軟件設(shè)計(jì)5</p><p>  3.1 程序的主程序流程圖5</p><p><b>  3.2實(shí)驗(yàn)步驟5</b></p><p>  

3、第4章 調(diào)試結(jié)果及分析7</p><p><b>  心得與體會8</b></p><p><b>  參考文獻(xiàn)9</b></p><p><b>  附錄10</b></p><p><b>  第1章 概述</b></p><

4、;p>  1.1本設(shè)計(jì)研究的背景及意義</p><p>  在廣泛的自動(dòng)控制領(lǐng)域中,需要有類似微型計(jì)算機(jī)功能的支持,但常常又不能把微型計(jì)算機(jī)安裝在設(shè)備里面。因此,微型控制器的一個(gè)重要分支(單片機(jī))應(yīng)運(yùn)而生。SPCE061A單片機(jī)的CPU內(nèi)核是一個(gè)通用核結(jié)構(gòu),除此之外的其他功能模塊均為可選結(jié)構(gòu),借助這種通用結(jié)構(gòu)附加可選結(jié)構(gòu)的積木式的構(gòu)成,便可形成各種不同系統(tǒng)派生產(chǎn)品,以適應(yīng)不同的應(yīng)用場合。本次課題所選用的就為

5、LCD顯示模組模塊。LCD就是指數(shù)碼相機(jī)的液晶顯示屏(LCD,全稱為Liquid Crystal Display),LCD的特點(diǎn)包括低壓微功耗,平板型結(jié)構(gòu),被動(dòng)顯示型,顯示信息量大,易于彩色化,無電磁輻射,長壽命等。</p><p>  1.2本課題研究的主要內(nèi)容</p><p>  本次設(shè)計(jì)要求完成基于單片機(jī)的電壓測量系統(tǒng)的設(shè)計(jì)。系統(tǒng)包括數(shù)據(jù)采集A/D轉(zhuǎn)換模塊,單片機(jī)控制模塊和驅(qū)動(dòng)顯示模

6、塊。主程序利用C語言編寫,中斷服務(wù)程序利用匯編語言編寫,實(shí)現(xiàn)一個(gè)模擬電壓表的功能,要求電壓表能夠測量電壓值,在液晶顯示器上顯示并播報(bào)測量電壓值。</p><p>  在開機(jī)運(yùn)行后,顯示一個(gè)圖片MM.bmp,顯示并播放當(dāng)前電位所在位置的電壓;變化R22電位器,顯示并播報(bào)R22電位器變化后的電壓,即只要R22電位器改變,系統(tǒng)就能自動(dòng)測量出R22電位器的電壓,并把測量的到的電壓值播報(bào)并顯示出來。</p>

7、<p>  1.3各部分元件介紹</p><p>  SPCE061A提供了位控制結(jié)構(gòu)的I/O端口,每一位都可以被單獨(dú)定義用于輸入或輸出數(shù)據(jù)。通常,對某一位的設(shè)定包括以下3個(gè)基本項(xiàng):數(shù)據(jù)向量Data、屬性向量Attribution和方向控制向量Direction。3個(gè)端口內(nèi)每個(gè)對應(yīng)的位組合在一起,形成一個(gè)控制字,用來定義相應(yīng)I/O口位的輸入輸出狀態(tài)和方式。SPCE061A有32個(gè)可編程I/O端口,分為兩

8、組:IOA0~15口和IOB0~15口,其中每一個(gè)端口都可以被單獨(dú)設(shè)置為輸入或者輸出口。</p><p>  SPLC501液晶顯示模組采用的驅(qū)動(dòng)控制芯片為凌陽科技的SPLC501A芯片,SPLC501A為液晶顯示控制驅(qū)動(dòng)器,SPLC501A單芯片液晶驅(qū)動(dòng),可以直接與其他微控制器接口總線相連。微控制器可以將顯示數(shù)據(jù)通過8位數(shù)據(jù)總線或者串行接口寫到SPLC501A的顯存中。</p><p>

9、  SACM_S480語音播放也有自動(dòng)和手動(dòng)兩種方式,無論利用自動(dòng)方式還是手動(dòng)方式進(jìn)行播放,都要通過語音播放初始化,即初始化為自動(dòng)方式或者手動(dòng)方式,取數(shù)據(jù),填充語音隊(duì)列,譯碼播放的過程。在自動(dòng)方式里,取語音數(shù)據(jù),填充語音隊(duì)列,對語音資源進(jìn)行解碼,以及輸出隊(duì)列的過程只需通過SACM_S480_ServiceLoop()一條語音就可以實(shí)現(xiàn)。</p><p><b>  第2章 硬件設(shè)計(jì)</b>&

10、lt;/p><p><b>  2.1 設(shè)計(jì)的方案</b></p><p>  硬件連接圖如圖2-1。IOA8~IOA15連接SPLC501液晶顯示模塊的D0~D7,IOB4連接AO,IOB5連接RWP,IOB6連接EP,RE連接/RES,IOB9連接/CS,VR、C86和PS跳線都與V3短接,把SPLC501液晶顯示模組的時(shí)序選擇為6800時(shí)序,即把JP6中所有左右兩排

11、的引針用跳線短接;兩路音頻輸出J8和J13中靠左邊的兩個(gè)引針用跳線短接;IOA0連接R22電位器,即用排線把J26的第0號引針和J17(雙0~3V的直流電平輸入電路其中之一)中任一引針連接起來。</p><p>  本實(shí)驗(yàn)中,通過SPCE061A內(nèi)部ADC采集數(shù)據(jù),如圖2-1。實(shí)驗(yàn)箱上V3為3.3V,當(dāng)滑動(dòng)頭變化時(shí),IOA0口輸入的電壓就隨著變化;當(dāng)已經(jīng)通過[P_ADC_MUX_Ctrl]啟動(dòng)轉(zhuǎn)換,通過[P_AD

12、C_MUX_Ctrl]設(shè)置從LINE_IN1輸入時(shí),因?yàn)長INE_IN1也就是IOA0,所以IOA0口輸入的電壓變化時(shí),就會送入A/D轉(zhuǎn)換器變化的值,A/D轉(zhuǎn)換器采集轉(zhuǎn)換;通過讀取[P_ADC_MUX_Data]轉(zhuǎn)換得到數(shù)據(jù),并把這些數(shù)據(jù)計(jì)算成電壓值,計(jì)算出電壓值的個(gè)位、小數(shù)點(diǎn)后第一位、小數(shù)點(diǎn)后第二位、小數(shù)點(diǎn)后第三位、小數(shù)點(diǎn)后第四位。</p><p>  圖 2-1硬件連接圖</p><p&g

13、t;<b>  2.2 基本原理</b></p><p>  本課題用到的實(shí)驗(yàn)箱硬件模塊為:SPCE061A核心及周邊電路模塊(包含32個(gè)I/O口),LCD顯示模組模塊,雙0~3.3V直流電平輸入電路模塊,兩路音頻輸出電路模塊。</p><p>  圖2-2 0~3.3V直流電平輸入電路</p><p>  圖 2-3 硬件原理圖</

14、p><p><b>  軟件設(shè)計(jì)</b></p><p>  3.1 程序的主程序流程圖</p><p>  主程序流程圖如圖3-1,初始化LCD后,顯示開機(jī)圖片MM;進(jìn)入電壓測量循環(huán):啟動(dòng)轉(zhuǎn)換,采集20個(gè)轉(zhuǎn)換數(shù)據(jù)并取平均值,主要是為了減少誤差;計(jì)算電壓值;如果和上次電壓值之差小于±0.1V,則電壓沒有變化,返回繼續(xù)采集數(shù)據(jù);如果和上次電

15、壓值之差大于±0.1 V,表示有電壓變化,計(jì)算電壓各位(包括個(gè)位到小數(shù)點(diǎn)后四位)的數(shù);清屏,顯示圖片MM;播報(bào)并顯示電壓值。 </p><p>  圖 3-1 程序流程圖</p><p><b>  3.2實(shí)驗(yàn)步驟</b></p><p>  1. 新建一個(gè)工程ex10_VoltageMeasureFrom0To3,新建一個(gè)C語言程序

16、main.c。(根據(jù)編程需要,讀者可自行新建其他文件)。</p><p>  2. 拷貝支持sacmv26e.lib的匯編語言文件hardware.asm和頭文件hardware.h、hardware.inc以及頭文件SPCE061A.h和SPCE061A.inc到ex10_VoltageMeasureFrom0To3工程文件夾。</p><p>  3. 拷貝語音播放庫sacmv26e.

17、lib和頭文件s480.h、s480.inc到ex10_ VoltageMeasureFrom0To3工程文件夾。</p><p>  4. 拷貝語音資源到當(dāng)前工程的文件夾中,并將語音資源加載到工程中;語音資源可在IDE的安裝路徑\SPCE061A\example\IntExa\ ex10_VoltageMeasureFrom0To3\voice文件夾中找到。</p><p>  5.拷貝

18、SPLC501液晶顯示DataOSforLCD.asm、SPLC501Driver_IO.asm、SPLC501Driver_IO.inc、SPLC501User.c和SPLC501User.h五個(gè)LCD驅(qū)動(dòng)程序到ex10_ VoltageMeasureFrom0To3工程文件夾。</p><p>  6. 在IDE集成開發(fā)環(huán)境的Project􀃆Setting􀃆link中鏈接s

19、acmv26e.lib庫到工程中。</p><p>  7. 添加hardware.asm、DataOSforLCD.asm、SPLC501Driver_IO.asm和SPLC501User.c到工程文件的“Source Files”,添加s480.h、s480.inc、hardware.h、hardware.inc、SPLC501Driver_IO.inc、SPLC501User.h六個(gè)頭文件到“Head Fi

20、les”。</p><p>  8. 按照程序流程圖編寫程序。</p><p>  9. Rebuild All。</p><p>  10. 按照硬件連接圖連接硬件。注意把J17的任一引腳和J26中的第0號引腳連接,把JP3和JP7的所有跳線全部拔掉,以免對I/O口的數(shù)據(jù)造成影響。 </p><p>  11. 下載程序,運(yùn)行。 </

21、p><p>  12. 調(diào)節(jié)R22電位器(雙0~3.3V直流電平輸入電路模塊中下面一個(gè)電位器),觀察LCD顯示數(shù)據(jù)和實(shí)驗(yàn)箱播報(bào)的數(shù)據(jù),分析是不是和實(shí)驗(yàn)要求相統(tǒng)一。</p><p>  第4章 調(diào)試結(jié)果及分析</p><p>  實(shí)現(xiàn)一個(gè)模擬電壓表的功能,要求電壓表能夠測量電壓值,在液晶顯示器上顯示并播報(bào)測量電壓值. 開機(jī)(運(yùn)行)后,顯示一個(gè)圖片 ,顯示并播放當(dāng)前電位器所

22、在位置的電壓;變化 R22 電位器,顯示并播報(bào) R22 電位器變化后的電壓;即只要 R22 電位器改變,系統(tǒng)就能自動(dòng)測量出 R22 電位器的電壓,并把測量得到的電壓值播報(bào)并顯示出來。</p><p><b>  圖4-1 實(shí)驗(yàn)結(jié)果</b></p><p><b>  心得與體會</b></p><p>  通過這次課程設(shè)計(jì)

23、使我更進(jìn)一步掌握了SPCE061A內(nèi)部ADC的使用方法,同時(shí)熟悉了凌陽單片機(jī)試驗(yàn)箱LCD顯示模塊的使用方法,熟悉了SACM-S480格式的語音播放方式。</p><p>  通過對單片機(jī)資料的查閱和應(yīng)用,更進(jìn)一步增加了對單片機(jī)知識的理解和運(yùn)用能力。本文列出了系統(tǒng)具體的硬件原理圖,硬件連接方案,軟件流程圖和具體匯編語言程序設(shè)計(jì)與調(diào)試等方面。在這次課程設(shè)計(jì)的過程中學(xué)會了凌陽十六位單片機(jī)的基本使用,感受到了熟練掌握它對

24、于自動(dòng)化專業(yè)的同學(xué)的重要性。總體來說這次的科研實(shí)踐很成功,達(dá)到了預(yù)想的目的,學(xué)到了知識,提高了能力,完成了任務(wù)。在此感謝指導(dǎo)老師的悉心教導(dǎo),改正了很多不曾發(fā)現(xiàn)的問題,為即將的畢業(yè)設(shè)計(jì)打下了基礎(chǔ)。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1]杜剛. 16位單片機(jī)原理及應(yīng)用學(xué)習(xí)與實(shí)驗(yàn)指導(dǎo)[M].北京:中國電力出版社,2008.12.</p

25、><p>  [2]羅亞飛.凌陽16位單片機(jī)應(yīng)用基礎(chǔ)[M].北京:北京航空航天大學(xué)出版社,2003.12.</p><p>  [3]李曉白.凌陽16位單片機(jī)C語言開發(fā)[M].北京:北京航空航天大學(xué)出版社,2006.7.</p><p>  [4]李朝青.單片機(jī)原理及接口技術(shù)(修訂版)[M].北京:北京航空航天大學(xué)出版社,1998.5.</p><

26、p><b>  附錄 總程序</b></p><p>  //=====================================================================================================</p><p>  // 工程名稱:0~3V電壓測量表</p><p>

27、;  // 功能描述: </p><p>  // 0~3V電壓測量表</p><p>  // 采集電壓經(jīng)LCD顯示出來,并語音提示電壓值 </p><p>  // 涉及的庫:CMacro1016.lib</p><p>  // SacmV26e.l

28、ib</p><p>  // 組成文件:main.c/SPLC501User.c</p><p>  //ISR.asm/hardware.asm/SPLC501Driver_IO.asm/DataOSforLCD.asm</p><p>  // 480.h/480.inc/hardware.h/hardware.inc</p&g

29、t;<p>  //SPLC501Driver_IO.inc/SPLC501User.h/SPCE061A.h/SPCE061A.inc</p><p>  //硬件連接:選擇IOA0口為AD輸入</p><p>  // LCD數(shù)據(jù)IOA8-IOA15,AOP:IOB4,R/W:IOB5,EP:IOB6,片選由IOB9提供</p&

30、gt;<p>  // 注意:拔掉usb的數(shù)據(jù)線 </p><p>  // 維護(hù)記錄:2005-10-17</p><p>  //====================================================================================================</p

31、><p>  //========================================================================</p><p>  //文件名稱:main.c</p><p>  //功能描述:采集電壓經(jīng)LCD顯示出來,并語音提示電壓值 </p><p>  //維護(hù)記錄:2005

32、-10-17v1.0</p><p>  //========================================================================</p><p>  #include "VolMeasure.h" //定義了一個(gè)結(jié)構(gòu)體</p><p

33、>  #include "MM.h"</p><p>  #include "SPLC501User.h"</p><p>  #include "SPCE061A.h"</p><p>  unsigned int AD_Read(void);</p><p>  void

34、PlayS480(int Result);</p><p>  //========================================================================</p><p>  //語法格式:int main(void)</p><p>  //實(shí)現(xiàn)功能:主程序</p><p>

35、<b>  //參數(shù):無</b></p><p>  //返回值:int 無意義</p><p>  //========================================================================</p><p>  int main(void)</p><p&

36、gt;<b>  {</b></p><p>  int i=0,j=0,k=0,m;</p><p>  float fVolVal;</p><p>  int uiVolFlag=0,uiVolFlagOne=0;</p><p>  long int uiVolFlagHow=0;</p><

37、p>  unsigned int uiData;</p><p>  long int liDataVol;</p><p>  struct ST_VolValude VolValude; //0-3。3V電壓表服務(wù)結(jié)構(gòu)</p><p>  VolValude.VolTureValudeB=7;

38、 //初始化電壓采集值</p><p>  LCD501_Init(0x00); //初始化LCD</p><p>  LCD501_SetPaintMode(4); //設(shè)置LCD顯示圖象模式為取反疊加模式</p><p>  

39、LCD501_ClrScreen(0); //清屏</p><p>  LCD501_Bitmap(0,0,(unsigned int *)encoding_00); //顯示開機(jī)圖片</p><p>  fVolVal=0.0;</p><p>  while(1)

40、 //主循環(huán)</p><p><b>  {</b></p><p>  *P_DAC_Ctrl = 0;</p><p>  *P_ADC_Ctrl = C_ADCE+C_MIC_DIS+C_AGCN+C_DAC_OUT3mA+C_VEXTREF_DIS+C_V2VREFB_DIS; &l

41、t;/p><p>  uiData = *P_ADC_LINEIN_Data; </p><p>  while((*P_ADC_MUX_Ctrl&0x8000)!= 0x8000); </p><p>  *P_ADC_MUX_Ctrl=C_ADC_CH1;</p><p>  /

42、/播放語音后會改變P_ADC_Ctrl的設(shè)置</p><p>  uiData=AD_Read(); //丟掉第一個(gè)數(shù)</p><p><b>  j=0;</b></p><p>  for(i=0;i<20;i++)

43、 //采20個(gè)數(shù)據(jù)到VolValude.VolValudeA[j]</p><p><b>  {</b></p><p>  *P_Watchdog_Clear=C_WDTCLR;</p><p>  uiData=AD_Read();</p><p>  VolValude.VolValudeA[

44、j]= uiData;</p><p><b>  j++;</b></p><p><b>  }</b></p><p>  uiVolFlagOne=0xff;</p><p>  uiVolFlag=0;</p><p><b>  j=0;</b&g

45、t;</p><p><b>  uiData=0;</b></p><p>  liDataVol=0;</p><p>  for(i=0;i<20;i++)</p><p><b>  {</b></p><p>  liDataVol=liDataVol+Vol

46、Valude.VolValudeA[j];</p><p><b>  j++;</b></p><p><b>  }</b></p><p>  uiData=liDataVol/20; //取20個(gè)數(shù)據(jù)的平均值,以減少誤差</p><p>

47、  VolValude.VolTureValudeA=(float)uiData*3.3/0xffc0;</p><p><b>  //得到電壓值</b></p><p>  fVolVal=VolValude.VolTureValudeB-VolValude.VolTureValudeA;</p><p>  if(fVolVal<0

48、.1&&fVolVal>(-0.1)) //和前一次數(shù)據(jù)比較,有變化更新顯示和語音提示</p><p><b>  {</b></p><p><b>  if(k==0) </b></p><p><b>  {</b></p>&

49、lt;p><b>  k++;</b></p><p><b>  }</b></p><p><b>  else k++;</b></p><p><b>  } </b></p><p><b>  else</b><

50、;/p><p><b>  { </b></p><p>  k=0; //取得要在LCD上顯示的數(shù)據(jù),存入VolValude.LCD[j]</p><p>  VolValude.VolTureValudeB=VolValude.VolTureValu

51、deA;</p><p>  uiVolFlagHow=VolValude.VolTureValudeA*10000;</p><p>  VolValude.LCD[0]=uiVolFlagHow/10000%10;</p><p>  VolValude.LCD[1]=uiVolFlagHow/1000%10;</p><p>  Vol

52、Valude.LCD[2]=uiVolFlagHow/100%10;</p><p>  VolValude.LCD[3]=uiVolFlagHow/10%10;</p><p>  VolValude.LCD[4]=uiVolFlagHow%10;</p><p><b>  //LCD數(shù)據(jù)更新</b></p><p>

53、;  m = LCD501_GetPaintMode();//獲取當(dāng)前圖象疊加模式</p><p>  LCD501_SetPaintMode(2);//設(shè)置為清除模式</p><p>  LCD501_Rectangle(68,40,127,56,PAINT_SOLID);//清除數(shù)據(jù)顯示區(qū)</p><p>  LCD501_SetP

54、aintMode(m);//圖象疊加模式恢復(fù)</p><p>  //////////////////////////////////////////////////顯示AD轉(zhuǎn)換數(shù)值以及語音播報(bào)結(jié)果</p><p>  LCD501_PutChar(68,40,('0'+VolValude.LCD[0])); &

55、lt;/p><p>  LCD501_PutChar(76,40,'.'); </p><p>  PlayS480(VolValude.LCD[0]);</p><p>  PlayS480(10);</p><p>  LCD501_PutChar(78,40,('0'+VolValude.LCD[1]))

56、;</p><p>  PlayS480(VolValude.LCD[1]);</p><p>  LCD501_PutChar(88,40,('0'+VolValude.LCD[2]));</p><p>  PlayS480(VolValude.LCD[2]);</p><p>  LCD501_PutChar(98

57、,40,('0'+VolValude.LCD[3]));</p><p>  PlayS480(VolValude.LCD[3]);</p><p>  LCD501_PutChar(108,40,('0'+VolValude.LCD[4]));</p><p>  PlayS480(VolValude.LCD[4]);</

58、p><p>  LCD501_PutChar(116,40,'V');</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  //=============

59、================================================ </p><p>  // 語法格式: void AD();</p><p>  // 實(shí)現(xiàn)功能:數(shù)據(jù)采集</p><p>  // 參數(shù): 無</p><p>  // 返回值: bData-采得的數(shù)據(jù)</

60、p><p>  //=============================================================</p><p>  unsigned int AD_Read(void)</p><p><b>  {</b></p><p>  unsigned int bData;</

61、p><p>  while(!(*P_ADC_MUX_Ctrl&0x8000));//等待采樣完成</p><p>  bData=*P_ADC_LINEIN_Data; </p><p>  bData = bData&0xffc0;</p><p>  return bData;</p><p>&

62、lt;b>  }</b></p><p>  //============================================================= </p><p>  // 語法格式: void PlayS480(int Result);</p><p>  // 實(shí)現(xiàn)功能:語音播放</p><

63、;p>  // 參數(shù): int Result-要播放的段</p><p>  // 返回值: 無</p><p>  //=============================================================</p><p>  void PlayS480(int Result)</p>

64、<p><b>  {</b></p><p>  SACM_S480_Initial(1); //播放初始化,來自于SacmV26e.lib</p><p>  SACM_S480_InitQueue();</p><p>  SACM_S480_Play(Result, 3, 3);<

65、;/p><p>  while((SACM_S480_Status()&0x0001) != 0) //填充隊(duì)列播放,來自于SacmV26e.lib</p><p><b>  {</b></p><p>  SACM_S480_ServiceLoop();</p><p>  *P_Watchdog_Clear

66、=C_WDTCLR;</p><p><b>  }</b></p><p>  SACM_S480_Stop(); //停止播放,來自于SacmV26e.lib</p><p>  __asm("FIQ OFF"); </p><p><

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論