版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)課程設(shè)計-單片機(jī)課程設(shè)計---電子時鐘
- 單片機(jī)課程設(shè)計
- 單片機(jī)課程設(shè)計
- 單片機(jī)課程設(shè)計
- 單片機(jī)課程設(shè)計
- 單片機(jī)課程設(shè)計--單片機(jī)串行通訊
- 單片機(jī)秒表單片機(jī)課程設(shè)計
- 單片機(jī)課程設(shè)計
- 單片機(jī)課程設(shè)計---單片機(jī)數(shù)字時鐘
- 單片機(jī)課程設(shè)計--單片機(jī)控制步進(jìn)電機(jī)
- 單片機(jī)課程設(shè)計-單片機(jī)控制步進(jìn)電機(jī)
- 單片機(jī)課程設(shè)計---單片機(jī)籃球計分器
- 單片機(jī)課程設(shè)計報告---單片機(jī)數(shù)字時鐘
- 單片機(jī)課程設(shè)計---單片機(jī)原理及應(yīng)用
- 基于單片機(jī)的秒表設(shè)計單片機(jī)課程設(shè)計
- 單片機(jī)課程設(shè)計--單片機(jī)控制各種器件
- 單片機(jī)課程設(shè)計---單片機(jī)數(shù)字時鐘.doc
- 單片機(jī)課程設(shè)計報告---單片機(jī)秒表系統(tǒng)設(shè)計
- 單片機(jī)課程設(shè)計---單片機(jī)病房呼叫系統(tǒng)
- 單片機(jī)課程設(shè)計--單片機(jī)轉(zhuǎn)速測量系統(tǒng)
評論
0/150
提交評論