基于dsp密碼鎖的課程設(shè)計(jì)_第1頁
已閱讀1頁,還剩20頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  《DSP原理與應(yīng)用》</p><p><b>  課程大作業(yè)</b></p><p>  題 目: 基于TM320LF240X的掉電不丟失密碼鎖設(shè)計(jì) </p><p>  院系名稱: 電氣工程 </p><p>  專業(yè)班級(jí):

2、 </p><p>  學(xué)生姓名: </p><p>  學(xué) 號(hào): </p><p>  指導(dǎo)教師: </p&

3、gt;<p>  一TM320LF240X內(nèi)部資源</p><p>  1.1TM320LF240X簡介</p><p>  數(shù)字信號(hào)處理(Digital Signal Processing,簡稱DSP)是一門涉及許多學(xué)科而又廣泛應(yīng)用于許多領(lǐng)域的新興學(xué)科。20世紀(jì)60年代以來,隨著計(jì)算機(jī)和信息技術(shù)的飛速發(fā)展,數(shù)字信號(hào)處理技術(shù)應(yīng)運(yùn)而生并得到迅速的發(fā)展。數(shù)字信號(hào)處理是一種通過使用

4、數(shù)學(xué)技巧執(zhí)行轉(zhuǎn)換或提取信息,來處理現(xiàn)實(shí)信號(hào)的方法,這些信號(hào)由數(shù)字序列</p><p>  表示。在過去的二十多年時(shí)間里,數(shù)字信號(hào)處理已經(jīng)在通信等領(lǐng)域得到極為廣泛的應(yīng)用。德州儀器、Freescale等半導(dǎo)體廠商在這一領(lǐng)域擁有很強(qiáng)的實(shí)力。 DSP (digital signal processor)是一種獨(dú)特的微處理器,是以數(shù)字信號(hào)來處理大量信息的器件。其工作原理是接收模擬信號(hào),轉(zhuǎn)換為0或l的數(shù)字信號(hào)。再對(duì)數(shù)字信號(hào)進(jìn)

5、行修改、刪除、強(qiáng)化,并在其他系統(tǒng)芯片中把數(shù)字?jǐn)?shù)據(jù)解譯回模擬數(shù)據(jù)或?qū)嶋H環(huán)境格式。它不僅具有可編程性,而且其實(shí)時(shí)運(yùn)行速度可達(dá)每秒數(shù)以千萬條復(fù)雜指令程序,遠(yuǎn)遠(yuǎn)超過通用微處理器,是數(shù)字化電子世界</p><p>  中日益重要的電腦芯片。它的強(qiáng)大數(shù)據(jù)處理能力和高運(yùn)行速度,是最值得稱道的兩大特色。</p><p>  1.2TM320LF240X資源介紹 </p><p> 

6、 2407開發(fā)板分為TI 2000-011 DSP2407增強(qiáng)型、DSP2407+CPLD開發(fā)板、SHX-DSP2407A開發(fā)板。引DSP2407+CPLD開發(fā)板套件是一套基TMS320LF2407A+EPM240的DSP+CPLD的學(xué)習(xí)開發(fā)平臺(tái),充分發(fā)揮DSP2407和ALTERA MAX II的靈活性和功能強(qiáng)大,用戶手冊(cè)詳實(shí)易懂,大量源碼輕松上手(分DSP和CPLD兩部分),我們?yōu)橛脩籼峁┮粋€(gè)完整的IP核通過CPLD進(jìn)行系統(tǒng)資源分配

7、,用戶可以根據(jù)需要進(jìn)行裁剪或追加功能。由于我們的外設(shè)都是通過CPLD連接與DSP連接進(jìn)行電平轉(zhuǎn)換、隔離和總線。仲裁等先進(jìn)技術(shù),所以使用極為方便靈活、簡潔、并且運(yùn)行及其穩(wěn)定。這種結(jié)構(gòu)可以充分利用了CPLD的靈活性和功能強(qiáng)大的IP核進(jìn)行功能更強(qiáng)的系統(tǒng)應(yīng)用。是初學(xué)者和從事開發(fā)的科研工作者學(xué)習(xí)2407和CPLD的首選之品。 本開發(fā)板供初學(xué)者學(xué)習(xí)使用,也可作為系統(tǒng)板嵌入到用戶的產(chǎn)品供用戶進(jìn)行二次開發(fā)以便縮短產(chǎn)品開發(fā)周期。SHX-DSP2407A

