51單片機電子時鐘課程設計實驗報告_第1頁
51單片機電子時鐘課程設計實驗報告_第2頁
51單片機電子時鐘課程設計實驗報告_第3頁
51單片機電子時鐘課程設計實驗報告_第4頁
51單片機電子時鐘課程設計實驗報告_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、單片機原理與應用課程設計總結報告題目:單片機電子時鐘的設計與實現(xiàn)設計人員:學號:班級:指導老師:日期:目錄1 .題目與主要功能要求,22 .整體設計框圖及整機概述,33 .各硬件單元電路的設計、參數(shù)分析及原理說明,34 .軟件流程圖和流程說明,,,45 .總結設計及調試的體會,,,10附錄1 .圖一:系統(tǒng)電路原理圖,,,112 .圖二:系統(tǒng)電路PCB,123 .表一:元器件清單,134.時鐘程序源碼,,,14題目:單片機電子時鐘的設計與實現(xiàn)課程設計的目的和意義課程設計的目的與意義在于讓我們將理論與實踐相結合。培養(yǎng)我們綜合運用電子課程中的理論知識解決實際性問題的能力。讓我們對電子電路、電子元器件

2、、印制電路板等方面的知識進一步加深認識,同時在軟件編程、排錯調試、焊接技術、相關儀器設備的使用技能等方面得到較全面的鍛煉和提高,為今后能夠獨立完成某些單片機應用系統(tǒng)的開發(fā)和設計打下一個堅實的基礎。課程設計的基本任務利用89S51單片機最小系統(tǒng),綜合應用單片機定時器、中斷、數(shù)碼顯示、鍵盤輸入、蜂鳴報警等知識,設計一款單片機和簡單外設控制的電子時鐘。主要功能要求最基本要求1)使用6位數(shù)碼管,前兩位顯示小時(24小時制),中間兩位顯示分鐘,后兩位顯示秒。時鐘每走1秒,秒數(shù)碼管加1顯示,60秒后分鐘數(shù)碼管加1顯示,60分鐘后小時數(shù)碼管加1顯示。2)設計89S51單片機最小系統(tǒng)3)掌握使用Protel9

3、9繪制原理圖和布板的過程、方法和技巧。4)掌握單片機開發(fā)軟件(KeilC51或Wave)的使用和調試。5)編寫并調試單片機定時及其中斷程序,以實現(xiàn)電子時鐘的功能。6)設計八段數(shù)碼管顯示電路并編寫驅動程序,輸入并調試拆字程序和數(shù)碼顯示程序。7)掌握硬件和軟件聯(lián)合調試的方法。8)完成系統(tǒng)硬件電路的設計和制作。9)完成系統(tǒng)程序的設計。10)完成整個系統(tǒng)的設計、調試和制作。11)完成課程設計報告?;疽?)實現(xiàn)最基本要求的110部分。2)鍵盤輸入可以控制電子時鐘的走時/調試。3)設計鍵盤輸入電路和程序并調試。4)掌握鍵盤和顯示配合使用的方法和技巧。提高發(fā)揮部分1)添加“鬧時”功能,設計蜂鳴器鬧鈴電路

4、和程序并調試。2)添加“整點鬧時”功能。為走時準確性設計解決算法并編程實現(xiàn)。3)用液晶模塊代替數(shù)碼管顯示,設計相應硬件電路和軟件程序并調試。3)使用專用時鐘芯片,設計硬件電路和軟件程序實現(xiàn)年月日和星期顯示。整體設計框圖及整機概述整體設計框圖整機概述1)開機為走時模式,正常顯示時間。在此模式下整點鬧時,定點鬧時有效。2)共設置3個按鍵,分別為模式鍵、功能鍵1、功能鍵2。按動模式鍵,模式將在走時/調時/日期顯示及調整/鬧鐘顯示及調整4個模式下切換。3)走時模式下,按動功能鍵1/功能鍵2停止鬧時。4)調時模式下,功能鍵1調整分鐘數(shù)值,功能鍵2調整小時數(shù)值。5)日期顯示及調整模式下,功能鍵1調整日期數(shù)

