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

下載本文檔

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

文檔簡介

1、<p>  單片機(jī)與CPLD綜合課程設(shè)計</p><p>  學(xué)院 電子信息工程學(xué)院 </p><p>  專業(yè) 生物醫(yī)學(xué)工程 </p><p>  學(xué)號 </p><p>  姓名 </p><p&

2、gt;  日期 2014年1月4日 </p><p><b>  摘 要</b></p><p>  基于單片機(jī)與C P L D 設(shè)計了一個鍵值采集、顯示及與PC通信的綜合應(yīng)用系統(tǒng)。系統(tǒng)硬件由單片機(jī)、CPLD 及外圍電路組成,軟件采用C 語言和硬件描述語言VHDL 編程??蓪?shí)現(xiàn)上行鍵值采集、顯示,并將采集到的鍵值數(shù)據(jù)通過串口送給PC;下行PC發(fā)送數(shù)據(jù)

3、由系統(tǒng)接收,數(shù)碼管可以顯示接收到的數(shù)據(jù)。該系統(tǒng)工作可靠,在實(shí)際設(shè)計應(yīng)用中有一定的參考價值。</p><p><b>  引 言</b></p><p>  隨著電子、計算機(jī)技術(shù)的飛速發(fā)展,單片機(jī)與CPLD技術(shù)都得到了越來越廣泛的應(yīng)用。單片微型計算機(jī)(單片機(jī))自問世以來,因其小巧靈活、成本低、控制能力強(qiáng)、易于產(chǎn)品化等優(yōu)勢,在各領(lǐng)域中得到廣泛的應(yīng)用;但純單片機(jī)系統(tǒng)也有弱點(diǎn)

4、:如低速、低可靠性等??删幊踢壿嬈骷﨏PLD含有數(shù)量眾多的可編程邏輯宏單元或邏輯塊,能夠任意組合,可以根據(jù)需要設(shè)計成功能各異的邏輯電路;并且可采用VHDL語言編程,加速了產(chǎn)品的開發(fā)過程,使邏輯電路的設(shè)計變得簡單、易于實(shí)現(xiàn);器件的現(xiàn)場可編程,大大地縮短了產(chǎn)品開發(fā)周期及方便更新?lián)Q代;但在信息處理、邏輯分析、決策判斷等方面CPLD 比不上單片機(jī)。因此,可以將單片機(jī)與CPLD器件結(jié)合,優(yōu)勢互補(bǔ),組成軟硬件都可靈活編程的系統(tǒng),以適應(yīng)不斷改變的市場

5、需</p><p><b>  求。</b></p><p><b>  一、設(shè)計任務(wù)</b></p><p>  了解單片機(jī)與CPLD綜合實(shí)驗(yàn)板及資源,實(shí)現(xiàn)如下功能:</p><p> ?、贆z測按鍵輸入:判斷按鍵鍵值,點(diǎn)亮相應(yīng)發(fā)光二極管,同時數(shù)碼管顯示鍵值,并通過串口將鍵值發(fā)給PC。</p&

6、gt;<p>  ②由PC的串口向?qū)嶒?yàn)板發(fā)送1~9數(shù)據(jù),通過數(shù)碼管能將PC發(fā)送的數(shù)據(jù)正確顯示出來。</p><p><b>  二、相關(guān)知識介紹</b></p><p><b>  1.單片機(jī)技術(shù)</b></p><p>  P89C60X2 器件采用高性能的靜態(tài)80C51 設(shè)計,以先進(jìn)的CMOS 工藝制造

7、 并包含非易失性Flash。程序存儲器可通過并行編程或在系 統(tǒng)編程(ISP)的方法進(jìn)行編程。支持6 時鐘模式。</p><p>  P89C60X2 包含512 字節(jié)RAM ,64K字節(jié)Flash,32 個I/O 口,3 個16 位定時/計數(shù)器6 中斷源,4 中斷優(yōu)先級,嵌套的中斷結(jié)構(gòu),1 個增強(qiáng)型UART ,看門狗定時器以及片內(nèi)振蕩器和時鐘電路。</p><p>  此外器件的靜態(tài)設(shè)計使

