西電自動化單片機實驗報告_第1頁
西電自動化單片機實驗報告_第2頁
西電自動化單片機實驗報告_第3頁
西電自動化單片機實驗報告_第4頁
西電自動化單片機實驗報告_第5頁
已閱讀5頁,還剩68頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 單片片機實驗報報告 班級:113040031 學(xué)號: 姓名: 實實驗一:數(shù)數(shù)碼管實驗驗一實驗?zāi)磕康?.了解數(shù)數(shù)碼管的顯顯示原理;2.掌握JJXARMM9-24440 中中數(shù)碼管顯顯示編程方方法。二實驗原原理7段LEDD由7個發(fā)發(fā)光二極管管按“日”字形排列列,所有發(fā)發(fā)光二極管管的陽極連連在一起稱稱共陽極接接法,陰極極連在一起起稱為共陰陰極接法。LED顯示示器的接口口一般有靜靜態(tài)顯示與與動態(tài)顯示示接口兩種種方式。本本實驗中采采用的是動動態(tài)顯示接接口,其中中數(shù)碼管掃掃描控制地地址為0 xx2000070000,位0位5每位分別別對應(yīng)一個個數(shù)碼管,將將其中某位位清0 來選擇擇相應(yīng)的數(shù)數(shù)碼管,地地址0

2、 x2200066000 為數(shù)碼管管的數(shù)據(jù)寄寄存器。數(shù)數(shù)碼管采用用共陽方式式,向該地地址寫一個個數(shù)據(jù)就可可以控制LLED 的的顯示,其其原理圖如如圖所示。三實驗內(nèi)內(nèi)容及步驟驟1、六個數(shù)數(shù)碼管同時時正向顯示示0-F ,然后反反向顯示FF-0。1) 參照照模板工程程ledddemo(moduulesledddemoledddemo.apj),添加相相應(yīng)的文件件,并修改改led 的工程設(shè)設(shè)置;2) 創(chuàng)建建led.c 并加加入到工程程led 中;3) 編寫寫LED 顯示函數(shù)數(shù)voidd ledd_dissplayy(voiid),正正向顯示00-F 然然后反向顯顯示F-00,并循環(huán)環(huán)執(zhí)行以上上動作,在

3、在每次顯示示之間延時時一段時間間;4) 編譯譯led,成成功后,下下載并運行行,觀察結(jié)結(jié)果。2、在六個個數(shù)碼管上上依次顯示示“HELLLO”,可分辨辨出輪流顯顯示。步驟驟同上。3、在六個個數(shù)碼管上上依次顯示示“HELLLO”,分辨不不出輪流顯顯示。步驟驟同上。4、在每個個數(shù)碼管上上遞增顯示示0-9 。步驟同同上。四實驗程程序1、./*/*文件名名稱: LLEDSEEG7.CC */*實驗現(xiàn)現(xiàn)象: 數(shù)碼管依依次顯示出出0、1,2、9、a、b、C、d、E、F */*/#defiine UU8 unnsignned ccharunsiggned charr segg7tabble116 = /* 0

4、 1 2 3 4 5 6 7*/ 00 xc0, 00 xf9, 00 xa4, 00 xb0, 00 x99, 00 x92, 00 x82, 00 xf8, /* 8 9 A B C D E F*/ 00 x80, 00 x90, 00 x88, 00 x83, 00 xc6, 00 xa1, 00 x86, 00 x8e,;void Delaay(innt tiime);/*/* 函數(shù)數(shù)說明: JXARRM9-22410 7段構(gòu)共共陽數(shù)碼管管測試 */* 功能能描述: 依次在7段數(shù)碼管管上顯示0012344567889ABCCDEF */* 返回回代碼: 無 */* 參數(shù)數(shù)說明: 無 *

5、/*/void Testt_Segg7(vooid) int i; *(UU8*)00 x2000070000)=00 x00; /*六個數(shù)數(shù)碼管都亮亮*/ forr( ; ;)for(ii=0;ii=0 xx0;i-) /*數(shù)碼管管從F到0依次顯示示出來*/ *(U8*)0 x2000060000)=seg77tabllei; Dellay(11000);/ TOODO /*/* Fuunctiion nname : 循環(huán)環(huán)延時子程程序 */* Deescriiptioon : 循環(huán) ttime 次 */* Reeturnn typpe :voidd */* Arrgumeent : 循環(huán)環(huán)

6、延時計數(shù)數(shù)器 */*/void Delaay(innt tiime) iint ii;int delaayLooopCouunt=11000; ffor(;timee0;ttime-);forr(i=00;i0;ttime-);forr(i=00;i0;ttime-);forr(i=00;iddelayyLooppCounnt;i+);實驗結(jié)果:數(shù)碼管上上顯示HEELLO,幾幾乎無延遲遲,同時顯顯示。4./*/*文件名名稱: LLEDSEEG7.CC */*實驗現(xiàn)現(xiàn)象: 數(shù)碼管依依次顯示出出0、1,2、9、a、b、C、d、E、F */*/#defiine UU8 unnsignned ccha

