




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 單片機實訓報告單片機實訓報告 實訓題實訓題目目一、一、實訓實訓目的目的二、整體二、整體設計設計三、硬件三、硬件電電路路圖圖四四、程序、程序流程流程圖圖五、源五、源程序程序六、六、實訓實訓體會體會實訓報告第 一 頁一、一、實訓目的實訓目的通過數字鐘的設計與制作,將前面所學的單片機內部定時器資源、i/o 端口、鍵盤和現實接口等知識融會貫通,鍛煉獨立設計、制作和調試應用系統的能力,深入領會單片機應用系統的硬件設計、模塊化程序設計及軟硬件調試方法等,并掌握單片機應用系統的開發過程。本設計主要實現以下功能: (1)自動計時,由 6 位 led 顯示器顯示時、分、秒; (2)具有校準功能,可以設置當前時
2、間; (3)具備定時啟鬧功能,可以設置啟鬧,啟鬧 1 分鐘后自動關閉鬧鐘。二、整體設計二、整體設計1. 設計要求(1)自動計時,由 6 位 led 顯示器顯示時、分、秒。(2)具備校準功能,可以設置當前時間。 -按鍵調整時間(3)具備定時啟鬧功能,可以設置啟鬧時間,鬧 60 秒后自動關閉鬧鈴。2. 系統總體設計方案 實訓報告第 二 頁3.系系統統方案方案選擇選擇(1)單片機選型及最小系統選用 mcs-51 系列主流芯片 stc89c52rc,內部帶有 4kb 的 flash rom,無須外擴程序存儲器。由于數字鐘無需大量運算和暫存數據,片內 128 字節 ram 可以滿足設計要求。(2)計時方
3、案選擇(1)實現時鐘功能,各大廠家推出了一系列實時時鐘電路,如ds1287、ds12887、ds1302、pcf8563、s35190 等。這些芯片具備年、月、日、時、分、秒計時功能和多點定時功能,計時數據每秒自動更新一次,不需程序干預。單片機可通過中斷或查詢方式讀取計時數據。(2)利用單片機內部定時器進行中斷定時,配合軟件延時實現時、分、秒計時功能。(3)顯示及鍵盤方案利用單片機并行 i/o 口,實現 led 動態顯示該方案直接使用單片機并行口作為顯示接口,無需外擴接口芯片,但占用資源較多,且動態掃描顯示方式需占用 cpu 時間。在非實時測控或單片機具有足夠并行口資源的情況下可以采用。所以選
4、用 led 數碼管。利用液晶 lcd1602 顯示,實現液晶顯示,該方案顯示信息量大,編程麻煩。mcu顯示模塊鍵盤模塊實時時鐘ds1302模塊數據存儲eeprom 24lc02串口通信模塊實訓報告第 三 頁設計按鍵,按鍵采用 44 鍵盤,使顯示結果更簡潔。功能鍵:時間設定,首先按下是時鐘秒的調節;其次為時鐘分的調節;再次為時鐘時的調節;加 1 鍵:加 1 鍵為每次按下功能鍵時,分別對時、分、秒進行加 1;減 1 鍵:減 1 鍵為每次按下功能鍵時,分別對時、分、秒進行減 1;時鐘與鬧鈴轉換鍵:鬧鐘設置/啟鬧/停鬧鍵。三、硬件電路圖三、硬件電路圖實訓報告第 四 頁123456abcd654321d
5、cbatitlenumberrevisionsizebdate:26-dec-2011sheet of file:c:documents and settingsadministrator件件件件件件件backup1.ddbdrawn by:p1.01p1.12p1.23p1.34p1.45p1.56p1.67p1.78rst9p3.0rxd10p3.1txd 11p3.2int012p3.3int113p3.4 t014p3.5 t115p3.6 wr16p3.7 rd17xtal218xtal119vss20p2.021p2.122p2.223p2.324p2.425p2.526p2.62
6、7p2.728psen29ale30ea31p0.732p0.633p0.534p0.435p0.336p0.237p0.138p0.039vcc40stc89c52vcc1f2g3e4d5vcc6dp7c8b9a10gnd1k20022ufvccresetvccp00p01p02p03p04p05p06p07vcc1f2g3e4d5vcc6dp7c8b9a10vcc1f2g3e4d5vcc6dp7c8b9a10vcc1f2g3e4d5vcc6dp7c8b9a10vcc1f2g3e4d5vcc6dp7c8b9a10vcc1f2g3e4d5vcc6dp7c8b9a10q1pnpq2pnpq3pn
7、pq4pnpq5pnpq6pnpa1b2c3e14e25e36y015y114y213y312y411y510y69y77u?74ls138r11kr21kr31kr41kr51kr61kvccp00p01p02a7b1c2d6lt3bi/rbo4rbi5a13b12c11d10e9f15g14u?74ls47r9100r10100r11100r12100r13100r14100r15100vccp04p05p06p07c1+1c1-3c2+4c2-5t1 in11t2 in10r1 in13r2 in8gnd15vcc16vs+2vs-6t1 out14t2 out7r1 out12r2 o
8、ut9max232162738495j1db9+c210u+c310u+c510u+c610u+c7100uvccrxdtxds1s2s3s4p14p15p16p17s5s6s7s8s9s10s11s12s13s14s15s16p10p11p12p13ls1speakerq7pnpr2010kr211kr22200vccp33四四、程序、程序流程圖流程圖實訓報告第 五 頁開始初始化啟動定時器顯示時鐘檢測鍵盤鍵盤模塊顯示模塊響鬧鐘停止ny是否有鍵按下鬧鐘時間是否到主函數實訓報告第 六 頁是否有鍵按下切功能鍵顯示模塊分加調試程序分加 1分減時加時減調試程序分減 1調試程序時加 1調試程序時減 1y
9、yyyyyn鍵盤模塊鍵盤模塊顯示模塊切換鍵按下u=1顯示時鐘顯示鬧鐘yyu=2顯示模塊顯示模塊五、源五、源程序程序#include#define uchar unsigned char #define uint unsigned intsbit p10=p10;sbit p14=p14;sbit p15=p15;sbit p16=p16;sbit p17=p17;sbit p3=p33;uchar t0;/定義 hang lie key t0uint n,x,p,w,z,h;int 實訓報告第 一 頁i,j,m,a,b,c,d,k,e,f,r,y,a1,b1,c1,d1,e1,f1,u,h1,
10、k1,r1,v;uchar code tab=0 x00,0 x10,0 x20,0 x30,0 x40,0 x50,0 x60,0 x70,0 x80,0 x90;void delay(uint q);/延時函數聲明void saomiao();/鍵盤掃描函數聲明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(
11、1);p0=tabc+0 x02;delay(1);p0=tabd+0 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=ta
12、bf1+0 x05;delay(1);/*定時器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)實訓報告第 二 頁 k=0;r+; if(r=24) r=0; /*鍵盤掃描函數*/void saomiao() unsign
13、ed char hang=0,lie=0,key=0; p1=0 x0f; /賦初值if(p1!=0 x0f) /判斷是否有鍵按下 hang=p1; /讀行號 p1=0 xf0; /行列反轉 lie=p1; /讀列號 key=hang|lie; /讀鍵值 switch(key)/根據鍵值不同 調用不同的處理函數 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 xbd:n=7;br
14、eak;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; /*延時函數*/ void delay(uint o ) for(i=0;i0;j-);/*功能選擇鍵*/void gongnengjian() if(n=5) if(n!=5);n=0;u+;if
15、(u=3) u=1; delay(30); /*時間調試+鬧鐘調試*/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)實訓報告第 三 頁 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; r-;delay(30); if(r=-1) r=23; xianshi
16、();/*鬧鐘*/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);實訓報告第 四 頁 if(r1=-1) r1=23; naozongxianshi(); /*鬧鐘*/void naozhong() if(k=k1)&(r=r1) for(v=0;v50;v+) p3=0; p3=1; /*主函數*/void main() dingshi(); while(1) saomiao(); gongnengjian(); shijiantiaoshi(); naozhong(); 六、六、實訓實訓體會體會十天的單片機實訓結束了,這次讓我學到了很多東西, 為期 10 天的單片機實訓雖然不是很長,但是讓我感覺到了原來編程不是很簡單,先開始的顯示時鐘不是很難,下面的鬧鐘設置及調試部分就花費了相當長的時間,本來還以為編程會很簡單的,等到實際操作起來才知道它的復雜性
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 東坡成就介紹課件
- 上海市奉賢區2025屆高三下學期二模試題 歷史 含解析
- 專業職業課件
- 合伙合同與終止合同
- 遼寧省沈陽市五校協作體2024-2025學年高考模擬試卷(1)語文試題含解析
- 山東理工大學《數據結構中俄》2023-2024學年第一學期期末試卷
- 山東省青島市第十六中學2025年重慶一中初三4月月考物理試題含解析
- 銷售合同書范文
- 店鋪租賃合同模板
- 云南省德宏市重點中學2025屆初三5月模擬考試自選試題含解析
- 考古發掘中文物的采集與保存課件
- 小學四年級地方課程安全教育教案泰山出版社
- 化學性及藥物性頜骨骨髓炎
- 神奇的植物王國課件
- 員工崗位技能考核評定表
- 項目部安全生產事故應急預案
- 垂體瘤-PPT課件
- 鉆井井控裝置
- 贛美版(江西)小學四年級美術下全冊教案
- 12隊淘汰賽_對陣表
- 我國城市馬拉松賽事發展現狀分析
評論
0/150
提交評論