版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 《可調(diào)數(shù)字時(shí)鐘課程設(shè)計(jì)》</p><p><b> 課</b></p><p><b> 程</b></p><p><b> 設(shè)</b></p><p><b> 計(jì)</b></p><p> 課
2、 程: 單片機(jī)系統(tǒng)分析與調(diào)試 </p><p> 專 業(yè): 應(yīng)用電子技術(shù) </p><p> 班 級(jí): 電子1033班 </p><p> 姓 名: </p><p> 小組成員:
3、</p><p> 指導(dǎo)老師: </p><p> 2012 年 1 月 6 日</p><p><b> 設(shè)計(jì)任務(wù)</b></p><p> 設(shè)計(jì)一個(gè)8位顯示的電子鐘,有4個(gè)按鍵可進(jìn)行時(shí)鐘的調(diào)整,帶鬧鐘,具體要求如下。</p><p>
4、可以顯示時(shí)、分、秒。</p><p> 當(dāng)按下菜單鍵后,進(jìn)入時(shí)鐘調(diào)整狀態(tài),按下時(shí)調(diào)整按鍵,時(shí)值加1;按下分調(diào)整按鍵,分值加1;按下秒調(diào)整鍵后,秒加1。當(dāng)再次按下菜單按鍵時(shí),進(jìn)入鬧鐘調(diào)整狀態(tài),按下時(shí)調(diào)整按鍵,時(shí)值加1;按下分調(diào)整按鍵,分值加1;按下秒調(diào)整鍵后,秒加1。再次按下菜單鍵,電子時(shí)鐘進(jìn)入正常工作狀態(tài)。</p><p> 當(dāng)時(shí)鐘達(dá)到鬧鐘設(shè)定值時(shí),蜂鳴器發(fā)出“滴滴”響聲。</p
5、><p> 在正常狀態(tài)下,對(duì)時(shí)、分、秒調(diào)整按鍵不響應(yīng)。</p><p><b> 任務(wù)分析及方案制定</b></p><p><b> 顯示部分</b></p><p> 電子時(shí)鐘選用了8合1的共陰極數(shù)碼管,只需要向數(shù)碼管的段位端口發(fā)送要顯示的段碼并發(fā)送相應(yīng)的位碼就可以決定哪一位數(shù)碼管顯示字符。
6、在顯示方式上,采用動(dòng)態(tài)掃描顯示法。</p><p><b> 計(jì)時(shí)部分</b></p><p> 要使電子時(shí)鐘能精確的進(jìn)行計(jì)時(shí)顯示,則單片機(jī)系統(tǒng)內(nèi)部要求有一個(gè)精確的的時(shí)鐘信號(hào)發(fā)生器??梢詫纹瑱C(jī)中的定時(shí)器T0設(shè)置成50ms的定時(shí)器來(lái)實(shí)現(xiàn),每20次定時(shí)中斷結(jié)束,秒計(jì)數(shù)器加1;當(dāng)秒計(jì)數(shù)到60時(shí),秒計(jì)數(shù)器清零,分計(jì)數(shù)器加1;當(dāng)分計(jì)數(shù)到60時(shí),分計(jì)數(shù)器清零,時(shí)計(jì)數(shù)器加1;
7、當(dāng)時(shí)計(jì)數(shù)器到24時(shí),時(shí)計(jì)數(shù)器清零。</p><p><b> 鬧鐘部分</b></p><p> 能夠設(shè)置鬧鐘值,使蜂鳴器發(fā)出聲音。</p><p><b> 4、調(diào)整部分</b></p><p> 在調(diào)整狀態(tài)下,可以對(duì)時(shí)鐘,鬧鐘的時(shí)、分、秒值進(jìn)行加1處理。</p><p
8、><b> 三、硬件設(shè)計(jì)</b></p><p> 電路原理圖如下,段碼信息經(jīng)過(guò)74hc573驅(qū)動(dòng)后發(fā)送到8位數(shù)碼管段選端,同時(shí)位選信息經(jīng)過(guò)74hc138驅(qū)動(dòng)后發(fā)送到數(shù)碼管的位選端口。</p><p> 74LC573是8位同相三態(tài)雙向總線收發(fā)器,可雙向傳輸數(shù)據(jù),常用來(lái)驅(qū)動(dòng)LED或者其他電路。當(dāng)8051單片機(jī)的P0口總線負(fù)載達(dá)到或超過(guò)P0口最大負(fù)載能力時(shí),
9、必須接入74hc573等總線驅(qū)動(dòng)器加以信號(hào)驅(qū)動(dòng)。</p><p><b> 電路原理圖:</b></p><p><b> 電路仿真圖如下:</b></p><p><b> 軟件設(shè)計(jì)</b></p><p> P3.0口所接按鍵k1為菜單鍵,第一次按下為調(diào)時(shí)鐘狀態(tài),第
10、二次按下為調(diào)鬧鐘狀態(tài),P3.1、P3.2、P3.3分別為調(diào)時(shí)、調(diào)分、調(diào)秒鍵。</p><p><b> 程序結(jié)構(gòu)流程圖</b></p><p><b> 四、總結(jié)</b></p><p> 首先在做本次課程設(shè)計(jì)的過(guò)程中,我感觸最深的當(dāng)屬查閱大量的設(shè)計(jì)資料了。為了讓自己的設(shè)計(jì)更加完善,查閱這方面的設(shè)計(jì)資料是十分必要的,
11、同時(shí)也是必不可少的。 其次,在這次課程設(shè)計(jì)中,我們運(yùn)用到了以前所學(xué)的專業(yè)課知識(shí),如:C語(yǔ)言、模擬和數(shù)字電路知識(shí)等。雖然過(guò)去從未獨(dú)立應(yīng)用過(guò)它們,但在學(xué)習(xí)的過(guò)程中帶著問(wèn)題去學(xué)我發(fā)現(xiàn)效率很高,這是我做這次課程設(shè)計(jì)的又一收獲。 最后,在設(shè)計(jì)之前,我們要對(duì)所用單片機(jī)的內(nèi)部結(jié)構(gòu)有一個(gè)系統(tǒng)的了解,知道該單片機(jī)內(nèi)有哪些資源;要有一個(gè)清晰的思路和一個(gè)完整的軟件流程圖;在設(shè)計(jì)程序時(shí),不能妄想一次就將整個(gè)程序設(shè)計(jì)好,反復(fù)修改、不斷改進(jìn)是程序設(shè)計(jì)的
12、必經(jīng)之路;要養(yǎng)成注釋程序的好習(xí)慣,一個(gè)程序的完美與否不僅僅是實(shí)現(xiàn)功能,而應(yīng)該讓人一看就能明白你的思路,這樣也為資料的保存和交流提供了方便;在實(shí)習(xí)過(guò)程中遇到問(wèn)題是很正常的,但我們應(yīng)該將每次遇到的問(wèn)題記錄下來(lái),并分析清楚,以免下次再碰到同樣的問(wèn)題。但是從中學(xué)到的知識(shí)會(huì)讓我受益終身。發(fā)現(xiàn)、提出、分析、解決問(wèn)題和實(shí)踐能力提高都會(huì)受益于我在以后的學(xué)習(xí)、工作和生活中。</p><p><b> 附:程序</
13、b></p><p> #include"reg52.h"</p><p> sbit k1=P3^0; //定義P3.0口為菜單鍵k1</p><p> sbit k2=P3^1; //定義P3.1口為調(diào)時(shí)鍵k2</p><p> sbit k3=P3^2; //定義P3
14、.1口為調(diào)分鍵k3</p><p> sbit k4=P3^3; //定義P3.1口為調(diào)秒鍵k4</p><p> sbit P1_7=P1^7; //蜂鳴器接口</p><p> unsigned char code distab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
15、};//共陰數(shù)碼管斷碼0—9</p><p> unsigned char hour=12,minute=30,second; //定義時(shí)、分、秒為12—30—00</p><p> unsigned char hour1,minute1,second1; //鬧鐘時(shí)、分、秒</p><p> unsigned char count,m;
16、//全局變量 count計(jì)時(shí)變量,m菜單鍵被按下次數(shù)</p><p> void delay(int t) //延時(shí)子函數(shù)tS</p><p><b> {</b></p><p><b> int i,j;</b></p><p> for(i=0;i<t;i++)&
17、lt;/p><p><b> {</b></p><p> for(j=0;j<114;j++)</p><p><b> {;}</b></p><p><b> }</b></p><p><b> }</b><
18、;/p><p> void display() //顯示子函數(shù)</p><p><b> {</b></p><p><b> switch(m)</b></p><p><b> {</b></p><p> case 0:
19、 //菜單鍵未按下,正常顯示行時(shí)</p><p><b> {</b></p><p> TR0=1; //開(kāi)啟定時(shí)器</p><p> P2=0; //數(shù)碼管位碼</p><p> P0=distab[hour/10]; //顯示時(shí)十位</p>
20、;<p><b> delay(2);</b></p><p><b> P2=1;</b></p><p> P0=distab[hour%10]; //顯示時(shí)個(gè)位</p><p><b> delay(2);</b></p><p><
21、b> P2=2;</b></p><p> P0=0x40; //顯示—</p><p><b> delay(2);</b></p><p><b> P2=3;</b></p><p> P0=distab[minute/10]; //顯示分十位
22、</p><p><b> delay(2);</b></p><p><b> P2=4;</b></p><p> P0=distab[minute%10]; //顯示分個(gè)位</p><p><b> delay(2);</b></p><
23、;p><b> P2=5;</b></p><p> P0=0x40; //顯示—</p><p><b> delay(2);</b></p><p><b> P2=6;</b></p><p> P0=distab[second/10];
24、 //顯示秒十位</p><p><b> delay(2);</b></p><p><b> P2=7;</b></p><p> P0=distab[second%10]; //顯示秒個(gè)位</p><p><b> delay(2);</b></
25、p><p><b> }</b></p><p><b> break;</b></p><p> case 1: //菜單鍵按下一次,顯示調(diào)時(shí)</p><p><b> {</b></p><p><b> P2=0;
26、</b></p><p> P0=distab[hour/10];</p><p><b> delay(2);</b></p><p><b> P2=1;</b></p><p> P0=distab[hour%10];</p><p><b&g
27、t; delay(2);</b></p><p><b> P2=3;</b></p><p> P0=distab[minute/10];</p><p><b> delay(2);</b></p><p><b> P2=4;</b></p&g
28、t;<p> P0=distab[minute%10];</p><p><b> delay(2);</b></p><p><b> P2=6;</b></p><p> P0=distab[second/10];</p><p><b> delay(2);&
29、lt;/b></p><p><b> P2=7;</b></p><p> P0=distab[second%10];</p><p><b> delay(2);</b></p><p><b> }</b></p><p> bre
30、ak; </p><p> case 2: //菜單鍵第二次按下,顯示調(diào)鬧鐘</p><p><b> {</b></p><p> TR0=0; //關(guān)閉定時(shí)器</p><p><b> P2=0;</b></p>&
31、lt;p> P0=distab[hour1/10];</p><p><b> delay(2);</b></p><p><b> P2=1;</b></p><p> P0=distab[hour1%10];</p><p><b> delay(2);</b&g
32、t;</p><p><b> P2=2;</b></p><p><b> P0=0x40;</b></p><p><b> delay(2);</b></p><p><b> P2=3;</b></p><p>
33、P0=distab[minute1/10];</p><p><b> delay(2);</b></p><p><b> P2=4;</b></p><p> P0=distab[minute1%10];</p><p><b> delay(2);</b><
34、/p><p><b> P2=5;</b></p><p><b> P0=0x40;</b></p><p><b> delay(2);</b></p><p><b> P2=6;</b></p><p> P0=dis
35、tab[second1/10];</p><p><b> delay(2);</b></p><p><b> P2=7;</b></p><p> P0=distab[second1%10];</p><p><b> delay(2);</b></p>
36、<p><b> }</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> void timer0_int() //
37、中斷初始化程序</p><p><b> {</b></p><p> TMOD=0x01; //采用中斷方式1</p><p> TH0=0x3c; //寫(xiě)入數(shù)據(jù)</p><p> TL0=0xb0; //50ms中斷一次</p><
38、;p> ET0=1; //允許定時(shí)器中斷</p><p> EA=1; //打開(kāi)總中斷</p><p> TR0=1; //開(kāi)啟定時(shí)器</p><p><b> }</b></p><p> void timer0() interrupt
39、1 using 1 //中斷服務(wù)程序(定時(shí))</p><p><b> {</b></p><p> count++; </p><p> if(count==20) //中斷20次后,即1秒。</p><p><b> {</b></p
40、><p> count=0; //歸零</p><p> second++; //秒加1</p><p> if(second==60) //當(dāng)秒達(dá)到60后</p><p><b> {</b></p><p> second=0;
41、 //秒歸零</p><p> minute++; //分加1</p><p> if(minute==60) //當(dāng)分達(dá)到60后</p><p><b> {</b></p><p> minute=0; //分歸零</p><p>
42、 hour++; //時(shí)加1</p><p> if(hour==24) //當(dāng)達(dá)到24小時(shí)后</p><p><b> {</b></p><p> hour=0; //時(shí)歸零</p><p><b> }</b></p><p
43、><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> if(hour1=hour&&minute1==minute&&second1<10) //如果鬧鐘值與時(shí)鐘值相等,蜂鳴器蜂鳴1
44、分鐘</p><p><b> {</b></p><p> display();</p><p> P1_7=!P1_7;</p><p><b> delay(5);</b></p><p><b> }</b></p>&
45、lt;p><b> }</b></p><p> void keyscan() //按鍵掃描子程序</p><p><b> {</b></p><p> if(k1==0) //菜單鍵k1去抖</p><p><b> {<
46、;/b></p><p> delay(10); </p><p> if(k1==0) //菜單鍵是否按下</p><p><b> {</b></p><p> m++;if(m==3)m=0; //記錄按下次數(shù),3次后歸零</p>&
47、lt;p><b> }</b></p><p> while(!k1); //k1是否放開(kāi)</p><p><b> }</b></p><p><b> if(m!=0)</b></p><p><b> {</b>&
48、lt;/p><p><b> switch(m)</b></p><p><b> {</b></p><p> case 1: //第一次按下菜單鍵,進(jìn)入時(shí)間調(diào)整狀態(tài)</p><p> if(k2==0) //時(shí)調(diào)整鍵去抖</p><p
49、><b> {</b></p><p> delay(80);</p><p> if(k2==0) //時(shí)調(diào)整鍵是否按下</p><p><b> {</b></p><p> hour++;if(hour==24)hour=0; //時(shí)自加,到24后歸零&l
50、t;/p><p><b> }</b></p><p><b> }</b></p><p> if(k3==0) //分調(diào)整鍵去抖</p><p><b> {</b></p><p> delay(80);</p>
51、<p> if(k3==0) //分調(diào)整鍵是否按下</p><p><b> {</b></p><p> minute++;if(minute==60)minute=0;//分自加,到60后歸零</p><p><b> }</b></p><p><b
52、> }</b></p><p> if(k4==0) //秒調(diào)整鍵去抖</p><p><b> {</b></p><p> delay(80);</p><p> if(k4==0) //秒調(diào)整鍵是否按下</p><p><b
53、> {</b></p><p> second++;if(second==60)second=0;//秒自加,到60后歸零</p><p><b> }</b></p><p><b> }</b></p><p><b> break;</b>&l
54、t;/p><p> case 2://第二次按下菜單鍵,進(jìn)入鬧鐘調(diào)整狀態(tài)</p><p> if(k2==0)//時(shí)調(diào)整鍵去抖</p><p><b> {</b></p><p> delay(80);</p><p> if(k2==0)/
55、/時(shí)調(diào)整鍵是否按下</p><p><b> {</b></p><p> hour1++;if(hour1==24)hour1=0;//時(shí)自加,到24后歸零</p><p><b> }</b></p><p><b> }</b></p><p
56、> if(k3==0)//分調(diào)整鍵去抖</p><p><b> {</b></p><p> delay(80);</p><p> if(k3==0)//分調(diào)整鍵是否按下</p><p><b> {</b></p><p>
57、 minute1++;if(minute1==60)minute1=0;//分自加,到60后歸零</p><p><b> }</b></p><p> }//秒調(diào)整鍵去抖</p><p><b> if(k4==0)</b></p><p><b> {&l
58、t;/b></p><p> delay(80);</p><p> if(k4==0)//秒調(diào)整鍵是否按下</p><p><b> {</b></p><p> second1++;if(second1==60)second1=0;//秒自加,到60后歸零</p><p
59、><b> }</b></p><p><b> }</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p
60、><b> }</b></p><p> void main()//主函數(shù)</p><p><b> {</b></p><p> timer0_int();//調(diào)入中斷初始化子程序</p><p> while(1)//主
61、循環(huán)</p><p><b> {</b></p><p> keyscan();//調(diào)入按鍵掃描子程序</p><p> display();//調(diào)入顯示子程序</p><p><b> }</b></p><p><b&g
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)字時(shí)鐘課程設(shè)計(jì)
- 課程設(shè)計(jì)--數(shù)字時(shí)鐘
- 數(shù)字時(shí)鐘課程設(shè)計(jì)
- 數(shù)字時(shí)鐘課程設(shè)計(jì)
- 數(shù)字時(shí)鐘課程設(shè)計(jì)
- 數(shù)字時(shí)鐘課程設(shè)計(jì)
- 數(shù)字電子課程設(shè)計(jì)--數(shù)字時(shí)鐘
- 數(shù)字邏輯課程設(shè)計(jì)---數(shù)字時(shí)鐘
- eda數(shù)字時(shí)鐘課程設(shè)計(jì)
- eda數(shù)字時(shí)鐘課程設(shè)計(jì)
- 數(shù)字時(shí)鐘課程設(shè)計(jì)報(bào)告
- 數(shù)字時(shí)鐘課程設(shè)計(jì)論文
- 數(shù)字時(shí)鐘課程設(shè)計(jì)報(bào)告
- 數(shù)字時(shí)鐘課程設(shè)計(jì)報(bào)告
- 數(shù)字時(shí)鐘課程設(shè)計(jì)3
- 數(shù)字時(shí)鐘課程設(shè)計(jì)報(bào)告
- 數(shù)字時(shí)鐘課程設(shè)計(jì)--數(shù)字時(shí)鐘的設(shè)計(jì)與制作
- 簡(jiǎn)易數(shù)字時(shí)鐘課程設(shè)計(jì)
- 數(shù)字時(shí)鐘課程設(shè)計(jì)報(bào)告
- 數(shù)字時(shí)鐘課程設(shè)計(jì)全文
評(píng)論
0/150
提交評(píng)論