




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、單片機實驗報口姓名:學(xué)號:姓名:學(xué)號:一、實驗要求:1 .設(shè)計一個實時時鐘,四個八段數(shù)碼管顯示格式為:XX.XX(小時/分鐘,24小時計時法);使用一個LED用來顯示秒的狀態(tài),顯示規(guī)則為:以1Hz頻率閃爍,既亮滅一次為一秒鐘,500毫秒亮、500毫秒滅。2 .實時時鐘可以通過3x4鍵盤設(shè)置初始值。數(shù)字鍵用于卒&入數(shù)值,sfb0鍵為設(shè)置鍵,sfbl鍵為開關(guān)鍵。3 .設(shè)置初始值的流程:先按下sfb0鍵,四個數(shù)碼管顯示內(nèi)容變?yōu)槿?”,并以1HZ頻率開始閃爍并等待鍵盤輸入小時、分鐘數(shù)值(其中小時2位數(shù),分鐘2位數(shù)),輸入完畢后,實時時鐘開始以新輸入的時間值開始計時。4 .開關(guān)鍵的使用方法:在
2、計時模式下按sfbl鍵一次,時鐘停止計時,時間數(shù)值停留在按鍵那刻;在停止計時模式下,按sfbl鍵一次時鐘開始繼續(xù)計時。5 .定時鬧鈴功能(加分功能,可選做):按sgp0_key鍵,進入鬧鈴值設(shè)置模式,四個數(shù)碼管顯示內(nèi)容變?yōu)槿?”,并以1HZ頻率開始閃爍并等待鍵盤輸入小時、分鐘數(shù)值(其中小時2位數(shù),分鐘2位數(shù)),此時計時仍然運行,輸入完畢后,顯示內(nèi)容恢復(fù)為計時值。當(dāng)時鐘計時到達鬧鈴值,驅(qū)動蜂鳴器鳴響8次。6 .增加通過RS2328口,更改時鐘當(dāng)前時間的功能。二、實驗程序說明:對實驗按鍵和存儲位置的說明語句:DeviceEditor)中選擇定時器1.創(chuàng)建一個新工程,在該工程的器件編輯器(模塊,然
3、后將其按要求放置,如圖所示。圖定時器模塊放置圖2,配置全局資源。單擊參數(shù)內(nèi)容方框里的下拉箭頭,選擇合適的參數(shù)值,便可以更改工程中默認的全局資源。此實驗配置的全局資源如圖所示。Global月中辛g苜Vdu?PowerSettingVcc/到,5lCM/24MHzCPU.Oock務(wù)心k/2Skep_Tinri&r512_H5VC1=SvsClk/N12VC2=k/Cl,N10VC3SoursvczVC3Divider100SvsCIkSourceIrtwialSysClkx2DisebieNaAralogPower5COn/RefLcwjRefMuK(Vdd/ZIt/BndGapAGndR
4、yg融DoableOp-AmpBi*LowA_Bufl_PorLowTupVoltageLVDJ.81V11LWDThfottleflackDisableWatchdogEnableDMb但圖全局資源配置3.按圖配置Timer8定時器模塊的參數(shù)zJUserModuleParameters:ValueClockVC3CaptureLowTerminalCountOUNoneCompareOut!NonejPeriod9Compare7alue0CompareTppeLessThanOrEqualIntersptTjpeTermin-elCountCbckSyric二川匕toGpsCIkTJFu屈
5、Wi時FullClockInveitCaplureNorrnall4 .按圖配置管腳驅(qū)動模式NamePortSelectDriveInterruptDisablelnldpP30SldCPUStronggP31SldCPUShorigDisatlelnt1P32SUdCPUSbongDisatlelnleP33StdCPUStrongDisablelntdP34StdCPUStrongDisatilelnteP35SUdCPUSbongDkabtelntbP36SldCPUStrongDisablelntJP3P1SldCPUShongDisable!ntLED_1P40SldCPUStron
6、gDrsatilelntLED_2P41SldCPUStrongDisablelnlLED_3P42SldCPUStrongDisablelnfLED_4P43SUdCPUStrongDisatlelnl圖管腳驅(qū)動模式的參數(shù)配置相應(yīng)的按5 .程實現(xiàn)3X4矩陣鍵盤掃描功能,將按下鍵的鍵值顯示在數(shù)碼管上鍵管腳配置如圖如示。NemeFortSelectDriyieInterruptcoLO-kev1P5(0SldCPUStrongDisaHelntGO|_1_kGy網(wǎng)ISUjCPLJStrongDisablelntcol_2_keyP叼SldCPUStrongDisjblelntNULLP5(3WE
7、CFUStrongDisablelntr(wj_0_kejJP利SLdCPUHigh2FallingEdgerowi1_ky咫5StdCFUHighZFallingEdgero<?_2_keyP5GlSldCPUHighZFalingEdgero心一keyP517StdCFUHighZFallingEdgePort_7_0P刖StdCPUHigh2上Disabldnt叼7SldCPUHigh2上DisdblelntJ按鍵管腳配置實驗程序:/文件名:main.c/#include<m8c.h>/partspecificconstantsandmacros#include&quo
8、t;PSoCAPI.h"/PSoCAPIdefinitionsforallUserModules#pragmainterrupt_handlerKeyScan#pragmainterrupt_handlertimer1_ISR/voidKeyScan();voiddelay10ms(unsignedchartime);voidDispaly(unsignedchark);unsignedcharkey=1,temp,stopCount;BYTEbyte_Period,byte_Duty;#defineDATAPRT3DR#defineSELPRT4DR#defineLED10b111
9、11110#defineLED20b11111101#defineLED30b11111011#defineLED40b11110111#definedp0b11111110#definesfb010#definesfb111#defineSTOP12#defineRESET13#defineCLOCK14#definesgp0_key0/*commonanodeLED,thereforetheLEDwilllightwhenthepinislow*/unsignedcharnum17=0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0x11
10、,0xc1,0x63,0x85,0x61,0x71,0xff;unsignedcharreg=0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0x11,0xc1,0x63,0x85,0x61,0x71,0xff;unsignedcharled1_dig=0,led2_dig=0,led3_dig=0,led4_dig=0;/分別是1,2,3,4數(shù)碼管現(xiàn)石的數(shù)unsignedcharled1=0,led2=0,led3=0,led4=0;/?/當(dāng)做緩存的數(shù),設(shè)置的時候用到。unsignedcharled_count=1;unsignedchar
11、led_dp=0,setnum=1;/setnum表示當(dāng)前設(shè)置的是第幾位unsignedcharflag0,flagl,i,j;/flag0設(shè)置當(dāng)前顯示的是時鐘還是設(shè)置的數(shù),flagl設(shè)置時鐘是停下來還是走unsignedintcount=0,dpcount=0;/count就是一個計數(shù)的,dpcount是專門針對秒鐘的點設(shè)置的計數(shù)的,根據(jù)實驗的要求要分開unsignedcharclock1,clock2,clock3,clock4;I*/voidtimer1_ISR()(.if(led_count=5)led_count=1;/從第一位開始dpcount+;if(flagl=0&&a
12、mp;count+=200)/*頻率是五十赫茲,要求四個數(shù)碼管都顯示一邊,乘以四,就是200*/(count=0;if(led4_dig+=9)/if函數(shù)設(shè)置進制的問題,考慮時間不是十進制,所以對每位分別設(shè)置(led4_dig=0;if(led3_dig+=5)(.led3_dig=0;if(led2_dig=3&&led1_dig=2|led2_dig=9)(一一led2_dig=0;if(led1_dig+=2)led1_dig=0;).elseled2_dig+;).)if(flag0=0)(led1=led1_dig;led2=led2_dig;led3=led3_di
13、g;led4=led4_dig;).switch(led_count)(.case 1:在設(shè)置的時候控制LED1燈滅高電平熄滅,低電平燈亮,sel就是設(shè)置if(setnum=1&&dpcount%200>99)/燈的閃爍,半秒時間亮半秒時間滅SEL=0xff&LED1,DATA=0xff;LED1點亮elseSEL=0xff&LED1,DATA=regled1;/LED1的地址,data就是置數(shù)break;case 2:if(setnum=2&&dpcount%200>99)SEL=0xff&LED2,DATA=0xff;el
14、seif(flag1|led_dp=2&&dpcount%200<100)SEL=0xff&LED2,DATA=regled2&dp;/秒鐘的點額外分配,elseSEL=0xff&LED2,DATA=regled2;break;case 3:if(setnum=3&&dpcount%200>99)SEL=0xff&LED3,DATA=0xff;elseSEL=0xff&LED3,DATA=regled3;break;case 4:if(setnum=4&&dpcount%200>99)SE
15、L=0xff&LED4,DATA=0xff;elseSEL=0xff&LED4,DATA=regled4;break;default:break;)+led_count;/設(shè)置的時候第幾位閃爍).voidKeyScan()/鍵盤中斷程序(PRT5DR=0b11111110;/assignp50=0temp=PRT5DR;temp&=0xF0;/if(temp!=0xF0)(delay10ms(1);temp=PRT5DR;temp&=0xF0;if(temp!=0xF0)(temp=PRT5DR;temp&=0xF0;switch(temp)(case0
16、X70:key=7;break;case0XB0:key=4;break;case0XD0:key=1;break;case0XE0:key=0;break;PRT5DR=0b11111101;assignp51=0temp=PRT5DR;temp&=0xF0;if(temp!=0xF0)(delay10ms(1);temp=PRT5DR;temp&=0xF0;if(temp!=0xF0)(temp=PRT5DR;temp&=0xF0;switch(temp)(case0x70:key=8;break;case0b10110000:key=5;break;case0b1
17、1010000:key=2;break;case0b11100000:key=sfb0;break;)/assignp52=0)PRT5DR=0b11111011;temp=PRT5DR;temp&=0xF0;if(temp!=0xF0)delay10ms(1);temp=PRT5DR;temp&=0xF0;if(temp!=0xF0)temp=PRT5DR;temp&=0xF0;switch(temp)case0x70:key=9;break;case0b10110000:key=6;break;case0b11010000:key=3;break;case0b111
18、00000:key=sfb1;break;)PRT5DR=0xf0;)延時函數(shù)voiddelay10ms(unsignedchartime)/unsignedchara,b,c;for(a=0;a<time;a+)for(b=0;b<10;b+)for(c=0;c<120;c+);voidReset()/選擇重置時間,內(nèi)容跟設(shè)置鬧鐘差不多(flag1=1;key=STOP;led1_dig=led2_dig=led3_dig=led4_dig=0;setnum=1;while(key!=sfb0)(if(key!=STOP)(if(key<3)led1_dig=key;
19、key=STOP;delay10ms(1);setnum=2;key=STOP;while(key!=sfb0)(if(key!=STOP)(if(key<4|key<10&&led1_dig<2)led2_dig=key;key=STOP;delay10ms(1);setnum=3;key=STOP;while(key!=sfb0)(if(key!=STOP)(if(key<6)led3_dig=key;key=STOP;)delay10ms(1);)setnum=4;key=STOP;while(key!=sfb0)if(key!=STOP)if(k
20、ey<10)led4_dig=key;key=STOP;)delay10ms(1);)setnum=0;count=0;key=1;flag1=0;/啟動開始計時)voidClockSet()flag0=1;key=CLOCK;led1=clock1;led2=clock2;led3=clock3;led4=clock4;setnum=1;while(key!=sfb0)設(shè)置第一個數(shù),if(key!=CLOCK)if(key<3)led1=key;key=CLOCK;)delay10ms(1);)key=CLOCK;setnum=2;while(key!=sfb0)if(key!=
21、CLOCK)(設(shè)置第二位當(dāng)?shù)谝晃坏扔趇f(key<4|key<10&&ledl<2)/2時,第二位小于4led2=key;key=CLOCK;delay10ms(1);key=CLOCK;setnum=3;while(key!=sfb0)(if(key!=CLOCK)(if(key<6)led3=key;key=CLOCK;delay10ms(1);key=CLOCK;setnum=4;while(key!=sfb0)(if(key!=CLOCK)(if(key<10)led4=key;key=CLOCK;delay10ms(1);key=1;se
22、tnum=0;clock1=led1;clock2=led2;clock3=led3;clock4=led4;flag0=0;voiddelay()/就是一個延時(BYTEtmp1,tmp2;for(tmp1=0;tmp1<255;tmp1+)for(tmp2=0;tmp2<255;tmp2+);)voidmain()(INT_MSK0=0x0;PRT5DR&=0xf0;PRT1DR=0x0f;PRT5IE=0xf0;INT_MSK0|=0x20;M8C_EnableGInt;stopCount=0;/1:停止計時0:正常計時setnum=0;/從左往右分別是第幾個數(shù)碼管Timer8_1_EnableInt();M8C_EnableGInt;Timer8_1_Start();/Timer8中斷開啟l
溫馨提示
- 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)生互評對提升表達能力的心得體會
- 商品混凝土攪拌站現(xiàn)場安全管理制度范文
- 大學(xué)生英語趣配音競賽計劃
- 檔案保管及管理機構(gòu)職責(zé)說明
- 小學(xué)美術(shù)教師藝術(shù)素養(yǎng)計劃
- 新人教版八年級歷史下冊教學(xué)計劃
- 幼兒美術(shù)教育實習(xí)總結(jié)范文
- 抗菌藥物合理使用管理工作流程
- 鄉(xiāng)鎮(zhèn)小學(xué)道德法治教學(xué)工作計劃
- 隧道工程文明施工管理體系與措施
- 食品供貨方案(完整版)
- 游梁式抽油機優(yōu)化設(shè)計 matlab
- 知名企業(yè)勝任力素質(zhì)詞典
- 成果s7-200smart系統(tǒng)手冊
- 湖北省中小學(xué)教師高級職稱專業(yè)水平能力測試模擬題(含(附答案))
- GB/T 32247-2015低溫鐵素體球墨鑄鐵件
- GB/T 22638.4-2008鋁箔試驗方法第4部分:表面潤濕張力的測定
- 立訊精密研究報告
- 陰道松弛癥的整復(fù)治療演示文稿
- 注塑行業(yè)MES系統(tǒng)解決方案
- 三下開采規(guī)范2019版
評論
0/150
提交評論