

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 單片機(jī)原理與應(yīng)用課程設(shè)計(jì)</p><p> 題 目: </p><p> 系 部: </p><p> 專 業(yè): </p><p>
2、班 級: </p><p> 學(xué)生姓名: 學(xué) 號: </p><p> 2015年 6 月 * 日</p><p><b> 目 錄</b></p><p> 1 設(shè)計(jì)任務(wù)與要求1</p>&
3、lt;p> 1. 1 設(shè)計(jì)任務(wù)1</p><p> 1.2 設(shè)計(jì)要求1</p><p><b> 2 設(shè)計(jì)方案1</b></p><p> 2.1 設(shè)計(jì)思路1</p><p> 2.2 芯片選擇1</p><p> 2.2.1 單片機(jī)STC89C521&l
4、t;/p><p> 2.2.2 LED數(shù)碼管2</p><p> 3 硬件電路設(shè)計(jì)5</p><p> 3.1 電路設(shè)計(jì)框圖5</p><p> 3.2 主要單元電路的設(shè)計(jì)5</p><p> 3.2.1 單片機(jī)主控制模塊的設(shè)計(jì)5</p><p> 3.2.2 顯示模
5、塊電路................................... 6</p><p> 4 主要參數(shù)計(jì)算與分析7</p><p> 4.1 計(jì)算與分析7</p><p><b> 5 調(diào)試過程7</b></p><p> 5.1 硬件調(diào)試7</p><p>
6、5.1.1 硬件電路故障7</p><p> 5.1.2 硬件調(diào)試方法7</p><p> 5.2 軟件調(diào)試8</p><p> 5.2.1 軟件電路故障8</p><p> 5.2.2 軟件調(diào)試方法8</p><p><b> 6 結(jié)論9</b></p&g
7、t;<p><b> 7 附錄10</b></p><p> 7.1 數(shù)字時(shí)鐘實(shí)物圖10</p><p> 7.2 源程序. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12</p><p> 1 設(shè)計(jì)任務(wù)與要求</p>&
8、lt;p> 1. 1 設(shè)計(jì)任務(wù)</p><p> 本課題實(shí)驗(yàn)主要采用AT89C52芯片來完成一個簡易的電子時(shí)鐘??赏ㄟ^控制按鍵來調(diào)整時(shí)間及時(shí)間清零</p><p><b> 1.2 設(shè)計(jì)要求</b></p><p> 設(shè)計(jì)一個以單片機(jī)為核心的數(shù)字時(shí)鐘,可實(shí)現(xiàn)功能:</p><p><b>
9、顯示時(shí)、分、秒功能</b></p><p> 具備時(shí)、分和秒校準(zhǔn)功能及清零功能;</p><p><b> 2 設(shè)計(jì)方案</b></p><p><b> 2.1 設(shè)計(jì)思路</b></p><p> 系統(tǒng)分為主控模塊、時(shí)鐘電路模塊、按鍵掃描模塊、LED顯示模塊、電源電路、復(fù)位
10、電路、晶振電路等模塊。主控模塊采用AT89C51單片機(jī),按鍵模塊用四個按鍵,用于調(diào)整時(shí)間,顯示模塊采用LED數(shù)碼管。</p><p><b> 2.2 芯片選擇</b></p><p> 2.2.1單片機(jī)(AT89C52)</p><p> ?。ㄒ唬〢T89C52的介紹</p><p> AT89C52單片機(jī)是在
11、一塊芯片中集成了CPU、RAM、ROM、定時(shí)器/計(jì)數(shù)器和多種功能的I/O接口電路等一臺計(jì)算機(jī)所需要的基本功能部件,AT89C52單片機(jī)內(nèi)包含下列幾個部件:</p><p> ?。?) 一個8位CPU;</p><p> ?。?)一個片內(nèi)振蕩器及時(shí)鐘電路;</p><p> ?。?)4K字節(jié)ROM程序存儲器;</p><p> ?。?)128字
12、節(jié)RAM數(shù)據(jù)存儲器;</p><p> ?。?)兩個16位定時(shí)器/計(jì)數(shù)器;</p><p> ?。?)可尋址64K外部數(shù)據(jù)存儲器和64K外部程序存儲器空間的控制電路;</p><p> (7)32條可編程的I/O線(四個8位并行I/O端口);</p><p> (二) AT89C52單片機(jī)的部分管腳說明:</p><
13、p> AT89C52單片機(jī)采用40條引腳雙列直插式器件,引腳除5V( 40腳)和電源地( 20腳)外,其功能分為時(shí)鐘電路、控制信號、輸入/輸出三大部分:</p><p> STC89C52引腳圖 STC89C52實(shí)物圖</p><p> (三)另外介紹一下輸入輸出引腳(本系統(tǒng)只用到P0、P1、P2口):</p><p&g
14、t; (1) P0端口[P0.0-P0.7] 是一個8位漏極開路型雙向I/O端口,端口置1(對端口寫1)時(shí)作高阻抗輸入端。作為輸出口時(shí)能驅(qū)動8個TTL。</p><p> 對內(nèi)部Flash程序存儲器編程時(shí),接收指令字節(jié);校驗(yàn)程序時(shí)輸出指令字節(jié),要求外接上拉電阻。在訪問外部程序和外部數(shù)據(jù)存儲器時(shí),P0口是分時(shí)轉(zhuǎn)換的地址(低8位)/數(shù)據(jù)總線,訪問期間內(nèi)部的上拉電阻起作用。</p><p>
15、 (2) P1端口[P1.0-P1.7]是一個帶有內(nèi)部上拉電阻的8位雙向I/0端口。輸出時(shí)可驅(qū)動4個TTL。端口置1時(shí),內(nèi)部上拉電阻將端口拉到高電平,作輸入用。</p><p> 對內(nèi)部Flash程序存儲器編程時(shí),接收低8位地址信息。</p><p> (3) P2端口[P2.0-P2.7]是一個帶有內(nèi)部上拉電阻的8位雙向I/0端口。輸出時(shí)可驅(qū)動4個TTL。端口置1時(shí),內(nèi)部上拉電阻將
16、端口拉到高電平,作輸入用。對內(nèi)部Flash程序存儲器編程時(shí),接收高8位地址和控制信息。</p><p> 在訪問外部程序和16位外部數(shù)據(jù)存儲器時(shí),P2口送出高8位地址。而在訪問8位地址的外部數(shù)據(jù)存儲器時(shí)其引腳上的內(nèi)容在此期間不會改變</p><p> 2.2.2 LED數(shù)碼管</p><p> 本課程設(shè)計(jì)采用共陽極數(shù)碼管</p><p>
17、;<b> 3 硬件電路設(shè)計(jì)</b></p><p> 3.1 電路設(shè)計(jì)框圖</p><p> 圖3.1 電路設(shè)計(jì)框圖</p><p> 3.2 主要單元電路設(shè)計(jì)</p><p> 單元電路的設(shè)計(jì)包括主控制系統(tǒng)、時(shí)鐘電路模塊、顯示模塊、復(fù)位電路的設(shè)計(jì)。</p><p> 3.2.
18、1 單片機(jī)主控制模塊的設(shè)計(jì)</p><p> 單片機(jī)的最小系統(tǒng)如下圖所示,18引腳和19引腳接時(shí)鐘電路,XTAL1接外部晶振和30PF電容的一端,在片內(nèi)它是振蕩器倒相放大器的輸入,XTAL2接外部晶振和30PF電容的另一端,在片內(nèi)它是振蕩器倒相放大器的輸出.第9引腳為復(fù)位輸入端,接上電容,電阻及開關(guān)后夠上電復(fù)位電路,20引腳為接地端,40引腳為電源端。</p><p> 圖3.2.1
19、 主控制系統(tǒng)</p><p> 3.2.2 顯示模塊電路</p><p> 顯示電路采用8位共陽極LED數(shù)碼管。內(nèi)部的三個數(shù)碼管共用a~dp這8根數(shù)據(jù)線,共有12個引腳,引腳排列依然是從左下角的那個腳(1腳)開始,以逆時(shí)針方向依次為1~12腳。</p><p> 4 主要參數(shù)計(jì)算與分析</p><p> 4.1 計(jì)算與分析<
20、;/p><p> 本設(shè)計(jì)完成了設(shè)計(jì)任務(wù)的所有要求。單片機(jī)采用STC89C52,編譯環(huán)境為keil,程序使用C語音進(jìn)行編寫。主要是程序的調(diào)試。程序調(diào)試的難點(diǎn)在于設(shè)計(jì)的功能模塊過多,程序結(jié)構(gòu)比較復(fù)雜,使得調(diào)試起來比較費(fèi)時(shí)間。完成設(shè)計(jì)任務(wù)的要求1:顯示時(shí)、分、秒。2:具有可調(diào)整時(shí)間功能。</p><p><b> 5 調(diào)試過程</b></p><p&g
21、t;<b> 5.1 硬件調(diào)試</b></p><p> 單片機(jī)應(yīng)用系統(tǒng)的硬件和軟件調(diào)試是交叉相互進(jìn)行的,但通常是先排除樣機(jī)中明顯的硬件故障,尤其是電源故障,才能安全地和仿真器相連,進(jìn)行綜合調(diào)試。</p><p> 5.1.1 硬件電路故障</p><p> ?。?)錯線、開路、短路</p><p> 解決方
22、法:在畫原理圖時(shí)仔細(xì)檢查、校正即可解決。</p><p><b> ?。?)元器件損壞</b></p><p> 解決方法:在設(shè)計(jì)過程中要明確各元器件的工作條件,嚴(yán)格按照元器件正常工況下進(jìn)行操作,損壞的元器件要及時(shí)更換,以免損壞其他元件或影響電路功能的實(shí)現(xiàn)。</p><p><b> ?。?)電源故障</b></p
23、><p> 解決方法:電源必須單獨(dú)調(diào)試好以后才能加到系統(tǒng)的各個部件中。當(dāng)所有部分在該電源作用下都能正常工作,就選用該電源。</p><p><b> 5.2 軟件調(diào)試</b></p><p> 5.2.1 軟件電路故障</p><p> 設(shè)計(jì)軟件部分可能出現(xiàn)這種錯誤的現(xiàn)象:</p><p>
24、; ?。?)當(dāng)以斷點(diǎn)或連續(xù)方式運(yùn)行時(shí),目標(biāo)系統(tǒng)沒有按規(guī)定的功能進(jìn)行操作或什么結(jié)果也沒有,這是由于程序轉(zhuǎn)移到意外之處或在某處死循環(huán)所造成的。</p><p> 解決方法:在采用實(shí)時(shí)多任務(wù)操作系統(tǒng)時(shí),錯誤可能在操作系統(tǒng)中,沒有完成正確的任務(wù)調(diào)度操作,也可能在高優(yōu)先級任務(wù)程序中,該任務(wù)不釋放處理器,使CPU在該任務(wù)中死循環(huán)。通過對錯誤程序的修改使其實(shí)現(xiàn)預(yù)期的功能。</p><p><b&
25、gt; ?。?)結(jié)果不正確</b></p><p> 對于本設(shè)計(jì)而言,由于采用的是單片機(jī)C51語言,在檢查程序時(shí),需要按模塊一步步查詢、修改,直到所有模塊都能正常工作,則顯示結(jié)果會達(dá)到預(yù)期值。</p><p> 5.2.2 軟件調(diào)試方法</p><p> 軟件調(diào)試所使用的方法有:計(jì)算程序的調(diào)試方法、I/O處理程序的調(diào)試法、綜合調(diào)試法等。</
26、p><p> ?。?)計(jì)算程序的調(diào)試方法</p><p> 根據(jù)計(jì)算程序的功能,事先準(zhǔn)備好一組測試數(shù)據(jù)。調(diào)試時(shí),用仿真器的寫命令,將數(shù)據(jù)寫入計(jì)算程序的參數(shù)緩沖單元,然后從計(jì)算程序開始運(yùn)行到結(jié)束,運(yùn)行的結(jié)果和正確數(shù)據(jù)比較,如果對有的測試數(shù)據(jù)進(jìn)行測試,都沒有發(fā)生錯誤,則該計(jì)算程序調(diào)試成功;如果發(fā)現(xiàn)結(jié)果不正確,改用單步運(yùn)行方式,即可檢查出錯誤所在。</p><p> (2
27、)I/O處理程序的調(diào)試</p><p> 對于A/D轉(zhuǎn)換一類的I/O處理程序是實(shí)時(shí)處理程序,因此一般用全速斷點(diǎn)運(yùn)行方式或連續(xù)運(yùn)行方式進(jìn)行調(diào)試。</p><p><b> (3)綜合調(diào)試</b></p><p> 綜合調(diào)試一般采用全速斷點(diǎn)運(yùn)行方式,這個階段的主要工作是排除系統(tǒng)中遺留的錯誤以便提高系統(tǒng)的動態(tài)性能和精度。在綜合調(diào)試的最后階段,應(yīng)
28、在目標(biāo)系統(tǒng)的晶振頻率內(nèi)工作,使系統(tǒng)全速運(yùn)行目標(biāo)程序,實(shí)現(xiàn)了預(yù)定功能技術(shù)指標(biāo)后,便可將軟件固化,然后在運(yùn)行固化的目標(biāo)程序,成功后目標(biāo)系統(tǒng)便可脫機(jī)運(yùn)行。一般情況下,這樣一個應(yīng)用系統(tǒng)就算研制成功。</p><p><b> 6 結(jié)論</b></p><p> 本次基于單片機(jī)STC89C52等器件制作一個數(shù)字時(shí)鐘。用單片機(jī)進(jìn)行數(shù)據(jù)控制、處理,送到顯示器顯示,硬件結(jié)構(gòu)簡單
29、,所用元件較少,大大降低了制作成本。軟件采用C語言實(shí)現(xiàn),程序簡單可讀寫性強(qiáng),效率高。與傳統(tǒng)的電路相比,具有方便操作、處理速度快、穩(wěn)定性高、性價(jià)比高的優(yōu)點(diǎn),具有一定的使用價(jià)值。</p><p> 剛開始決定做這個課程設(shè)計(jì)任務(wù),認(rèn)為挺簡單的,以前曾因?yàn)榕d趣用串口做過時(shí)鐘,然而當(dāng)我們真正著手改用鍵盤控制時(shí)間調(diào)整以及復(fù)位的時(shí)候,我和同組的組員遇到了一些困難,在查閱了一些資料,相互討論之后問題得以解決;緊接著,我們的設(shè)計(jì)
30、有了細(xì)致的分工,分工的同時(shí)大家經(jīng)常一起探討設(shè)計(jì)過程中出現(xiàn)的種種問題,并將不懂的向身邊的高手請教,最終在大家不懈努力下,課程設(shè)計(jì)成功完成。</p><p> 設(shè)計(jì)中有好多問題都是因?yàn)槔碚撝R不扎實(shí),概念的模糊,使我們明白要把所學(xué)到的理論轉(zhuǎn)化為實(shí)踐需要一段努力學(xué)習(xí)的過程;在做一個設(shè)計(jì)的過程中,一定要注意理論和實(shí)踐同步進(jìn)行,光有理論知識還是遠(yuǎn)遠(yuǎn)不夠的,要用實(shí)踐去檢驗(yàn)理論,用理論指導(dǎo)實(shí)踐。</p><
31、;p> 這樣的實(shí)踐環(huán)節(jié)在我的學(xué)生生涯是很難得的,也為我們以后步入社會開始工作打下了一定的基礎(chǔ),最后我也要感謝組里的同學(xué)們,在大家的團(tuán)結(jié)協(xié)作下,本次課程設(shè)計(jì)才可以順利進(jìn)行并實(shí)現(xiàn)其功能,同時(shí)我也更加深刻體會到了團(tuán)結(jié)協(xié)作的重要性。由于本人水平有限,在技術(shù)指標(biāo)和論文寫作中可能存在一些缺陷,懇請老師批評指教。</p><p><b> 7 附錄</b></p><p&g
32、t; 7.1 數(shù)字時(shí)鐘實(shí)物圖</p><p><b> 7.2 源程序</b></p><p> #include<reg52.h> </p><p> unsigned char code Tab[ ]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; <
33、;/p><p> unsigned char int_time ; </p><p> unsigned char second; </p><p> unsigned char minute; </p><p> unsigned char hour; </p><p> sbit S1=P1^
34、4; </p><p> sbit S2=P1^5; </p><p> sbit S3=P1^6; </p><p> sbit S4=P1^7; </p><p> void delay(void) </p><p><b&g
35、t; {</b></p><p> unsigned char j;</p><p> for(j=0;j<200;j++)</p><p><b> ;</b></p><p><b> }</b></p><p> void delay60m
36、s(void)</p><p><b> {</b></p><p> unsigned char i,j;</p><p> for(i=0;i<200;i++)</p><p> for(j=0;j<100;j++)</p><p><b> ;</b&g
37、t;</p><p><b> }</b></p><p> void DisplaySecond(unsigned char s)</p><p><b> {</b></p><p> P2=0xbf; </p><p> P0=Tab[s/10
38、]; </p><p><b> delay();</b></p><p> P2=0x7f; </p><p> P0=Tab[s%10]; </p><p><b> delay();</b></p><p> P0=0
39、xff; </p><p><b> }</b></p><p> void DisplayMinute(unsigned char m)</p><p><b> {</b></p><p> P2=0xf7; </p><p> P0=Tab[m/1
40、0];</p><p><b> delay();</b></p><p> P2=0xef; </p><p> P0=Tab[m%10];</p><p><b> delay();</b></p><p> P2=0xdf; </p>&
41、lt;p> P0=0xbf; </p><p><b> delay();</b></p><p> P0=0xff; </p><p><b> }</b></p><p> void DisplayHour(unsigned char h)</p><
42、p><b> {</b></p><p> P2=0xfe; </p><p> P0=Tab[h/10]; </p><p><b> delay();</b></p><p> P2=0xfd; </p><p>
43、P0=Tab[h%10]; </p><p><b> delay();</b></p><p> P2=0xfb; </p><p> P0=0xbf; </p><p><b> delay();</b></p><p> P0=0xff;
44、 </p><p><b> }</b></p><p> void key_scan(void)</p><p><b> {</b></p><p> P1=0xf0; </p><p> if((P1&0xf0)!=0xf0) <
45、;/p><p><b> {</b></p><p> delay60ms(); </p><p> if((P1&0xf0)!=0xf0) </p><p><b> {</b></p><p> if(S1==0) &
46、lt;/p><p> second++; </p><p> if(S2==0) </p><p> minute++; </p><p> if(S3==0) </p><p> hour++; </p><p> if(S4==0) &l
47、t;/p><p><b> {</b></p><p> second=0; </p><p> minute=0; </p><p> hour=0; </p><p><b> }</b></p><p><b>
48、}</b></p><p><b> }</b></p><p><b> }</b></p><p> void main(void)</p><p><b> {</b></p><p> TMOD=0x01;
49、 </p><p> EA=1; </p><p> ET0=1; </p><p> TH0=(65536-46083)/256; </p><p> TL0=(65536-46083)%256; </p><p> TR0=1;
50、 </p><p> int_time=0; </p><p> second=0; </p><p> minute=0; </p><p> hour=0; </p><p><b> while(1)</b><
51、;/p><p><b> { </b></p><p> DisplaySecond(second); </p><p><b> delay();</b></p><p> DisplayMinute(minute); </p><p><b&
52、gt; delay();</b></p><p> DisplayHour(hour); </p><p><b> delay();</b></p><p><b> }</b></p><p><b> }</b></p>&
53、lt;p> void interserve(void ) interrupt 1 using 1</p><p><b> {</b></p><p> TR0=0; </p><p> int_time++; </p><p> if(int_time=
54、=20) </p><p><b> {</b></p><p> int_time=0; </p><p> second++; </p><p><b> }</b></p><p> if(second==60) </p&g
55、t;<p><b> {</b></p><p> second=0; </p><p> minute++; </p><p><b> }</b></p><p> if(minute==60) </p><p><b>
56、; {</b></p><p> minute=0; </p><p> hour++; </p><p><b> }</b></p><p> if(hour==24) </p><p><b> {</b></p&g
57、t;<p> hour=0; </p><p><b> }</b></p><p> key_scan(); </p><p> TH0=(65536-46083)/256; </p><p> TL0=(65536-46083)%256
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)課程設(shè)計(jì)報(bào)告---電子時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)報(bào)告--電子時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)報(bào)告--電子時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)-單片機(jī)課程設(shè)計(jì)---電子時(shí)鐘
- 電子時(shí)鐘單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---電子時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)——電子時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)——電子時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)報(bào)告--基于單片機(jī)的電子時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)--電子時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)-電子時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)--電子時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)--電子時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)----電子時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)-電子時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)---單片機(jī)電子時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)報(bào)告-- 基于單片機(jī)的電子時(shí)鐘設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--電子時(shí)鐘設(shè)計(jì)
- 數(shù)字電子時(shí)鐘-單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---電子時(shí)鐘.doc
評論
0/150
提交評論