7、runsiggned charr segg7tabble110= /*00,1,22,3,44,5,66,7,88,9*/ 0 xcc0, 0 xff9, 0 xaa4, 0 xbb0, 0 x999, 0 x992, 0 x882, 0 xff8,0 xx80, 0 xx90;void Delaay(innt tiime);/*/* 函數(shù)數(shù)說明: JXARRM9-22410 7段構(gòu)共共陽數(shù)碼管管測試 */* 功能能描述: 依次在7段數(shù)碼管管上顯示0012344567889ABCCDEF */* 返回回代碼: 無 */* 參數(shù)數(shù)說明: 無 */*/void Testt_Segg7(vooid)

8、 intt i; forr( ; ;) *(U8*)0 x2200077000)=0 x33E; foor(i=0;i0 x0AA;i+) *(U8*)0 x2200066000)=segg7tabbleii; Deelay(50000); *(U88*)0 xx2000070000)=0 xx3D; ffor(ii=0;ii0 x00A;i+) *(U8*)0 x2200066000)=segg7tabbleii; Deelay(50000); *(UU8*)00 x2000070000)=00 x3B; forr(i=00;i00 x0A;i+) *(U8*)0 x2200066000)=

9、segg7tabbleii; Deelay(50000); *(U8*)0 x2000070000)=0 x377; foor(i=0;i0 x0AA;i+) *(U8*)0 x2200066000)=segg7tabbleii; Deelay(50000); *(U8*)0 x2200077000)=0 x22F; ffor(ii=0;ii0;ttime-);forr(i=00;iddelayyLooppCounnt;i+);五結(jié)果及及分析1六個數(shù)數(shù)碼管同時時顯示,從從0F,接接著從F0反向向顯示。分析:通過過地址2000070000選擇擇哪個數(shù)碼碼管亮,通通過地址2200066000決決定

10、數(shù)碼管管輸出的內(nèi)內(nèi)容。再通通過循環(huán)可可完成輪流流顯示。2可分辨辨出:從數(shù)數(shù)碼管的右右邊至左邊邊依次顯示示helllo分辨不出:數(shù)碼管上上顯示heello。分析:由于于改變了DDelayy的數(shù)值,導(dǎo)導(dǎo)致頻率變變化,所以以可以產(chǎn)生生兩種效果果。3每個數(shù)數(shù)碼管遞增增顯示09。分析:原理理同一,靠靠循環(huán)實現(xiàn)現(xiàn)。六實驗總總結(jié)1.由于數(shù)數(shù)碼管為共共陽極,小小數(shù)點為最最高位,AA為最低位位,所以顯顯示內(nèi)容一一定要計算算正確。2.循環(huán)條條件要選擇擇正確。 實驗二二:鍵盤輸輸入實驗一實驗?zāi)磕康?、學(xué)習(xí)鍵鍵盤驅(qū)動原原理;2、掌握通通過CPUU的I/OO擴展鍵盤盤的方法。二實驗原原理鍵盤實現(xiàn)方方案采用專門的的芯片實

11、現(xiàn)現(xiàn)鍵盤掃描描采用軟件實實現(xiàn)鍵盤掃掃描軟鍵盤實現(xiàn)現(xiàn)方案當(dāng)開關(guān)打開開時,通過過處理器的的I/O 口的一個個上拉電阻阻提供邏輯輯1;當(dāng)開開關(guān)閉合時時,處理器器的I/OO 口的輸輸入將被拉拉低到邏輯輯0。矩陣鍵盤電電路一個瞬時接接觸開關(guān)(按按鈕)放置置在每一行行與每一列列的交叉點點。每一行行由一個輸輸出端口的的一位驅(qū)動動,每一列列由一個電電阻器上拉拉且供給輸輸入端口一一位。鍵盤掃描過過程就是讓讓微處理器器按有規(guī)律律的時間間間隔查看鍵鍵盤矩陣,以以確定是否否有鍵被按按下一旦處理器器判定有一一個鍵按下下,鍵盤掃掃描軟件將將過濾掉抖抖動并且判判定哪個鍵鍵被按下每個鍵被分分配一個稱稱為掃描碼碼的唯一標標識符

12、。應(yīng)應(yīng)用程序利利用該掃描描碼,根據(jù)據(jù)按下的鍵鍵來判定應(yīng)應(yīng)該采取什什么行動,換換句話說,掃掃描碼將告告訴應(yīng)用程程序按下哪哪個鍵鍵盤掃描算算法初始化:所所有的行(輸輸出端口)被被強行設(shè)置置為低電平平在沒有任任何鍵按下下時,所有有的列(輸輸入端口)將將讀到高電電平。任何鍵的閉閉合將造成成其中的一一列變?yōu)榈偷碗娖?。一旦檢測到到有鍵被按按下,就需需要找出是是哪一個鍵鍵。過程很很簡單,微微處理器只只需在其中中一行上輸輸出一個低低電平。如如果它在輸輸入端口上上發(fā)現(xiàn)一個個0值,微微處理器就就知道在所所選擇行上上產(chǎn)生了鍵鍵的閉合三、實驗內(nèi)內(nèi)容及步驟驟(一)學(xué)習(xí)習(xí)與分析例例程中的各各個程序以以及主要函函數(shù),以進進

13、一步理解解鍵盤的工工作原理。(二)獲取取按鍵值,在在串口顯示示。(三)使按按鍵按照如如圖的順序序顯示出來來。(四)將鍵鍵盤按鍵值值在數(shù)碼管管上顯示。或自行開開發(fā)。四實驗程程序:1./* 包包含文件 */#incllude deff.h#incllude 24110libb.h#incllude opttion.h#incllude 24110adddr.h#incllude intterruupt.hh/*/ Fuunctiion nname: Maain/ Deescriiptioon : JXXARM99-24110 鍵盤盤實驗主程程序/ 實現(xiàn)功功能:/ Reeturnn typpe: v

