




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 DSP原理與應用課程大作業(yè)題 目: 基于TM320LF240X的掉電不丟失密碼鎖設計 院系名稱: 電氣工程 專業(yè)班級: 自動化1002 學生姓名: 秦凱新 學 號: 201046820427 指導教師: 張世杰 設計題目基于TM320LF240X的掉電不丟失密碼鎖設計設計內容和要求密碼鎖的功能鍵設計:S1-S10表示:數(shù)字鍵0-9S11-更改密碼S12-更改密碼完畢后確認S13-重試密碼、重新設定S14-關閉密碼鎖初始密碼:000000 密碼位數(shù):6位程序功能: 本程序結合了24C02存儲器的存儲功能,可以掉電保存密碼。 1、開鎖: 下載程序后,直接按六次S7(即代表數(shù)字1),鎖被打開,輸入
2、密碼時, 六位數(shù)碼管依次顯示小橫杠。 2、更改密碼: 首先按下更改密碼鍵S11,然后設置相應密碼,此時六位數(shù)碼管會顯示設置密碼對應 的數(shù)字。最后設置完六位后,按下S12確認密碼更改,此后新密碼即生效。 3、重試密碼: 當輸入密碼時,密碼輸錯后按下鍵S13,可重新輸入六位密碼。 當設置密碼時,設置中途想更改密碼,也可按下此鍵重新設置。 4、關閉密碼鎖: 按下S14即可將打開的密碼鎖關閉。報告主要章節(jié)一TM320LF240X內部資源二 IIC模塊介紹三 程序流程圖四 系統(tǒng)總原理圖五 密碼鎖程序源碼六 附錄(參考文獻)一TM320LF240X內部資源1.1TM320LF240X簡介數(shù)字信號處理(Di
3、gital Signal Processing,簡稱DSP)是一門涉及許多學科而又廣泛應用于許多領域的新興學科。20世紀60年代以來,隨著計算機和信息技術的飛速發(fā)展,數(shù)字信號處理技術應運而生并得到迅速的發(fā)展。數(shù)字信號處理是一種通過使用數(shù)學技巧執(zhí)行轉換或提取信息,來處理現(xiàn)實信號的方法,這些信號由數(shù)字序列表示。在過去的二十多年時間里,數(shù)字信號處理已經在通信等領域得到極為廣泛的應用。德州儀器、Freescale等半導體廠商在這一領域擁有很強的實力。 DSP (digital signal processor)是一種獨特的微處理器,是以數(shù)字信號來處理大量信息的器件。其工作原理是接收模擬信號,轉換為0或
4、l的數(shù)字信號。再對數(shù)字信號進行修改、刪除、強化,并在其他系統(tǒng)芯片中把數(shù)字數(shù)據(jù)解譯回模擬數(shù)據(jù)或實際環(huán)境格式。它不僅具有可編程性,而且其實時運行速度可達每秒數(shù)以千萬條復雜指令程序,遠遠超過通用微處理器,是數(shù)字化電子世界中日益重要的電腦芯片。它的強大數(shù)據(jù)處理能力和高運行速度,是最值得稱道的兩大特色。1.2TM320LF240X資源介紹 2407開發(fā)板分為TI 2000-011 DSP2407增強型、DSP2407+CPLD開發(fā)板、SHX-DSP2407A開發(fā)板。引DSP2407+CPLD開發(fā)板套件是一套基TMS320LF2407A+EPM240的DSP+CPLD的學習開發(fā)平臺,充分發(fā)揮DSP2407
5、和ALTERA MAX II的靈活性和功能強大,用戶手冊詳實易懂,大量源碼輕松上手(分DSP和CPLD兩部分),我們?yōu)橛脩籼峁┮粋€完整的IP核通過CPLD進行系統(tǒng)資源分配,用戶可以根據(jù)需要進行裁剪或追加功能。由于我們的外設都是通過CPLD連接與DSP連接進行電平轉換、隔離和總線。仲裁等先進技術,所以使用極為方便靈活、簡潔、并且運行及其穩(wěn)定。這種結構可以充分利用了CPLD的靈活性和功能強大的IP核進行功能更強的系統(tǒng)應用。是初學者和從事開發(fā)的科研工作者學習2407和CPLD的首選之品。 本開發(fā)板供初學者學習使用,也可作為系統(tǒng)板嵌入到用戶的產品供用戶進行二次開發(fā)以便縮短產品開發(fā)周期。SHX-DSP2
6、407A開發(fā)板是DSP 2407系列產品中的重要一員。它的最大優(yōu)點是直觀簡單明了,極為適于初學者。此棋板采用統(tǒng)一的系統(tǒng)結構、模塊結構和機械結構,以多種典型DSP處理器構成的DSP基本系統(tǒng)、標準總線和相同物理尺寸的DSP嵌入式控制模板,將2407的功能發(fā)揮的淋漓盡致,為學習者提供了強大、有效的學習平臺。用戶手冊詳實易懂,大量源碼輕松上手(分DSP和CPLD兩部分),我們?yōu)橛脩籼峁┮粋€完整的IP核通過CPLD進行系統(tǒng)資源分配,用戶可以根據(jù)需要進行裁剪或追加功能。1.3TM320LF240X引腳介紹TMS320LF2407系列有多達41個通用、雙向的數(shù)字I/O(GPIO)引腳,其中大多數(shù)是基本功能和
7、一般I/O復用引腳,TMS320LF2407系列的大多數(shù)都可以用來實現(xiàn)其他功能。數(shù)字I/O端口模塊采用了一種靈活的方法,以控制專用I/O和復用I/O引腳的功能,所有I/O和復用引腳的功能可以通過9個16位控制寄存器來設置,這些寄存器可以分為兩類:I/O口復用控制寄存器(MCRx):用來控制選擇I/O引腳作為基本功能或一般I/O引腳功能。數(shù)據(jù)和方向控制寄存器(PxDATDIR):當I/O引腳作為一般I/O引腳功能時,用數(shù)據(jù)和方向控制寄存器可控制數(shù)據(jù)和I/O引腳的數(shù)據(jù)方向,這些寄存器直接和I/O引腳相連。給出了TMS320LF2407系列I/O端口復用引腳配置簡圖,從圖上可以看出一些寄存器單元的配
8、置對應于實際I/O引腳的內部結構之間的聯(lián)系。1.4 I/0控制寄存器介紹 數(shù)字數(shù)字I/O模塊控制寄存器地址地址存儲寄存器說明7090hMCRAI/O復用控制寄存器A7092hMCRBI/O復用控制寄存器B7094hMCRCI/O復用控制寄存器C7098hPADATDIRI/O端口A數(shù)據(jù)和方向寄存器709AhPBDATDIRI/O端口B數(shù)據(jù)和方向寄存器709ChPCDATDIRI/O端口C數(shù)據(jù)和方向寄存器709EhPDDATAIRI/O端口D數(shù)據(jù)和方向寄存器7095hPEDATAIRI/O端口E數(shù)據(jù)和方向寄存器7096hPEDATDIRI/O端口F數(shù)據(jù)和方向寄存器下面介紹I/O口復用輸出控制寄存
9、器。下面描述了I/O口復用控制寄存器A(MCRA)I/O口復用控制寄存器B(MCRB),I/O口復用控制寄存器C(MCRC),其中表2是I/O口復用控制寄存器A(MCRA)的配置,對寄存器的每個位的值做了詳細的描述;表3是I/O口復用控制寄存器B(MCRB)的配置,對寄存器的每個位的值做了詳細的描述。表4是I/O口復用控制寄存器C(MCRC)的配置,對寄存器的每個位的值做了詳細的描述。I/O口復用控制寄存器A(MCRA)地址7090h注:R=可讀,W=可寫,_0=復位后的值I/O口復用控制寄存器A(MCRA)的配置I/O口復用控制寄存器B(MCRB地址7092h)注:R=可讀,W=可寫,_0=
10、復位后的值I/O口復用控制寄存器B(MCRB)的配置二IIC模塊介紹2.0 24C02的圖示 圖2.0 2.1 24C02的讀寫操作I2C(Inter Integrated Circuit)總線是一種由Philips公司開發(fā)的兩線式串行總線,用于連接微控制器及其外圍設備。I2C總線產生于在80年代,最初為音頻和視頻設 備開發(fā)。由于其簡單性,如今方泛用于微控制器與各種功能模塊的連接,可以說是學單片機的人,入門之后,必定要涉及到的。I2C 總線實際上已經成為一個國際標準在超過100 種不同的IC 上實現(xiàn),而且得到超過50 家公司的許可,正因為其簡單和應用廣泛,因此其功能也越來不滿足人們的要求,其速
11、度也從原來的100Kbit/S,增加了快速模式,其速度達 400Kbit/S,再后來也增加了高速模式,其速度更達3.4Mbit/S。二.功能和特點I2C 總線是一種用于IC器件之間連接的雙向二線制總線,所謂總線它上面可以掛多少器件,并且通個兩根線連接,占用空間非常的小,總線的長度可高達25英尺,并 且能夠以10Kbps的最大傳輸速率支持4個組件。它的另一優(yōu)點是多主控,只要能夠進行接收和發(fā)送的設備都可以成為主控制器,當然多個主控不能同一時間 工作。I2C總線有兩根信號線,一根為SDA(數(shù)據(jù)線),一根為SCL(時鐘線)。任何時候時鐘信號都是由主控器件產生。I2C總線在傳送數(shù)據(jù)的過程中,主要有三種控
12、制信號:起始信號,結不信號,應答信號起始信號:當SCL為高電平時,SDA由高電平轉為低電平時,開始傳送數(shù)據(jù)結束信號:當SCL為高電平時,SDA由低電平轉為高電平時,結束數(shù)據(jù)傳送應答信號:接收數(shù)據(jù)的器件在接收到8bit數(shù)據(jù)后,向發(fā)送數(shù)據(jù)的器件發(fā)出低電平信號,表示已收到數(shù)據(jù)。這個信號可以是主控器件發(fā)出,也可以是從動器件發(fā)出??傊山邮諗?shù)據(jù)的器件發(fā)出。這些信號中,起始信號是必需的,結束信號和應答信號,都可以不要。下面我們以ATMEL公司的AT24C02來介紹I2C的基本操作AT24C02是美國ATMEL公司的低功耗CMOS串行EEPROM,它是內含256×8bit存儲空間,具有工作電壓寬(
13、2.55.5V)、擦寫次數(shù)多(大于10000次)、寫入速度快(小于10ms)等特點。他在系統(tǒng)中始終為從動器件。對AT24C02的操作主要有:字節(jié)讀,字節(jié)寫,頁面讀,頁面寫首先發(fā)送起始信號,如下圖,起始信號后必須是控制字,控制字格式如下,其中高四位為器件類型識別符(不同的芯片類型有不同的定義,EEPROM一般應為1010),接著三位為片選,也就是三個地址位,最后一位為讀寫控制位,當為1(Input)時為讀操作,為0(Output)時為寫操作??刂谱趾缶褪窍鄳牟僮?,讀或寫,一定不要結束,因為這個操作還沒有完成,如果結束就等于放棄操作。先 來看寫操作,寫操作分為字節(jié)寫和頁面寫兩種操作,對于頁面寫根
14、據(jù)芯片的一次裝載的字節(jié)不同有所不同,AT24C02為8字節(jié),每寫一個字節(jié)后,地址自動加 1。關于頁面寫的地址、應答和數(shù)據(jù)傳送的時序參見圖3,字節(jié)寫可以看成是只有一個字節(jié)的頁面寫,也就是寫一個數(shù)據(jù)后停止。注意:寫一次需要一定時間,一般 為10ms,要等侍這個操作完成。時序如下圖:說明:對于AT24C02,在控制字后還必須寫入地址,這個地址是以后讀寫的起始地址。讀 操作有三種基本操作:當前地址讀、隨機讀和順序讀。三種操作方法類似,只是讀的數(shù)據(jù)個數(shù)不同,可連續(xù)讀8個字節(jié),圖4給出的是順序讀的時序圖,圖中共讀了 四個數(shù)據(jù),需要注意的是當前的地址,如果不是想要的,可以用寫操作,重新寫入地址。非常重要的是
15、,每讀一個數(shù)據(jù)后,必須置低SDA,作為應答,否則,只能 讀一個數(shù)據(jù),后面的數(shù)據(jù),因為收到不應答信號,AT24C02就會認為出錯,停止操作。特別提醒的是,當SCL為低電平時,數(shù)據(jù)是可變的,因些只有SCL 為高電平時,才能讀數(shù)。三 程序流程圖 圖3.1 程序流程圖程序執(zhí)行時,首先進行鍵盤掃描,判斷是否開鎖,程序執(zhí)行流程如上圖所示:1、開鎖: 下載程序后,直接按六次S7(即代表數(shù)字1),8位LED亮,鎖被打開,輸入密碼時, 六位數(shù)碼管依次顯示小橫杠。 2、更改密碼: 首先按下更改密碼鍵S11,然后設置相應密碼,此時六位數(shù)碼管會顯示設置密碼對應 的數(shù)字。最后設置完六位后,按下S12確認密碼更改,此后新
16、密碼即生效。 3、重試密碼: 當輸入密碼時,密碼輸錯后按下鍵S13,可重新輸入六位密碼。 當設置密碼時,設置中途想更改密碼,也可按下此鍵重新設置。 4、關閉密碼鎖: 按下S14即可將打開的密碼鎖關閉。四 系統(tǒng)原理圖 圖4.1 系統(tǒng)原理圖 系統(tǒng)原理圖包含了顯示模塊,矩陣鍵盤模塊 ,以及24C02密碼值存儲模塊,其分模塊就不再粘貼出來,因為都是上述模塊的分解.另外關于鍵盤就是矩陣鍵盤,包含了0-9的鍵值,另外還有特殊功能鍵如下: S11:更改鍵 S12:確認鍵 S13:重試鍵 S14:關閉鍵正是通過上述的特殊功能鍵來實現(xiàn)特殊的操作。從而實現(xiàn)密碼識別,鍵盤掃描,數(shù)密碼,密碼驗證,和更改密碼操作的。
17、五 密碼鎖程序源碼#include "register"#include<ioports.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned charuchar old1,old2,old3,old4,old5,old6; /原始密碼000000uchar new1,new2,new3,new4,new5,new6; /每次MCU采集到的密碼輸入uchar a=16,b=16,c=16,d=16,e=16,f=16; /送入數(shù)碼管顯示的變量uchar wei,ke
18、y,temp;char allow,genggai,ok,wanbi,retry,close; /各個狀態(tài)位#define LEDData PBDATDIR;#define LEDcs PFDATDIR;unsigned char code table=0xFF3f,0xFF06,0xFF5b,0xFF4f,0xFF66,0xFF6d,0xFF7d,0xFF07,0xFF7f,0xFF6f,0xFF77,0xFF7c,0xFF39,0xFF5e,0xFF79,0xFF71,0xFF00,0xFF40;/24C02讀寫驅動程序/void delay1(unsigned int m)unsigne
19、d int n; for(n=0;n<m;n+);void init() MCRA=MCRA&OXFFFB; MCRB=MCRB&0XFEFF; MCRC=MCRC&OXFFFE; PADATDIR=PADATDIR|0x0400; PADATDIR=PADATDIR|0X0100; PBDATDIR=PBDATDIR|0XFFFF; PFDATDIR=PFDATDIR|0XFFFF; asm(“setc INTM”); asm(“setc SXM”); asm(“clrc OVM”); asm(“clrc CNF”); WDCR=0X0E8;SCSR1=0X81
20、FE; IMR=0X0000;IFR=0X0FFFF; /從24c02的地址address中讀取一個字節(jié)數(shù)據(jù)/Void Start() PADATDIR= PADATDIR&0XFFFB;PEDATDIR =PEDATDIR|0X0100;PEDATDIR =PEDATDIR|0X0001; PADATDIR= PADATDIR&0X0004; delay(30); PEDATDIR =PEDATDIR|0Xfffe; delay(30);PEDATDIR =PEDATDIR|0xfffb;delay(30); PEDATDIR =PEDATDIR|0X0001;void St
21、op() PADATDIR= PADATDIR&0XFFFB;PEDATDIR =PEDATDIR|0X0100;PEDATDIR =PEDATDIR|0Xfffe; PADATDIR= PADATDIR&0X0004; delay(30); PEDATDIR =PEDATDIR|0X0001; delay(30);PEDATDIR =PEDATDIR|0xfffb;delay(30); PEDATDIR =PEDATDIR|0Xfffb;Void I2CSendByte(int data)int flag,sz,k;for(flag=0x0080;flag!=0x00;fla
22、g=flag/2) PADATDIR= PADATDIR&0XFFFB;for(k=0x06;k>=0;k-)k=k;sz=data&flag; PEDATDIR =PEDATDIR|0xfffb;else PEDATDIR =PEDATDIR|0x0001; PADATDIR= PADATDIR&0X0004;for(k=0x06;k>=0;k-)k=k; PADATDIR= PADATDIR&0Xfffb; Void I2CRecByte(int data)int flag,sz,k;PEDATDIR =PEDATDIR|0xFEFF PADAT
23、DIR= PADATDIR&0XFFFB;for(flag=0x0080;flag!=0x00;flag=flag/2) PADATDIR= PADATDIR&0X0004;sz= PADATDIR &flag; if(sz=flag) k=k|flag; PADATDIR= PADATDIR&0Xfffb; return k;unsigned char read24c02(unsigned char address) unsigned char i;Start();I2CSendByte(0xa0);I2CSendByte(address); Start();
24、 writebyte(0xa1); i=readbyte(); Stop(); delay(10); return(i);/向24c02的address地址中寫入一字節(jié)數(shù)據(jù)info/void write24c02(unsigned char address,unsigned char dat) Start(); I2CSendByte (0xa0);I2CSendByte (address);I2CSendByte (dat); Stop(); delay(30);/*密碼鎖程序模塊*/void delay(unsigned char i)uchar j,k; for(j=i;j>0;j
25、-) for(k=125;k>0;k-);void LED_display(uchar cs,uchar num) LEDcs=cs;LEDData=LED_Tablenum; void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f) PBDATDIR=0XFFFF; PBDATDIR=0XFFFF; LED_display(0x0eff,a); delay1(5); LED_display(0x0dff,b); delay1(5); LED_display(0x0bff,c); delay1(5); LED_displa
26、y(0x07ff,d); delay1(5);void keyscan() PEDATDIR=0X0FFF;/高四位為輸入,低四位為輸出; PEDATDIR=0xfeFF;/高四位上拉輸入 temp= PEDATDIR; temp=temp&0x00f0; if(temp!=0xf0) delay(10); if(temp!=0x00f0) temp=P3; switch(temp) case 0x00ee: key=0; wei+; break; case 0x00de: key=1; wei+; break; case 0x00be: key=2; wei+; break; cas
27、e 0x007e: key=3; wei+; break; while(temp!=0x00f0) temp=PEDATDIR; temp=temp&0xf0; PEDATDIR=0xfdFF; temp=PEDATDIR; temp=temp&0x00f0; if(temp!=0x00f0) delay(10); if(temp!=0x00f0) temp=PTEDFF; switch(temp) case 0x00ed: key=4; wei+; break; case 0x00dd: key=5; wei+; break; case 0x00bd: key=6; wei+
28、; break; case 0x007d: key=7; wei+; break; while(temp!=0x00f0) temp= PEDATDIR; temp=temp&0x00f0; PEDATDIR =0xfbFF; temp= PEDATDIR; temp=temp&0x00f0; if(temp!=0x00f0) delay(10); if(temp!=0xf0) temp= PEDATDIR; switch(temp) case 0x00eb: key=8; wei+; break; case 0x00db: key=9; wei+; break; case 0
29、x00bb: genggai=1; wei=0; break; case 0x007b: if(allow) ok=1; break; while(temp!=0x00f0) temp= PEDATDIR; temp=temp&0x00f0; PEDATDIR=0xf7FF; temp= PEDATDIR; temp=temp&0x00f0; if(temp!=0x00f0) delay(10); if(temp!=0x00f0) temp=PEDATDIR; switch(temp) case 0x00e7: retry=1; break; case 0x00d7: clos
30、e=1; break; while(temp!=0x00f0) temp= PEDATDIR; temp=temp&0x00f0; beep=0; void shumima()/對按鍵采集來的數(shù)據(jù)進行分配if(!wanbi)switch(wei)case 1:new1=key; if(!allow)a=17; else a=key;break;case 2:new2=key;if(a=17) b=17;else b=key;break;case 3:new3=key; if(a=17) c=17;else c=key;break;case 4:new4=key;if(a=17) d=1
31、7;else d=key;break;case 5:new5=key; if(a=17) e=17;else e=key;break;case 6:new6=key; if(a=17) f=17;else f=key;wanbi=1;break;void yanzheng() /驗證密碼是否正確if(wanbi) /只有當六位密碼均輸入完畢后方進行驗證if(new1=old1)&(new2=old2)&(new3=old3)&(new4=old4)&(new5=old5)&(new6=old6)allow=1;/當輸入的密碼正確,會得到allowe置一void main() init(); old1=read24c02(110); old2=read24c02(111);old3=read24c02(112);old4=read24c02(113);old5=read24c02(114);old6=read24c02(115);while(1)keyscan();shumima();yanzheng();if(allow) /
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于“脾藏意”和Treg細胞外泌體研究補中益氣湯改善AIT認知損傷機制
- 硅溶膠-苯丙乳液復合涂層鋼筋性能研究
- 班級一日常規(guī)管理
- 慢喉痹病護理
- 幼兒園托班健康管理要點
- 大健康連鎖店商業(yè)計劃書
- 2025年黑龍江省綏化市中考招生考試數(shù)學真題試卷(真題+答案)
- 預防職業(yè)病課件
- 預防接種知識課堂課件
- 《電子產品制造技術》課件-第3章 電子產品焊接工藝
- 柔性防護網施工方案
- 網絡安全論文參考文獻,參考文獻
- WH/T 78.6-2017演出安全第6部分:舞美裝置安全
- GB/T 9867-2008硫化橡膠或熱塑性橡膠耐磨性能的測定(旋轉輥筒式磨耗機法)
- 小學古詩詞教學策略課件
- 不良事件報告與防范
- 基業(yè)長青中國家族企業(yè)的東方智慧與長青之道
- 【吉爾吉斯和國經商指南-法律篇】
- Q∕SY 01006-2016 二氧化碳驅注氣井保持井筒完整性推薦作法
- 質量風險管理監(jiān)理實施細則
- 嵌入式軟件助理工程師認證考試試題題庫
評論
0/150
提交評論