2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩15頁未讀 繼續(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>  第1章 背景介紹及設(shè)計(jì)目的1</p><p>  1.1背景介紹:1</p><p><b>  1.2設(shè)計(jì)目的2</b></p><p>  第2章 設(shè)計(jì)方案及基本原理3</p><p>  2.1系

2、統(tǒng)設(shè)計(jì)方案3</p><p>  2.2實(shí)驗(yàn)原理:3</p><p><b>  2.3系統(tǒng)連接7</b></p><p>  第3章 程序設(shè)計(jì)9</p><p>  3.1主函數(shù)流程如圖所示9</p><p><b>  3.2程序代碼9</b></p&g

3、t;<p>  第4章 程序運(yùn)行及結(jié)果分析10</p><p><b>  參考文獻(xiàn)11</b></p><p><b>  附 錄12</b></p><p>  第1章 背景介紹及設(shè)計(jì)目的</p><p><b>  1.1背景介紹:</b>&l

4、t;/p><p><b>  一.預(yù)備知識: </b></p><p>  1.熟悉凌陽單片機(jī)的工作原理。 </p><p>  (1)I/O口的原理和使用設(shè)置; </p><p> ?。?)時(shí)基中斷的原理和使用設(shè)置; </p><p>  2.熟悉 µ’nSP? IDE 環(huán)境及在該環(huán)境下用

5、匯編和 C 語言編寫的應(yīng)用程序。 </p><p>  3.以A口和B口為例,學(xué)會(huì)使用 SPCE061A單片機(jī) I/O口的基本輸出和輸入功能。 </p><p><b>  二.實(shí)驗(yàn)設(shè)備: </b></p><p>  1.裝有Windows系統(tǒng)和µ’nSP? IDE仿真環(huán)境的PC機(jī)一臺(tái)。 </p><p>

6、;  2.61板一套,LED鍵盤模組一套,10針排線兩根。</p><p><b>  三.實(shí)驗(yàn)說明:</b></p><p>  1.61板的I/O輸出實(shí)驗(yàn)主要以IOA0~7接LED鍵盤模組上的8個(gè)發(fā)光二極管,IOA8IOA15 接鍵盤K1~K8的輸入。因61板核心芯片SPCE061A已內(nèi)置上下拉電阻,所以端口直接連接發(fā)光二極管的驅(qū)動(dòng)端。</p>&l

7、t;p>  2.實(shí)驗(yàn)結(jié)果是按鍵后相應(yīng)發(fā)光二極管點(diǎn)亮。</p><p>  3.代碼編寫上,主要涉及SPCE061A的端口寄存器IOA和IOB。</p><p><b>  四.實(shí)驗(yàn)要求: </b></p><p>  1.編程要求:主程序由C語言編寫。</p><p>  2.實(shí)現(xiàn)功能:通過µ’nSP?

8、IDE 環(huán)境及在該環(huán)境下用匯編語言和 C語言編寫的應(yīng)用程序,實(shí)現(xiàn)仿真功能,從而完成用按鍵控制二極管的發(fā)光與關(guān)閉功能。</p><p>  3. 實(shí)驗(yàn)現(xiàn)象:通過 IOA口輸出的數(shù)據(jù)控制8個(gè)發(fā)光二極管的點(diǎn)亮與熄滅。8個(gè)發(fā)光二極管動(dòng)態(tài)點(diǎn)亮和熄滅,點(diǎn)亮與熄滅狀態(tài)順序如下表 1-1所示。其中,“●”表示二極管是點(diǎn)亮狀態(tài),“○”表示二極管是熄滅狀態(tài)。表中D4~D11為實(shí)驗(yàn)箱上發(fā)光二極管電路模塊中從左到右的 8 個(gè)發(fā)光二極管。

9、</p><p>  表 1-1 8個(gè)發(fā)光二極管狀態(tài)</p><p><b>  1.2設(shè)計(jì)目的:</b></p><p>  隨著單片機(jī)應(yīng)用的日益廣泛,在校學(xué)生加強(qiáng)對單片機(jī)的認(rèn)識和動(dòng)手能力,已經(jīng)是非常重要的一項(xiàng)鍛煉。課程設(shè)計(jì)就是為加強(qiáng)實(shí)踐機(jī)會(huì)、培養(yǎng)學(xué)生動(dòng)手能力的一個(gè)重要環(huán)節(jié),將理論知識與實(shí)際聯(lián)系起來的一個(gè)關(guān)鍵機(jī)會(huì)。 </p>