8、開發(fā)板是DSP 2407系列產(chǎn)品中的重要一員。它的最大優(yōu)點(diǎn)是直觀簡單明了,極為適于初學(xué)者。此棋板采用統(tǒng)一的系統(tǒng)結(jié)構(gòu)、模塊結(jié)</p><p>  1.3TM320LF240X引腳介紹</p><p>  TMS320LF2407系列有多達(dá)41個(gè)通用、雙向的數(shù)字I/O(GPIO)引腳,其中大多數(shù)是基本功能和一般I/O復(fù)用引腳,TMS320LF2407系列的大多數(shù)都可以用來實(shí)現(xiàn)其他功能。數(shù)字I/

9、O端口模塊采用了一種靈活的方法,以控制專用I/O和復(fù)用I/O引腳的功能,所有I/O和復(fù)用引腳的功能可以通過9個(gè)16位控制寄存器來設(shè)置,這些寄存器可以分為兩類:</p><p>  I/O口復(fù)用控制寄存器(MCRx):用來控制選擇I/O引腳作為基本功能或一般I/O引腳功能。</p><p>  數(shù)據(jù)和方向控制寄存器(PxDATDIR):當(dāng)I/O引腳作為一般I/O引腳功能時(shí),用數(shù)據(jù)和方向控制寄

10、存器可控制數(shù)據(jù)和I/O引腳的數(shù)據(jù)方向,這些寄存器直接和I/O引腳相連。給出了TMS320LF2407系列I/O端口復(fù)用引腳配置簡圖,從圖上可以看出一些寄存器單元的配置對(duì)應(yīng)于實(shí)際I/O引腳的內(nèi)部結(jié)構(gòu)之間的聯(lián)系。</p><p>  1.4 I/0控制寄存器介紹</p><p>  數(shù)字?jǐn)?shù)字I/O模塊控制寄存器地址</p><p>  下面介紹I/O口復(fù)用輸出控制寄存器

11、。下面描述了I/O口復(fù)用控制寄存器A(MCRA)I/O口復(fù)用控制寄存器B(MCRB),I/O口復(fù)用控制寄存器C(MCRC),其中表2是I/O口復(fù)用控制寄存器A(MCRA)的配置,對(duì)寄存器的每個(gè)位的值做了詳細(xì)的描述;表3是I/O口復(fù)用控制寄存器B(MCRB)的配置,對(duì)寄存器的每個(gè)位的值做了詳細(xì)的描述。表4是I/O口復(fù)用控制寄存器C(MCRC)的配置,對(duì)寄存器的每個(gè)位的值做了詳細(xì)的描述。</p><p>  I/O口

12、復(fù)用控制寄存器A(MCRA)—地址7090h</p><p>  注:R=可讀,W=可寫,_0=復(fù)位后的值</p><p>  I/O口復(fù)用控制寄存器A(MCRA)的配置</p><p>  I/O口復(fù)用控制寄存器B(MCRB——地址7092h)</p><p>  注:R=可讀,W=可寫,_0=復(fù)位后的值</p><p&

13、gt;  I/O口復(fù)用控制寄存器B(MCRB)的配置</p><p><b>  二IIC模塊介紹</b></p><p>  2.0 24C02的圖示</p><p><b>  圖2.0</b></p><p>  2.1 24C02的讀寫操作</p><p>  I2C

14、(Inter -Integrated Circuit)總線是一種由Philips公司開發(fā)的兩線式串行總線,用于連接微控制器及其外圍設(shè)備。I2C總線產(chǎn)生于在80年代,最初為音頻和視頻設(shè) 備開發(fā)。由于其簡單性,如今方泛用于微控制器與各種功能模塊的連接,可以說是學(xué)單片機(jī)的人,入門之后,必定要涉及到的。</p><p>  I2C 總線實(shí)際上已經(jīng)成為一個(gè)國際標(biāo)準(zhǔn)在超過100 種不同的IC 上實(shí)現(xiàn),而且得到超過50 家公司

