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

下載本文檔

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

文檔簡介

1、 單片機(jī)實(shí)訓(xùn)報(bào)告單片機(jī)實(shí)訓(xùn)報(bào)告 實(shí)訓(xùn)題實(shí)訓(xùn)題目目 一、一、實(shí)訓(xùn)實(shí)訓(xùn)目的目的 二、整體二、整體設(shè)計(jì)設(shè)計(jì) 三、硬件三、硬件電電路路圖圖 四四、程序、程序流程流程圖圖 五、源五、源程序程序 六、六、實(shí)訓(xùn)實(shí)訓(xùn)體會(huì)體會(huì) 實(shí)訓(xùn)報(bào)告 第 一 頁 一、一、實(shí)訓(xùn)目的實(shí)訓(xùn)目的 通過數(shù)字鐘的設(shè)計(jì)與制作,將前面所學(xué)的單片機(jī)內(nèi)部定時(shí)器資源、i/o 端 口、鍵盤和現(xiàn)實(shí)接口等知識融會(huì)貫通,鍛煉獨(dú)立設(shè)計(jì)、制作和調(diào)試應(yīng)用系統(tǒng)的 能力,深入領(lǐng)會(huì)單片機(jī)應(yīng)用系統(tǒng)的硬件設(shè)計(jì)、模塊化程序設(shè)計(jì)及軟硬件調(diào)試方 法等,并掌握單片機(jī)應(yīng)用系統(tǒng)的開發(fā)過程。 本設(shè)計(jì)主要實(shí)現(xiàn)以下功能: (1)自動(dòng)計(jì)時(shí),由 6 位 led 顯示器顯示時(shí)、分、秒; (2)

2、具有校準(zhǔn)功能,可以設(shè)置當(dāng)前時(shí)間; (3)具備定時(shí)啟鬧功能,可以設(shè)置啟鬧,啟鬧 1 分鐘后自動(dòng)關(guān)閉鬧鐘。 二、整體設(shè)計(jì)二、整體設(shè)計(jì) 1. 設(shè)計(jì)要求 (1)自動(dòng)計(jì)時(shí),由 6 位 led 顯示器顯示時(shí)、分、秒。 (2)具備校準(zhǔn)功能,可以設(shè)置當(dāng)前時(shí)間。 -按鍵調(diào)整時(shí)間 (3)具備定時(shí)啟鬧功能,可以設(shè)置啟鬧時(shí)間,鬧 60 秒后自動(dòng)關(guān)閉鬧鈴。 2. 系統(tǒng)總體設(shè)計(jì)方案 實(shí)訓(xùn)報(bào)告 第 二 頁 3.系系統(tǒng)統(tǒng)方案方案選擇選擇 (1)單片機(jī)選型及最小系統(tǒng) 選用 mcs-51 系列主流芯片 stc89c52rc,內(nèi)部帶有 4kb 的 flash rom,無須 外擴(kuò)程序存儲(chǔ)器。由于數(shù)字鐘無需大量運(yùn)算和暫存數(shù)據(jù),片內(nèi) 1

3、28 字節(jié) ram 可以 滿足設(shè)計(jì)要求。 (2)計(jì)時(shí)方案選擇 (1)實(shí)現(xiàn)時(shí)鐘功能,各大廠家推出了一系列實(shí)時(shí)時(shí)鐘電路,如 ds1287、ds12887、ds1302、pcf8563、s35190 等。這些芯片具備年、月、日、時(shí)、 分、秒計(jì)時(shí)功能和多點(diǎn)定時(shí)功能,計(jì)時(shí)數(shù)據(jù)每秒自動(dòng)更新一次,不需程序干預(yù)。 單片機(jī)可通過中斷或查詢方式讀取計(jì)時(shí)數(shù)據(jù)。 (2)利用單片機(jī)內(nèi)部定時(shí)器進(jìn)行中斷定時(shí),配合軟件延時(shí)實(shí)現(xiàn)時(shí)、分、秒計(jì)時(shí) 功能。 (3)顯示及鍵盤方案 利用單片機(jī)并行 i/o 口,實(shí)現(xiàn) led 動(dòng)態(tài)顯示 該方案直接使用單片機(jī)并行口作為顯示接口,無需外擴(kuò)接口芯片,但占用 資源較多,且動(dòng)態(tài)掃描顯示方式需占用 c

4、pu 時(shí)間。在非實(shí)時(shí)測控或單片機(jī)具有 足夠并行口資源的情況下可以采用。所以選用 led 數(shù)碼管。 利用液晶 lcd1602 顯示,實(shí)現(xiàn)液晶顯示,該方案顯示信息量大,編程麻煩。 mcu 顯示模塊 鍵盤模塊 實(shí)時(shí)時(shí)鐘ds1302模塊 數(shù)據(jù)存儲(chǔ) eeprom 24lc02 串口通信模塊 實(shí)訓(xùn)報(bào)告 第 三 頁 設(shè)計(jì)按鍵,按鍵采用 44 鍵盤,使顯示結(jié)果更簡潔。 功能鍵:時(shí)間設(shè)定,首先按下是時(shí)鐘秒的調(diào)節(jié);其次為時(shí)鐘分的調(diào)節(jié);再次 為時(shí)鐘時(shí)的調(diào)節(jié); 加 1 鍵:加 1 鍵為每次按下功能鍵時(shí),分別對時(shí)、分、秒進(jìn)行加 1; 減 1 鍵:減 1 鍵為每次按下功能鍵時(shí),分別對時(shí)、分、秒進(jìn)行減 1; 時(shí)鐘與鬧鈴轉(zhuǎn)換