10、<p>  本課程設(shè)計(jì)的基本要求是: </p><p>  1.熟悉編程環(huán)境及在該環(huán)境下用匯編和 C 語言編寫的應(yīng)用程序。</p><p>  2. 熟悉簡單的匯編語言指令。 </p><p>  3. 以 A口和 B 口為例,學(xué)會(huì)使用 SPCE061A單片機(jī) I/O口的基本輸出和輸入功能。</p><p>  第2章 設(shè)計(jì)方案及基

11、本原理 </p><p>  2.1系統(tǒng)設(shè)計(jì)方案 </p><p>  根據(jù)設(shè)計(jì)要求給出系統(tǒng)框圖如圖2-1:</p><p><b>  圖2-1 系統(tǒng)框圖</b></p><p><b>  2.2實(shí)驗(yàn)原理:</b></p><p>  2.2.1 數(shù)碼管工作原理</

12、p><p>  實(shí)驗(yàn)箱的 6 位 8 段數(shù)碼管電路采用“共陰”連接,陰極公共端(COM)由晶體管推動(dòng)。實(shí)驗(yàn)箱上的數(shù)碼管共有兩種,如圖 2-2。 </p><p>  圖2-2 兩種數(shù)碼管圖</p><p>  首先介紹兩個(gè)基本概念:段碼和位碼,段碼即段選信號 SEG,它負(fù)責(zé)數(shù)碼管顯示的內(nèi)容,圖 2-3中 a~g、dp組成的數(shù)據(jù)(a 為最低位,dp 為最高位)就是段碼。比

13、如 1的段碼“0x06”(b=1,c=1,其他都為 0,即段碼為 00000110b),8 的段碼為“0x7f” ;位碼即位選信號 DIG,它決定哪個(gè)數(shù)碼管工作,哪個(gè)數(shù)碼管不工作,比如僅使能 DIG4,那么 6 個(gè) LED 只有 LED4 工作,而其它的五個(gè)都不工作。</p><p>  當(dāng)需要某一位數(shù)碼管顯示數(shù)字時(shí),只需要先選中這位數(shù)碼管的位信號,再給顯示數(shù)字的段碼。比如當(dāng)在第一個(gè)數(shù)碼管上顯示一個(gè)“6”時(shí),如圖

14、 2.3,先選中第一位數(shù)碼管的位信號(實(shí)驗(yàn)箱上標(biāo)號是“1” ) ,即先給和“1”相連接的 I/O 口送 1;再把段碼設(shè)置為 0x007d,即在 a、c、d、e、f、g各段引出的端口檢測到高電平,就可以顯示一個(gè)“6”出來。 </p><p>  圖2-3數(shù)碼管顯示“6”</p><p>  2.2.2實(shí)驗(yàn)箱上 SPCE061A控制數(shù)碼管的顯示 </p><p>  實(shí)

15、驗(yàn)箱在6位8段數(shù)碼管的上面有 16 對排針,其中有 7 個(gè)“a\b\c\d\e\f\g\”是控制此位 8 段數(shù)碼管的段碼選擇的,另有 6 個(gè)“1\2\3\4\5\6”是控制6位8 段數(shù)碼管位選擇的,“DD”控制“點(diǎn)”或“分隔符號”,“DP”控制小數(shù)點(diǎn)。把實(shí)驗(yàn)箱上JP4和JP5 的引針用跳線全部短接。框圖如圖 2-4。 </p><p>  圖2-4實(shí)驗(yàn)箱上SPCE061A和6位LED顯示電路模塊的連接<

16、/p><p>  按照上面數(shù)碼管的顯示原理,當(dāng)要在第四個(gè)數(shù)碼管上顯示一個(gè)“E”時(shí),先要通過 IOB12 端口給“4”端口送一個(gè) 1,選中第四個(gè)數(shù)碼管;由圖 4-1 可以看出,顯示“E”時(shí),需要 a、d、e、f、g段被點(diǎn)亮,所以給 IOA0、IOA3、IOA4、IOA5、IOA6 端口各送一個(gè) 1,則在 a、d、e、f、g 端口各能檢測到一個(gè)高電平,就可以點(diǎn)亮 a、d、e、f、g 段,顯示一個(gè)“E” 。</p&g

17、t;<p>  2.2.3 µ’nSP? IDE指令系統(tǒng)</p><p>  µ’nSP?的指令系統(tǒng)算術(shù)邏輯操作符與 ANSI-C 算符大同小異,如表 1-1。</p><p>  表 2-1 µ’nSP?指令的算術(shù)邏輯操作符</p><p>  µ’nSP?支持 ANSI-C 中使用的基本數(shù)據(jù)類型,如表 1-2