15、的許可,正因?yàn)槠浜唵魏蛻?yīng)用廣泛,因此其功能也越來不滿足人們的要求,其速度也從原來的100Kbit/S,增加了快速模式,其速度達(dá) 400Kbit/S,再后來也增加了高速模式,其速度更達(dá)3.4Mbit/S。</p><p><b>  二.功能和特點(diǎn)</b></p><p>  I2C 總線是一種用于IC器件之間連接的雙向二線制總線,所謂總線它上面可以掛多少器件,并且通個(gè)

16、兩根線連接,占用空間非常的小,總線的長度可高達(dá)25英尺,并 且能夠以10Kbps的最大傳輸速率支持4個(gè)組件。它的另一優(yōu)點(diǎn)是多主控,只要能夠進(jìn)行接收和發(fā)送的設(shè)備都可以成為主控制器,當(dāng)然多個(gè)主控不能同一時(shí)間 工作。</p><p>  I2C總線有兩根信號(hào)線,一根為SDA(數(shù)據(jù)線),一根為SCL(時(shí)鐘線)。任何時(shí)候時(shí)鐘信號(hào)都是由主控器件產(chǎn)生。</p><p>  I2C總線在傳送數(shù)據(jù)的過程中,

17、主要有三種控制信號(hào):起始信號(hào),結(jié)不信號(hào),應(yīng)答信號(hào)</p><p>  起始信號(hào):當(dāng)SCL為高電平時(shí),SDA由高電平轉(zhuǎn)為低電平時(shí),開始傳送數(shù)據(jù)</p><p>  結(jié)束信號(hào):當(dāng)SCL為高電平時(shí),SDA由低電平轉(zhuǎn)為高電平時(shí),結(jié)束數(shù)據(jù)傳送</p><p>  應(yīng)答信號(hào):接收數(shù)據(jù)的器件在接收到8bit數(shù)據(jù)后,向發(fā)送數(shù)據(jù)的器件發(fā)出低電平信號(hào),表示已收到數(shù)據(jù)。這個(gè)信號(hào)可以是主控

18、器件發(fā)出,也可以是從動(dòng)器件發(fā)出。總之由接收數(shù)據(jù)的器件發(fā)出。</p><p>  這些信號(hào)中,起始信號(hào)是必需的,結(jié)束信號(hào)和應(yīng)答信號(hào),都可以不要。</p><p>  下面我們以ATMEL公司的AT24C02來介紹I2C的基本操作</p><p>  AT24C02是美國ATMEL公司的低功耗CMOS串行EEPROM,它是內(nèi)含256×8bit存儲(chǔ)空間,具有工作

19、電壓寬(2.5~5.5V)、擦寫次數(shù)多(大于10000次)、寫入速度快(小于10ms)等特點(diǎn)。他在系統(tǒng)中始終為從動(dòng)器件。</p><p>  對(duì)AT24C02的操作主要有:字節(jié)讀,字節(jié)寫,頁面讀,頁面寫</p><p>  首先發(fā)送起始信號(hào),如下圖,起始信號(hào)后必須是控制字,</p><p>  控制字格式如下,其中高四位為器件類型識(shí)別符(不同的芯片類型有不同的定義,

20、EEPROM一般應(yīng)為1010),接著三位為片選,也就是三個(gè)地址位,最后一位為讀寫控制位,當(dāng)為1(Input)時(shí)為讀操作,為0(Output)時(shí)為寫操作。</p><p>  控制字后就是相應(yīng)的操作,讀或?qū)懀欢ú灰Y(jié)束,因?yàn)檫@個(gè)操作還沒有完成,如果結(jié)束就等于放棄操作。</p><p>  先 來看寫操作,寫操作分為字節(jié)寫和頁面寫兩種操作,對(duì)于頁面寫根據(jù)芯片的一次裝載的字節(jié)不同有所不同,AT

21、24C02為8字節(jié),每寫一個(gè)字節(jié)后,地址自動(dòng)加 1。關(guān)于頁面寫的地址、應(yīng)答和數(shù)據(jù)傳送的時(shí)序參見圖3,字節(jié)寫可以看成是只有一個(gè)字節(jié)的頁面寫,也就是寫一個(gè)數(shù)據(jù)后停止。注意:寫一次需要一定時(shí)間,一般 為10ms,要等侍這個(gè)操作完成。時(shí)序如下圖:</p><p>  說明:對(duì)于AT24C02,在控制字后還必須寫入地址,這個(gè)地址是以后讀寫的起始地址。</p><p>  讀 操作有三種基本操作:當(dāng)前