8、其具有非常寬的頻率范圍甚至可低至零。具有兩個軟件可選的節(jié)電模式,空閑模式和掉電模式,空閑模式凍結(jié)CPU 的運(yùn)行,但允許RAM 、定時器、串口和中斷系統(tǒng)繼續(xù)保持其功能,掉電模式保持RAM 的內(nèi)容,但凍結(jié)振蕩器,這樣使其它片內(nèi)功能都停止工作。由于是靜態(tài)設(shè)計,時鐘停止而不會使用戶數(shù)據(jù)丟失,操作可從時鐘停止點(diǎn)恢復(fù)運(yùn)行。</p><p><b>  2.CPLD技術(shù)</b></p>&l

9、t;p>  EPM7128S: ALTERA的EPM7128S系列CPLD是基于第二代MAX結(jié)構(gòu)體系地高性能EEPROM結(jié)構(gòu)的CPLD。完全符合IEEE1149.1 JTAG邊界掃描標(biāo)準(zhǔn),具有5V ISP的功能。具有最小5ns的引腳到引腳的邏輯時延,最高可175.4MHz的計數(shù)頻率。引腳可配置為開漏輸出。每個宏單元都有獨(dú)立的可編程電源控制,最多可以節(jié)省50%的功耗。宏單元內(nèi)的寄存器具有單獨(dú)的時鐘和復(fù)位等信號。支持多種電壓接口。實(shí)驗(yàn)

10、板上使用的是一個PLCC84封裝的EPM7128S ,EPM7128S內(nèi)部有128個宏單元、8個邏輯陣列塊和2500個門電路。</p><p><b>  3.綜合實(shí)驗(yàn)板介紹</b></p><p>  本綜合實(shí)驗(yàn)板采用的是ATMEL公司的ATF1508AS芯片作為目標(biāo)CPLD。 ATF1508AS 與Altera公司的EPM7128S芯片完全兼容,但是可以擦寫的次數(shù)

11、可以上萬次,方便同學(xué)們的練習(xí)。采用PHILIPS公司的最新的內(nèi)置ISP下載功能的64 KB大容量Flash存儲器和特大RAM的P89C60X2單片機(jī)做為目標(biāo)單片機(jī)。</p><p><b>  三、設(shè)計工具簡介 </b></p><p><b>  1.keilC51</b></p><p>  Keil C51是美國Ke

12、il Software公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢,因而易學(xué)易用。Keil C51軟件提供豐富的庫函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具。</p><p>  C51工具包的整體結(jié)構(gòu),如圖所示,其中uVision與Ishell分別是C51 for Windows和for Dos的集成開發(fā)環(huán)境(IDE),可以完成編輯、編譯、連接、調(diào)試、

13、仿真等整個開發(fā)流程。開發(fā)人員可用IDE本身或其它編輯器編輯C或匯編源文件。然后分別由C51及A51編譯器編譯生成目標(biāo)文件(.OBJ)。目標(biāo)文件可由LIB51創(chuàng)建生成庫文件,也可以與庫文件一起經(jīng)L51連接定位生成絕對目標(biāo)文件(.ABS)。ABS文件由OH51轉(zhuǎn)換成標(biāo)準(zhǔn)的Hex文件,以供調(diào)試器dScope51或tScope51使用進(jìn)行源代碼級調(diào)試,也可由仿真器使用直接對目標(biāo)板進(jìn)行調(diào)試,也可以直接寫入程序存貯器如EPROM中。</p&g

14、t;<p>  2.MaxplusII</p><p>  Max+plusⅡ是Altera公司上一代的PLD開發(fā)軟件,提供的FPGA/CPLD開發(fā)集成環(huán)境,Altera是世界上最大可編程邏輯器件的供應(yīng)商之一。Max+plusⅡ界面友好,使用便捷,被譽(yù)Max+plusⅡ是Altera公司上一代的PLD開發(fā)軟件,提供的FPGA/CPLD開發(fā)集成環(huán)境,Altera是世界上最大可編程邏輯器件的供應(yīng)商之一。