18、。</p><p>  表2-2µ’nSP?對 ANSI-C 中基本數(shù)據(jù)類型的支持</p><p>  2.2.4 I/O口的設(shè)置</p><p>  SPCE061A有32個(gè)可編程I/O端口,分為兩組:IOA0~15口和IOB0~15口,其中每一個(gè)端口都可以被單獨(dú)設(shè)置為輸入或者輸出口。SPCE061A的I/O口的輸入輸出方式是通過方向控制向量Dir、屬性

19、向量Attrib和數(shù)據(jù)向量Data三個(gè)向量合控制的。I/O口的組合控制設(shè)置如表 2-3所示</p><p>  表2-3 I/O 端口的組合控制設(shè)置</p><p>  注:端口位默認(rèn)為帶下拉電阻的輸入管腳。 </p><p>  按照上面的組合控制設(shè)置,當(dāng)IOA的低八位設(shè)置為同相低電平輸出口時(shí),Dir、Attrib和Data 三個(gè)向量的設(shè)置如下表2-4所示。&l

20、t;/p><p>  表2-4IOA的低8位設(shè)置為同相低電平輸入口</p><p>  在 SPCE061A的 I/O口被設(shè)置為輸出口時(shí),當(dāng)Data 寄存器中的某一位寫入“1”時(shí),該位所對應(yīng)的端口輸出高電平;寫入“0”時(shí),輸出低電平。</p><p><b>  2.3系統(tǒng)連接 </b></p><p>  用 10 針排線

21、將61板的 J8 接口IOA低8位連接到LED鍵盤模組的SEG接口管腳上,將J6接口 IOB 低 8 位連接到 LED 鍵盤模組的 DIG 接口管腳上,將 J9 接口 IOA 高 8 位連接到LED鍵盤模組1*8KEY接口管腳上,將 1*8KEY接口中ROW1接至DGND 上。如圖2-5J8接口圖。</p><p>  圖2-5 J8接口圖</p><p>  IOA低 8 位接至SEG接

22、口控制LED的導(dǎo)通,IOA高 8 位連接到 LED鍵盤模組的 1*8KEY接口管腳上,讀取相應(yīng)按鍵值,1*8key中 ROW1與DGND相連,IOB6 連至 DIG7 通過ULN2003A控制8 個(gè)LED的共陰極電平狀態(tài),也可將DIG7直接連至VDD,直接將LED共陰極接地,不用程序控制。</p><p><b>  第3章 程序設(shè)計(jì) </b></p><p>  3

23、.1主函數(shù)流程如圖所示</p><p>  圖3-1主函數(shù)流程圖</p><p><b>  3.2程序代碼 </b></p><p><b>  程序如附錄所示。</b></p><p>  第4章 程序運(yùn)行及結(jié)果分析</p><p><b>  參考文獻(xiàn)<

24、/b></p><p>  [1]胡宴如.模擬電子技術(shù)[M].北京: 高等教育出版社,2000.3.</p><p>  [2]彭介華.電子技術(shù)課程設(shè)計(jì)指導(dǎo)[M].北京:高等教育出版社,1997.</p><p>  [3]羅亞非.凌陽16位單片機(jī)[M].應(yīng)用基礎(chǔ)北京航空航天大學(xué)出版社,2005.</p><p>  [4]邱關(guān)源.羅先

25、覺,電路[M].北京:高等教育出版社,2006.5.</p><p>  [5]閻石.數(shù)字電子技術(shù)基礎(chǔ)[M].北京高等教育出版社,2006.5.</p><p><b>  附錄</b></p><p><b>  匯編語言版:</b></p><p>  .include hardware.in

26、c </p><p>  .external F_GetKey </p><p><b>  .ram </b></p><p>  .var R_key </p><p><b>  .code </b></p><p>  .publi

27、c _main </p><p><b>  _main: </b></p><p>  r1 = 0x00FF </p><p>  [P_IOA_Dir] = r1 </p><p>  [P_IOA_Attrib] = r1 </p><p>  r1 = 0xff0

28、0 </p><p>  [P_IOA_Data] = r1 </p><p>  r1=0x0040 </p><p>  [P_IOB_Dir]=r1 </p><p>  [P_IOB_Attrib]=r1 </p><p>  [P_IOB_Data]=r1 </p>

29、<p>  L_MainLoop: </p><p>  call F_GetKey </p><p>  [R_key] = r1 </p><p>  r1 = r1 lsr 4 </p><p>  r1 = r1 lsr 4

