單片機(jī)綜合實(shí)驗(yàn)報(bào)告_第1頁(yè)
單片機(jī)綜合實(shí)驗(yàn)報(bào)告_第2頁(yè)
單片機(jī)綜合實(shí)驗(yàn)報(bào)告_第3頁(yè)
單片機(jī)綜合實(shí)驗(yàn)報(bào)告_第4頁(yè)
單片機(jī)綜合實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、、實(shí)驗(yàn)內(nèi)容:設(shè)計(jì)一個(gè)數(shù)字時(shí)鐘,顯示范圍為00:00:0023:59:59。通過5個(gè)開關(guān)進(jìn)行控制,其中開關(guān)K1用于切換時(shí)間設(shè)置(調(diào)節(jié)時(shí)鐘)和時(shí)鐘運(yùn)行(正常運(yùn)行)狀態(tài);開關(guān)K2用于切換修改時(shí)、分、秒數(shù)值;開關(guān)K3用于使相應(yīng)數(shù)值加1調(diào)節(jié);開關(guān)K4用于減1調(diào)節(jié);開關(guān)K5用于設(shè)定鬧鐘,鬧鐘同樣可以設(shè)定初值,并且設(shè)定好后到時(shí)間通過實(shí)驗(yàn)箱音頻放出一段樂曲作為鬧鈴。選做增加項(xiàng)目:還可增加秒表功能(精確到0.01s)或年月日設(shè)定功能。電路:(只連粗實(shí)線部分)二、實(shí)驗(yàn)電路及功能說明數(shù)碼LED顯示器電路(不需接線)電子音響電路按鍵說明:按鍵鍵名功能說明切換鍵校分后切換到校時(shí)K1校時(shí)后切換到時(shí)鐘狀態(tài)鬧鐘設(shè)定分值后切換

2、到設(shè)定時(shí)值鬧鐘設(shè)定時(shí)值后切換到時(shí)鐘狀態(tài)K2校時(shí)進(jìn)入校時(shí)狀態(tài)K3加1鍵校分或校時(shí)的時(shí)候使其加1遞增K4減1鍵校分或校時(shí)的時(shí)候使其減1遞減K5鬧鐘設(shè)定鍵進(jìn)入鬧鐘設(shè)定狀態(tài)、實(shí)驗(yàn)程序流程圖:本實(shí)驗(yàn)設(shè)計(jì)了基于單片機(jī)的多功能數(shù)字鐘的總體方案,對(duì)裝置軟、硬件的設(shè)計(jì)作了詳細(xì)研究,并進(jìn)行了相應(yīng)的軟件和硬件調(diào)試。該數(shù)字鐘采用AT89C51單片機(jī)作為核心控制芯片,完成整點(diǎn)報(bào)時(shí)、顯示、定時(shí)功能。整個(gè)系統(tǒng)分為幾個(gè)小的電路,分別實(shí)現(xiàn)各自的功能。晶振電路,12MHZ晶振和兩個(gè)30pF電容構(gòu)成并連諧振接到X1和X2口。復(fù)位電路,在RST復(fù)位輸入引腳上接一10uF電容至VCC端,下接一個(gè)51K電阻到地。控制電路,4個(gè)按鍵控制,

3、進(jìn)行調(diào)時(shí),定時(shí),復(fù)位操作。顯示電路,用6位7段數(shù)碼管進(jìn)行時(shí),分,秒的顯示。裝置中軟件設(shè)計(jì)部分包括一個(gè)主程序、四個(gè)模塊程序和二個(gè)子程序,各自執(zhí)行自己的功能,完成定時(shí),調(diào)時(shí)等設(shè)操作。本文從整體到部分詳細(xì)介紹了數(shù)字鐘的設(shè)計(jì),在比較重要的部分進(jìn)行了詳細(xì)的論述,并且給出了程序框圖及說明。軟件程序整個(gè)流程圖如下:四、實(shí)驗(yàn)結(jié)果分析定時(shí)程序設(shè)計(jì):?jiǎn)纹瑱C(jī)的定時(shí)功能也是通過計(jì)數(shù)器的計(jì)數(shù)來實(shí)現(xiàn)的,此時(shí)的計(jì)數(shù)脈沖來自單片機(jī)的內(nèi)部,即每個(gè)機(jī)器周期產(chǎn)生一個(gè)計(jì)數(shù)脈沖,也就是每經(jīng)過1個(gè)機(jī)器周期的時(shí)間,計(jì)數(shù)器加1。如果MCS-51采用的12MHz晶體,則計(jì)數(shù)頻率為1MHz,即每過lus的時(shí)間計(jì)數(shù)器加1。這樣可以根據(jù)計(jì)數(shù)值計(jì)算出