14、ooid/ Arrgumeent : voiid*/void Mainn(voiid)/* 配配置系統(tǒng)時時鐘 */ CChanggeCloockDiivideer(2,1); UU32 mmpll_val = 0 ; mmpll_val = (992112)|(1122)&0 xxff, (mplll_vaal44)&0 xx3f, mplll_vall&3); /* 初始始化端口 */ PPort_Initt(); /* 初始始化串口 */ UUart_Initt(0,11152000); UUart_Seleect(00); /* 打印印提示信息息 */PRINNTF(n-鍵盤測測試程序-

15、nn);PRINNTF(n請將將UARTT0與PCC串口進行行連接,然然后啟動超超級終端程程序(11152000, 8, N, 1)nn); /* 開始始回環(huán)測試試 */whille(1)unssigneed chhar cch;ch=Key_GetKKeyPooll();/ TODOO / 獲取鍵值值if(ch != 0) PRRINTFF(rr%c鍵按下, chh);實驗結(jié)果:在小鍵盤盤上按鍵,串串口上顯示示按鍵對應(yīng)應(yīng)字符,如如按0,串串口上顯示示0。2.在庫函函數(shù)中改變變?nèi)缦碌膋key按鍵鍵值,使對對應(yīng)于鍵盤盤上的位置置#incllude #incllude 24110adddr.h#i

16、ncllude 24110libb.h#incllude timmer.hh#incllude intterruupt.hh#defiine RRECV_CMD_MAX_BUF 20488char recvv_buffRECCV_CMMD_MAAX_BUUF;int recvv_reaad = 0;int recvv_wriite = 0;char key_recvv_buffRECCV_CMMD_MAAX_BUUF;int key_recvv_reaad = 0;int key_recvv_wriite = 0;/ 鍵盤盤掃描int timeer1_ccountt = 00;enum KEY

17、BBOARDD_SCAAN_STTATUSSKEYBBOARDD_SCAAN_FIIRST,KEYBBOARDD_SCAAN_SEECONDD,KEYBBOARDD_SCAAN_THHIRD,KEYBBOARDD_SCAAN_FOOURTHH;int rrow = 0;exterrn unnsignned cchar outpput_00 x1000000000;unsiggned charr asciii_keey, iinputt_keyy4, inpput_kkey14, key_maskk = 00 x0F;unsiggned charr*keybboardd_porrt_sccan

18、= (unnsignned cchar*)0 x22000CC000;unsiggned charr*keybboardd_porrt_vaalue = (uunsiggned charr*)0 xx20000C0000;int keybboardd_scaan_sttatuss4 = KEYBBOARDD_SCAAN_FIIRST,KEYBBOARDD_SCAAN_FIIRST,KEYBBOARDD_SCAAN_FIIRST,KEYBBOARDD_SCAAN_FIIRST ;char key_get_charr(intt roww, innt cool)charr keyy = 00;swi

19、ttch( row )casee 0:if(coll & 00 x01) = 0) kkey = D; elsse iff(cool & 0 x022) = 0) key = EE; elsse iff(cool & 0 x044) = 0) key = FF; elsse iff(cool & 0 x088) = 0) key = 00; breeak;casee 1:if(coll & 00 x01) = 0) kkey = C; elsse iff(cool & 0 x022) = 0) key = 77; elsse iff(cool & 0 x044) = 0) key = 44;e

20、lsse iff(cool & 0 x088) = 0) key = 11;breeak;casee 2:if(coll & 00 x01) = 0) kkey = B; elsse iff(cool & 0 x022) = 0) key = 88; elsse iff(cool & 0 x044) = 0) key = 55; elsse iff(cool & 0 x088) = 0) key = 22; breeak;casee 3:if(coll & 00 x01) = 0) kkey = A; elsse iff(cool & 0 x022) = 0) key = 99; elsse