5、鍵:鬧鐘設(shè)置/啟鬧/停鬧鍵。 三、硬件電路圖三、硬件電路圖 實(shí)訓(xùn)報(bào)告 第 四 頁 123456 a b c d 654321 d c b a title numberrevisionsize b date:26-dec-2011sheet of file:c:documents and settingsadministrator件件件件件件件backup1.ddbdrawn by: p1.0 1 p1.1 2 p1.2 3 p1.3 4 p1.4 5 p1.5 6 p1.6 7 p1.7 8 rst 9 p3.0rxd 10 p3.1txd 11 p3.2int0 12 p3.3int1 13

6、 p3.4 t0 14 p3.5 t1 15 p3.6 wr 16 p3.7 rd 17 xtal2 18 xtal1 19 vss 20 p2.0 21 p2.1 22 p2.2 23 p2.3 24 p2.4 25 p2.5 26 p2.6 27 p2.7 28 psen 29 ale 30 ea 31 p0.7 32 p0.6 33 p0.5 34 p0.4 35 p0.3 36 p0.2 37 p0.1 38 p0.0 39 vcc 40 stc89c52 vcc 1 f 2 g 3 e 4 d 5 vcc 6 dp 7 c 8 b 9 a 10 gnd 1k 200 22uf vcc

7、 reset vcc p00 p01 p02 p03 p04 p05 p06 p07 vcc 1 f 2 g 3 e 4 d 5 vcc 6 dp 7 c 8 b 9 a 10 vcc 1 f 2 g 3 e 4 d 5 vcc 6 dp 7 c 8 b 9 a 10 vcc 1 f 2 g 3 e 4 d 5 vcc 6 dp 7 c 8 b 9 a 10 vcc 1 f 2 g 3 e 4 d 5 vcc 6 dp 7 c 8 b 9 a 10 vcc 1 f 2 g 3 e 4 d 5 vcc 6 dp 7 c 8 b 9 a 10 q1 pnp q2 pnp q3 pnp q4 pnp

8、 q5 pnp q6 pnp a 1 b 2 c 3 e1 4 e2 5 e3 6 y0 15 y1 14 y2 13 y3 12 y4 11 y5 10 y6 9 y7 7 u? 74ls138 r1 1k r2 1k r3 1k r4 1k r5 1k r6 1k vcc p00 p01 p02 a 7 b 1 c 2 d 6 lt 3 bi/rbo 4 rbi 5 a 13 b 12 c 11 d 10 e 9 f 15 g 14 u? 74ls47 r9 100 r10 100 r11 100 r12 100 r13 100 r14 100 r15 100 vcc p04 p05 p0

9、6 p07 c1+ 1 c1- 3 c2+ 4 c2- 5 t1 in 11 t2 in 10 r1 in 13 r2 in 8 gnd 15 vcc 16 vs+ 2 vs- 6 t1 out 14 t2 out 7 r1 out 12 r2 out 9 max232 1 6 2 7 3 8 4 9 5 j1 db9 + c2 10u + c310u + c5 10u + c610u + c7100u vcc rxd txd s1 s2 s3 s4 p14 p15 p16 p17 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15 s16 p10p11p12p13

10、ls1 speaker q7 pnp r20 10k r21 1k r22 200 vcc p33 四四、程序、程序流程圖流程圖 實(shí)訓(xùn)報(bào)告 第 五 頁 開始 初始化 啟動(dòng)定時(shí)器 顯示時(shí)鐘 檢測鍵盤 鍵盤模塊 顯示模塊 響鬧鐘 停止 n y 是否有鍵按下 鬧鐘時(shí)間是否到 主函數(shù) 實(shí)訓(xùn)報(bào)告 第 六 頁 是否有鍵按下 切功能鍵顯示模塊 分加 調(diào)試程序 分加 1 分減時(shí)加時(shí)減 調(diào)試程序 分減 1 調(diào)試程序 時(shí)加 1 調(diào)試程序 時(shí)減 1 y yyyy y n 鍵盤模塊鍵盤模塊 顯示模塊 切換鍵按下 u=1 顯示時(shí)鐘顯示鬧鐘 yy u=2 顯示模塊顯示模塊 五、源五、源程序程序 #include #def

11、ine uchar unsigned char #define uint unsigned int sbit p10=p10; sbit p14=p14; sbit p15=p15; sbit p16=p16; sbit p17=p17; sbit p3=p33; uchar t0;/定義 hang lie key t0 uint n,x,p,w,z,h; int 實(shí)訓(xùn)報(bào)告 第 一 頁 i,j,m,a,b,c,d,k,e,f,r,y,a1,b1,c1,d1,e1,f 1,u,h1,k1,r1,v; uchar code tab=0 x00,0 x10,0 x20,0 x30,0 x40,0 x