4、定時(shí)時(shí)間,也可以根據(jù)定時(shí)時(shí)間的要求計(jì)算出計(jì)數(shù)器的初值。MCS-51單片機(jī)的定時(shí)器/計(jì)數(shù)器具有4種工作方式,其控制字均在相應(yīng)的特殊功能寄存器中,通過對(duì)特殊功能寄存器的編程,可以方便的選擇定時(shí)器/計(jì)數(shù)器兩種工作模式和4種工作方式。定時(shí)器/計(jì)數(shù)器工作在方式0時(shí),為13位的計(jì)數(shù)器,由TLX(X=O、1)的低5位和THX的高8位所構(gòu)成。TLX低5位溢出則向THX進(jìn)位,THX計(jì)數(shù)溢出則置位TCON中的溢出標(biāo)志位TFX.當(dāng)定時(shí)器/計(jì)數(shù)器工作于方式1,為16位的計(jì)數(shù)器。本設(shè)計(jì)師單片機(jī)多功能定時(shí)器,所以MCS-51內(nèi)部的定時(shí)器/計(jì)數(shù)器被選定為定時(shí)器工作模式,計(jì)數(shù)輸入信號(hào)是內(nèi)部時(shí)鐘脈沖,每個(gè)機(jī)器周期產(chǎn)生一個(gè)脈沖使

5、計(jì)數(shù)器增1。實(shí)時(shí)時(shí)鐘實(shí)現(xiàn)的基本方法:時(shí)鐘的最小計(jì)時(shí)單位是秒,但使用定時(shí)器的方式1,最大的定時(shí)時(shí)間也只能達(dá)到131ms。我們可把定時(shí)器的定時(shí)時(shí)間定為50ms。這樣,計(jì)數(shù)溢出20次即可得到時(shí)鐘的最小計(jì)時(shí)單位:秒。而計(jì)數(shù)20次可以用軟件實(shí)現(xiàn)。秒計(jì)時(shí)是采用中斷方式進(jìn)行溢出次數(shù)的累積,計(jì)滿20次,即得到秒計(jì)時(shí)。從秒到分,從分到時(shí)是通過軟件累加并進(jìn)行比較的方法來實(shí)現(xiàn)的。要求每滿1秒,則“秒”單元中的內(nèi)容加1;“秒”單元滿60,則“分”單元中的內(nèi)容加1;“分”單元滿60,則“時(shí)”單元中的內(nèi)容加1;“時(shí)”單元滿24,則將時(shí)、分、秒的內(nèi)容全部清零。實(shí)時(shí)時(shí)鐘程序設(shè)計(jì)步驟:選擇工作方式,計(jì)算初值;采用中斷方式進(jìn)行溢

6、出次數(shù)累計(jì);從秒分時(shí)的計(jì)時(shí)是通過累加和數(shù)值比較實(shí)現(xiàn)的;時(shí)鐘顯示緩沖區(qū):時(shí)鐘時(shí)間在方位數(shù)碼管上進(jìn)行顯示,為此在內(nèi)部RAM中要設(shè)置顯示緩沖區(qū),共6個(gè)地址單元。顯示緩沖區(qū)從左到右依次存放時(shí)、分、秒數(shù)值;主程序:主要進(jìn)行定時(shí)器/計(jì)數(shù)器的初始化編程,然后反復(fù)調(diào)用顯示子程序的方法等待中斷的到來;中斷服務(wù)程序:進(jìn)行計(jì)時(shí)操作;加1子程序:用于完成對(duì)時(shí)、分、秒的加操作,中斷服務(wù)程序在秒、分、時(shí)加1時(shí)共有三種條調(diào)用加1子程序,包括三項(xiàng)內(nèi)容:合字、加1并進(jìn)行十進(jìn)制調(diào)整、分字。程序說明:在整個(gè)系統(tǒng)中,在單片機(jī)的30H、31H和32H中存儲(chǔ)當(dāng)前時(shí)間的小時(shí)、分鐘和秒。由于要用數(shù)碼管顯示當(dāng)前的時(shí)間,必須用到分字和合字,因此