21、iff(cool & 0 x044) = 0) key = 66; elsse iff(cool & 0 x088) = 0) key = 33; breeak;defaault:breeak;retuurn kkey;/*/ Fuunctiion nname: reecv_kkey/ Deescriiptioon : 將獲獲取的鍵值值加入按鍵鍵緩沖區(qū)/ Reeturnn typpe: vooid/ Arrgumeent : intt keyy*/void recvv_keyy(intt keyy)key_recvv_buffkeyy_reccv_wrrite = kkey;key_recvv

22、_wriite +;if(kkey_rrecv_writte = RECCV_CMMD_MAAX_BUUF)keyy_reccv_wrrite = 0;if(kkey_rrecv_writte = keyy_reccv_reead)/ 緩沖區(qū)以以滿keyy_reccv_reead +;if(key_recvv_reaad = RECCV_CMMD_MAAX_BUUF)keey_reecv_rread = 0;/*/ Fuunctiion nname: Kbbd_Sccan/ Deescriiptioon : 定時時器1中斷斷服務(wù)程序序,用于掃掃描鍵盤,每每隔10mms一次中中斷/ Reetur

23、nn typpe: vooid/ Arrgumeent : voiid*/void Kbd_Scann(voiid)int looppcnt = roow, bbexitt = 00;int tempp;/ 鍵鍵盤掃描for( looopcntt = rrow; looppcnt = 44)teemp = looopcntt - 44;elsseteemp = looopcntt;swiitch(keybboardd_scaan_sttatusstemmp)caase KKEYBOOARD_SCANN_FIRRST:*keybboardd_porrt_sccan = outtput_0 x10

24、00000000 & (0 x0000000001tempp); /*將roow列置低低電平*/kkeybooard_scann_staatustempp = KEYBBOARDD_SCAAN_SEECONDD;bbexitt = 11;bbreakk;caase KKEYBOOARD_SCANN_SECCOND:iinputt_keyytemmp = (*kkeybooard_portt_vallue) & keey_maask;/*并獲獲取第一次次掃描值*/iif(innput_keytempp = keyy_massk)keybboardd_scaan_sttatusstemmp = K

25、EYYBOARRD_SCCAN_FFIRSTT;/* 沒沒有按鍵,回到開始始狀態(tài)*/eelsekeybboardd_scaan_sttatusstemmp = KEYYBOARRD_SCCAN_TTHIRDD;/* 有有按鍵*/bexiit = 1;bbreakk;caase KKEYBOOARD_SCANN_THIIRD:iif (*keeyboaard_pport_valuue) & keyy_massk) != innput_keytempp) keybboardd_scaan_sttatusstemmp = KEYYBOARRD_SCCAN_FFIRSTT;eelseasciii_ke

26、ey = key_get_charr(temmp, iinputt_keyytemmp);keybboardd_scaan_sttatusstemmp = KEYYBOARRD_SCCAN_FFOURTTH;*keyyboarrd_poort_sscan = ouutputt_0 x1100000000 & (0 x0000000001temmp); /*將rrow列置置低電平*/bexiit = 1;bbreakk;caase KKEYBOOARD_SCANN_FOUURTH:iinputt_keyy1teemp = (*keybboardd_porrt_vaalue) & kkey_mma

27、sk;/*并獲獲取第一次次掃描值*/iif(innput_key11temmp = keey_maask)/ gget aa keyyrecvv_keyy(asccii_kkey);keybboardd_scaan_sttatusstemmp = KEYYBOARRD_SCCAN_FFIRSTT;elsee*keyyboarrd_poort_sscan = ouutputt_0 x1100000000 & (0 x0000000001= RECCV_CMMD_MAAX_BUUF)keey_reecv_rread = 0;retuurn cch;/*/ Fuunctiion nname: Kee

28、y_GeetKeyyPolll(查詢方方式)/ Deescriiptioon : 如果果有鍵按下下返回鍵,否否則返回00/ Reeturnn typpe: chhar/ Arrgumeent : */char Key_GetKKeyPooll()int row;unsiignedd chaar asciii_keey, iinputt_keyy, innput_key11, keey_maask = 0 x00F;for( roww = 00; roow 4; rrow+)*keeyboaard_pport_scann = ooutpuut_0 xx1000000000 & (0 xx0000

29、000011roow); /*將rrow列置置低電平*/Dellay(33);/*延時時*/inpput_kkey = (*kkeybooard_portt_vallue) & keey_maask;/*并獲獲取第一次次掃描值*/if(inpuut_keey = keyy_massk)conttinuee;/* 沒沒有按鍵*/* 延時,再再次獲取掃掃描值,如如果兩次的的值不等,則則認為是一一個干擾*/Dellay(33);if (*keybboardd_porrt_vaalue) & kkey_mmask) != inpuut_keey) ccontiinue;/ 等待按鍵鍵松開whiile(

30、11)*kkeybooard_portt_scaan = outpput_00 x1000000000 & (00 x0000000001rrow); /*將將row列列置低電平平*/Deelay(3);innput_key11 = (*keyyboarrd_poort_vvaluee) & key_maskk;/*并獲獲取第一次次掃描值*/iff(inpput_kkey1 = kkey_mmask)breaak;/* 沒沒有按鍵*/asccii_kkey = keyy_gett_chaar(roow, iinputt_keyy);/* 查查表*/retturn asciii_keey;/*

31、顯顯示結(jié)果*/retuurn 00;實驗驗結(jié)果:按按下鍵盤的的按鍵串口口會按題圖圖中所示對對應(yīng)顯示3./* 包含文件件 */#incllude deff.h#incllude 24110libb.h#incllude opttion.h#incllude 24110adddr.h#incllude intterruupt.hh#incllude #incllude #defiine IIIRNUUMBERR 2#defiine UU8 unnsignned ccharunsiggned charr tabble116 = /* 0 1 2 3 4 5 6 7*/ 00 xc0, 00 xf9,

