版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 單機(jī)微機(jī)原理與接口技術(shù)課程設(shè)計實(shí)驗(yàn)報告</p><p><b> 一、課程設(shè)計目的</b></p><p> (1)鞏固、加深和擴(kuò)大單片機(jī)應(yīng)用的知識面,提高綜合及靈活運(yùn)用所學(xué)知識解決工業(yè)控制的能力;</p><p> (2)培養(yǎng)針對課題需要,選擇和查閱有關(guān)手冊、圖表及文獻(xiàn)資料的自學(xué)能力,提高組成系統(tǒng)、編程、調(diào)試的動手
2、能力;</p><p> (3)過對課題設(shè)計方案的分析、選擇、比較、熟悉單片機(jī)用系統(tǒng)開發(fā)、研制的過程,軟硬件設(shè)計的方法、內(nèi)容及步驟。</p><p> 二、課程設(shè)計實(shí)現(xiàn)的功能</p><p><b> 1、功能說明</b></p><p> ?。?)本電子鐘可以顯示當(dāng)前時刻、年月日和鬧鐘時刻。不同時間的顯示可以用k
3、ey4來切換。</p><p> (2)獨(dú)立鍵盤key1-key4(左到右)調(diào)節(jié)不同功能,7段數(shù)碼管顯示。</p><p> (3) 鬧鈴功能:本程序有鬧鈴功能,當(dāng)定時時間到時,鬧鈴會滴滴滴報警,報警30秒</p><p> ?。?)時、分、秒之間和年、月、日之間也是用“.”分割。</p><p><b> 2、鍵盤控制<
4、;/b></p><p> ?。?)key1-鍵移動調(diào)整單位,每按一次移動一個單位,可調(diào)整時分秒、年月日和鬧鐘時間。比如:在顯示時分秒時,按下key1鍵,可通過key2和key3對‘秒’加減;再按一下key1,可對‘分’加減;再按一下key1,可對‘時’加減;再按key1,時間開始走動</p><p> (2)key2-加1;key3-減1;</p><p>
5、; ?。?)key4-鍵切換時分秒、年月日和鬧鈴時間的顯示。比如:當(dāng)前為時分秒,按一下key4,則顯示年月;再按一下,則顯示鬧鈴時間;再按一下,則顯示時分秒時間。 </p><p><b> 三、硬件結(jié)構(gòu)概括</b></p><p><b> ?。ㄒ唬?fù)位電路</b></p><p> 單片機(jī)復(fù)位的條件是:必須使R
6、ST/VPD 或RST引(9)加上持續(xù)兩個機(jī)器周期(即24個振蕩周期)的高電平。例如,若時鐘頻率為12 MHz,每機(jī)器周期為1μs,則只需2μs以上時間的高電平,在RST引腳出現(xiàn)高電平后的第二個機(jī)器周期執(zhí)行復(fù)位。單片機(jī)常見的復(fù)位如圖所示。電路為上電復(fù)位電路,它是利用電容充電來實(shí)現(xiàn)的。在接電瞬間,RESET端的電位與VCC相同,隨著充電電流的減少,RESET的電位逐漸下降。只要保證RESET為高電平的時間大于兩個機(jī)器周期,便能正常復(fù)位。該
7、電路除具有上電復(fù)位功能外,若要復(fù)位,只需按圖中的RESET鍵,此時電源VCC經(jīng)電阻R1、R2分壓,在RESET端產(chǎn)生一個復(fù)位高電平</p><p><b> ?。ǘ┚д耠娐?lt;/b></p><p><b> ?。ㄈ┌存I電路</b></p><p><b> ?。ㄋ模╋@示部分</b></p&g
8、t;<p><b> ?。ㄎ澹?整體電路圖</b></p><p><b> 四、軟件結(jié)構(gòu)概述</b></p><p><b> (1)代碼說明</b></p><p> // ****************************************************
9、//</p><p> //設(shè)計項(xiàng)目:帶鬧鈴的電子鐘 (梁紹科 林望桐)</p><p> //功能: key1-鍵:開始/調(diào)時分秒/調(diào)年月日/調(diào)定時</p><p> // key2-鍵:加1</p><p> // key3-鍵:減1</p><p> // key
10、4-鍵:切換頁面</p><p> //****************************************************//</p><p> #include<reg52.h></p><p> #define uchar unsigned char</p><p> #define uint u
11、nsigned int</p><p> //sbit dula=P2^6;</p><p> //sbit wela=P2^7;</p><p> sbit key1=P3^4;</p><p> sbit key2=P3^5;</p><p> sbit key3=P3^6;</p><
12、;p> sbit key4=P3^7;</p><p> sbit bear=P3^2;</p><p> uchar code table[]={0x3f,0x06,0x5b,0x4f,</p><p> 0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,</p><p>
13、0x79,0x71};</p><p> uchar sec1,min1,hour1,year1,mon1,day1,temp1,temp2,sec2,min2,hour2;</p><p> void keyscan();</p><p> void display(uchar hour,uchar min,uchar sec);</p>&l
14、t;p> void delay(uint z)</p><p><b> {</b></p><p><b> uint x,y;</b></p><p> for(x=0;x<z;x++)</p><p> for(y=0;y<110;y++);</p>
15、<p><b> }</b></p><p> //***************************************//</p><p> //初始化及數(shù)碼管顯示(林望桐負(fù)責(zé))</p><p> //***************************************//</p><
16、p> void init()</p><p><b> {</b></p><p> TMOD=0X02;</p><p><b> TH0=6;</b></p><p><b> TL0=6;</b></p><p><b>
17、 EA=1;</b></p><p><b> ET0=1;</b></p><p><b> TR0=1;</b></p><p><b> hour1=15;</b></p><p><b> min1=59; </b></
18、p><p><b> sec1=57;</b></p><p><b> year1=11;</b></p><p><b> mon1=12;</b></p><p><b> day1=24;</b></p><p><
19、;b> }</b></p><p> void display(uchar hour,uchar min,uchar sec)</p><p><b> {</b></p><p> uchar s1,s2,m1,m2,h1,h2;</p><p> s2=sec/10;</p>
20、<p> s1=sec%10;</p><p> m2=min/10;</p><p> m1=min%10;</p><p> h2=hour/10;</p><p> h1=hour%10;</p><p> // dula=1;</p><p> P1=ta
21、ble[h2];</p><p> //dula=0;</p><p><b> P2=0XFF;</b></p><p> //wela=1;</p><p><b> P2=0XFE;</b></p><p><b> delay(1);</
22、b></p><p> // dula=1;</p><p> P1=table[h1]+0x80;</p><p> //dula=0;</p><p><b> P2=0XFF;</b></p><p> //wela=1;</p><p>&
23、lt;b> P2=0XFd;</b></p><p><b> delay(1);</b></p><p> //dula=1;</p><p> P1=table[m2];</p><p> //dula=0;</p><p><b> P2=0XFF
24、;</b></p><p> //wela=1;</p><p><b> P2=0XFb;</b></p><p><b> delay(1);</b></p><p> //dula=1;</p><p> P1=table[m1]+0x80;&
25、lt;/p><p> //dula=0;</p><p><b> P2=0XFF;</b></p><p> //wela=1;</p><p><b> P2=0XF7;</b></p><p><b> delay(1);</b><
26、/p><p> //dula=1;</p><p> P1=table[s2];</p><p> //dula=0;</p><p><b> P2=0XFf;</b></p><p> //wela=1;</p><p><b> P2=0Xef
27、;</b></p><p><b> delay(1);</b></p><p> //dula=1;</p><p> P1=table[s1];</p><p> //dula=0;</p><p><b> P2=0XFF;</b></p
28、><p> //wela=1;</p><p><b> P2=0Xdf;</b></p><p><b> delay(1);</b></p><p><b> }</b></p><p> //************************
29、***************//</p><p> //***************************************//</p><p> //按鍵掃描(梁紹科負(fù)責(zé))</p><p> //***************************************//</p><p> void keyscan
30、()</p><p><b> {</b></p><p> if(key1==0)</p><p><b> {</b></p><p> delay(10);</p><p> if(key1==0)</p><p><b>
31、 {</b></p><p><b> //TR0=0;</b></p><p><b> temp1++;</b></p><p> if(temp1==4)</p><p><b> {</b></p><p><b>
32、 temp1=0;</b></p><p><b> TR0=1;</b></p><p><b> }</b></p><p> while(!key1)</p><p> switch(temp2)</p><p><b> {</
33、b></p><p> case 0:display(hour1,min1,sec1);break;</p><p> case 1:display(year1,mon1,day1);break;</p><p> case 2:display(hour2,min2,sec2);break;</p><p><b>
34、}</b></p><p><b> }</b></p><p><b> }</b></p><p> if(key2==0)</p><p><b> {</b></p><p> delay(10);</p>&
35、lt;p> if(key2==0)</p><p><b> {</b></p><p> if(temp2==0)</p><p><b> {TR0=0;</b></p><p> switch(temp1)</p><p><b> {&l
36、t;/b></p><p> case 1:sec1++;if(sec1==60)sec1=0;break;</p><p> case 2:min1++;if(min1==60)min1=0;break;</p><p> case 3:hour1++;if(hour1==24)hour1=0;break;</p><p>&l
37、t;b> }</b></p><p> while(!key2)</p><p> display(hour1,min1,sec1);</p><p><b> }</b></p><p> if(temp2==1)</p><p><b> {TR0=1
38、;</b></p><p> switch(temp1)</p><p><b> {</b></p><p> case 1:day1++;if(day1==32)day1=1;break;</p><p> case 2:mon1++;if(mon1==13)mon1=1;break;</p
39、><p> case 3:year1++;if(year1==100)year1=0;break;</p><p><b> }</b></p><p> while(!key2)</p><p> display(year1,mon1,day1);</p><p><b> }&
40、lt;/b></p><p> if(temp2==2)</p><p><b> {TR0=1;</b></p><p> switch(temp1)</p><p><b> {</b></p><p> case 1:sec2++;if(sec2==6
41、0)sec2=0;break;</p><p> case 2:min2++;if(min2==60)min2=0;break;</p><p> case 3:hour2++;if(hour2==24)hour2=0;break;</p><p><b> }</b></p><p> while(!key2)
42、</p><p> display(hour2,min2,sec2);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> if(key3==0)</p>
43、;<p><b> {</b></p><p> delay(10);</p><p> if(key3==0)</p><p><b> {</b></p><p> if(temp2==0)</p><p><b> {TR0=0;&
44、lt;/b></p><p> switch(temp1)</p><p><b> {</b></p><p> case 1:if(sec1==0)sec1=60;sec1--;break;</p><p> case 2:if(min1==0)min1=60;min1--;break;</p&g
45、t;<p> case 3:if(hour1==0)hour1=24;hour1--;break;</p><p><b> }</b></p><p> while(!key3)</p><p> display(hour1,min1,sec1);</p><p><b> }<
46、/b></p><p> if(temp2==1)</p><p><b> {TR0=1;</b></p><p> switch(temp1)</p><p><b> {</b></p><p> case 1:if(day1==1)day1=32;d
47、ay1--;break;</p><p> case 2:if(mon1==1)mon1=13;mon1--;break;</p><p> case 3:if(year1==0)year1=100;year1--;break;</p><p><b> }</b></p><p> while(!key3)&l
48、t;/p><p> display(year1,mon1,day1);</p><p><b> }</b></p><p> if(temp2==2)</p><p><b> {TR0=1;</b></p><p> switch(temp1)</p>
49、<p><b> {</b></p><p> case 1:if(sec2==0)sec2=60;sec2--;break;</p><p> case 2:if(min2==0)min2=60;min2--;break;</p><p> case 3:if(hour2==0)hour2=24;hour2--;brea
50、k;</p><p><b> }</b></p><p> while(!key3)</p><p> display(hour2,min2,sec2);</p><p><b> }</b></p><p><b> }</b></p
51、><p><b> }</b></p><p> if(key4==0)</p><p><b> {</b></p><p> delay(10);</p><p> if(key4==0)</p><p><b> {</b
52、></p><p><b> temp1=0;</b></p><p><b> temp2++;</b></p><p> if(temp2==3)</p><p><b> temp2=0;</b></p><p> while(!k
53、ey4)</p><p> switch(temp2)</p><p><b> {</b></p><p> case 0:display(hour1,min1,sec1);break;</p><p> case 1:display(year1,mon1,day1);break;</p><
54、;p> case 2:display(hour2,min2,sec2);break;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> switch(temp2)</p>
55、;<p><b> {</b></p><p> case 0:display(hour1,min1,sec1);break;</p><p> case 1:display(year1,mon1,day1);break;</p><p> case 2:display(hour2,min2,sec2);break;<
56、;/p><p><b> }</b></p><p><b> }</b></p><p> //***************************************//</p><p> //***************************************//</
57、p><p> //發(fā)聲子程序 (林望桐負(fù)責(zé))</p><p> //***************************************//</p><p> void Music(uchar t) </p><p><b> { </b></p><p> uchar i,j;
58、</p><p> for(i=0;i<200;i++) </p><p><b> { </b></p><p> bear=~bear; </p><p> for(j=0;j<t;j++); //由參數(shù)t行成不同的頻率 </p><p><b> }
59、</b></p><p><b> } </b></p><p> //***************************************//</p><p> //***************************************//</p><p> //鬧鐘功能(梁紹科負(fù)
60、責(zé))</p><p> //***************************************//</p><p> void alarm()</p><p><b> {</b></p><p> //uint i;
61、 </p><p> if((hour1==hour2&&min1==min2&&(sec1>=sec2&&sec1<sec2+10)))//||(min1==0&&sec1<20))整點(diǎn)報警</p>
62、<p><b> {</b></p><p> //for(i=0;i<20;i++)</p><p><b> //{</b></p><p> //bear=~bear;</p><p> //P1=~P1;</p><p>
63、 Music(90);</p><p> Music(120);</p><p> switch(temp2)</p><p><b> {</b></p><p> case 0:display(hour1,min1,sec1);break;</p><p> case 1:displ
64、ay(year1,mon1,day1);break;</p><p> case 2:display(hour2,min2,sec2);break;</p><p><b> }</b></p><p> delay(10);</p><p><b> //}</b></p>
65、<p><b> bear=1;</b></p><p> //P1=0xff;</p><p><b> }</b></p><p><b> }</b></p><p> //***********************************
66、****//</p><p> //***************************************//</p><p> //主程序 </p><p> //***************************************//</p><p> void main()</p>
67、<p><b> {</b></p><p><b> init();</b></p><p><b> while(1)</b></p><p><b> { </b></p><p> keyscan();</p>
68、<p><b> alarm();</b></p><p><b> }</b></p><p><b> }</b></p><p> //***************************************//</p><p> //定時器0
69、功能(梁紹科負(fù)責(zé))</p><p> //***************************************//</p><p> void time1()interrupt 1</p><p><b> {</b></p><p><b> uint m;</b></p&
70、gt;<p><b> m++;</b></p><p> if(m==3686)</p><p><b> {</b></p><p><b> m=0;</b></p><p><b> sec1++;</b></p>
71、;<p> if(sec1==60)</p><p><b> {</b></p><p><b> sec1=0;</b></p><p><b> min1++;</b></p><p> if(min1==60)</p><p&
72、gt;<b> {</b></p><p><b> min1=0;</b></p><p><b> hour1++;</b></p><p> if(hour1==24)</p><p><b> { </b></p><
73、;p><b> hour1=0;</b></p><p><b> day1++;</b></p><p> if(day1==32)</p><p><b> {</b></p><p><b> day1=1;</b></p>
74、;<p><b> mon1++;</b></p><p> if(mon1==13)</p><p><b> {</b></p><p><b> mon1=1;</b></p><p><b> year1++;</b><
75、;/p><p> if(year1==100)</p><p><b> year1=0;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p&
76、gt;<p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> //******************************
77、*********//</p><p><b> (二)硬件效果圖</b></p><p><b> 年月日顯示</b></p><p><b> 鬧鐘定時設(shè)置</b></p><p><b> 時分秒顯示</b></p><p
78、><b> 五、心得體會</b></p><p> 單片機(jī)作為我們主要的專業(yè)課程之一,我覺得單片機(jī)課程設(shè)計很有必要,而且很有意義。在這次課程設(shè)計中,運(yùn)用到了很多以前的專業(yè)知識,雖然過去從未獨(dú)立應(yīng)用過它們,但在學(xué)習(xí)的過程中帶著問題去學(xué)我發(fā)現(xiàn)效率很高,這是我做這次課程設(shè)計的一大收獲。另外,要做好一個課程設(shè)計,就必須做到:在設(shè)計程序之前,對所用單片機(jī)的內(nèi)部結(jié)構(gòu)有一個系統(tǒng)的了解,知道該單片
79、機(jī)內(nèi)有哪些資源;要有一個清晰的思路和一個完整的的軟件流程圖;在設(shè)計程序時,不能妄想一次就將整個程序設(shè)計好,反復(fù)修改、不斷改進(jìn)是程序設(shè)計的必經(jīng)之路;要養(yǎng)成注釋程序的好習(xí)慣,一個程序的完美與否不僅僅是實(shí)現(xiàn)功能,而應(yīng)該讓人一看就能明白你的思路,這樣也為資料的保存和交流提供了方便;在設(shè)計課程過程中遇到問題是很正常德,但我們應(yīng)該將每次遇到的問題記錄下來,并分析清楚,以免下次再碰到同樣的問題的課程設(shè)計結(jié)束了,但是從中學(xué)到的知識會讓我受益終身。發(fā)現(xiàn)、
80、提出、分析、解決問題和實(shí)踐能力的提高都會受益于我在以后的學(xué)習(xí)、工作和生活中。設(shè)計過程,好比是我們?nèi)祟惓砷L的歷程,常有一些不如意,但畢竟這是第一次做,難免會遇到各種各樣的問題。在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識</p><p> 通過這次設(shè)計,我懂得了學(xué)習(xí)的重要性,了解到理論知識與實(shí)踐相結(jié)合的重要意義,學(xué)會了堅持、耐心和努力,這將為自己今后的學(xué)習(xí)和工作做出了最好的榜樣。我學(xué)會對困難無所畏懼,以
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 微機(jī)原理與接口技術(shù)課程設(shè)計報告
- 微機(jī)原理與接口技術(shù)課程設(shè)計
- 微機(jī)原理與接口技術(shù)課程設(shè)計
- 微機(jī)原理與接口技術(shù)課程設(shè)計.
- 微機(jī)原理與接口技術(shù)課程設(shè)計
- 微機(jī)原理與接口技術(shù)課程設(shè)計實(shí)驗(yàn)報告-交通燈控制系統(tǒng)
- 微機(jī)接口技術(shù)課程設(shè)計報告
- 紅外通信-微機(jī)原理與接口技術(shù)課程設(shè)計報告
- 微機(jī)原理與接口技術(shù)課程設(shè)計報告書
- 微機(jī)原理與接口技術(shù)硬件實(shí)驗(yàn)報告
- 微機(jī)接口技術(shù)課程設(shè)計
- 微機(jī)接口技術(shù)課程設(shè)計
- 微機(jī)原理與接口技術(shù)課程設(shè)計--流水燈
- 微機(jī)原理與接口技術(shù)課程設(shè)計報告——電子琴
- 微機(jī)原理與接口技術(shù)硬件實(shí)驗(yàn)報告
- 微機(jī)原理與接口技術(shù)硬件實(shí)驗(yàn)報告
- 微機(jī)原理及接口技術(shù) 實(shí)驗(yàn)報告
- 微機(jī)原理與接口技術(shù)課程設(shè)計-交通燈
- 電子密碼鎖-微機(jī)原理與接口技術(shù)課程設(shè)計報告
- 微機(jī)原理與接口技術(shù)課程設(shè)計 --存儲器
評論
0/150
提交評論