版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 單片機(jī)與CPLD綜合課程設(shè)計(jì) 學(xué)院 電子信息工程學(xué)院 專業(yè) 生物醫(yī)學(xué)工程 學(xué)號(hào) 100421101 姓名 陳 俊 日期 2014年1月4日 摘 要基于單片機(jī)與C P L D 設(shè)計(jì)了一個(gè)鍵值采集、顯示及與PC通信的綜合應(yīng)用系統(tǒng)。系統(tǒng)硬件由單片機(jī)、CPLD 及外圍電路組成,軟件采用C 語(yǔ)言和硬件描述語(yǔ)言VHDL 編程??蓪?shí)現(xiàn)上行鍵值采集、顯示,并將采集到的鍵值數(shù)據(jù)通過(guò)串口送給PC;下行PC發(fā)送數(shù)據(jù)由系統(tǒng)接收,數(shù)碼管可以顯示接收到的數(shù)據(jù)。該系統(tǒng)工作可靠,在實(shí)際設(shè)計(jì)應(yīng)用中有一定的參考價(jià)值。引 言隨著電子、計(jì)算機(jī)技術(shù)的飛速發(fā)展,單片機(jī)與CPLD技術(shù)都得到了越來(lái)越廣泛的應(yīng)用。單片微型計(jì)算機(jī)(單片機(jī))自問(wèn)
2、世以來(lái),因其小巧靈活、成本低、控制能力強(qiáng)、易于產(chǎn)品化等優(yōu)勢(shì),在各領(lǐng)域中得到廣泛的應(yīng)用;但純單片機(jī)系統(tǒng)也有弱點(diǎn):如低速、低可靠性等。可編程邏輯器件CPLD含有數(shù)量眾多的可編程邏輯宏單元或邏輯塊,能夠任意組合,可以根據(jù)需要設(shè)計(jì)成功能各異的邏輯電路;并且可采用VHDL語(yǔ)言編程,加速了產(chǎn)品的開發(fā)過(guò)程,使邏輯電路的設(shè)計(jì)變得簡(jiǎn)單、易于實(shí)現(xiàn);器件的現(xiàn)場(chǎng)可編程,大大地縮短了產(chǎn)品開發(fā)周期及方便更新?lián)Q代;但在信息處理、邏輯分析、決策判斷等方面CPLD 比不上單片機(jī)。因此,可以將單片機(jī)與CPLD器件結(jié)合,優(yōu)勢(shì)互補(bǔ),組成軟硬件都可靈活編程的系統(tǒng),以適應(yīng)不斷改變的市場(chǎng)需求。一、設(shè)計(jì)任務(wù)了解單片機(jī)與CPLD綜合實(shí)驗(yàn)板及資
3、源,實(shí)現(xiàn)如下功能:檢測(cè)按鍵輸入:判斷按鍵鍵值,點(diǎn)亮相應(yīng)發(fā)光二極管,同時(shí)數(shù)碼管顯示鍵值,并通過(guò)串口將鍵值發(fā)給PC。由PC的串口向?qū)嶒?yàn)板發(fā)送19數(shù)據(jù),通過(guò)數(shù)碼管能將PC發(fā)送的數(shù)據(jù)正確顯示出來(lái)。二、相關(guān)知識(shí)介紹 1.單片機(jī)技術(shù) P89C60X2 器件采用高性能的靜態(tài)80C51 設(shè)計(jì),以先進(jìn)的CMOS 工藝制造 并包含非易失性Flash。程序存儲(chǔ)器可通過(guò)并行編程或在系 統(tǒng)編程(ISP)的方法進(jìn)行編程。支持6 時(shí)鐘模式。 P89C60X2 包含512 字節(jié)RAM ,64K字節(jié)Flash,32 個(gè)I/O 口,3 個(gè)16 位定時(shí)/計(jì)數(shù)器6 中斷源,4 中斷優(yōu)先級(jí),嵌套的中斷結(jié)構(gòu),1 個(gè)增強(qiáng)型UART ,看門
4、狗定時(shí)器以及片內(nèi)振蕩器和時(shí)鐘電路。 此外器件的靜態(tài)設(shè)計(jì)使其具有非常寬的頻率范圍甚至可低至零。具有兩個(gè)軟件可選的節(jié)電模式,空閑模式和掉電模式,空閑模式凍結(jié)CPU 的運(yùn)行,但允許RAM 、定時(shí)器、串口和中斷系統(tǒng)繼續(xù)保持其功能,掉電模式保持RAM 的內(nèi)容,但凍結(jié)振蕩器,這樣使其它片內(nèi)功能都停止工作。由于是靜態(tài)設(shè)計(jì),時(shí)鐘停止而不會(huì)使用戶數(shù)據(jù)丟失,操作可從時(shí)鐘停止點(diǎn)恢復(fù)運(yùn)行。 2.CPLD技術(shù) EPM7128S: ALTERA的EPM7128S系列CPLD是基于第二代MAX結(jié)構(gòu)體系地高性能EEPROM結(jié)構(gòu)的CPLD。完全符合IEEE1149.1 JTAG邊界掃描標(biāo)準(zhǔn),具有5V ISP的功能。具有最小5n
5、s的引腳到引腳的邏輯時(shí)延,最高可175.4MHz的計(jì)數(shù)頻率。引腳可配置為開漏輸出。每個(gè)宏單元都有獨(dú)立的可編程電源控制,最多可以節(jié)省50%的功耗。宏單元內(nèi)的寄存器具有單獨(dú)的時(shí)鐘和復(fù)位等信號(hào)。支持多種電壓接口。實(shí)驗(yàn)板上使用的是一個(gè)PLCC84封裝的EPM7128S ,EPM7128S內(nèi)部有128個(gè)宏單元、8個(gè)邏輯陣列塊和2500個(gè)門電路。 3.綜合實(shí)驗(yàn)板介紹 本綜合實(shí)驗(yàn)板采用的是ATMEL公司的ATF1508AS芯片作為目標(biāo)CPLD。 ATF1508AS 與Altera公司的EPM7128S芯片完全兼容,但是可以擦寫的次數(shù)可以上萬(wàn)次,方便同學(xué)們的練習(xí)。采用PHILIPS公司的最新的內(nèi)置ISP下載功
6、能的64 KB大容量Flash存儲(chǔ)器和特大RAM的P89C60X2單片機(jī)做為目標(biāo)單片機(jī)。三、設(shè)計(jì)工具簡(jiǎn)介 1.keilC51Keil C51是美國(guó)Keil Software公司出品的51系列兼容單片機(jī)C語(yǔ)言軟件開發(fā)系統(tǒng),與匯編相比,C語(yǔ)言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。Keil C51軟件提供豐富的庫(kù)函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具。C51工具包的整體結(jié)構(gòu),如圖所示,其中uVision與Ishell分別是C51 for Windows和for Dos的集成開發(fā)環(huán)境(IDE),可以完成編輯、編譯、連接、調(diào)試、仿真等整個(gè)開發(fā)流程。開發(fā)人員可用IDE本身或其它編輯器編
7、輯C或匯編源文件。然后分別由C51及A51編譯器編譯生成目標(biāo)文件(.OBJ)。目標(biāo)文件可由LIB51創(chuàng)建生成庫(kù)文件,也可以與庫(kù)文件一起經(jīng)L51連接定位生成絕對(duì)目標(biāo)文件(.ABS)。ABS文件由OH51轉(zhuǎn)換成標(biāo)準(zhǔn)的Hex文件,以供調(diào)試器dScope51或tScope51使用進(jìn)行源代碼級(jí)調(diào)試,也可由仿真器使用直接對(duì)目標(biāo)板進(jìn)行調(diào)試,也可以直接寫入程序存貯器如EPROM中。 2.MaxplusII Max+plus是Altera公司上一代的PLD開發(fā)軟件,提供的FPGA/CPLD開發(fā)集成環(huán)境,Altera是世界上最大可編程邏輯器件的供應(yīng)商之一。Max+plus界面友好,使用便捷,被譽(yù)Max+plus是
8、Altera公司上一代的PLD開發(fā)軟件,提供的FPGA/CPLD開發(fā)集成環(huán)境,Altera是世界上最大可編程邏輯器件的供應(yīng)商之一。Max+plus界面友好,使用便捷,被譽(yù)為業(yè)界最易用易學(xué)的EDA軟件。在Max+plus上可以完成設(shè)計(jì)輸入、元件適配、時(shí)序仿真和功能仿真、編程下載整個(gè)流程,它提供了一種與結(jié)構(gòu)無(wú)關(guān)的設(shè)計(jì)環(huán)境,使設(shè)計(jì)者能方便地進(jìn)行設(shè)計(jì)輸入、快速處理和器件編程。目前Altera已經(jīng)停止開發(fā)MaxplusII,而轉(zhuǎn)向QuartusII軟件平臺(tái)。四、設(shè)計(jì)過(guò)程 1.單片機(jī)軟件設(shè)計(jì).過(guò)程.程序#include <reg51.h>unsigned char a,jieshou;void
9、 send_char(unsigned char shuzi);void delay(unsigned int x);sbit P00=P00; /即定義P00為P0口的第1位,以便進(jìn)行位操作。sbit P01=P01;sbit P02=P02;sbit P03=P03;sbit p04=P04;sbit P05= P05;main() p04=0; /蜂鳴器 delay(100); P05=0; delay(100); P05=1; delay(150); P05=0; delay(100); P05=1; delay(150); P05=0; delay(100); P05=1; TMOD
10、 = 0x20; / 將定時(shí)/計(jì)數(shù)器1設(shè)置為工作方式2,用于產(chǎn)生波特率,定時(shí)器 1不相應(yīng)外部中斷,定時(shí)器1處于定時(shí)方式,定時(shí)器1定時(shí)方式為"8位自動(dòng)充值定時(shí)" TH1= 0xFD; /給定時(shí)/計(jì)數(shù)器1裝初值,確定定時(shí)時(shí)長(zhǎng). TL1=0xFD; / 波特率9600 SCON = 0x50; / 01010000,串行口控制寄存器設(shè)置為工作方式1并允許中斷接收數(shù)據(jù)。 PCON = 0x00; / 波特率不倍增 TR1 = 1; / 啟動(dòng)定時(shí)器1 IE = 0x0; / 禁止任何中斷 a=0; while(1) unsigned char n; /n; P2=0xff; n=P2
11、; if(n!=0xff) /判斷鍵值 delay(20); if(n!=0xff) switch(n) 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;delay(300);P05=1;delay(200);break;/1 case(0xfb):P03=0;P02=0;P01=1;P00=0;send_char(0x2);P05=0;delay
12、(300);P05=1;delay(200);break;/2 case(0xf7):P03=0;P02=0;P01=1;P00=1;send_char(0x3);P05=0;delay(300);P05=1;delay(200);break;/3 case(0xef):P03=0;P02=1;P01=0;P00=0;send_char(0x4);P05=0;delay(300);P05=1;delay(200);break;/4 case(0xdf):P03=0;P02=1;P01=0;P00=1;send_char(0x5);P05=0;delay(300);P05=1;delay(200
13、);break;/5 case(0xbf):P03=0;P02=1;P01=1;P00=0;send_char(0x6);P05=0;delay(300);P05=1;delay(200);break;/6 case(0x7f):P03=0;P02=1;P01=1;P00=1;send_char(0x7);P05=0;delay(300);P05=1;delay(200);break;/7 if(RI) / 是否有數(shù)據(jù)到來(lái),由PC的串口向?qū)嶒?yàn)板發(fā)送19數(shù)據(jù) RI = 0; jieshou = SBUF; / 暫存接收到的數(shù)據(jù) switch(jieshou) case(0x0):P03=0;P0
14、2=0;P01=0;P00=0;P05=0;delay(300);P05=1;break; case(0x1):P03=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;delay(300);P05=1;break; case(0x4):P03=0;P02=1;P01=0;P00=0;P05=0;delay(300);P05=1;break
15、; case(0x5):P03=0;P02=1;P01=0;P00=1;P05=0;delay(300);P05=1;break; case(0x6):P03=0;P02=1;P01=1;P00=0;P05=0;delay(300);P05=1;break; case(0x7):P03=0;P02=1;P01=1;P00=1;P05=0;delay(300);P05=1;break; case(0x8):P03=1;P02=0;P01=0;P00=0;P05=0;delay(300);P05=1;break; case(0x9):P03=1;P02=0;P01=0;P00=1;P05=0;de
16、lay(300);P05=1;break; void send_char(unsigned char shuzi) /傳送一個(gè)字符,串口將鍵值發(fā)給PC SBUF = shuzi; while(!TI); / 等特?cái)?shù)據(jù)傳送 TI = 0; / 清除數(shù)據(jù)傳送標(biāo)志 void delay(unsigned int x) unsigned char j; while(x-) for (j=0;j<125;j+) ; 2.cpld軟件設(shè)計(jì).過(guò)程.程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY li IS PORT( A: IN STD_LOGIC_
17、VECTOR(3 DOWNTO 0); Y:Out STD_LOGIC_VECTOR(7 DOWNTO 0); KEYIN:in STD_LOGIC_VECTOR(7 DOWNTO 0); LEDOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); KEYOUT:out STD_LOGIC_VECTOR(7 DOWNTO 0); SPKIN:in STD_LOGIC; SPKOUT:OUT STD_LOGIC; W4IN:in STD_LOGIC; -位選 W4OUT:out STD_LOGIC); END li;ARCHITECTURE lili OF li IS SI
18、GNAL TEMP: STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL TEMP3: STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN W4OUT<=W4IN; SPKOUT<=SPKIN;PROCESS(A,KEYIN)VARIABLE COMB:STD_LOGIC_VECTOR(3 DOWNTO 0);VARIABLE COMB3:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINCOMB:=A(3)&A(2)&A(1)&A(0);COMB3:=KEYIN(7)&KEYIN(6)&am
19、p;KEYIN(5)&KEYIN(4)&KEYIN(3)&KEYIN(2)&KEYIN(1)&KEYIN(0);CASE COMB ISWHEN"0000"=>TEMP<="11000000" -0WHEN"0001"=>TEMP<="11111001"WHEN"0010"=>TEMP<="10100100"WHEN"0011"=>TEMP<="1011000
20、0"WHEN"0100"=>TEMP<="10011001"WHEN"0101"=>TEMP<="10010010"WHEN"0110"=>TEMP<="10000010"WHEN"0111"=>TEMP<="11111000"WHEN"1000"=>TEMP<="10000000" -8WHEN"1001"
21、=>TEMP<="10010000" -9WHEN OTHERS=>TEMP<="ZZZZZZZZ"END CASE;CASE COMB3 ISWHEN"11111110"=>TEMP3<="11111110" -采集的鍵值WHEN"11111101"=>TEMP3<="11111101"WHEN"11111011"=>TEMP3<="11111011"WHEN"11
22、110111"=>TEMP3<="11110111"WHEN"11101111"=>TEMP3<="11101111"WHEN"11011111"=>TEMP3<="11011111"WHEN"10111111"=>TEMP3<="10111111"WHEN"01111111"=>TEMP3<="01111111"WHEN OTHERS=>T
23、EMP3<="ZZZZZZZZ"END CASE;END PROCESS;Y(0)<=TEMP(0);Y(1)<=TEMP(1);Y(2)<=TEMP(2);Y(3)<=TEMP(3);Y(4)<=TEMP(4);Y(5)<=TEMP(5);Y(6)<=TEMP(6);Y(7)<=TEMP(7);-CPLD采集的鍵值數(shù)據(jù)通過(guò)keyout0keyout7送給單片機(jī)的A8A15輸入KEYOUT(0)<=TEMP3(0); KEYOUT(1)<=TEMP3(1);KEYOUT(2)<=TEMP3(2);KEYOUT(3)<=TEMP3(3);KEYOUT(4)<=TEMP3(4);KEYOUT(5)<=TEMP3(5);KEYOUT(6)<=TEMP3(6);KEYOUT(7)<=TEMP3(7);LEDOUT(0)<=TEMP3(0);LEDOUT(
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 教師職業(yè)道德與職業(yè)素養(yǎng)提升計(jì)劃
- 券商合規(guī)督導(dǎo)工作記錄模板
- 五年級(jí)語(yǔ)文測(cè)試卷合集
- 行政審批工作流程優(yōu)化方案
- 中學(xué)生生物實(shí)驗(yàn)技能測(cè)試題及解析
- 辦公室文員日常工作流程與規(guī)范
- 新生春季開學(xué)典禮主持稿范文
- 公司管理制度
- 電梯安裝施工方案
- 大型超市庫(kù)存盤點(diǎn)及損耗管理方案
- 2025新譯林版英語(yǔ)七年級(jí)下單詞默寫單
- 新高考語(yǔ)文專題訓(xùn)練之模擬題分類匯編文言文閱讀1(原卷版+解析)
- DL∕T 5545-2018 火力發(fā)電廠間接空冷系統(tǒng)設(shè)計(jì)規(guī)范
- 《研學(xué)旅行課程設(shè)計(jì)》課件-研學(xué)課程設(shè)計(jì)原則
- JJG 693-2011可燃?xì)怏w檢測(cè)報(bào)警器
- (本科)大學(xué)生勞動(dòng)教育理論與實(shí)踐教程全書電子教案完整版
- 黑龍江省中藥飲片炮制規(guī)范及標(biāo)準(zhǔn)
- 盤口暗語(yǔ)及盤口數(shù)字語(yǔ)言
- QC-提高衛(wèi)生間防水一次驗(yàn)收合格率
- 彈藥庫(kù)防火防爆消防演示
- 大地測(cè)量控制點(diǎn)坐標(biāo)轉(zhuǎn)換技術(shù)規(guī)程
評(píng)論
0/150
提交評(píng)論