12、50,0 x60,0 x70,0 x80,0 x90; void delay(uint q);/延時(shí)函數(shù)聲明 void saomiao();/鍵盤掃描函數(shù)聲明 void xianshi(); void naozongxianshi(); void dingshi(); void saomiao(); /*顯示 */ void xianshi() a=h%10; b=h/10; c=k%10; d=k/10; e=r%10; f=r/10; p0=taba; delay(1); p0=tabb+0 x01; delay(1); p0=tabc+0 x02; delay(1); p0=tabd+0

13、 x03; delay(1); p0=tabe+0 x04; delay(1); p0=tabf+0 x05; delay(1); /*鬧鐘顯示 */ void naozongxianshi() a1=h1%10; b1=h1/10; c1=k1%10; d1=k1/10; e1=r1%10; f1=r1/10; p0=taba1; delay(1); p0=tabb1+0 x01; delay(1); p0=tabc1+0 x02; delay(1); p0=tabd1+0 x03; delay(1); p0=tabe1+0 x04; delay(1); p0=tabf1+0 x05; de

14、lay(1); /*定時(shí)器 t0*/ void dingshi() ea=1; et0=1; tmod=0 x01; th0=(65536-50000)/256; tl0=(65536-50000)%256; tr0=1; void timer() interrupt 1 th0=(65536-50000)/256; tl0=(65536-50000)%256; m+; if(m=20) m=0; h+; if(h=60) h=0; k+; if(k=60) 實(shí)訓(xùn)報(bào)告 第 二 頁 k=0; r+; if(r=24) r=0; /*鍵盤掃描函數(shù)*/ void saomiao() unsigned

15、 char hang=0,lie=0,key=0; p1=0 x0f; /賦初值 if(p1!=0 x0f) /判斷是 否有鍵按下 hang=p1; /讀行號 p1=0 xf0; /行列反 轉(zhuǎn) lie=p1; /讀列號 key=hang|lie; /讀鍵值 switch(key)/根據(jù)鍵值不同 調(diào)用 不同的處理函數(shù) case 0 xee:n=1;break; case 0 xde:n=2;break; case 0 xbe:n=3;break; case 0 x7e:n=4;break; case 0 xed:n=5;break; case 0 xdd:n=6;break; case 0 xb

16、d:n=7;break; case 0 x7d:n=8;break; case 0 xeb:n=9;break; case 0 xdb:n=10;break; case 0 xbb:n=11;break; case 0 x7b:n=12;break; case 0 xe7:n=13;break; case 0 xd7:n=14;break; case 0 xb7:n=15;break; case 0 x77:n=16;break; /*延時(shí)函數(shù)*/ void delay(uint o ) for(i=0;i0;j-); /*功能選擇鍵 */ void gongnengjian() if(n=5

17、) if(n!=5); n=0; u+; if(u=3) u=1; delay(30); /*時(shí)間調(diào)試+鬧鐘調(diào)試 */ void shijiantiaoshi() if(u=1) if(n=1) if(n!=1); n=0; k+; delay(30); if(k=60) r=r+1; k=0; if(r=24) 實(shí)訓(xùn)報(bào)告 第 三 頁 r=0; if(n=2) if(n!=2); n=0; k-; delay(30); if(k=0) k=59; if(n=3) if(n!=3); n=0; r+; delay(30); if(r=24) r=0; if(n=4) if(n!=4); n=0;

18、 r-; delay(30); if(r=-1) r=23; xianshi(); /*鬧鐘 */ if(u=2) if(n=1) if(n!=1); n=0; k1+; delay(30); if(k1=60) k1=0; r1=r1+1; if(r1=24) r1=0; if(n=2) if(n!=2); n=0; k1-; delay(30); if(k1=0) k1=59; if(n=3) if(n!=3); n=0; r1+; delay(30); if(r1=24) r1=0; if(n=4) if(n!=4); n=0; r1-; delay(30); 實(shí)訓(xùn)報(bào)告 第 四 頁 if

19、(r1=-1) r1=23; naozongxianshi(); /*鬧鐘 */ void naozhong() if(k=k1)v50;v+) p3=0; p3=1; /*主函數(shù)*/ void main() dingshi(); while(1) saomiao(); gongnengjian(); shijiantiaoshi(); naozhong(); 六、六、實(shí)訓(xùn)實(shí)訓(xùn)體會(huì)體會(huì) 十天的單片機(jī)實(shí)訓(xùn)結(jié)束了,這次讓我學(xué)到了很多東西, 為期 10 天的單片機(jī)實(shí)訓(xùn)雖然不是 很長,但是讓我感覺到了原來編程不是很簡單,先開始的顯示時(shí)鐘不是很難,下面的鬧鐘設(shè)置及 調(diào)試部分就花費(fèi)了相當(dāng)長的時(shí)間,本來還以

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論