32、 00 xa4, 00 xb0, 00 x99, 00 x92, 00 x82, 00 xf8, /* 8 9 A B C D E F*/ 00 x80, 00 x90, 00 x88, 00 x83, 00 xc6, 00 xa1, 00 x86, 00 x8e,;/*/ Fuunctiion nname: Maain/ Deescriiptioon : JXXARM99-24440 鍵盤盤實驗主程程序/ 實現(xiàn)功功能:/ Reeturnn typpe: vooid/ Arrgumeent : voiid*/void Mainn(voiid)/* 配配置系統(tǒng)時時鐘 */ CChanggeClo

33、ockDiivideer(2,1); UU32 mmpll_val = 0 ; mmpll_val = (992112)|(1112)&00 xff, (mppll_vval4)&00 x3f, mplll_vaal&3); /* 初始始化端口 */ PPort_Initt(); /* 初始始化串口 */ UUart_Initt(0,11152000); UUart_Seleect(00); /* 打印印提示信息息 */PRINNTF(n-鍵盤測測試程序-nn);PRINNTF(n請將將UARTT0與PCC串口進行行連接,然然后啟動超超級終端程程序(11152000, 8, N, 1)nn);

34、/*(unssigneed loong iint *)0 x4480000000) = 00 x2211111220;*(uunsiggned longg intt *)00 x480000000c) = 0 xx7ffcc;whille(1)*(unsiignedd shoort iint *)0 x1100000000) = 00 x0;forr(i=00;i11000;i+);*(unsiignedd shoort iint *)0 x1100000000) = 00 xfffff;forr(i=00;i11000;i+);*/ /* 開始始回環(huán)測試試 */ innt jj=0,kk=0

35、; unnsignned cchar tablle166 = 0 x11F,0 xx2F,00 x37,0 x3BB,0 x33D,0 xx3E;whille(1)unssigneed chhar cch;ch = Keey_GeetKeyyPolll();if(ch != 0) PRRINTFF(rr%c鍵按下, chh);if(k0;ttime-);forr(i=00;iddelayyLooppCounnt;i+);實驗結(jié)果:在鍵盤上上按下按鍵鍵,會顯示示在數(shù)碼管管上。 實實驗三:中中斷實驗一、實驗?zāi)磕康?1、了解解中斷的作作用; 2、掌握握嵌入式系系統(tǒng)中斷的的處理流程程; 3、掌握握AR

36、M中中斷編程。實驗原理當(dāng)CPU進進行主程序序操作時,外外設(shè)的數(shù)據(jù)據(jù)已存入輸輸入端口的的數(shù)據(jù)寄存存器;或端端口的數(shù)據(jù)據(jù)輸出寄存存器已空,由由外設(shè)通過過接口電路路向CPUU發(fā)出中斷斷請求信號號,CPUU在滿足一一定的條件件下,暫停停執(zhí)行當(dāng)前前正在執(zhí)行行的主程序序,轉(zhuǎn)入執(zhí)執(zhí)行相應(yīng)能能夠進行輸輸入/輸出出操作的子子程序,待待輸入/輸輸出操作執(zhí)執(zhí)行完畢之之后CPUU再返回并并繼續(xù)執(zhí)行行原來被中中斷的主程程序。這樣樣CPU就就避免了把把大量時間間耗費在等等待、查詢詢狀態(tài)信號號的操作上上,使其工工作效率得得以大大地地提高。三、實驗內(nèi)內(nèi)容及步驟驟(一)學(xué)習(xí)習(xí)例程,對對其關(guān)鍵程程序與設(shè)置置進行分析析。(二)編寫