15、Max+plusⅡ界面友好,使用便捷,被譽(yù)為業(yè)界最易用易學(xué)的EDA軟件。在Max+plusⅡ上可以完成設(shè)計輸入、元件適配、時序仿真和功能仿真、編程下載整個流程,它提供了一種與結(jié)構(gòu)無關(guān)的設(shè)計環(huán)境,使設(shè)計者能方便地進(jìn)行設(shè)計輸入、快速處理和器件編程。目前Altera已經(jīng)停止開發(fā)MaxplusII,而轉(zhuǎn)向QuartusII軟件平臺。</p><p><b>  四、設(shè)計過程</b></p>

16、;<p><b>  1.單片機(jī)軟件設(shè)計</b></p><p><b>  .過程</b></p><p><b>  .程序</b></p><p>  #include <reg51.h></p><p>  unsigned char a,ji

17、eshou;</p><p>  void send_char(unsigned char shuzi);</p><p>  void delay(unsigned int x);</p><p>  sbit P00=P0^0; //即定義P00為P0口的第1位,以便進(jìn)行位操作。</p><p>  sbit P01=P0^1;&

18、lt;/p><p>  sbit P02=P0^2;</p><p>  sbit P03=P0^3;</p><p>  sbit p04=P0^4;</p><p>  sbit P05= P0^5;</p><p><b>  main()</b></p><p>  {

19、 p04=0; //蜂鳴器</p><p>  delay(100);</p><p><b>  P05=0;</b></p><p>  delay(100);</p><p><b>  P05=1;</b></p><p>  delay(150);<

20、/p><p><b>  P05=0;</b></p><p>  delay(100);</p><p><b>  P05=1;</b></p><p>  delay(150);</p><p><b>  P05=0;</b></p>

21、<p>  delay(100);</p><p><b>  P05=1;</b></p><p>  TMOD = 0x20; // 將定時/計數(shù)器1設(shè)置為工作方式2,用于產(chǎn)生波特率,定時器 1不相應(yīng)外部中斷,定時器1處于定時方式,定時器1定時方式為"8位自動充值定時"</p><p>  TH1= 0x

22、FD; //給定時/計數(shù)器1裝初值,確定定時時長. TL1=0xFD; // 波特率9600</p><p>  SCON = 0x50; // 01010000,串行口控制寄存器設(shè)置為工作方式1并允許中斷接收數(shù)據(jù)。</p><p&

23、gt;  PCON = 0x00; // 波特率不倍增 </p><p>  TR1 = 1; // 啟動定時器1</p><p>  IE = 0x0; // 禁止任何中斷</p><p><b>  a=0;</b>

24、</p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  unsigned char n; //n;</p><p>  P2=0xff; n=P2; </p><p>  if(n!=0xff) /

25、/判斷鍵值</p><p><b>  {</b></p><p>  delay(20);</p><p>  if(n!=0xff)</p><p><b>  {</b></p><p>  switch(n) </p><

26、;p><b>  {</b></p><p>  case(0xfe):P03=0;P02=0;P01=0;P00=0;send_char(0x0);P05=0;delay(300);P05=1;delay(200);break;//0 case(0xfd):P03=0;P02=0;P01=0;P00=1;send_char(0x1);P05=0;de

27、lay(300);P05=1;delay(200);break;//1 case(0xfb):P03=0;P02=0;P01=1;P00=0;send_char(0x2);P05=0;delay(300);P05=1;delay(200);break;//2 case(0xf7):P03=0;P02=0;P01=1;P00=1;send_char(0x3);P05=0;d

28、elay(300);P05=1;delay(200);break;//3 case(0xef):P03=0;P02=1;P01=0;P00=0;send_char(0x4</p><p><b>  }</b></p><p><b>  }</b></p><p>  

29、} </p><p>  if(RI) // 是否有數(shù)據(jù)到來,由PC的串口向?qū)嶒?yàn)板發(fā)送1~9數(shù)據(jù) { </p><p><b>  RI = 0;</b></p><p>  jieshou = SBUF; // 暫存接收到的數(shù)據(jù)</p

30、><p>  switch(jieshou)</p><p>  { </p><p>  case(0x0):P03=0;P02=0;P01=0;P00=0;P05=0;delay(300);P05=1;break; case(0x1):P0

31、3=0;P02=0;P01=0;P00=1;P05=0;delay(300);P05=1;break; case(0x2):P03=0;P02=0;P01=1;P00=0;P05=0;delay(300);P05=1;break; case(0x3):P03=0;P02=0;P01=1;P00=1;P05=0;

32、delay(300);P05=1;break; case(0x4):P03=0;P02=1;P01=0;P00=0;P05=0;delay(300);P05=1;break; case(0x5):P03=0;</p><p><b>  }</b></p&g

33、t;<p><b>  }</b></p><p><b>  } </b></p><p><b>  } </b></p><p>  void send_char(unsigned char shuzi) //傳送一個字符,串口將鍵值發(fā)給PC</p><p>