5、值,功能鍵2調整月份數(shù)值。6)鬧鐘顯示及調整模式下,功能鍵1調整鬧鐘分鐘數(shù)值,功能鍵2調鬧鐘時鐘數(shù)值。7)由于按鍵設定原因:只有2個功能鍵,年份調整功能取消,鬧鐘開關默認為開。8)年月日通過代碼而不是外部芯片實現(xiàn)。初始值2010年12月24號。數(shù)碼管顯示101224。9)由于開機時鐘與鬧鐘都為00:00:00,鬧鐘默認開啟。開機會報時1分鐘。各硬件單元電路的設計、參數(shù)分析及原理說明電源電路元件有限沒有制作電源電路部分。使用開發(fā)板或者實驗箱上的5V電源進行供電。按鍵參考書本P232的鍵盤接口電路原理圖,采用4.7KQ的電阻防止輸入口電流過大燒壞89S51芯片。按鍵釋放時,P1口通過4.7KQ電阻

6、與電源相連,得到一個高電平。按下按鍵時,P1口接地,得到一個低電平。通過內部代碼將其轉換為正邏輯。模式鍵接P1.0口,功能鍵1接P1.1口,功能鍵2接P1.2口。單片機最小系統(tǒng)參考實驗指導書與課本及網(wǎng)絡資料設計按鍵電平復位。LED數(shù)碼管首先P0作為段碼輸出。由于P0口輸出級無上拉電阻,故需添加一排阻為其上拉電阻。其次采用共陽極數(shù)碼管。段碼端為低電平時導通LED,此時數(shù)碼管向89S51芯片P0口灌電流,為防止芯片燒壞,還需加1個1KQ的限流電阻。考慮到數(shù)碼管的亮度問題,采用了PNP三極管做驅動電路?;鶚O接上1KQ電阻后再與P2口相連(P2.0P2.5)進行位選。發(fā)射極接5V電源,集電極接數(shù)碼管位

7、選。蜂鳴器蜂鳴器接P3.7口。由于使用的是有源蜂鳴器,代碼的編寫簡單化了。只需對P3.7口清零與置位。P3.7口先接上1KQ電阻后再接PNP三極管的基極。發(fā)射極接5V電源,集電極接蜂鳴器正極,蜂鳴器負極則接地。軟件流程圖和流程說明軟件流程圖1)主程序流程圖流程圖說明等待定時器中斷初始化:包括定時器賦初值,初始化各內存單元。開定時器中斷,開CPU中斷,送段碼表頭地址給DPTR2)顯示子程序流程圖按鍵掃描子程序P1口寫1P1數(shù)據(jù)送累加器A并取反。取正邏輯屏蔽高5位模式查詢子程序模式值送累加器AA值為0?走時模式設置A值為1?調時模式設置A值為2?日期顯示及調整模式鬧鐘顯示及調整模式日期顯示及調整子

8、程序與鬧鐘顯示及調整子程序流程圖與調時模式子程序大同小異。a)日期顯示及調整子程序送給R3/R4/R5的數(shù)據(jù)為日/月/年,按功能鍵1日期加1,按功能鍵2月份加1。至于數(shù)值的合法性在程序里有具體的判斷。b)鬧鐘顯示及調整子程序送給R3/R4/R5的數(shù)據(jù)為鬧鐘開關值/鬧鐘分/鬧鐘時,按功能鍵1鬧鐘分加1,按功能鍵2鬧鐘時加1。至于數(shù)值的合法性在程序里有具體的判斷。5)鬧鐘查詢子程序6)定時器中斷子程序數(shù)值合法性在程序中處理與判斷,流程圖中不表現(xiàn)??偨Y設計及調試體會硬件設計部分:首先要通過計算與參考資料等決定參數(shù)。而后通過仿真軟件等調試,確定參數(shù)無誤后再開始用Protel99SE畫原理圖,進而生成P