37、寫中斷處理理程序,處處理外部中中斷2,33,控制LLED燈閃閃爍或數(shù)碼碼管顯示。1、當(dāng)外部部中斷2發(fā)發(fā)生時,使使8個LEED在亮滅滅間切換;2、當(dāng)外部部中斷3發(fā)發(fā)生時,使使8個LEED等依次次亮一下。*3、當(dāng)中中斷發(fā)生時時,控制數(shù)數(shù)碼管顯示示。試驗程序#incllude deff.h#incllude 24110libb.h#incllude opttion.h#incllude 24110adddr.h#incllude intterruupt.hh/* fuunctiions */void eintt2_issr(vooid) _atttribbute_ (inteerruppt(IIRQ

38、);void eintt3_issr(vooid) _atttribbute_ (inteerruppt(IIRQ);void delaay();/* vaariabbles */int dditheer_coount22 = 00;int dditheer_coount33 = 00;statiic innt nLLed = 0;/*/ Fuunctiion nname: Maain/ Deescriiptioon : JXXARM99-24110 中斷斷實驗主程程序/ 完成功功能:/ 外部中中斷按鍵引引發(fā)中斷/ Reeturnn typpe: vooid/ Arrgumeent : voi

39、id*/void Mainn(voiid)/* 配配置系統(tǒng)時時鐘 */ CChanggeCloockDiivideer(2,1); UU32 mmpll_val = 0 ; mmpll_val = (992112)|(1122)&0 xxff, (mplll_vaal44)&0 xx3f, mplll_vall&3); /* 中中斷初始化化 */ IIsr_IInit(); /* 初始始化端口 */ PPort_Initt(); /* 初始始化串口 */ UUart_Initt(0,11152000); UUart_Seleect(00); /* 打印印提示信息息 */PRINNTF(n-外部

40、中中斷測試程程序-n);PRINNTF(n請將將UARTT0與PCC串口進行行連接,然然后啟動超超級終端程程序(11152000, 8, N, 1)nn);PRINNTF(n外部部中斷測試試開始nn);/* 請請求中斷 */Irq_Requuest(IRQ_EINTT2, eeint22_isrr);/中斷斷選擇 /Irqq_Reqquestt(IRQQ_EINNT3, eintt3_issr); /* 使能能中斷 */ IIrq_EEnablle(IRRQ_EIINT2); /Irqq_Enaable(IRQ_EINTT3); dditheer_coount22 = 00; dditheer

41、_coount33 = 00; wwhilee(1) delaay(); dithher_ccountt2+; dithher_ccountt3+; /*/ Fuunctiion nname: eiint2_isr/ Deescriiptioon : EIINT2中中斷處理程程序/ Reeturnn typpe: innt/ Arrgumeent : voiid*/void eintt2_issr(vooid)Irq_Cleaar(IRRQ_EIINT2); iif(diitherr_couunt2 100) dithher_ccountt2 = 0;(*(UU8*)00 x200007000

42、0)=00 x0;/中斷斷發(fā)生時,數(shù)數(shù)碼管顯示示(*(UU8*)00 x2000060000)=00 x80;(*(UU8*)00 x2000050000)=nnLed;/LEED亮滅切切換nLedd=nLLed;/*/ Fuunctiion nname: eiint3_isr/ Deescriiptioon : EIINT3中中斷處理程程序/ Reeturnn typpe: innt/ Arrgumeent : voiid*/void eintt3_issr(vooid)Irq_Cleaar(IRRQ_EIINT3); iif(diitherr_couunt3 100) dithher_cc