22、地址讀、隨機(jī)讀和順序讀。三種操作方法類似,只是讀的數(shù)據(jù)個(gè)數(shù)不同,可連續(xù)讀8個(gè)字節(jié),圖4給出的是順序讀的時(shí)序圖,圖中共讀了 四個(gè)數(shù)據(jù),需要注意的是當(dāng)前的地址,如果不是想要的,可以用寫操作,重新寫入地址。非常重要的是,每讀一個(gè)數(shù)據(jù)后,必須置低SDA,作為應(yīng)答,否則,只能 讀一個(gè)數(shù)據(jù),后面的數(shù)據(jù),因?yàn)槭盏讲粦?yīng)答信號(hào),AT24C02就會(huì)認(rèn)為出錯(cuò),停止操作。特別提醒的是,當(dāng)SCL為低電平時(shí),數(shù)據(jù)是可變的,因些只有SCL 為高電平時(shí),才能讀數(shù)。&l

23、t;/p><p><b>  三 程序流程圖</b></p><p>  圖3.1 程序流程圖</p><p>  程序執(zhí)行時(shí),首先進(jìn)行鍵盤掃描,判斷是否開鎖,程序執(zhí)行流程如上圖所示:</p><p><b>  1、開鎖:</b></p><p>  下載程序后,直接按六次S

24、7(即代表數(shù)字1),8位LED亮,鎖被打開,輸入密碼時(shí),</p><p>  六位數(shù)碼管依次顯示小橫杠。</p><p><b>  2、更改密碼:</b></p><p>  首先按下更改密碼鍵S11,然后設(shè)置相應(yīng)密碼,此時(shí)六位數(shù)碼管會(huì)顯示設(shè)置密碼對(duì)應(yīng)</p><p>  的數(shù)字。最后設(shè)置完六位后,按下S12確認(rèn)密碼更

25、改,此后新密碼即生效。</p><p><b>  3、重試密碼:</b></p><p>  當(dāng)輸入密碼時(shí),密碼輸錯(cuò)后按下鍵S13,可重新輸入六位密碼。</p><p>  當(dāng)設(shè)置密碼時(shí),設(shè)置中途想更改密碼,也可按下此鍵重新設(shè)置。</p><p><b>  4、關(guān)閉密碼鎖:</b></p&

26、gt;<p>  按下S14即可將打開的密碼鎖關(guān)閉。</p><p><b>  四 系統(tǒng)原理圖</b></p><p>  圖4.1 系統(tǒng)原理圖</p><p>  系統(tǒng)原理圖包含了顯示模塊,矩陣鍵盤模塊 ,以及24C02密碼值存儲(chǔ)模塊,,其分模塊就不再粘貼出來,因?yàn)槎际巧鲜瞿K的分解.另外關(guān)于鍵盤就是矩陣鍵盤,包含了0-9的鍵

27、值,另外還有特殊功能鍵如下:</p><p>  S11:更改鍵 S12:確認(rèn)鍵 S13:重試鍵 S14:關(guān)閉鍵</p><p>  正是通過上述的特殊功能鍵來實(shí)現(xiàn)特殊的操作。從而實(shí)現(xiàn)密碼識(shí)別,鍵盤掃描,數(shù)密碼,密碼驗(yàn)證,和更改密碼操作的。</p><p><b>  五 密碼鎖程序源碼</b></p><p>

28、  #include "register"</p><p>  #include<ioports.h></p><p>  #include <intrins.h></p><p>  #define uint unsigned int</p><p>  #define uchar unsigne

29、d char</p><p>  uchar old1,old2,old3,old4,old5,old6; //原始密碼000000</p><p>  uchar new1,new2,new3,new4,new5,new6; //每次MCU采集到的密碼輸入</p><p>  uchar a=16,b=16,c=16,d=16,e=16,f=16; //送入數(shù)碼

30、管顯示的變量</p><p>  uchar wei,key,temp;</p><p>  char allow,genggai,ok,wanbi,retry,close; //各個(gè)狀態(tài)位</p><p>  #define LEDData PBDATDIR;</p><p>  #define LEDcs PFDATDIR;<