30、 </p><p>  [P_IOA_Data] = r1</p><p>  jmp L_MainLoop </p><p>  .include hardware.inc </p><p>  .define KEY_ALL 0xff00 </p><p>  .public F_GetKey; <

31、/p><p><b>  .code </b></p><p>  F_GetKey: </p><p>  push r2 to [sp] </p><p>  r1=[P_IOA_Dir] </p><p>  r1&=~KEY_ALL </p><p>  [

32、P_IOA_Dir]=r1 </p><p>  r1=[P_IOA_Attrib] </p><p>  r1&=~KEY_ALL </p><p>  [P_IOA_Attrib]=r1 </p><p>  r1=[P_IOA_Buffer] </p><p>  r1|=KEY_ALL </p

33、><p>  [P_IOA_Buffer]=r1 </p><p>  L_WaitKeyDown: </p><p><b>  r1=1 </b></p><p>  [P_Watchdog_Clear]=r1 </p><p>  r1=[P_IOA_Data] </p>&l

34、t;p>  r1&=KEY_ALL </p><p>  r1^=KEY_ALL </p><p>  jz L_WaitKeyDown </p><p>  L_WaitKeyUp: </p><p><b>  r2=1 </b></p><p>  [P_Watch

35、dog_Clear]=r2 </p><p>  r2=[P_IOA_Data] </p><p>  r2&=KEY_ALL </p><p>  r2^=KEY_ALL </p><p>  jnz L_WaitKeyUp </p><p>  pop r2 from [sp] </p>&l

36、t;p><b>  retf </b></p><p><b>  C 語言版: </b></p><p>  #define P_IOA_Data (volatile unsigned int *)0x7000 </p><p>  #define P_IOA_Buffer (volatile unsigne

37、d int *)0x7001 </p><p>  #define P_IOA_Dir (volatile unsigned int *)0x7002 </p><p>  #define P_IOA_Attrib (volatile unsigned int *)0x7003 </p><p>  #define P_IOB_Data (volatile

38、 unsigned int *)0x7005 </p><p>  #define P_IOB_Buffer (volatile unsigned int *)0x7006 </p><p>  #define P_IOB_Dir (volatile unsigned int *)0x7007 </p><p>  #define P_IOB_Attrib

39、(volatile unsigned int *)0x7008 </p><p>  #define P_Watchdog_Clear (volatile unsigned int *)0x7012 </p><p>  extern unsigned GetKey(void); </p><p>  int main() </p><p>

40、;<b>  { </b></p><p>  unsigned Key = 0x0000; </p><p>  *P_IOA_Dir = 0x00ff; </p><p>  *P_IOA_Attrib = 0x00ff; </p><p>  *P_IOA_Data =

41、0xff00; </p><p>  *P_IOB_Dir=0x0040; </p><p>  *P_IOB_Attrib=0x0040; </p><p>  *P_IOB_Data=0x0040; </p><p>  while(1) </p><p><b>

42、;  { </b></p><p>  Key = GetKey(); </p><p>  Key = Key >> 8; </p><p>  *P_IOA_Data = Key; </p><p><b>  } } </b></p><p>  #

43、define P_IOA_Data (volatile unsigned int *)0x7000 </p><p>  #define P_IOA_Buffer (volatile unsigned int *)0x7001 </p><p>  #define P_IOA_Dir (volatile unsigned int *)0x7002 </p><

44、;p>  #define P_IOA_Attrib (volatile unsigned int *)0x7003 </p><p>  #define P_Watchdog_Clear (volatile unsigned int *)0x7012 </p><p>  #define KEY_ALL 0xff00 // 使用IOA8~IOA15作為鍵盤輸入口 </p&g

45、t;<p>  unsigned GetKey(void) </p><p><b>  { </b></p><p>  unsigned KeyValue = 0x0000;</p><p>  *P_IOA_Dir&=~KEY_ALL; </p><p>  *P_IOA_Attrib&

46、;=~KEY_ALL; </p><p>  *P_IOA_Buffer|=KEY_ALL; </p><p>  while(KeyValue==0) </p><p><b>  { </b></p><p>  KeyValue=(*P_IOA_Data & KEY_ALL)^KEY_ALL; </p

47、><p>  *P_Watchdog_Clear=1; </p><p>  } KeyValue=(*P_IOA_Data&KEY_ALL)^KEY_ALL; </p><p>  while((*P_IOA_Data&KEY_ALL)^KEY_ALL) </p><p><b>  { </b&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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

提交評論