9、CB進行布板。軟件設計部分:設計軟件首先要考慮要做的功能,確定出合理的算法。合理的算法不僅要可以實現(xiàn)功能,而且在添加功能的時候要方便靈活。有的人為了實現(xiàn)某種功能用了各種各樣的方法來實現(xiàn),結果程序結構吃死,當想要添加功能或者修改其他功能的時候,將修改程序大部分結構,也就是說要破壞程序現(xiàn)有的結構。關于調試:Keil軟件調試單片機程序的時候,編譯通過并不代表程序是正確的。編譯通過只能說明程序沒有語法上的錯誤。進行軟件仿真或者下載到開發(fā)板上進行調試,經(jīng)常會出現(xiàn)各種各樣的錯誤。許多超出預期效果的現(xiàn)象往往是一些微小錯誤引起的。例如沒有現(xiàn)場保護跟恢復現(xiàn)場等,所以養(yǎng)成良好的編程習慣也很重要。有些想達成某些功能

10、而添加的語句,實際上確一點效果也沒有。舉個編程中的小問題:當有按鍵按下時,我們都要有軟件防抖。正常的方法是調用一個延時。在實際調試中,要跳過這個抖動,需要100Ms左右。如果使用正常的延時,會導致按鍵按下時CPU100Ms內無法進行其他操作,也就是說。平均1S內100MS不調用顯示子程序,這樣就會導致亮度降低。這時候,考慮到顯示子程序一次有十幾毫秒,就特別寫了一個調用7次顯示的子程序來作為按鍵防抖的延時,實際上效果也是很不錯的。這個想法就是在修改了多次程序未達到想要的效果(有按鍵按下時顯示亮度不降低)后最終想出來的辦法。最后在做完板,焊完電路后,在接通電源之前,要用萬用表仔細檢查電路是否有連接

11、錯,以免燒壞芯片和數(shù)碼管。五天以來的其他體會:態(tài)度要積極,不要認為很簡單就不緊不慢。很多東西并不是自己設想的那么順利,有時候一個小問題可以花上你半天甚至一天的時問。雖然自己在程序上并沒遇到太大的問題,但是因為態(tài)度不夠積極,對于沒畫過的PCB圖遲遲不去下手,在周四晚上才解決。本以為周五一天可以做完板并完成整機調試,可是各種突發(fā)事件讓自己措手不及。發(fā)現(xiàn)板來不及做完后才將程序功能進行擴展。這是我在這次實驗中的一個教訓,也讓我明白了對于自己不能太過于自信,態(tài)度決定一切。圖一:系統(tǒng)電路原理圖件陽甘I十十陽十£x_tan二T-nbTnBiw_nltEJ.-“一IT3F7UWIHNTIE_,=/二

12、3工71*m出H?wa-AIElLJultrJ-4np口司州溪母器pcb表一:元器件清單器件名稱編p1K電阻R121K電阻R81K電阻R71K電阻R91K電阻R101K電阻R111K電阻R131K電阻R181K電阻R171K電阻R201K電阻R191K電阻R61K電阻R151K電阻R161K電阻R144.7k電阻R34.7k電阻R44.7k電阻R210K電阻R511.0592M晶振Y122u電容C180C51單片機U3104電容C4104電容C84148二極管D1PNP三極管Q5PNP三極管Q6PNP三極管Q4PNP三極管Q2PNP三極管Q3PNP三極管Q7PNP三極管Q1排阻J1數(shù)碼管J2數(shù)

13、碼管J3按鍵(小時)S3按鍵(分鐘)S2按鍵(模式)S1電源插針J4按鍵(復位)S4蜂鳴器LSI時鐘程序源碼YEAR_HEQU30HYEARLEQU31H;年份的高位MONTHEQU32HDAYEQU33HDAY_MAXEQU34HHOUREQU35HMINUTEEQU36HSECONDEQU37HBOTTONEQU38HFLAG開關/BEEPHEQU39HEQU40HBEEPMEQU41HENBEEPEQU42HORG0000HAJMPMAINORG001BHAJMPSERVEMAIN:MOVTMOD,#10HMOVYEAR_H,#20HMOVYEAR_L,#10HMOVMONTH,#12H