31、/p><p>  unsigned char code table[]=</p><p>  {0xFF3f,0xFF06,0xFF5b,0xFF4f,0xFF66,0xFF6d,0xFF7d,0xFF07,0xFF7f,</p><p>  0xFF6f,0xFF77,0xFF7c,0xFF39,0xFF5e,0xFF79,0xFF71,0xFF00,0xFF40};

32、</p><p>  /////////24C02讀寫驅(qū)動(dòng)程序////////////////////</p><p>  void delay1(unsigned int m)</p><p>  {unsigned int n;</p><p>  for(n=0;n<m;n++);</p><p><

33、;b>  }</b></p><p>  void init() {</p><p>  MCRA=MCRA&OXFFFB;</p><p>  MCRB=MCRB&0XFEFF;</p><p>  MCRC=MCRC&OXFFFE;</p><p>  PADATDIR=

34、PADATDIR|0x0400;</p><p>  PADATDIR=PADATDIR|0X0100;</p><p>  PBDATDIR=PBDATDIR|0XFFFF;</p><p>  PFDATDIR=PFDATDIR|0XFFFF;</p><p>  asm(“setc INTM”);</p><p>

35、;  asm(“setc SXM”);</p><p>  asm(“clrc OVM”);</p><p>  asm(“clrc CNF”);</p><p>  WDCR=0X0E8;</p><p>  SCSR1=0X81FE;</p><p>  IMR=0X0000;</p><p&g

36、t;  IFR=0X0FFFF;</p><p><b>  }</b></p><p>  ////////從24c02的地址address中讀取一個(gè)字節(jié)數(shù)據(jù)/////</p><p>  Void Start()</p><p><b>  {</b></p><p>

37、  PADATDIR= PADATDIR&0XFFFB;</p><p>  PEDATDIR =PEDATDIR|0X0100;</p><p>  PEDATDIR =PEDATDIR|0X0001;</p><p>  PADATDIR= PADATDIR&0X0004;</p><p>  delay(30);&l

38、t;/p><p>  PEDATDIR =PEDATDIR|0Xfffe;</p><p>  delay(30);</p><p>  PEDATDIR =PEDATDIR|0xfffb;</p><p>  delay(30);</p><p>  PEDATDIR =PEDATDIR|0X0001;</p>

39、;<p><b>  }</b></p><p>  void Stop()</p><p><b>  {</b></p><p>  PADATDIR= PADATDIR&0XFFFB;</p><p>  PEDATDIR =PEDATDIR|0X0100;</

40、p><p>  PEDATDIR =PEDATDIR|0Xfffe;</p><p>  PADATDIR= PADATDIR&0X0004;</p><p>  delay(30);</p><p>  PEDATDIR =PEDATDIR|0X0001;</p><p>  delay(30);</p&

41、gt;<p>  PEDATDIR =PEDATDIR|0xfffb;</p><p>  delay(30);</p><p>  PEDATDIR =PEDATDIR|0Xfffb;</p><p><b>  }</b></p><p>  Void I2CSendByte(int data)<

42、/p><p><b>  {</b></p><p>  int flag,sz,k;</p><p>  for(flag=0x0080;flag!=0x00;flag=flag/2)</p><p><b>  {</b></p><p>  PADATDIR= PADAT

43、DIR&0XFFFB;</p><p>  for(k=0x06;k>=0;k--)</p><p><b>  {k=k;}</b></p><p>  sz=data&flag; </p><p>  PEDATDIR =PEDATDIR|0xfffb;</p><p>

44、;<b>  else</b></p><p>  PEDATDIR =PEDATDIR|0x0001;</p><p>  PADATDIR= PADATDIR&0X0004;;</p><p>  for(k=0x06;k>=0;k--)</p><p><b>  {k=k;}</b

45、></p><p>  PADATDIR= PADATDIR&0Xfffb;;</p><p><b>  } </b></p><p><b>  }</b></p><p>  Void I2CRecByte(int data)</p><p><b