7、在33H、34H、35H、36H、37H和38H中存儲(chǔ)當(dāng)前時(shí)間的時(shí)十位、時(shí)個(gè)位、分十位、分個(gè)位、秒十位和秒個(gè)位,方便顯示。本設(shè)計(jì)有由四個(gè)輕觸按鍵組成的小鍵盤,這些按鍵可以任意改變當(dāng)前的狀態(tài)。按功能移位鍵一次,表示當(dāng)前要校對(duì)小時(shí)的十位;按第二次,表示當(dāng)前校對(duì)的是小時(shí)的個(gè)位;按第三次,則表示校對(duì)的是分鐘的十位;第四次,表示的校對(duì)的是分鐘的個(gè)位。按下數(shù)字“+”鍵和數(shù)字“-”鍵可在當(dāng)前校對(duì)的數(shù)字上相應(yīng)加上1或者減去1。本設(shè)計(jì)采用查表方式,在程序里預(yù)先存儲(chǔ)兩個(gè)表格,即日常作息時(shí)間表和考試時(shí)間表,可以通過手動(dòng)按鍵來選擇所要執(zhí)行的時(shí)間表。并且用紅、綠發(fā)光二極管來區(qū)別當(dāng)前所執(zhí)行的時(shí)間表。系統(tǒng)開機(jī)后,按功能移位

8、鍵就可以調(diào)整當(dāng)前的時(shí)間,整個(gè)系統(tǒng)操作簡(jiǎn)單,功能明確。顯示數(shù)據(jù)時(shí),先把要顯示的數(shù)據(jù)送到數(shù)據(jù)緩沖區(qū)SBUF中,再?gòu)腟BUF中顯示。串行口緩沖寄存器SBUF器是可直接尋址的專用寄存器。在物理上,它對(duì)應(yīng)著兩個(gè)寄存器,一個(gè)發(fā)送寄存器,一個(gè)接收intcount=0;/定時(shí)器計(jì)數(shù),以記到IS寄存器。CPU寫SBUF,就是修改發(fā)送寄存器;讀SBUF,就是讀接收寄存器。接收器是雙緩沖的,以避免在接收下一幀數(shù)據(jù)之前,CPU未能及時(shí)響應(yīng)接收器的中斷,沒有把上一幀數(shù)據(jù)讀走,而產(chǎn)生兩幀數(shù)據(jù)重疊的問題。對(duì)于發(fā)送器,為了保持最大的傳輸速率,一般不需要雙緩沖,因?yàn)榘l(fā)送時(shí)CPU是主動(dòng)的,不會(huì)產(chǎn)生寫重疊的問題。五、心得體會(huì)通過本

9、次多功能數(shù)字鐘設(shè)計(jì)實(shí)驗(yàn),真正的感受到了理論聯(lián)系實(shí)際的重要性,以及這之間莫大區(qū)別,到最后看著自己的結(jié)果心里還是感到很欣慰的。首先擺在我們面前的是要先弄懂所要設(shè)計(jì)實(shí)驗(yàn)的原理,于是最開始我在網(wǎng)上查找了大量的相關(guān)的資料,再結(jié)合課本的內(nèi)容以及充分利用了網(wǎng)絡(luò)資源和在圖書館借了相關(guān)的書籍資料,在仔細(xì)分析了本次實(shí)驗(yàn)所要達(dá)到的目的之后,我初步確定了思路。接下來的是進(jìn)一步的分析其原理,最后則編寫出本次實(shí)驗(yàn)的程序。在這次多功能數(shù)字鐘設(shè)計(jì)實(shí)驗(yàn)過程中,我留下了很深的印象。由于以前都沒有接觸過,開始編寫程序時(shí)很費(fèi)力,但到后來就好了。在每次的實(shí)驗(yàn)中,遇到問題,最好的辦法就是問別人,因?yàn)槊總€(gè)人掌握情況不一樣,不可能做到處處都

10、懂,發(fā)揮群眾的力量,復(fù)雜的事情就會(huì)變得很簡(jiǎn)單。這一點(diǎn)我深有體會(huì),在很多時(shí)候,我遇到的困難或許別人之前就已遇到,向他們請(qǐng)教遠(yuǎn)比自己在那冥思苦想來得快。經(jīng)過這些天的學(xué)習(xí)我深刻的體會(huì)到實(shí)際與理論有很大的區(qū)別。在我們學(xué)習(xí)的過程中不僅考驗(yàn)了我們對(duì)知識(shí)的吸收和掌握,而且也考驗(yàn)了我們的細(xì)心和耐心。特別是在編寫程序過程中,我深有體會(huì)。所以,這次的實(shí)驗(yàn)不僅僅學(xué)習(xí)了程序的編寫,還掌握了Proteus的一些功能,同時(shí)還提高了我們的專業(yè)素質(zhì)??傊M(jìn)過兩次的實(shí)驗(yàn)心得體會(huì),我總結(jié)了以下幾條:首先,多動(dòng)手寫程序、調(diào)試,只有自己親自動(dòng)手編寫了,才會(huì)讓你印象深刻,收益更大。其次,善于向別人學(xué)習(xí),在你解決一個(gè)問題后,你可能會(huì)發(fā)