14、MOVDAY,#24HMOVR2,#14HCLRAMOVHOUR,A;年份的低位;月份日期;每月最大天數(shù);時鐘;分鐘;秒鐘;鍵值;模式標記/0走時/1調時/2日期顯示及調整/3鬧鐘調整及鬧鐘;鬧鐘時鐘;鬧鐘分鐘;鬧鐘開關;設為模式年高位賦初值年低位賦初值月份賦初值01日期賦初值01裝入20次中斷;A清零;小時清零2010MOVMINUTE,AMOVSECOND,AMOVFLAG,ACLRP3.7MOVENBEEP,#01HMOVTH1,#4CHMOVTL1,#00HSETBET1SETBEASETBTR1MOVDPTR,#TABDIS:LCALLDISPLAYLCALLKEYLCALLNEXT

15、LCALLBEEPSJMPDISSERVE:PUSHPSWPUSHACCMOVTH1,#4CHMOVTL1,#00H;重新賦計數(shù)初值DJNZR2,BRIDGEAJMPBREAK1BRIDGE:LJMPRETURNBREAK1:MOVR2,#14HMOVA,#01H;分鐘清零;秒鐘清零;初始化模式;關蜂鳴器;鬧鐘默認開;賦初值;開中斷;啟動T1;送段碼表頭;重復調用顯示子程序;掃描按鍵狀態(tài);查詢當前模式;查詢鬧鐘開關;保護現(xiàn)場;未滿10次,返回;重置中斷次數(shù);秒加1ADDA,SECONDDAA;轉為BC加MOVSECOND,ACJNEA,#60H,BRIDGE;未滿60秒,返回MOVSECOND

16、,#00H;秒清零MOVA,#01H;分加1ADDA,MINUTEDAA;轉為BC加MOVMINUTE,ACJNEA,#60H,RETURN;未滿60分,返回MOVMINUTE,#00H;分鐘清零MOVA,#01H;時加1ADDA,HOURDAA;轉為BC加MOVHOUR,ACJNEA,#24H,RETURN;未滿24小時,返回MOVHOUR,#00H;小時清零MOVA,MONTHDAA;轉為BC加;不是1月,轉跳;不是3月,轉跳;不是5月,轉跳;不是7月,轉跳;不是8月,轉跳;不是10月,轉跳CJNEA,#1H,JUDGE2AJMPSETDAT_MAX1JUDGE2:CJNEA,#3H,JU

17、DGE3AJMPSETDAT_MAX1JUDGE3:CJNEA,#5H,JUDGE4AJMPSETDAT_MAX1JUDGE4:CJNEA,#7H,JUDGE5AJMPSETDAT_MAX1JUDGE5:CJNEA,#8H,JUDGE6AJMPSETDAT_MAX1JUDGE6:CJNEA,#10H,JUDGE7AJMPSETDAT_MAX1JUDGE7:CJNEA,#12H,SETDAT_MAX2;不是12月,轉跳SETDAT_MAX1:MOVDAY_MAX,#32H;天上限為31AJMPCONTINUE;返回SETDAT_MAX2:CJNEA,#2H,SETDAT_MAX3;不是2月,轉跳

18、;2月,天上限28;天上限為30MOVDAY_MAX,#29HSETDAT_MAX3:MOVDAY_MAX,#31HCONTINUE:MOVA,#01H;天加1ADDA,DAYDAA;轉為BC加MOVDAY,ACJNEA,DAY_MAX,RETURN;未滿天數(shù)上限,返回MOVDAY,#01H;天數(shù)置1MOVA,#01H;月份加1ADDA,MONTHDAA;轉為BC加MOVMONTH,ACJNEA,#13,RETURN;未滿12月,返回MOVMONTH,#01H;月份置1MOVA,#01H;年低位加1ADDA,YEAR_LDAA;轉為BC加MOVYEAR_L,ACJNEA,#99H,RETURN