43、ountt3 = 0; (*(UU8*)00 x2000070000)=00 x0;/中斷斷發(fā)生時,數(shù)數(shù)碼管顯示示(*(UU8*)00 x2000060000)=00 x90;(*(UU8*)00 x2000050000)=00 x01;delaay();/LEED依次亮亮一下(*(UU8*)00 x2000050000)=00 x02;delaay();(*(UU8*)00 x2000050000)=00 x04;delaay();(*(UU8*)00 x2000050000)=00 x08;delaay();(*(UU8*)00 x2000050000)=00 x10;delaay();(

44、*(UU8*)00 x2000050000)=00 x20;delaay();(*(UU8*)00 x2000050000)=00 x40;delaay();(*(UU8*)00 x2000050000)=00 x80;delaay();void delaay()int indeex = 0; for ( inndex = 0 ; inndex 量化化編碼碼三個基本本過程(數(shù)數(shù)字化過程程)。(1)采樣樣:按采樣樣定理對模模擬信號進進行等時間間間隔采樣樣,將得到到的一系列列時域上的的樣值去代代替u=ff(t),即即用u0、u1、un代替替u=f(t)。這這些樣值在在時間上是是離散的值值,但在幅幅

45、度上仍然然是連續(xù)模模擬量。(2)量化化:在幅值上再再用離散值值來表示。方法是用用一個量化化因子Q去去度量u00、u1、,便得到到整量化的的數(shù)字量。u0=22.4Q 2Qu1=44.0Q 4Qu2=55.2Q 5Qu3=55.8Q 5Q(3)編碼碼:將整量化后后的數(shù)字量量進行編碼碼,以便讀讀入和識別別;編碼僅僅是對數(shù)字字量的一種種處理方法法。例如:Q=0.5VV/格,設(shè)設(shè)用三位(二二進編碼) 通道0和通通道1的模模擬輸入信信號可通過過實驗箱的的可調(diào)電阻阻AIN00、AINN1調(diào)節(jié)。三實驗內(nèi)內(nèi)容及步驟驟(一)學(xué)習(xí)習(xí)例程,對對其關(guān)鍵程程序與設(shè)置置進行分析析。(二)1、通過可可變電阻改改變模擬量量輸入

46、,補補充程序?qū)⒛M輸入入進行采集集和轉(zhuǎn)換,觀觀查顯示結(jié)結(jié)果(在串串口顯示);2、將轉(zhuǎn)換換后的電壓壓值結(jié)果顯顯示在LEED上和串串口上(如如2.3445)。3、 自行行開發(fā)。步驟:1) 參照照模板工程程ad(mmodullesaadadd.apjj),新建建一個工程程ad,添添加相應(yīng)的的文件,并并修改add的工程設(shè)設(shè)置;創(chuàng)建建mainn.c 并并加入到工工程ad 中;2) 根據(jù)據(jù)內(nèi)容編程程;3) 編譯譯、鏈接、調(diào)試、運運行。四實驗程程序1./* 包含文件件 */#incllude deff.h#incllude 24110libb.h#incllude opttion.h#incllude 2

47、4110adddr.h#incllude intterruupt.hh/*/ Fuunctiion nname: Maain/ Deescriiptioon : JXXARM99-24110 A/D采樣實實驗主程序序/ 實現(xiàn)功功能:/ 實現(xiàn)JJXRAMM9-24410的模模數(shù)轉(zhuǎn)換/ JXAARM9-24100 UARRT0 PC CCOM/ Reeturnn typpe: vooid/ Arrgumeent : voiid*/void Mainn(voiid)/* 配配置系統(tǒng)時時鐘 */ CChanggeCloockDiivideer(2,1); UU32 mmpll_val = 0 ; mm

48、pll_val = (992112)|(1122)&0 xxff, (mplll_vaal44)&0 xx3f, mplll_vall&3); /* 初始始化端口 */ PPort_Initt(); /* 初始始化串口 */ UUart_Initt(0,11152000); UUart_Seleect(00); /* 打印印提示信息息 */PRINNTF(n-AD采采樣程序-nn);PRINNTF(n請將將UARTT0與PCC串口進行行連接,然然后啟動超超級終端程程序(11152000, 8, N, 1)nn);PRINNTF(n從現(xiàn)現(xiàn)在開始您您將在超級級終端上看看到采樣值值,旋動旋旋鈕AIN

49、N2和AIIN3改變變模擬輸入入n); /* 開始始測試 */ TTest_Adc();whille(1)#defiine AADC_FFREQ 25000000int RReadAAdc(iint cch); /Reeturnn typpe iss intt, Deeclarre Prrotottype funcctionn/=void Testt_Adcc(voiid) iint ii; iint aa0=0,a1=00,a2=0,a33=0,aa4=0,a5=00,a6=0,a77=0; /Innitiaalizee varriablles ffloatt b0,b1; PPRINTTF

50、(-AD測測試-n); PPRINTTF(旋旋動AINN0, AAIN1旋旋鈕改變模模擬輸入,任意鍵退退出n); wwhilee(1) a0=AAdc_GGet_DData(0,ADDC_FRREQ); a1=AAdc_GGet_DData(1,ADDC_FRREQ); b0=(floaat)a00/10224*3.3; b1=(floaat)a11/10224*3.3; / TODOO PRINNTF(rAIIN0: %04dd AINN1: %04d, a00,a1); PRINNTF(U0: %044f U11: %004f, b0,b1); rrADCCCON=(0114)|(196)

51、|(733)|(112); /staand bby moode tto reeducee powwer cconsuumptiionPRINNTF(n); PPRINTTF(-AAD測試結(jié)結(jié)束-nn);2./* 包含文件件 */#incllude deff.h#incllude 24110libb.h#incllude opttion.h#incllude 24110adddr.h#incllude intterruupt.hh/*/ Fuunctiion nname: Maain/ Deescriiptioon : JXXARM99-24110 A/D采樣實實驗主程序序/ 實現(xiàn)功功能:/ 實