46、>  {</b></p><p>  int flag,sz,k;</p><p>  PEDATDIR =PEDATDIR|0xFEFF</p><p>  PADATDIR= PADATDIR&0XFFFB;</p><p>  for(flag=0x0080;flag!=0x00;flag=flag/2)&l

47、t;/p><p><b>  {</b></p><p>  PADATDIR= PADATDIR&0X0004;</p><p>  sz= PADATDIR &flag; </p><p>  if(sz==flag)</p><p><b>  k=k|flag;&

48、lt;/b></p><p>  PADATDIR= PADATDIR&0Xfffb;</p><p><b>  } </b></p><p><b>  return k;</b></p><p><b>  }</b></p><p&g

49、t;  unsigned char read24c02(unsigned char address)</p><p><b>  {</b></p><p>  unsigned char i;</p><p><b>  Start();</b></p><p>  I2CSendByte(0xa

50、0);</p><p>  I2CSendByte(address);;</p><p><b>  Start();</b></p><p>  writebyte(0xa1);</p><p>  i=readbyte();</p><p><b>  Stop();</b&g

51、t;</p><p>  delay(10);</p><p>  return(i);</p><p><b>  }</b></p><p>  //////向24c02的address地址中寫入一字節(jié)數(shù)據(jù)info/////</p><p>  void write24c02(unsigned

52、 char address,unsigned char dat)</p><p><b>  {</b></p><p><b>  Start();</b></p><p>  I2CSendByte (0xa0);</p><p>  I2CSendByte (address);</p&g

53、t;<p>  I2CSendByte (dat);</p><p><b>  Stop();</b></p><p>  delay(30);</p><p><b>  }</b></p><p>  /****************************密碼鎖程序模塊***

54、*****************************************************/</p><p>  void delay(unsigned char i)</p><p><b>  {</b></p><p>  uchar j,k;</p><p>  for(j=i;j>0;j-

55、-)</p><p>  for(k=125;k>0;k--);</p><p><b>  }</b></p><p>  void LED_display(uchar cs,uchar num)</p><p><b>  {</b></p><p><b&g

56、t;  LEDcs=cs;</b></p><p>  LEDData=LED_Table[num];</p><p><b>  }</b></p><p>  void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f)</p><p><