19、;未滿99年,返回MOVYEAR_L,#00H;年低位清零MOVA,#99H;年高位加1ADDA,YEAR_HDAA;轉為BC加MOVYEAR_H,ACJNEA,#99H,RETURN;未滿99年,返回MOVYEAR_H,#00H;年高位清零RETURN:POPACCPOPPSW;恢復現(xiàn)場RETI;中斷返回;=顯示子程序=DISPLAYPUSHPSWPUSHACCMOVA,R3ANLA,#0FHMOVCA,A+DPTRMOVP2,#0DFHMOVP0,ALCALLDELAYMOVA,R3SWAPAANLA,#0FHMOVCA,A+DPTRMOVP2,#0EFHMOVP0,ALCALLDELAY

20、MOVA,R4ANLA,#0FHMOVCA,A+DPTRMOVP2,#0F7HMOVP0,ALCALLDELAYMOVA,R4SWAPAANLA,#0FHMOVCA,A+DPTRMOVP2,#0FBHMOVP0,ALCALLDELAYMOVA,R5ANLA,#0FHMOVCA,A+DPTRMOVP2,#0FDHMOVP0,ALCALLDELAYMOVA,R5SWAPAANLA,#0FHMOVCA,A+DPTRMOVP2,#0FEHMOVP0,ALCALLDELAYPOPACCPOPPSWRET尸=啾鍵掃描程序=KEY:MOVP1,#0FFHMOVA,P1CPLAANLA,#07HJNZKEY1

21、RETKEY1:LCALLDADMOVA,P1CPLAANLA,#07HJNZKEY2RETKEY2:MOVBOTTON,AJBACC.0,SETMODERETSETMODE:MOVA,FLAGINCAMOVFLAG,ACJNEA,#04H,NEXTMOVFLAG,#00HRET;=模式查詢程序=NEXT:MOVA,FLAGCJNEA,#00H,SETTIMESETBTR1MOVR3,SECONDMOVR4,MINUTEMOVR5,HOURMOVA,BOTTONJBACC.1,STOPJBACC.2,STOPRET;=|鬧鐘開關/查詢=BEEP:MOVA,FLAGCJNEA,#00H,STOP

22、MOVA,ENBEEPCJNEA,#01H,STOPBEEPLAY:MOVA,HOURCJNEA,BEEPH,STOPMOVA,MINUTECJNEA,BEEPM,STOPCLRP3.7RETSTOP:SETBP3.7MOVBOTTON,#00HRET尸=訓時程序=SETTIME:CLRTR1CJNEA,#01H,SETDATEMOVR3,SECONDMOVR4,MINUTEMOVR5,HOURMOVA,BOTTONJBACC.1,MINJBACC.2,HORRETMIN:MOVA,#01HADDA,MINUTEDAAMOVMINUTE,ACJNEA,#60H,BACKMOVMINUTE,#0

23、0HMOVBOTTON,#00HRETHOR:MOVA,#01HADDA,HOURDAAMOVHOUR,ACJNEA,#24H,BACKMOVHOUR,#00HMOVBOTTON,#00HRETBACK:MOVBOTTON,#00HRET;=日期顯示及調整子程序=SETDATE:CJNEA,#02H,SETBEEPMOVR3,DAYMOVR4,MONTHMOVR5,YEAR_LMOVA,BOTTONJBACC.1,DAYSJBACC.2,MORETDAYS:MOVA,MONTHDAA;轉為BC加;不是1月,轉跳;不是3月,轉跳;不是5月,轉跳;不是7月,轉跳;不是8月,轉跳;不是10月,轉跳C

24、JNEA,#1H,JUDGEAAJMPSETDAT_MAXAJUDGEA:CJNEA,#3H,JUDGEBAJMPSETDAT_MAXAJUDGEB:CJNEA,#5H,JUDGECAJMPSETDAT_MAXAJUDGEC:CJNEA,#7H,JUDGEDAJMPSETDAT_MAXAJUDGED:CJNEA,#8H,JUDGEEAJMPSETDAT_MAXAJUDGEE:CJNEA,#10H,JUDGEFAJMPSETDAT_MAXAJUDGEF:CJNEA,#12H,SETDAT_MAXB;不是12月,轉跳SETDAT_MAXA:MOVDAY_MAX,#32H;天上限為31AJMPCONTINUE1;返回SETDAT_MAXB:CJNEA,#2H,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論