版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> DSP課程設計</b></p><p> 2012年6 月2日</p><p><b> 目 錄</b></p><p> 一、 緒論……………………………………………………………..3</p><p> 二、 設計的任務……………………………………………
2、………..3</p><p> 三、 設計的要求……………………………………………………..4</p><p> 四、 設計方案………………………………………………………...4</p><p> 4.1 直流電機的控制……………………………………………….…4 </p><p> 4.1.1 直流電機的原理……………………………
3、………….....4</p><p> 4.1.2 直流電機的控制程序框圖………………………………...4</p><p> 4.2 步進電機的控制…………………………………………….......6</p><p> 4.2.1 步進電機的原理……………………………………..…...6</p><p> 4.2.2 步進電機的控制程序
4、框圖…………………………….…..7</p><p> 4.3 交通燈的控制…………………………………………………..7</p><p> 4.3.1 交通燈的原理……………………………………..……..8</p><p> 4.3.2 步交通燈的控制程序框圖…………………………….…..8</p><p> 五、系統(tǒng)調試與分析………
5、………………………………………..10</p><p> 六、總結和心得……………………………………..………………11</p><p> 七、參考文獻………………………………………………………...12</p><p> 八、附錄……………………………………………………………...12</p><p><b> 一、緒論&
6、lt;/b></p><p> DSP數(shù)字信號處理(Digital Signal Processing ,簡稱DSP)是一門涉及許多科學而又廣泛應用于許多領域的新學領域。數(shù)字信號處理是一種通過使用數(shù)學技巧執(zhí)行轉換或提取信息,來處理現(xiàn)實信號的方法,這些信號由數(shù)字序列表示。本次設計的是基于DSP原理設計的直流電機,步進電機,交通燈控制軟硬件系統(tǒng)。</p><p> 直流電機定義為輸出
7、或輸入為直流電能的旋轉電機,它是能實現(xiàn)直流電能和機械能互相轉換的電機。當它作電動機運行時是直流電動機,將電能轉換為機械能;作發(fā)電機運行時是直流發(fā)電機,將機械能轉換為電能。</p><p> 步進電機是將電脈沖信號轉變?yōu)榻俏灰苹蚓€位移的開環(huán)控制元件。它的調速一般是改變輸入步進電機的脈沖的頻率來實現(xiàn)步進電機的調速,因為步進電機每給一個脈沖就轉動一個固定的角度,這樣就可以通過控制步進電機的一個脈沖到下一個脈沖的時間間
8、隔來改變脈沖的頻率,延時的長短來具體控制步進角來改變電機的轉速,從而實現(xiàn)步進電機的調速。</p><p> 交通燈是利用發(fā)光二極管亮滅模擬交通信號,數(shù)碼管現(xiàn)實時間,利用TMS320VS5420 DSP片上定時器產(chǎn)生時鐘計數(shù),設計模擬實際生活中十字路口交通燈。</p><p><b> 二、設計的任務</b></p><p> 1. 編程實
9、現(xiàn)在現(xiàn)有實驗箱上整合步進電機、直流電機、交通燈等實驗項目。</p><p> 2. 三個實驗可以通過鍵盤進行模式選擇來切換(1步進電機控制,2直流電機控制,3交通燈控制,4三個實驗同時進行),并在LED左數(shù)第一位上顯示模式。</p><p> 3. 步進電機和直流電機的正反轉、加減速在鍵盤上進行控制,并在LED上顯示步進電機和直流電機的運行狀態(tài)。</p><p>
10、; 4. 交通燈控制時應在LED上顯示時間的變化。交通燈東西、南北的時間可通過鍵盤設定。</p><p> 5. 三個實驗同時進行時只顯示模式,各實驗的參數(shù)都可通過鍵盤設置。</p><p><b> 三、設計的要求</b></p><p> 1.利用DSP的I/O操作編制程序輸出一串脈沖控制電機的正轉、反轉、加速、減速、停止。<
11、/p><p> 2.通過DSP的I/O控制能對步進電機調速。</p><p> 3.利用TMS320VC5402的片內(nèi)定時器中斷,通過鍵盤直流電機和步進電機的正轉、反轉、加速、減速。并將送往步進電機的代碼顯示到LED上。</p><p> 4.能夠正確的模擬交通燈,能響應硬件中斷和定時中斷</p><p> 5.運用C語言編程。</
12、p><p><b> 四、設計方案</b></p><p> 4.1 直流電機的控制</p><p> 利用DSP的I/O操作編制程序輸出一串脈沖控制電機的正轉、反轉、加速、減速、停止 。編寫定時器初始化程序(用于測速)、外部硬件中斷服務程序,根據(jù)占空比×速度=常數(shù)的原則進行調速。</p><p> 4.1
13、.1 直流電機的原理</p><p> 導體受力的方向用左手定則確定。這一對電磁力形成了作用于電樞一個力矩,這個力矩在旋轉電機里稱為電磁轉矩,轉矩的方向是逆時針方向,企圖使電樞逆時針方向轉動。如果此電磁轉矩能夠克服電樞上的阻轉矩(例如由摩擦引起的阻轉矩以及其它負載轉矩),電樞就能按逆時針方向旋轉起來。 </p><p> 當電樞轉了180°后,導體 cd轉到 N極下,導體ab
14、轉到S極下時,由于直流電源供給的電流方向不變,仍從電刷 A流入,經(jīng)導體cd 、ab 后,從電刷B流出。這時導體cd 受力方向變?yōu)閺挠蚁蜃?,導體ab 受力方向是從左向右,產(chǎn)生的電磁轉矩的方向仍為逆時針方向。 </p><p><b> 直流電機的控制框圖</b></p><p> a.直流電機的方向控制:</p><p> b.直流電機的
15、速度控制:</p><p> 當相配對的開關閉合時,直流電機加速運行;當開關斷開時,直流電機慣性運行(由于摩擦而減速運行),所以,要控制直流電動機的速度即是控制開關閉合的時間,在一段時間內(nèi)(定義一個固定周期T),開關持續(xù)閉合時間越長(定義這個時間為t,t<T),直流電機的速度就越快,那么,要想給直流電機加速,即是增加這個閉合時間,要想給直流電機減速,即是減少這個閉合時間,想迅速的減慢速度,也可通反向電流更
16、好的達到效果。</p><p> 直流電機的程序框圖如下:</p><p> 4.2 步進電機的控制</p><p> 通過DSP的I/O控制能對步進電機調速。在了解步進電機工作原理前提下,掌握DSP I/O總線控制方法,按照步進電機工作原理編寫步進電機的驅動程序。使電機旋轉,改變脈沖信號的頻率對電機調速。</p><p> 4.2.
17、1 步進電機的原理</p><p> 步進電機的調速一般是改變輸入步進電機的脈沖的頻率來實現(xiàn)步進電機的調速,因為步進電機每給一個脈沖就轉動一個固定的角度,這樣就可以通過控制步進電機的一個脈沖到下一個脈沖的時間間隔來改變脈沖的頻率,延時的長短來具體控制步進角來改變電機的轉速,從而實現(xiàn)步進電的調速。具體的延時時間可以通過軟件來實現(xiàn)。</p><p> 這就需要采用單片機對步進電機進行加減速
18、控制,實際上就是改變輸出脈沖的時間間隔,單片機控制步進電機加減法運轉可實現(xiàn)的方法有軟件和硬件兩種 ,軟件方法指的是依靠延時程序來改變脈沖輸出的頻率,其中延時的長短是動態(tài)的,軟件法在電機控制中, 要不停地產(chǎn)生控制脈沖, 占用了大量的CPU 時間,使單片機無法同時進行其他工作;硬件方法是依靠單片機內(nèi)部的定時器來實現(xiàn)的,在每次進入定時中斷后,改變定時常數(shù),從而升速時使脈沖頻率逐漸增大,減速時使脈沖頻率逐漸減小,這種方法占用CPU 時間較少,在
19、各種單片機中都能實現(xiàn),是一種比較實用的調速方法。</p><p> 4.2.2 步進電機的控制程序框圖 </p><p> 4.3 交通燈的控制</p><p> 用定時器定時,用I/O口控制紅綠黃燈的開關,用硬件外部中斷模擬急救車的到達。有急救車到達時,兩向為全紅,以便讓急救車通過。急救車通過后,交通燈恢復硬件中斷前的狀態(tài)。本實驗以觸發(fā)開關(紅色按紐)為中斷
20、申請,表示有急救車通過。</p><p> 4.3.1 交通燈的原理</p><p> 一個十字路口的交通一般分為兩個方向,每個方向具有紅燈,綠燈和黃燈3種,另外每個方向還具有左轉燈,因此每個方向具有四個燈。交通燈為每一個燈的狀態(tài)設計了倒計時數(shù)碼管顯示功能??梢詾槊恳粋€燈的狀態(tài)設置一個初始值,燈狀態(tài)改變后,開始按照這個初始值倒計時。倒計時歸零后,燈的狀態(tài)將會改變至下一個狀態(tài)。值得注意的
21、是,交通燈兩個方向的燈的狀態(tài)是相關的。也就是說,每個方向的燈的狀態(tài)影響著另外一個方向的燈的狀態(tài),這樣才能夠協(xié)調兩個方向的車流。如果每個方向的燈是獨立變化的,那么交通燈就沒有了意義。</p><p> 4.3.2 交通燈的控制框圖</p><p> 交通燈的控制程序框圖:</p><p><b> 五.系統(tǒng)調試與分析</b></p&g
22、t;<p><b> 調試結果如下:</b></p><p> 本次設計,完成了直流電機和步進電機轉運,并可以通過鍵盤按鍵來控制改變轉速的快慢和正反轉,以及交通燈的顯示。小鍵盤上的0表示在數(shù)碼管上顯示是1,以此類推?!?’時表示直流電機運轉;‘2’時表示步進電機運轉;‘3’時表示交通燈工作;‘4’時表示直流電機,步進電機,交通燈同時工作。‘5,6’表示改變電機的正反轉;‘7
23、,8’表示改變電機的轉速。</p><p> 首先,要正確連接DSP實驗機箱與電腦的連接,實驗前確認機箱良好,打開電腦桌面上的CCS5.0軟件,在my project文件夾中正確添加以編好的程序,生成.out文件,然后裝載到DSP實驗機箱上面。其次,運行程序,觀察直流電機與步進電機的運行情況。按DSP實驗箱上的鍵盤,觀察不同按鍵對直流電機和步進電機的運行影響并記錄,最后與預期要達到的人物要求作對比,看是否達到設
24、計要求。</p><p> 程序中各模塊的地址如下:</p><p><b> 六、總結與心得</b></p><p> 通過這次課程設計,是我將所學理論知識很好地運用到實際工程當中,學到了很多東西,鍛煉了自己的各方面的能力,具體有以下幾點:</p><p> 1. 在DSP控制知識學習方面,此次設計使我對課本
25、上學到的知識有了進一步鞏固,而且對課本上沒有設計的知識也作了了解,例如TMS320VC5402的硬件結構和芯片資源的掌握,這里很感謝雷老師上實驗課時耐心的講解,使我們豐富了自己的知識。</p><p> 2. 查資料能力方面,通過這次課程設計,我進一步認識到了查工具書及網(wǎng)絡資源的重要性,因為課本上的知識是有限的,通過查工具書能使我們廣泛地吸取知識,補充自己知識系統(tǒng)的不足。</p><p&g
26、t; 3. 實用軟件能力及編程能力方面,通過本次課程設計,我對以前做DSP實驗時用到的CCS5.0軟件有了更熟練的掌握,之前對DSP的C語言編程不太了解,通過本次設計們我學習并基本掌握了一些特殊指令的用法,而且也學習了DSP匯編語言和標準C語言混合編程的方法。</p><p><b> 七、參考文獻</b></p><p> 1、鄒彥,《DSP原理與應用》
27、電子工業(yè)出版社 2005年</p><p> 2、張勇,《C\C++語言硬件程序設計》西安電子科技大學出版社 2003年</p><p> 3、劉和平 《DSP原理及電機控制應用》 北京航空航天大學出版社 2006.10</p><p> 4、 唐介 《電機與拖動》 高等教育出版社 2003.7</p
28、><p> 5、 王海生 《微型計算機控制技術》 清華大學出版社 2007.4</p><p><b> 八、附錄:源代碼</b></p><p><b> 主程序:</b></p><p> /*******main_func.c****/ </p>
29、<p> #include "reg_define.h"</p><p> #include "system_init.h" /*通過system_init();調用*/</p><p> #include "IOport_init.h" /*包含后可直接使用所定義的IO端口*/</p><p&
30、gt; #include "Timer0_init.h" /*通過Timer0_init(unsigned int Tmer0_VAL);調用*/</p><p> #include "Timer1_init.h" /*通過Timer1_init(unsigned int Tmer0_VAL);調用*/</p><p> #include
31、"Interrupt_server.h" /*包含后可直接到所對應的中斷服務程序中編中斷服務程序*/</p><p> #include "LED_display_6.h" /*通過LED_display_6(unsigned int 顯示數(shù)據(jù));調用*/ </p><p> #include "LED_display_1.h&q
32、uot; </p><p> #include "LED_display_2.h"</p><p> #include "LED_display_34.h" </p><p> #include "LED_display_56.h" </p><p> #include &
33、quot;traffic.h"</p><p> #include <stdio.h> </p><p> unsigned int BJ_code[]={0x07,0x0b,0x0d,0x0e}; </p><p> unsigned int bjcode,dj_code;</p><p> #define
34、 dtime 1000 ; </p><p> void delay(unsigned int d_t);</p><p><b> main()</b></p><p><b> {</b></p><p> system_init();</p><p> Ti
35、mer0_init(0x6fff); /*Tmer0_VAL為TINT0的定時時間常數(shù)*/</p><p> Timer1_init(0x0ffff); /*Tmer0_VAL為TINT1的定時時間常數(shù)*/ </p><p><b> while(1)</b></p><p><b> {</b></p>
36、<p> switch(mode)</p><p><b> {</b></p><p> case 1: BJ_ADDR=BJ_code[bjcode]; </p><p> delay(100);</p><p> LED_display_1(key_code+1); </p>
37、<p> LED_display_2(BJ_code[bjcode]); </p><p> delay(100); break;</p><p> case 2: DJ_ADDR=dj_code; </p><p> delay(100);</p><p> LED_display_1(key_code+1);
38、 </p><p> delay(100); break;</p><p> case 3: traffic(); </p><p> delay(100);</p><p> LED_display_1(key_code+1);</p><p> LED_display_34(key_code); &
39、lt;/p><p> delay(100); break;</p><p> case 4: BJ_ADDR=BJ_code[bjcode]; delay(1000);</p><p> DJ_ADDR=dj_code; delay(100);</p><p> traffic(); delay(100); </p>
40、<p> LED_display_1(key_code+1);</p><p> delay(100); </p><p> default : break; } </p><p><b> } </b></p><p><b> }</b></p>&
41、lt;p> void delay(unsigned int d_t)</p><p><b> { </b></p><p><b> int i,j;</b></p><p> for(i=0;i<d_t;i++)</p><p> {for(j=0;j<1;j++)
42、{}} </p><p><b> }</b></p><p><b> 中斷服務程序:</b></p><p> /*********** INT_serv.h ***************/</p><p> /*********** 中斷服務程序 **
43、*************/</p><p> #include "IOport_init.h"</p><p> void traffic();</p><p> /**請在此處申明主程序中定義而在中斷服務程序中要使用的變量**/</p><p> /**如:extern unsigned int code ;e
44、xtern unsigned int keycode ;**/ </p><p> extern unsigned int bjcode,dj_code,BJ_code[],t_traffic; </p><p> extern void delay(unsigned int d_t); </p><p> unsigned int t0,t1,key_cod
45、e,bj_derect=0,bj_speed=20;</p><p> unsigned int t0_dj, dj_speed=5, dj_period=20,dj_derect=0; </p><p> unsigned int mode,state;</p><p> #define positive 0x0100;</p><p&
46、gt; #define negative 0x0200;</p><p> #define stop 0x0000; </p><p> unsigned int t10=0,t11=0,light_flag;</p><p> unsigned int trdcode[];</p><p> /***NMI中斷服務程序
47、***/ </p><p> interrupt void NMI_ISR()</p><p><b> { </b></p><p> asm(" NOP");</p><p> asm(" NOP");</p><p> /**請在此處編寫NM
48、I中斷服務程序**/</p><p><b> return; </b></p><p><b> }</b></p><p> /***TINT0中斷服務程序***/</p><p> interrupt void TINT0_ISR() </p><p><
49、b> { </b></p><p> asm(" NOP");</p><p> asm(" NOP");</p><p><b> t0++;</b></p><p><b> t0_dj++;</b></p>&l
50、t;p> t_traffic++;</p><p> if(t0>=bj_speed) </p><p><b> {</b></p><p><b> t0=0;</b></p><p><b> t1++;</b></p><p&g
51、t; bjcode=t1%4; </p><p> if(bj_derect) bjcode=3-bjcode; </p><p> }/**請在此處編寫TINT0中斷服務程序**/ </p><p> if(t0_dj<dj_speed)</p><p><b> {</b></p>&l
52、t;p> dj_code=positive;</p><p> if(dj_derect) dj_code=negative;</p><p><b> }</b></p><p> if(t0_dj>=dj_speed&&t0_dj<dj_period) dj_code=stop;</p>
53、;<p> if(t0_dj>=dj_period) t0_dj=0;</p><p><b> return; </b></p><p><b> }</b></p><p> /***TINT1中斷服務程序***/</p><p> interrupt void T
54、INT1_ISR() </p><p><b> { </b></p><p> asm(" NOP");</p><p> asm(" NOP");</p><p> /**請在此處編寫TINT1中斷服務程序**/</p><p><b>
55、; return; </b></p><p><b> } </b></p><p> /***INT0中斷服務程序***/</p><p> interrupt void INT0_ISR() </p><p><b> { </b></p><p>
56、 asm(" NOP");</p><p> asm(" NOP");</p><p> traffic_ADDR=0x0f000;</p><p> delay(50000);</p><p> delay(50000);</p><p> delay(50000)
57、;</p><p> delay(50000);</p><p> delay(50000);</p><p> delay(50000);</p><p> delay(50000);</p><p> delay(50000);</p><p> /**請在此處編寫INT0中斷服
58、務程序**/</p><p><b> return; </b></p><p><b> } </b></p><p> /***INT1中斷服務程序***/</p><p> interrupt void INT1_ISR() </p><p><b>
59、 { </b></p><p> asm(" NOP");</p><p> asm(" NOP");</p><p> /**請在此處編寫INT1中斷服務程序**/</p><p><b> return; </b></p><p>
60、<b> } </b></p><p> /***INT2中斷服務程序***/</p><p> interrupt void INT2_ISR() </p><p><b> { </b></p><p> asm(" NOP");</p><p&
61、gt; asm(" NOP");</p><p> key_code=KEY_ADDR;</p><p> key_code&=0x001f;</p><p> switch(key_code)</p><p> { </p><p> case 1
62、: mode=1;break;</p><p> case 2: mode=2;break; </p><p> case 3: mode=3;break;</p><p> case 4: mode=4;break; </p><p> default : break;}</
63、p><p> if(mode==1) </p><p> {switch(key_code) </p><p><b> {</b></p><p> case 5: bj_derect=0; break; </p><p> case 6: bj_derect=1;break; /*
64、反轉1*/</p><p> case 7: if(bj_speed>=3) bj_speed--;break; /*加速2*/</p><p> case 8: if(bj_speed<=50) bj_speed++;break; /*減速3*/ </p><p> default : break;}</p><p>&l
65、t;b> }</b></p><p> else if(mode==2) </p><p> {switch(key_code) </p><p><b> {</b></p><p> case 5: dj_derect=0;break; /*正轉0*/</p><p&
66、gt; case 6: dj_derect=1;break; /*反轉1*/</p><p> case 7: if(dj_speed>=1) dj_speed--;break; /*減速2*/</p><p> case 8: if(dj_speed<dj_period) dj_speed++;break; /*加速3*/</p><p>
67、default : break;}</p><p><b> }</b></p><p> else if(mode==3)</p><p> traffic();</p><p> else if(mode==4) </p><p> {switch(key_code) </p&
68、gt;<p><b> {</b></p><p> case 5: BJ_ADDR=BJ_code[bjcode]; break; </p><p> case 6: DJ_ADDR=dj_code; break; /*反轉1*/</p><p> case 7: traffic();break; /*加速2*/&
69、lt;/p><p> default : break; }</p><p> }/**請在此處編寫INT2中斷服務程序**/</p><p><b> return; </b></p><p><b> } </b></p><p> /***INT3中斷服務程序***
70、/</p><p> interrupt void INT3_ISR() </p><p><b> { </b></p><p> asm(" NOP");</p><p> asm(" NOP");</p><p> /**請在此處編寫INT3
71、中斷服務程序**/</p><p><b> return; </b></p><p> IOport_init.h :</p><p> /******* IOport_init.h *******/</p><p> /******* 定義5402的IO端口
72、 *******/</p><p> /* IO port Definition */ </p><p> ioport unsigned int port1008; /*步進電機模塊IO口葉址1008h */</p><p> ioport unsigned int port5008; /*交通燈模塊IO口葉5008h */</p>
73、;<p> ioport unsigned int port6000; /*液晶顯示模塊片選1口地址600xh */</p><p> ioport unsigned int port7000; /*液晶顯示模塊片選2口地址700xh */ </p><p> ioport unsigned int portA008; /*鍵盤模塊掃描入口地址A008h */</
74、p><p> ioport unsigned int portB000; /*數(shù)碼管顯示模塊IO口葉址B000h */</p><p> ioport unsigned int portB007; /*直流電機模塊IO口葉址B007h */ </p><p> #define BJ_ADDR port1008 /*步進電機模塊IO口葉址為BJ_ADDR */
75、 </p><p> #define traffic_ADDR port5008 /*交通燈模塊IO口葉址為traffic */ </p><p> #define LCD1_ADDR port6000 /*液晶顯示模塊片選1口地址為LCD1_ADDR */ </p><p> #define LCD2_ADDR port7000 /*液晶顯示
76、模塊片選2口地址為LCD2_ADDR */ </p><p> #define KEY_ADDR portA008 /*鍵盤模塊掃描入口地址為KEY_ADDR */ </p><p> #define LED_ADDR portB000 /*數(shù)碼管顯示模塊IO口地址為LED_ADDR */ </p><p> #define DJ_ADDR
77、portB007 /*直流電機模塊IO口葉址為DJ_ADDR */</p><p> LED_display_1.h:</p><p> /*********** LED_display_1.h ***********/ </p><p> /*********** LED顯示子程序 ***********/</p&
78、gt;<p> unsigned int LED_code_1[]={0x0001,0x3F01,0x0601,0x5B01,0x4f01,0x6601,0x6d01,0x7d01,0x0701,0x7f01,0x6f01,0x7701,0x7c01,0x3901,0x5e01,0x7901,0x7101};</p><p> void display_delay_1(u16 dt);</
79、p><p> void LED_display_1(u16 keycode)</p><p><b> {</b></p><p> LED_ADDR=LED_code_1[keycode];</p><p> display_delay_1(5);</p><p> LED_ADDR=0x
80、0001;</p><p> display_delay_1(1);</p><p><b> }</b></p><p> void display_delay_1(u16 dt)</p><p><b> {</b></p><p><b> int
81、i,j;</b></p><p> for(i=0;i<dt;i++)</p><p> {for(j=0;j<2;j++) {} }</p><p><b> }</b></p><p> LED_display_2.h :</p><p> /********
82、*** LED_display_2.h ***********/ </p><p> /*********** LED顯示子程序 ***********/</p><p> unsigned int LED_code_2[]={0x0002,0x3F02,0x0602,0x5B02,0x4f02,0x6602,0x6d02,0x7d02,0x0702
83、,0x7f02,0x6f02,0x7702,0x7c02,0x3902,0x5e02,0x7902,0x7102};</p><p> void display_delay_2(u16 dt2);</p><p> void LED_display_2(u16 keycode)</p><p><b> {</b></p>
84、<p> LED_ADDR=LED_code_2[keycode];</p><p> display_delay_2(5);</p><p> LED_ADDR=0x0001+1;</p><p> display_delay_2(1);</p><p><b> }</b></p>
85、<p> void display_delay_2(u16 dt2)</p><p><b> {</b></p><p><b> int i,j;</b></p><p> for(i=0;i<dt2;i++)</p><p> {for(j=0;j<10;j++
86、) {} }</p><p><b> }</b></p><p> LED_display_34.h: </p><p> /*********** LED_display_34.h ***********/ </p><p> /*********** LED顯示子程序 *
87、**********/</p><p> unsigned int LED_code_34[]={0x3F01,0x0601,0x5B01,0x4f01,0x6601,0x6d01,0x7d01,0x0701,0x7f01,0x6f01};</p><p> void display_delay_34(unsigned int dt3);</p><p> v
88、oid LED_display_34(unsigned int keycode)</p><p><b> {</b></p><p> unsigned int k3,k4,temp3,show_delay_time3=2,hide_delay_time3=1;</p><p> k3=keycode/10;</p>&l
89、t;p> LED_ADDR=LED_code_34[k3]+2;</p><p> display_delay_34(show_delay_time3);</p><p> LED_ADDR=0x0001+3;</p><p> display_delay_34(hide_delay_time3);</p><p> temp
90、3=keycode-k3*10;</p><p><b> k4=temp3;</b></p><p> LED_ADDR=LED_code_34[k4]+3;</p><p> display_delay_34(show_delay_time3);</p><p> LED_ADDR=0x0001+4;<
91、/p><p> display_delay_34(hide_delay_time3);</p><p><b> }</b></p><p> void display_delay_34(unsigned int dt3)</p><p><b> {</b></p><p&
92、gt;<b> int i,j;</b></p><p> for(i=0;i<dt3;i++)</p><p> {for(j=0;j<1;j++) {} }</p><p><b> }</b></p><p> LED_display_56.h :</p>
93、<p> /*********** LED_display_56.h ***********/ </p><p> /*********** LED顯示子程序 ***********/</p><p> unsigned int LED_code_56[]={0x3F01,0x0601,0x5B01,0x4f01,0x6601,0x6d
94、01,0x7d01,0x0701,0x7f01,0x6f01};</p><p> void display_delay_56(unsigned int dt4);</p><p> void LED_display_56(unsigned int keycode)</p><p><b> {</b></p><p&
95、gt; unsigned int k5,k6,temp4,show_delay_time4=2,hide_delay_time4=1;</p><p> k5=keycode/10;</p><p> LED_ADDR=LED_code_56[k5]+4;</p><p> display_delay_56(show_delay_time4);</p&
96、gt;<p> LED_ADDR=0x0001+4;</p><p> display_delay_56(hide_delay_time4);</p><p> temp4=keycode-k5*10;</p><p><b> k6=temp4;</b></p><p> LED_ADDR=LE
97、D_code_56[k6]+5;</p><p> display_delay_56(show_delay_time4);</p><p> LED_ADDR=0x0001+5;</p><p> display_delay_56(hide_delay_time4);</p><p><b> }</b><
98、/p><p> void display_delay_56(unsigned int dt4)</p><p><b> {</b></p><p><b> int i,j;</b></p><p> for(i=0;i<dt4;i++)</p><p> {f
99、or(j=0;j<1;j++) {} }</p><p><b> }</b></p><p><b> LED顯示子程序:</b></p><p> /*********** LED_display_6.h ***********/ </p><p> /****
100、******* LED顯示子程序 ***********/</p><p> unsigned int LED_code_6[]={0x3F01,0x0601,0x5B01,0x4f01,0x6601,0x6d01,0x7d01,0x0701,0x7f01,0x6f01};</p><p> void display_delay_6(unsigned int dt);
101、</p><p> void LED_display_6(unsigned int keycode)</p><p><b> {</b></p><p> unsigned int k1,k2,k3,k4,k5,k6,temp1,temp2,show_delay_time=2,hide_delay_time=1;</p>
102、<p> k1=keycode/100000; </p><p> LED_ADDR=LED_code_6[k1]+0;</p><p> display_delay_6(show_delay_time);</p><p> LED_ADDR=0x0001+0;</p><p> display_delay_6(hide_
103、delay_time);</p><p> temp1=keycode-k1*100000;</p><p> k2=temp1/10000;</p><p> LED_ADDR=LED_code_6[k2]+1;</p><p> display_delay_6(show_delay_time);</p><p&
104、gt; LED_ADDR=0x0001+1;</p><p> display_delay_6(hide_delay_time);</p><p> temp2=temp1-k2*10000;</p><p> k3=temp2/1000; </p><p> LED_ADDR=LED_code_6[k3]+2;</p>
105、<p> display_delay_6(show_delay_time);</p><p> LED_ADDR=0x0001+2;</p><p> display_delay_6(hide_delay_time);</p><p> temp1=temp2-k3*1000;</p><p> k4=temp1/10
106、0; </p><p> LED_ADDR=LED_code_6[k4]+3;</p><p> display_delay_6(show_delay_time);</p><p> LED_ADDR=0x0001+3;</p><p> display_delay_6(hide_delay_time);</p><
107、;p> temp2=temp1-k4*100;</p><p> k5=temp2/10;</p><p> LED_ADDR=LED_code_6[k5]+4;</p><p> display_delay_6(show_delay_time);</p><p> LED_ADDR=0x0001+4;</p>
108、<p> display_delay_6(hide_delay_time);</p><p> temp1=temp2-k5*10;</p><p><b> k6=temp1;</b></p><p> LED_ADDR=LED_code_6[k6]+5;</p><p> display_dela
109、y_6(show_delay_time);</p><p> LED_ADDR=0x0001+5;</p><p> display_delay_6(hide_delay_time);</p><p><b> }</b></p><p> void display_delay_6(unsigned int dt
110、)</p><p><b> {</b></p><p><b> int i,j;</b></p><p> for(i=0;i<dt;i++)</p><p> {for(j=0;j<1;j++) {} }</p><p><b> }&
111、lt;/b></p><p><b> 定時器初始化程序:</b></p><p> /*********** Timer0_init.h ***********/ </p><p> /*********** 定時器初始化程序 ***********/</p><p> /*
112、****定時器控制寄存器TCR各位的功能******/</p><p> /*| 15-12 | 11 | 10 |9-6| 5 | 4 |3-0 |*/</p><p> /*|Reserved|Soft|free|PSC|TRB|TSS|TDDR|*/ </p><p> /*TRB=1重新加載, TSS=1定時器停止工作*/</p>&
113、lt;p> /*定時中斷的周期T=(PRD+1)X(TDDR+1)XCLKOUT */ </p><p> /*IFR/IMR各位的功能,IMR=1開放,IFR=1有請求,進出中斷服務程序過程中IMR自動屏蔽/開啟,IFR自動清除*/</p><p> /*| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6
114、| 5 | 4 | 3 | 2 | 1 | 0 |*/</p><p> /*|RECVD|RECVD|DMAC5|DMAC4|BXINT1|BRINT1|HPINT|INT3|TINT1|DMAC0|BXINT0|BRINT0|TINT0|INT2|INT1|INT0|*/</p><p> #include "reg_define.h"
115、</p><p> void Timer0_init(u16 Tmer0_VAL) /*請在主程序中初始化部分通過 Timer0_init(u16 定時常數(shù));調用*/</p><p><b> { </b></p><p> IMR&=0x0fff7; /**通過向IMR中TINT0寫0關閉所要使用的中斷的相應標志位,
116、IMR=1開放**/ </p><p> asm(" SSBX INTM"); /**關總中斷*/ </p><p> TCR0=0x0010;/*STOP THE TIMER0 */</p><p> PRD0=Tmer0_VAL;/*PRD0=Tmer0_VAL */</p><p> TCR0=0x
117、002A;/*TDDR=1001B, TRB=1 AUTO LOAD THE PSC, TSS=0 START THE TIMER0 */ </p><p> IFR|=0x0008;/*清TINT0中斷標志位 */</p><p> IMR|=0x0008;/*開TINT0的IMR中斷標屏蔽位 */ </p><p> asm("
118、; RSBX INTM"); /**開總中斷*/ </p><p><b> }</b></p><p><b> 定時器初始化程序:</b></p><p> /*********** Timer1_init.h ***********/ </p><p>
119、/*********** 定時器初始化程序 ***********/</p><p> /*****定時器控制寄存器TCR各位的功能******/</p><p> /*| 15-12 | 11 | 10 |9-6| 5 | 4 |3-0 |*/</p><p> /*|Reserved|Soft|free|PSC|TRB|TSS|TDDR|*
120、/ </p><p> /*TRB=1重新加載, TSS=1定時器停止工作*/</p><p> /*定時中斷的周期T=(PRD+1)X(TDDR+1)XCLKOUT */ </p><p> /*IFR/IMR各位的功能,IMR=1開放,IFR=1有請求,進出中斷服務程序過程中IMR自動屏蔽/開啟,IFR自動清除*/</p><p>
121、 /*| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |*/</p><p> /*|RECVD|RECVD|DMAC5|DMAC4|BXINT1|BRINT1|HPINT|INT3|TINT1|DMAC0|BXINT0|BRINT0|TINT0|INT2|INT1
122、|INT0|*/</p><p> #include "reg_define.h" </p><p> void Timer1_init(u16 Tmer1_VAL) /*請在主程序中初始化部分通過 Timer1_init(u16 定時常數(shù));調用*/</p><p><b> { </b></p>
123、<p> IMR&=0x0ff7f; /**通過向IMR中TINT0寫0關閉所要使用的中斷的相應標志位,IMR=1開放**/ </p><p> asm(" SSBX INTM"); /**關總中斷*/ </p><p> TCR1=0x0010;/*STOP THE TIMER0 */</p><p> P
124、RD1=Tmer1_VAL;/*PRD=FFFF */</p><p> TCR1=0x002A;/*TDDR=1001B, TRB=1 AUTO LOAD THE PSC, TSS=0 START THE TIMER0 */ </p><p> IFR|=0x0080;/*清TINT0中斷標志位 */</p><p> IMR|=0x0080;
125、/*開TINT0的IMR中斷標屏蔽位 */ </p><p> asm(" RSBX INTM"); /**開總中斷*/ </p><p><b> }</b></p><p><b> 定時器初始化程序:</b></p><p> /***********
126、 Timer1_init.h ***********/ </p><p> /*********** 定時器初始化程序 ***********/</p><p> /*****定時器控制寄存器TCR各位的功能******/</p><p> /*| 15-12 | 11 | 10 |9-6| 5 | 4 |3-0 |*/<
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- dsp課程設計實驗
- dsp課程設計實驗
- dsp課程設計--dsp原理及應用實驗報告
- 基于dsp的圖像處理-dsp課程設計
- dsp課程設計---—基于dsp的gpgga提取
- dsp課程設計-基于dsp的gpgga提取
- dsp課程設計---dsp芯片簡介
- dsp課程設計---基于dsp的bios模塊設計實現(xiàn)
- dsp課程設計fft的dsp實現(xiàn)
- dsp課程設計--調制解調實驗報告
- dsp課程設計報告--fft的dsp實現(xiàn)
- dsp實驗講義 -課程中心
- dsp課程設計
- dsp實驗
- dsp課程設計---基于dsp的回波的產(chǎn)生與抵消
- dsp課程設計--基于dsp的溫度控制系統(tǒng)的設計
- dsp課程設計——基于dsp的鋸齒波發(fā)生器設計
- dsp課程設計報告
- dsp課程設計--基于dsp的spi接口da轉換系統(tǒng)設計
- dsp課程設計報告--dsp芯片應用系統(tǒng)設計
評論
0/150
提交評論