11、現(xiàn)別人有更簡(jiǎn)便的方法解決,這時(shí)就是你向別人學(xué)習(xí)的時(shí)候。六、程序清單#includereg51.h/晶振為6MHZ#includeabsacc.h#defineucharunsignedchar#defineuintunsignedint#defineDATAXBYTE0XFFDC/段選#defineSELXBYTE0XFFDD/位選sbitPl_0=P0;sbitP1_1=Pl;sbitP1_2=P2;sbitSpeak=P3;codeuchartable213=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0 xff,

12、0 xbf,0 xf7,0 x40,0 x79,0 x24,0 x30,0 x19,0 x12,0 x02,0 x78,0 x00,0 x10,0 xff,0 xbf,0 xf7;ucharsec=0;/秒ucharhou=0;/小時(shí)ucharmin=0;/分ucharflag=0;/顯示時(shí)間還是鬧鐘時(shí)間,為0時(shí)顯示時(shí)間ucharal_clk1=11;/顯示鬧鐘小時(shí)ucharal_clk2=11;/顯示鬧鐘分ucharal_clk3=0;/顯示鬧鐘秒uchardisp1;/顯示時(shí)間或者鬧鐘時(shí)間uchardisp2;if(!P1_1)uchardisp3;uchardot_sel=0;/小數(shù)點(diǎn)選

13、擇Delay_1ms(25);標(biāo)準(zhǔn)位if(!P1_1)uchardot_hou;/小時(shí)的小數(shù)點(diǎn)顯示dot_sel=dotuchardot_min;/分鐘的小數(shù)if(dot_sel)點(diǎn)顯示ucharclk_f=0;/鬧鐘標(biāo)志位dot_hou=1;sel;dot_min=0;elsevoidinit()dot_hou=0;dot_min=1;TMOD=0 x02;/定時(shí)器0,方式2自動(dòng)重裝TH0=0 x06;TL0=0 x06;EA=1;ET0=1;TR0=1;IT0=1;/外部中斷0邊沿觸發(fā)voidal_clk_seting()EX0=1;/外部中斷0允許IT1=1;/外部中斷1邊沿觸發(fā)if(c

14、lk_f)EX1=1;/外部中斷1允許/鬧鐘設(shè)定voidDelay_lms(uinti)/延時(shí)n*msucharx,j;for(j=0;ji;j+)for(x=0;x=148;x+);if(al_clk1=hou)&(al_clk2=min)Speak=Speak;Delay_1ms(38);voiddot_choice()/選擇小數(shù)點(diǎn)顯示的位置voiddisplay()if(!P1_0)/顯示程序Delay_1ms(19);/鬧鐘和時(shí)間切換if(!P1_0)flag=flag;if(flag)/顯示時(shí)間或者鬧鐘時(shí)間disp1=al_clk1;disp2=al_clk2;disp3=al_cl

15、k3;elsedisp1=hou;disp2=min;disp3=sec;Delay_1ms(1);DATA=table010;SEL=0 x10;DATA=table0disp2/10;Delay_1ms(1);DATA=table010;SEL=0 x08;DATA=tabledot_mindisp2%10Delay_1ms(1);DATA=table010;SEL=0 x04;/顯示-DATA=table011;Delay_1ms(1);DATA=table010;if(!P1_2)Delay_1ms(25);if(!P1_2)dot_hou=0;dot_min=0;clk_f=!clk

16、_f;/clk_f為1是鬧鐘為設(shè)定狀態(tài)。SEL=0 x02;DATA=table0disp3/10Delay_1ms(1);DATA=table010;dot_choice();/選擇小數(shù)點(diǎn)顯示的位SEL=0 x80;DATA=table0disp1/10Delay_1ms(1);DATA=table010;SEL=0 x40;DATA=tabledot_houdisp1%10Delay_1ms(1);DATA=table010;SEL=0 x01;DATA=tableclk_fdisp3%10;/clk_f為1是鬧鐘設(shè)定最后一位小數(shù)點(diǎn)顯示Delay_1ms(1);DATA=table010;

17、voidtime()/時(shí)間計(jì)數(shù)部分if(sec=60)min+;sec=0;if(min=60)hou+;min=0;if(hou=24)hou=0;SEL=0 x20;/顯示-DATA=table011;0;voidmain()/主函數(shù)init();while(1)display();/顯示time();/時(shí)鐘al_clk_seting();/鬧鐘設(shè)定voidtimer_0()interrupt10時(shí)鐘計(jì)數(shù)單元count+;if(count=2000)/定時(shí)器sec+;count=0;voidinter_ex_1()interrupt2/外部中斷1進(jìn)行鬧鐘或者時(shí)間的減1if(flag&dot_sel)if(al_clk1=0)al_clk1=24;al_clk1-;if(flag&(dot_sel)if(al_clk2=0)al_clk2=60;al_clk2-;if(flag)&(dot_sel)if(m

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論