52、現(xiàn)JJXRAMM9-24410的模模數(shù)轉(zhuǎn)換/ JXAARM9-24100 UARRT0 PC CCOM/ Reeturnn typpe: vooid/ Arrgumeent : voiid*/floatt ADcchangge(innt daata);void TesttAdc(voidd);void Mainn(voiid)/* 配配置系統(tǒng)時時鐘 */ CChanggeCloockDiivideer(2,1); UU32 mmpll_val = 0 ; mmpll_val = (992112)|(1122)&0 xxff, (mplll_vaal44)&0 xx3f, mplll_vall&

53、3); /* 初始始化端口 */ PPort_Initt(); /* 初始始化串口 */ UUart_Initt(0,11152000); UUart_Seleect(00); /* 打印印提示信息息 */PRINNTF(n-AD采采樣程序-nn);PRINNTF(n請將將UARTT0與PCC串口進行行連接,然然后啟動超超級終端程程序(11152000, 8, N, 1)nn);PRINNTF(n從現(xiàn)現(xiàn)在開始您您將在超級級終端上看看到采樣值值,旋動旋旋鈕AINN2和AIIN3改變變模擬輸入入n); /* 開始始測試 */ TTestAAdc();whille(1)#defiine AADC_F

54、FREQ 25000000int RReadAAdc(iint cch); /Reeturnn typpe iss intt, Deeclarre Prrotottype funcctionn/=void TesttAdc(voidd)int j = 0; iint ii = 00;floaat A00,A1;int LedSShow;int showw6 = 00;unsiignedd chaar seegtabble110 = /* 0 1 2 3 4 5 6 7*/ 00 xc0, 00 xf9, 00 xa4, 00 xb0, 00 x99, 00 x92, 00 x82, 00 xf

55、8, /* 8 9 */ 00 x80, 00 x90;unsiignedd chaar seegtabble14 = 0 xx40,00 x79,0 x244,0 x330; iint aa0=0,a1=00,a2=0,a33=0,aa4=0,a5=00,a6=0,a77=0; /Innitiaalizee varriabllesPRINNTF(-ADD測試-nn); PPRINTTF(旋旋動AINN0, AAIN1旋旋鈕改變模模擬輸入,任意鍵退退出n); wwhilee(1) a0 = Addc_Geet_Daata(00, ADDC_FRREQ);a1 = Addc_Geet_Daata

56、(11, ADDC_FRREQ);PRIINTF(rAAIN0: %044d AIIN1: %04ddn, a0, a1);A0 = ADDchannge(aa0);A1 = ADDchannge(aa1);PRIINTF(rvvoltaage-AINN0: %05f AIN11: %005fnn, AA0, AA1);LeddShoww = (int)(A0*1000000);shoow0 = LLedShhow%110;shoow1 = LLedShhow/110%100;shoow2 = LLedShhow/1100%110;shoow3 = LLedShhow/11000%10;sho

57、ow4 = LLedShhow/1100000%10;shoow5 = LLedShhow/11000000%100;/LLed 動動態(tài)顯示forr( j = 0;j 100;j+)*(unssigneed chhar *)0 x2200077000) = (1 i) & 00 x3f;iff(i55)*(unnsignned cchar *)0 xx2000060000) = segttableeshoowi;iff(i=5)*(unnsignned cchar *)0 xx2000060000) = segttablee1shhow55;i+;i %= 66;Deelay(1); rrAD

58、CCCON=(0114)|(196)|(733)|(11yeear; rrBCDMMON = p_datee-moon; rrBCDDDAY = p_datee-daay; rrBCDDDATE = p_datee-weeek_dday; rrBCDHHOUR = p_datee-hoour; rrBCDMMIN = p_datee-miin; rrBCDSSEC = p_datee-seec; rrRTCCCON = 0 xx00;/*/ Fuunctiion nname: rttc_geet_daate/ Deescriiptioon : 獲取取實時時鐘鐘當(dāng)前時間間、日期/ Reeturn

59、n typpe: vooid/ Arrgumeent : p_ddate, 返回日日期的指針針*/void rtc_get_datee(st_datee* p_datee) rrRTCCCON = 0 xx01; pp_datte-yyear= rBCDDYEARR ; pp_datte-mmon= rBCDDMON ; pp_datte-dday= rBCDDDAY ; pp_datte-wweek_day= rBCDDDATEE ; pp_datte-hhour= rBCDDHOURR ; pp_datte-mmin= rBCDDMIN ; pp_datte-ssec= rBCDDSEC

60、; rrRTCCCON = 0 xx00;/*/ Fuunctiion nname: rttc_tiick_iinit/ Deescriiptioon : 初始始化S3CC24100的TICCK定時器器/ Reeturnn typpe: vooid/ Arrgumeent : ticck, 設(shè)設(shè)置的TIICK頻率率(時鐘滴滴答的周期期為 (11+ticck)/1128秒)*/void rtc_tickk_iniit( cchar tickk ) IIrq_RRequeest(IIRQ_TTICK, rtcc_ticck_issr); rrRTCCCON = 00 x0; /No reseet3

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論