34、;<b>  {</b></p><p>  SBUF = shuzi;</p><p>  while(!TI); // 等特數(shù)據(jù)傳送</p><p>  TI = 0; // 清除數(shù)據(jù)傳送標(biāo)志</p><p><b>  

35、} </b></p><p>  void delay(unsigned int x)</p><p><b>  {</b></p><p>  unsigned char j;</p><p>  while(x--)</p><p><b>  {</b>&

36、lt;/p><p>  for (j=0;j<125;j++)</p><p><b>  {;}</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  2.cpld軟件設(shè)計</p>

37、<p><b>  .過程</b></p><p><b>  .程序</b></p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  ENTITY li IS</p><p>

38、;<b>  PORT(</b></p><p>  A: IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  Y:Out STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p>  KEYIN:in STD_LOGIC_VECTOR(7 DOWNTO 0);</p>

39、;<p>  LEDOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p>  KEYOUT:out STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p>  SPKIN:in STD_LOGIC;</p><p>  SPKOUT:OUT STD_LOGIC;</p><p

40、>  W4IN:in STD_LOGIC; --位選</p><p>  W4OUT:out STD_LOGIC); </p><p><b>  END li;</b></p><p>  ARCHITECTURE lili OF li IS</p><p>  SIGNAL TEMP

41、: STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p>  SIGNAL TEMP3: STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p><b>  BEGIN</b></p><p>  W4OUT<=W4IN; </p><p>  SPKOUT<=SPK

42、IN;</p><p>  PROCESS(A,KEYIN)</p><p>  VARIABLE COMB:STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  VARIABLE COMB3:STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p><b>  BEGIN</b&g

43、t;</p><p>  COMB:=A(3)&A(2)&A(1)&A(0);</p><p>  COMB3:=KEYIN(7)&KEYIN(6)&KEYIN(5)&KEYIN(4)&KEYIN(3)&KEYIN(2)&KEYIN(1)&KEYIN(0);</p><p>  CASE

44、 COMB IS</p><p>  WHEN"0000"=>TEMP<="11000000"; --0</p><p>  WHEN"0001"=>TEMP<="11111001";</p><p>  WHEN"0010"=>TE

45、MP<="10100100";</p><p>  WHEN"0011"=>TEMP<="10110000";</p><p>  WHEN"0100"=>TEMP<="10011001";</p><p>  WHEN"010

46、1"=>TEMP<="10010010";</p><p>  WHEN"0110"=>TEMP<="10000010";</p><p>  WHEN"0111"=>TEMP<="11111000";</p><p> 

47、 WHEN"1000"=>TEMP<="10000000"; --8</p><p>  WHEN"1001"=>TEMP<="10010000"; --9</p><p>  WHEN OTHERS=>TEMP<="ZZZZZZZZ";</p&

48、gt;<p><b>  END CASE;</b></p><p>  CASE COMB3 IS</p><p>  WHEN"11111110"=>TEMP3<="11111110"; --采集的鍵值</p><p>  WHEN"11111101"

49、=>TEMP3<="11111101";</p><p>  WHEN"11111011"=>TEMP3<="11111011";</p><p>  WHEN"11110111"=>TEMP3<="11110111";</p><p&

50、gt;  WHEN"11101111"=>TEMP3<="11101111";</p><p>  WHEN"11011111"=>TEMP3<="11011111";</p><p>  WHEN"10111111"=>TEMP3<="1011

51、1111";</p><p>  WHEN"01111111"=>TEMP3<="01111111";</p><p>  WHEN OTHERS=>TEMP3<="ZZZZZZZZ";</p><p><b>  END CASE;</b></

52、p><p>  END PROCESS;</p><p>  Y(0)<=TEMP(0);</p><p>  Y(1)<=TEMP(1);</p><p>  Y(2)<=TEMP(2);</p><p>  Y(3)<=TEMP(3);</p><p>  Y(4)<

53、;=TEMP(4);</p><p>  Y(5)<=TEMP(5);</p><p>  Y(6)<=TEMP(6);</p><p>  Y(7)<=TEMP(7);</p><p>  --CPLD采集的鍵值數(shù)據(jù)通過keyout0~keyout7送給單片機(jī)的A8~A15輸入</p><p>  

54、KEYOUT(0)<=TEMP3(0); </p><p>  KEYOUT(1)<=TEMP3(1);</p><p>  KEYOUT(2)<=TEMP3(2);</p><p>  KEYOUT(3)<=TEMP3(3);</p><p>  KEYOUT(4)<=TEMP3(4);</p>

55、<p>  KEYOUT(5)<=TEMP3(5);</p><p>  KEYOUT(6)<=TEMP3(6);</p><p>  KEYOUT(7)<=TEMP3(7);</p><p>  LEDOUT(0)<=TEMP3(0);</p><p>  LEDOUT(1)<=TEMP3(1);&l

56、t;/p><p>  LEDOUT(2)<=TEMP3(2);</p><p>  LEDOUT(3)<=TEMP3(3);</p><p>  LEDOUT(4)<=TEMP3(4);</p><p>  LEDOUT(5)<=TEMP3(5);</p><p>  LEDOUT(6)<=T

57、EMP3(6);</p><p>  LEDOUT(7)<=TEMP3(7);</p><p>  END lili;.</p><p><b>  調(diào)試及結(jié)果</b></p><p>  本系統(tǒng)利用單片機(jī)與CPLD實(shí)現(xiàn)了鍵值采集及顯示,并將數(shù)據(jù)通過串口發(fā)向上位機(jī)PC;也可接收從上位機(jī)送來的數(shù)據(jù)并顯示接收的數(shù)據(jù)。在

58、設(shè)計中充分考慮了單片機(jī)與CPLD 的互補(bǔ)性。通過實(shí)驗(yàn)證實(shí)系統(tǒng)工作穩(wěn)定,在實(shí)際的應(yīng)用中具有很好的參考價值。通過調(diào)試,系統(tǒng)實(shí)現(xiàn)了鍵值的采集和判斷,并且按下某個鍵時蜂鳴器會發(fā)聲,對應(yīng)的二極管發(fā)光,數(shù)碼管也顯示相應(yīng)的數(shù)字。</p><p><b>  六、心得、體會</b></p><p>  通過此次設(shè)計實(shí)驗(yàn),讓我看到了單片機(jī)與CPLD的實(shí)際應(yīng)用價值。讓我對單片機(jī)與CPLD

59、有了客觀的認(rèn)識,并且增加了許多樂趣。</p><p><b>  總結(jié)</b></p><p>  本系統(tǒng)利用單片機(jī)與CPLD實(shí)現(xiàn)了鍵值的判斷,并點(diǎn)亮了相應(yīng)發(fā)光二極管,同時數(shù)碼管顯示鍵值,并將數(shù)據(jù)通過串口發(fā)向PC;也可接收從PC機(jī)送來的數(shù)據(jù)并顯示接收得數(shù)據(jù)。使單片機(jī)與CPLD得到了完美的結(jié)合。</p><p><b>  參考文獻(xiàn)&l

60、t;/b></p><p>  [1]畢立恒,劉玉賓. 一種實(shí)用單片機(jī)和 CPLD最小應(yīng)用系統(tǒng)的設(shè)計[J].自動化技術(shù)與應(yīng)用.2009,28(8):111-113</p><p>  [2]周立功,夏宇聞.單片機(jī)與CPLD 綜合應(yīng)用技術(shù)[M].北京:北京航空航天大學(xué)出版社.2004.</p><p>  [3] 彭 穎. 基于單片機(jī)和CPLD器件的綜合系統(tǒng)設(shè)計

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論