57、;b>  {</b></p><p>  PBDATDIR=0XFFFF;</p><p>  PBDATDIR=0XFFFF;</p><p>  LED_display(0x0eff,a);</p><p>  delay1(5);</p><p>  LED_display(0x0dff,b);

58、</p><p>  delay1(5); </p><p>  LED_display(0x0bff,c);</p><p>  delay1(5);</p><p>  LED_display(0x07ff,d);</p><p>  delay1(5);</p><p><b>

59、  }</b></p><p>  void keyscan()</p><p><b>  {</b></p><p>  PEDATDIR=0X0FFF;//高四位為輸入,低四位為輸出;</p><p><b>  {</b></p><p>  PEDAT

60、DIR=0xfeFF;//高四位上拉輸入</p><p>  temp= PEDATDIR;</p><p>  temp=temp&0x00f0;</p><p>  if(temp!=0xf0)</p><p><b>  {</b></p><p>  delay(10);</

61、p><p>  if(temp!=0x00f0)</p><p><b>  {</b></p><p><b>  temp=P3;</b></p><p>  switch(temp)</p><p><b>  {</b></p>&l

62、t;p>  case 0x00ee:</p><p><b>  key=0;</b></p><p><b>  wei++;</b></p><p><b>  break;</b></p><p>  case 0x00de:</p><p>

63、;<b>  key=1;</b></p><p><b>  wei++;</b></p><p><b>  break;</b></p><p>  case 0x00be:</p><p><b>  key=2;</b></p>&

64、lt;p><b>  wei++;</b></p><p><b>  break;</b></p><p>  case 0x007e:</p><p><b>  key=3;</b></p><p><b>  wei++;</b></p

65、><p><b>  break;</b></p><p><b>  }</b></p><p>  while(temp!=0x00f0) </p><p><b>  {</b></p><p>  temp=PEDATDIR;</p>

66、<p>  temp=temp&0xf0;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  PEDATDIR=0xfdFF;</p><p> 

67、 temp=PEDATDIR;</p><p>  temp=temp&0x00f0;</p><p>  if(temp!=0x00f0)</p><p><b>  {</b></p><p>  delay(10);</p><p>  if(temp!=0x00f0)</p&

68、gt;<p><b>  {</b></p><p>  temp=PTEDFF;</p><p>  switch(temp)</p><p><b>  {</b></p><p>  case 0x00ed:</p><p><b>  key=

69、4;</b></p><p><b>  wei++;</b></p><p><b>  break;</b></p><p>  case 0x00dd:</p><p><b>  key=5;</b></p><p><b>

70、;  wei++;</b></p><p><b>  break;</b></p><p>  case 0x00bd:</p><p><b>  key=6;</b></p><p><b>  wei++;</b></p><p>&

71、lt;b>  break;</b></p><p>  case 0x007d:</p><p><b>  key=7;</b></p><p><b>  wei++;</b></p><p><b>  break;</b></p><

72、;p><b>  }</b></p><p>  while(temp!=0x00f0)</p><p><b>  {</b></p><p>  temp= PEDATDIR;</p><p>  temp=temp&0x00f0;</p><p><

73、b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  PEDATDIR =0xfbFF;</p><p>  temp= PEDATDIR;</p><p>  temp=temp&

74、0x00f0;</p><p>  if(temp!=0x00f0)</p><p><b>  {</b></p><p>  delay(10);</p><p>  if(temp!=0xf0)</p><p><b>  {</b></p><p&

75、gt;  temp= PEDATDIR;</p><p>  switch(temp)</p><p><b>  {</b></p><p>  case 0x00eb:</p><p><b>  key=8;</b></p><p><b>  wei++;

76、</b></p><p><b>  break;</b></p><p>  case 0x00db:</p><p><b>  key=9;</b></p><p><b>  wei++;</b></p><p><b> 

77、 break;</b></p><p>  case 0x00bb:</p><p>  genggai=1;</p><p><b>  wei=0;</b></p><p><b>  break;</b></p><p>  case 0x007b:<

78、/p><p><b>  if(allow)</b></p><p><b>  ok=1;</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  while(temp!=

79、0x00f0)</p><p><b>  {</b></p><p>  temp= PEDATDIR;</p><p>  temp=temp&0x00f0;</p><p><b>  }</b></p><p><b>  }</b>&

80、lt;/p><p><b>  }</b></p><p>  PEDATDIR=0xf7FF;</p><p>  temp= PEDATDIR;</p><p>  temp=temp&0x00f0;</p><p>  if(temp!=0x00f0)</p><p&

81、gt;<b>  {</b></p><p>  delay(10);</p><p>  if(temp!=0x00f0)</p><p><b>  {</b></p><p>  temp=PEDATDIR;</p><p>  switch(temp)</p&g

82、t;<p><b>  {</b></p><p>  case 0x00e7:</p><p><b>  retry=1;</b></p><p><b>  break;</b></p><p>  case 0x00d7:</p><p

83、><b>  close=1;</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  while(temp!=0x00f0)</p><p><b>  {</b></p>

84、<p>  temp= PEDATDIR;</p><p>  temp=temp&0x00f0;</p><p><b>  beep=0;</b></p><p><b>  }</b></p><p><b>  }</b></p>&l

85、t;p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void shumima()//對(duì)按鍵采集來的數(shù)據(jù)進(jìn)行分配</p><p><b>  {</b></p&g

86、t;<p>  if(!wanbi)</p><p><b>  {</b></p><p>  switch(wei)</p><p><b>  {</b></p><p>  case 1:new1=key; </p><p>  if(!allow)a

87、=17;</p><p>  else a=key;break;</p><p>  case 2:new2=key;</p><p>  if(a==17) b=17;</p><p>  else b=key;break;</p><p>  case 3:new3=key; </p><p

88、>  if(a==17) c=17;</p><p>  else c=key;break;</p><p>  case 4:new4=key;</p><p>  if(a==17) d=17;</p><p>  else d=key;break;</p><p>  case 5:new5=key;

89、</p><p>  if(a==17) e=17;</p><p>  else e=key;break;</p><p>  case 6:new6=key; </p><p>  if(a==17) f=17;</p><p>  else f=key;</p><p>  wanbi=

90、1;break;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void yanzheng() //驗(yàn)證密碼是否正確</p><p><b> 

91、 {</b></p><p>  if(wanbi) //只有當(dāng)六位密碼均輸入完畢后方進(jìn)行驗(yàn)證</p><p><b>  {</b></p><p>  if((new1==old1)&(new2==old2)&(new3==old3)&(new4==old4)&(new5==old5)&

92、(new6==old6))</p><p>  allow=1;//當(dāng)輸入的密碼正確,會(huì)得到allowe置一</p><p><b>  }</b></p><p><b>  }</b></p><p>  void main()</p><p><b>  {

93、</b></p><p>  init(); </p><p>  old1=read24c02(110); </p><p>  old2=read24c02(111);</p><p>  old3=read24c02(112);</p><p>  old4=read24c02(113);

94、</p><p>  old5=read24c02(114);</p><p>  old6=read24c02(115);</p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  keyscan();</p&g

95、t;<p>  shumima();</p><p>  yanzheng();</p><p>  if(allow) //驗(yàn)證完后,若allow為1,則開鎖</p><p><b>  {</b></p><p>  if(!genggai)</p><p><b>

96、  wanbi=0;</b></p><p><b>  }</b></p><p>  if(genggai) //當(dāng)S16更改密碼鍵被按下,genggai會(huì)被置一</p><p><b>  {</b></p><p>  if(allow) //若已經(jīng)把鎖打開,才有更改密碼的

97、權(quán)限</p><p><b>  {</b></p><p>  while(!wanbi)//當(dāng)新的六位密碼沒有設(shè)定完,則一直在這里循環(huán)</p><p><b>  {</b></p><p>  keyscan();</p><p>  shumima();</p

98、><p>  if(retry|close) //而當(dāng)探測到重試鍵S18或者關(guān)閉密碼鎖鍵S19被按下時(shí),則跳出</p><p>  {wanbi=1;</p><p><b>  break;</b></p><p><b>  }</b></p><p>  display

99、(a,b,c,d,e,f);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(ok) //更改密碼時(shí),當(dāng)所有六位新密碼均被按下時(shí),可以按下此鍵,結(jié)束密碼更改</p>

100、<p>  { //其他時(shí)間按下此鍵無效</p><p>  ok=0; wei=0;</p><p>  genggai=0;</p><p>  old1=new1;old2=new2;old3=new3; //此時(shí),舊的密碼將被代替</p><p>  old4=new4;old5=new5;old6=new6;&l

101、t;/p><p>  //新密碼寫入存儲(chǔ)區(qū)。</p><p>  write24c02(110,old1);</p><p>  write24c02(111,old2);</p><p>  write24c02(112,old3);</p><p>  write24c02(113,old4);</p>

102、<p>  write24c02(114,old5);</p><p>  write24c02(115,old6);</p><p>  a=16;b=16;c=16;d=16;e=16;f=16;</p><p><b>  }</b></p><p>  if(retry)//當(dāng)重試按鍵S18被按下,r

103、etry會(huì)被置位</p><p><b>  {</b></p><p>  retry=0; wei=0;wanbi=0;</p><p>  a=16;b=16;c=16;d=16;e=16;f=16;</p><p>  new1=0;new2=0;new3=0;new4=0;new5=0;new6=0;<

104、;/p><p><b>  }</b></p><p>  if(close) //當(dāng)關(guān)閉密碼鎖按鍵被按下,close會(huì)被置位</p><p><b>  {</b></p><p>  close=0;genggai=0;//所有變量均被清零。</p><p>  wei=0

105、;wanbi=0;</p><p><b>  allow=0;</b></p><p><b>  P1=0xff;</b></p><p>  a=16;b=16;c=16;d=16;e=16;f=16;</p><p>  new1=0;new2=0;new3=0;new4=0;new5=0

106、;new6=0;</p><p><b>  }</b></p><p>  display(a,b,c,d,e,f); //實(shí)時(shí)顯示</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  

107、六 參考文獻(xiàn)</b></p><p>  【1】清源科技 . TMS320C54x DSP硬件開發(fā)教程[M] . 機(jī)械工業(yè)出版社,2003 </p><p>  【2】TMS320VC5416 Data Manual Texas Instruments,2005</p><p>  【3】江思敏,劉暢 . TMS320C54x DSP的應(yīng)用程序設(shè)計(jì)教程

溫馨提示

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

評(píng)論

0/150

提交評(píng)論