




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、電子裝配工藝專業(yè):應(yīng)用電子技術(shù) 班級:1547 姓名:李苗 學(xué)號:1230302154715秒表的設(shè)計與工程實現(xiàn)一 單片機(jī)系統(tǒng)設(shè)計方案描述 系統(tǒng)設(shè)計基本指標(biāo): 1.實現(xiàn)最大時間長度超過5分鐘的正常倒計時 2.可以在5分鐘范圍內(nèi)自由方面設(shè)置秒表的開始時間 3.進(jìn)入最后一分鐘時,三聲蜂鳴器響提示 4.秒表計時到,五聲蜂鳴器響,同時小燈亮提示 電子工程訓(xùn)練是一個綜合性實驗。秒表系統(tǒng)設(shè)計總體上分為硬件設(shè)計和軟件設(shè)計兩個部分,并要充分考慮它們的匹配設(shè)計。硬件設(shè)計特別是引腳的配置要充分考慮軟件實現(xiàn)的需要,反過來,軟件設(shè)計也要建立在硬件的
2、基礎(chǔ)上,并且充分利用硬件提供的資源。 硬件電路大體上可分為最小系統(tǒng)板電路、數(shù)碼管顯示電路和按鍵電路。最小系統(tǒng)板電路和數(shù)碼管顯示電路在老師指導(dǎo)下很快得以完成。按鍵電路為充分考慮以后軟件設(shè)計的靈活性和可擴(kuò)展形,采用了排線將引腳引出。 軟件設(shè)計上,為方便秒表的操作使用,設(shè)置了“修改”、“增加”、“移位”和“開始/暫停”四個按鍵功能。“修改”鍵按下,進(jìn)入修改狀態(tài),相應(yīng)的修改位閃爍,提示按“增加”鍵修改該位時間參數(shù),操作“移位“按鍵可以移動修改位?!伴_始暫?!眲t用于秒表的開始運行和暫停運行。 按鍵處理通常有查詢和中斷兩種方式處理,查詢占用較多的單片機(jī)運行資源,而且延遲防抖效
3、果較差,容易多次觸發(fā),而中斷方式消抖則操作更為靈敏。同時考慮到AT89S52只有兩個外部中斷,將使用較多的“增加”和“開始/暫?!眱蓚€按鍵處理分配給兩個外部中斷。另外兩個按鍵則采用查詢方式檢測處理。 軟件設(shè)計整體上利用了“有限狀態(tài)機(jī)”的思想,按鍵控制狀態(tài)的轉(zhuǎn)換,并在相應(yīng)的狀態(tài)下執(zhí)行相應(yīng)的操作。一共設(shè)置了3個狀態(tài):state=0(暫停狀態(tài)),state=1(開始運行狀態(tài)),state=2(修改狀態(tài)),它們的相互轉(zhuǎn)化如下:由于本人之前接觸過一些仿真軟件Proteus的知識,而本系統(tǒng)設(shè)計所需要的單片機(jī)、按鍵、數(shù)碼管、蜂鳴器等硬件均可在Proteus得到仿真。在程序的編寫調(diào)試過程中,可以完全
4、脫離硬件,高效率的完成了程序的編寫調(diào)試。 2 硬件原理圖(電路原理圖、硬件仿真圖) Proteus仿真圖 三系統(tǒng)流程圖: 1.主程序流程圖2. 修改狀態(tài)數(shù)據(jù)操作和數(shù)碼管顯示 3. 開始狀態(tài)的數(shù)碼管顯示 4暫停狀態(tài)的數(shù)碼管顯示較為簡單,根據(jù)保留的時間參數(shù),刷新數(shù)碼管,保持剛才的時間顯示。 5中斷INT0修改時間的流程圖6中斷INT1開始與暫停狀態(tài)的切換,程序較為簡單,按鍵觸發(fā)時,在state為1(開始狀態(tài))和state為0(暫停狀態(tài))來回切換&
5、#160;4、 程序 四、程序 #include<reg51.h> #define ulong unsigned long char tab=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xd8,0x80,0x90; char tab_dp=0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x58,0x00,0x10; #define LED P0
6、 /P0為數(shù)碼管的段選 #define WS P1 /P1為數(shù)碼管的位選 sbit time_shift=P30; /P30為"移位"按鍵 sbit time_set=P31; /P31為"修改"按鍵 sbit set_inc=P32; /P32為"增加"按鍵 sbit time_run=P33
7、; /P33為"計時開始暫停"按鍵 sbit LIGHT=P20; sbit SPEAKER=P27; unsigned char sec,min,sec_ge,sec_shi,min_ge,min_shi,t; /定義秒,分,時,秒的個位,十位,分的個位,十位 int state; /秒表狀態(tài)指示 0-計時暫停 1-正在倒計時 2-計時時間參數(shù)修改
8、60;int flag; /秒表修改數(shù)據(jù)指示 0-分鐘十位 1-分鐘個位 2-秒鐘十位 3-秒鐘個位 int blink; /- void init(); void display_run(); void display_pause(); void delay(int); void time_modify(); /-
9、;void main() init(); state=0; flag=0; blink=1; t=0; LIGHT=1; SPEAKER=1; min=5; sec=0; sec_ge=0; /秒的個位和十位 sec_shi=0;
10、min_ge=5; /分的個位和十位 min_shi=0; while(1) if(time_set=0) /如果"調(diào)時"按鍵按下
11、160; delay(5); /延時去抖 if(time_set=0) state=2; if(state=0) TR0
12、=0; TR1=0; display_pause(); if(state=1) TR0=1; TR1=0; displa
13、y_run(); if(state=2) TR1=1; time_modify(); /- void init() TMOD=0x11; EA=1;
14、 /開總中斷 ET0=0; ET1=0; /定義定時器0工定時器1作與方式1 TH0=0x4d; /定時器0賦初值
15、60;TL0=oxfc; TH1=15536/256; /定時器1賦初值 TL1=15536%256; /中斷初始化 EX0=1; PX0=0; IT0=1; EX1=1; PX1=1; IT1=1;
16、 /外中斷1 void INT_1() interrupt 2 using 0 if( time_run=0)/表示按鈕有按下 delay(20); /延時 if(time_run=0) state=(state+1)%2; LIG
17、HT=1; SPEAKER=1; /外中斷0 void INT_0() interrupt 0 using 1 if( set_inc=0)/表示按鈕有按下 delay(20); /延時去抖 &
18、#160; if(set_inc=0) switch(flag) /分支結(jié)構(gòu),根據(jù)flag的值來判斷哪一位加1 case 0:
19、160; min=(min+10)%60; break;
20、0; case 1: min=(min+1)%10+min/10*10; break;
21、60; case 2: sec=(sec+10)%60; break;
22、; case 3: sec=(sec+1)%10+sec/10*10;
23、0; break; default:break; /-延時子函數(shù)- void de
24、lay(int x) int i,j; for(i=x;i>0l;i-) for(j=255;j>0;j-) /-顯示子函數(shù)- void display_run() if(TF0=1) /如果定時器溢出
25、; TF0=0; /清中斷標(biāo)志位 t+; if(t=20) t=0; if(min=0&&sec=0) min=60;
26、 if(sec=0) sec=59; min-; else sec-; if(min=0&
27、;&sec>56) SPEAKER=0; delay(20); SPEAKER=1; if(min=0&&sec=0) LIGHT=0;delay(20); SP
28、EAKER=1; delay(240); SPEAKER=0; delay(20); SPEAKER=1; delay(240); SPEAKER=0; delay(20);
29、0; SPEAKER=1; delay(240); SPEAKER=0; delay(20); SPEAKER=1; state=4; min=5;/回歸初始化 sec=0
30、; sec_ge=0; /秒的個位和十位 sec_shi=0; min_ge=5; /分的個位和十位
31、60; min_shi=0; sec_ge=sec%10; /秒的個位和十位 sec_shi=sec/10; min_ge=min%10; /分的個位和十位 min_shi=min/10; WS=0xfe; /循環(huán)掃描
32、160;LED=tabsec_ge; delay(1); WS=0xfd; LED=tabsec_shi; delay(1); WS=0xfb; LED=tab_dpmin_ge; delay(1); WS=0xf7; LED=tabmin_shi; delay(1); void display_pause()
33、 WS=0xfe; /循環(huán)掃描 LED=tabsec_ge; delay(1); WS=0xfd; LED=tabsec_shi; delay(1); WS=0xfb; LED=tab_dpmin_ge; delay(1); WS=0xf7; LED=tabmin_shi; delay(1);
34、0; void time_modify() /修改位的閃爍狀態(tài) if(TF1=1) TF1=0; blink=(blink+1)%2; /修改具體哪個數(shù)碼管指示
35、; if(time_shift=0) delay(60); if(time_shift=0) flag=
36、(flag+1)%4; / 修改狀態(tài)下的數(shù)碼管顯示 switch(flag) /分支結(jié)構(gòu),根據(jù)flag的值來決定掃描狀態(tài) case 0:
37、0; sec_ge=sec%10; /秒的個位和十位 sec_shi=sec/10;
38、60; min_ge=min%10; /分的個位和十位 min_shi=min/10; WS=0xfe; /循環(huán)掃描 &
39、#160; LED=tabsec_ge; delay(1); WS=0xfd; LED=tabsec_shi;
40、60; delay(1); WS=0xfb; LED=tab_dpmin_ge;
41、; delay(1); if(blink=1) WS=0xf7; L
42、ED=tabmin_shi; delay(1); break; &
43、#160; case 1: sec_ge=sec%10; /秒的個位和十位
44、60;sec_shi=sec/10; min_ge=min%10; /分的個位和十位 min_shi=min/10; WS=0xfe;
45、60; /循環(huán)掃描 LED=tabsec_ge; delay(1); WS=0xfd;
46、60; LED=tabsec_shi; delay(1); if(blink=1) WS=0xfb;
47、160; LED=tab_dpmin_ge; delay(1); WS=0xf7;
48、0; LED=tabmin_shi; delay(1); break; case 2:
49、0; sec_ge=sec%10; /秒的個位和十位 sec_shi=sec/10;
50、60;min_ge=min%10; /分的個位和十位 min_shi=min/10; WS=0xfe; /循環(huán)掃描 L
51、ED=tabsec_ge; delay(1); if(blink=1) WS=0xfd; L
52、ED=tabsec_shi; delay(1); WS=0xfb; LED=tab_dpmin_ge;
53、 delay(1); WS=0xf7; LED=tabmin_shi; delay(1); &
54、#160; break; case 3: sec_ge=sec%10; /秒的個位和十位 sec_shi=sec/10; min_ge=min%
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年現(xiàn)代制造業(yè)人才培養(yǎng)考試試卷及答案
- 2025年網(wǎng)絡(luò)技術(shù)應(yīng)用考試卷及答案
- 2025年衛(wèi)生信息管理??齐A段考試試題及答案
- 2025年模具設(shè)計工程師考試試題及答案反饋
- 2025年翻譯專業(yè)資格考試試題及答案
- 2025年肥料學(xué)與土壤學(xué)基礎(chǔ)考試試題及答案
- 2025年互聯(lián)網(wǎng)金融專業(yè)考試試題及答案
- 2025年國際經(jīng)濟(jì)與貿(mào)易專業(yè)綜合素質(zhì)考試卷及答案
- 2025年公共管理與政策考試試卷及答案
- 林產(chǎn)品產(chǎn)銷戰(zhàn)略合作協(xié)議
- 高三二模作文“認(rèn)清客觀現(xiàn)實”與“安撫自己心理”審題立意及范文
- 《不斷變化的人口問題》核心素養(yǎng)目標(biāo)教學(xué)設(shè)計、教材分析與教學(xué)反思-2023-2024學(xué)年初中歷史與社會人教版新課程標(biāo)準(zhǔn)
- 血液透析惡心嘔吐的應(yīng)急預(yù)案
- 物流倉儲中心項目建設(shè)背景和必要性
- 安徽省渦陽縣2023-2024學(xué)年七年級下學(xué)期期中考試語文試題
- 藝術(shù)設(shè)計專業(yè)面試問題
- 廣東省深圳市龍華區(qū)2023-2024學(xué)年二年級下學(xué)期期中數(shù)學(xué)試題
- 小學(xué)科學(xué)湘科版六年級下冊全冊同步練習(xí)含答案
- (2024年)傳染病培訓(xùn)課件
- 公車拍賣拍賣工作方案
- 幼兒園大班教案《娃哈哈》含反思
評論
0/150
提交評論