|
單片機課程報告 專業:電氣自動化 姓名:JION學長 QQ: 指導老師:朱** 一、設計背景
數字鐘已成為人們日常生活中必不可少的必需品,廣泛用于個人家庭以及辦公室等公共場所,給人們的生活、學習、工作、娛樂帶來極大的方便。盡管目前市場上已有現成的數字鐘集成電路芯片出售,價格便宜、使用也方便,但鑒于單片機的定時器功能也可以完成數字鐘電路的設計,因此進行數字鐘的設計是必要的。在這里我們將已學過的比較零散的數字電路的知識有機的、系統的聯系起來用于實際,來培養我們的綜合分析和設計電路,寫程序、調試電路的能力。單片機具有體積小、功能強可靠性高、價格低廉等一系列優點,不僅已成為工業測控領域普遍采用的智能化控制工具,而且已滲入到人們工作和和生活的各個角落,有力地推動了各行業的技術改造和產品的更新換代,應用前景廣闊。 二、單片機課程設計目的
1.進一步熟悉和掌握8051單片機的結構及工作原理。
2.掌握單片機的接口技術及相關外圍芯片的外特性,控制方法。
3.通過課程設計,掌握以單片機核心的電路設計的基本方法和技術,了解表關電路參數的計算方法。
4.通過實際程序設計和調試,逐步掌握模塊化程序設計方法和調試技術。
5.通過完成一個包括電路設計和程序開發的完整過程,使學生了解開發一單片機系統的全過程,為今后從事相應打下基礎。
6.掌握SPI串口進行數據傳輸的應用,并學會使用外部芯片輔助項設計。
7.鍛煉通過自學與自己探索的方式解決問題的能力。
8.通過此次課程設計將單片機軟硬件結合起來對程序進行編輯,校驗,鍛煉實踐能力和理論聯系實際的能力。
三、課程設計要求。
1.本系統共用4個數碼管從左到右依次顯示月、日/時、分采用軟件譯碼靜態顯示。
2.按鍵處理設置為:如沒有按鍵,則時鐘正常走時并且第二個數碼管的小數點一秒一下。
3.當按下切換按鍵時進入時間/日期切換鍵時,顯示日期小數點常亮,再按一下有變成時間顯示。
4.校正時間功能
按下校正鍵,月數碼管重復閃爍,小數點常亮,這樣在按下加調鍵可以進行校時。
再按下校正鍵時,日數碼管重復閃爍,小數點常亮,這樣在按下加調鍵可以進行校時。
再按下校正鍵時,時數碼管重復閃爍,小數點閃爍,這樣在按下加調鍵可以進行校時。
再按下校正鍵時,分數碼管重復閃爍,小數點閃爍,這樣在按下加調鍵可以進行校時按。按下確定鍵后程序正常走時 。 四、設計方案
4.1、計時部分課程設計思路:
該課程設計是利用80C51單片機內部的定時/計數器、中斷系統、以及行列鍵盤,設計一個單片機電子時鐘。設計的電子時鐘通過數碼管顯示,并能通過按鍵實現設置時間、校時、啟動控制等。用定時/計數器T0,工作于定時,采用方式1,對12MHZ的系統時鐘進行定時計數,初值設為62500ms(自己計算)。形成定時時間為62500ms。用片內RAM的2FH單元對62500ms計數,計16次產生秒計數器34H單元加1,秒計數器加到60則分計數器33H單元加1,分計數器加到60則時計數器32H單元加1,時計數器加到24則時計數器清0。然后把分、時 、日、月計數器分成分單元和時單元放到4個數碼管的顯示緩沖區,通過數碼管顯示出來。顯示格式為小時高位、小時低位---分高位、分低位和顯示日期格式為月高位、月低位---日高位、日低位。 4.4資源分配:
按鍵信息存儲單元 50H
月單元 30H
日單元 31H
時單元 32H
分單元 33H
秒單元 34H
計數單元 2FH
清零標志位 20H.1
時間/日期標志位 20H.0
顯示的四位BCD碼依次放入43H、42H、41H、40H
校正指針 21H
顯示緩沖區 3BH 3AH,
4.2、按鍵判斷部分課程設計思路:
當每十六微妙進位一次時,程序就進行一次判斷按鍵是否有按下的(是否有 6 按鍵功能 切換鍵,切換日期與時間 校正鍵 校時鍵, 確定鍵校正鍵按下k2),判斷是否與上次按鍵相同,如果相同直接送入時間緩沖間送出顯示,如果不相同就保存按下的按鍵再進行判斷是不是切換鍵(ACC.5,SET2) 按下,如果是時間時期同時取反,將取反時間送入時間緩沖間送出顯示同時將取反日期送入日期緩沖間送出顯示。如果不是,判斷是否是校正鍵按下,如果不是重復將取反時間送入時間緩沖間送出顯示同時將取反日期送入日期緩沖間送出顯示。如果是校正鍵按下就進入校正狀態,將校正指針初值設成(00,01、10、11、分別代表分、時日、月)同樣判斷校正指針(20H.1)中的值進入下面分、時、日、月四個子程序中執行,同時進入每個時間日期子程序中都要進行判斷是否有ACC.6 ,ADD2;(加法)和ACC.7,SURE;確定鍵按下.每次按鍵任何一個鍵間日期緩沖間顯示。如下圖所示: 
4.3、數碼管顯示部分:
把我們設計好的程序通過查表在數碼管上顯示出來,數碼管上從左到右分別顯示月、日/時、分,四個數碼管分別顯示高位和低位,切換時間顯示時,要顯示出小數點閃爍.
如下圖所示:

4.5程序流程圖: 4.6子程序流程圖: 
六、總結及建議
課程設計是培養學生綜合運用所學知識、發現、提出、分析和解決實際問題,鍛煉實踐能力的重要環節,是對學生實際工作能力的具體訓練和考察過程。隨著科學技術發展的日新日異,單片機已經成為當今計算機應用中空前活躍的領域, 在生活中可以說得是無處不在。因此作為二十一世紀的大學來說掌握單片機的開發技術是十分重要的。
回顧起此次單片機課程設計,至今我仍感慨頗多,的確,從選題到定稿,從理論到實踐,在一天半的日子里,可以說得是苦多于甜,但是可以學到很多很多的的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設計的過程中發現了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固,比如說對單片機匯編語言掌握得不好,通過這次課程設計之后,一定把以前所學過的知識重新溫故。這次課程設計終于順利完成了,在設計中遇到了很多編程問題,最后在老師的辛勤指導下,終于游逆而解。同時,在老師的身上我學得到很多實用的知識,在次我表示感謝!同時,對給過我幫助的所有同學和各位指導老師再次表示忠心的感謝!
- ORG 0000H
- SJMP MAIN
- ORG 000BH
- LJMP ITOP
- ORG 0030H
- MAIN: MOV 50H,#0FFH ;按鍵信息初始化為未按鍵狀態
- MOV 30H,#1 ;月單元
- MOV 31H,#1 ;日單元
- MOV 32H,#0 ;時單元
- MOV 33H,#0 ;分單元
- MOV 34H,#0 ;秒單元
- MOV 2FH,#16 ;2FH為十六分之一秒計數單元
- CLR 20H.1 ;校正狀態標志清零,為正常走時狀態
- SETB 20H.0 ;時間/日期標志置1
- MOV TMOD,#01H ;置T0工作于方式1
- MOV TH0,#0BH ;采用12M晶振,定時十六分之一秒
- MOV TL0,#0DCH ;裝載定時器初值
- MOV IE,#82H ; 允許中斷
- SETB TR0 ;啟動定時器
- SJMP $
- ITOP: PUSH PSW ;現場保護
- PUSH ACC
- MOV TH0,#0BH
- MOV TL0,#0DCH
- DJNZ 2FH,KEY ;計數開始
- MOV 2FH,#16 ;十六分之一秒計數單元
- MOV A,34H
- ADD A,#01H ;在0~9之間,加01H
- DA A ;進行十進制調整
- MOV 34H,A ;送到秒計數單元
- CJNE A,#60H,KEY ;未到六十秒轉移到KEY,到了則順序往下執行
- MOV 34H,#00H ;秒單元清零
- MOV A,33H ;分單元加1,并做十進制調整
- ADD A,#01H
- DA A
- MOV 33H,A ;送到分計數單元
- CJNE A,#60H,KEY ;未到六十分轉移到KEY
- MOV 33H,#00H ;分單元清零
- MOV A,32H ;時單元加1,并做十進制調整
- ADD A,#01H
- DA A
- MOV 32H,A ;送到時單元
- CJNE A,#24H,KEY ;未到二十四小時轉移,到了則順序往下執行
- MOV 32H,#00H ;時單元清零
- MOV A,31H ;日單元加1,并做十進制調整
- ADD A,#01H
- DA A
- MOV 31H,A ;送到日單元
- CJNE A,#31H,KEY ;未到三十一天轉移
- MOV 31H,#01H ;日單元變為一
- MOV A,30H ;月單元加1,并做十進制調整
- ADD A,#01H
- DA A
- MOV 30H,A ;送到月單元
- CJNE A,#12H,KEY ;未到十二個月轉移
- MOV 30H,#01H ;月單元變為一
- KEY: JNB 20H.1,ZOUSHI ;判斷是否校正狀態,不是,則轉非校正狀態
- LJMP JIAOSHI ;是,則轉為校正狀態
- ZOUSHI: MOV A,P1
- CJNE A,50H,KEY1 ;判斷是否與上次按鍵相同,不相同則轉移到KEY
- LJMP NONE1 ;相同則不斷判鍵
- KEY1: MOV 50H,A ;保存上次按鍵信息
- JNB ACC.4,SWITCH1 ;是否按下切換鍵
- JNB ACC.5,SET1 ;是否為校正鍵
- LJMP NONE1 ;沒按與無效鍵均不作判斷
- SWITCH1:CPL 20H.0 ;時間與日期的轉換
- NONE1: JNB 20H.0,DATE1 ;判斷日期與時間的標志
- MOV 3BH,32H ;將時間送到顯示緩沖區
- MOV 3AH,33H
- LJMP DISP
- DATE1: MOV 3BH,30H ;將日期送到顯示緩沖區
- MOV 3AH,31H
- LJMP DISP
- SET1: SETB 20H.1 ;切換到校正標志
- MOV 21H,#0 ;校正指針并請零
- CLR 20H.0 ;選擇日期標志
- MOV 3BH,30H ;將日期送到顯示緩沖區
- MOV 3AH,31H
- LJMP DISP
- JIAOSHI:MOV A,P1
- CJNE A,50H,KEY2 ;判斷是否與上次按鍵相同
- LJMP NONE2 ;若相同則不能判斷按鍵
- KEY2: MOV 50H,A ;保存上次按鍵信息
- JNB ACC.5,SET2 ;是否為校正鍵
- JNB ACC.6,ADD2 ;是否為加鍵
- JNB ACC.7,SURE ;是否為確定鍵
- LJMP NONE2 ;空操作
- SET2: INC 21H ;校正指針并自動加1
- ANL 21H,#03H
- SJMP NONE2
- ADD2: MOV A,#30H ;指向需要校正的指針
- ADD A,21H
- MOV R0,A
- MOV A,@R0 ;需要校正的指針并自動加1
- ADD A,#1
- DA A
- MOV @R0,A
- CJNE R0,#30H,DATE ;判斷月是否校正完成,校正完成跳轉日
- CJNE @R0,#13H,NONE2
- MOV @R0,#1
- SJMP NONE2
- DATE: CJNE R0,#31H,HOUR ;判斷日是否校正完成,完成則跳轉到時
- CJNE @R0,#32H,NONE2
- MOV @R0,#1
- SJMP NONE2
- HOUR: CJNE R0,#32H,MIN ;判斷時是否校正完成,完成則跳轉到分
- CJNE @R0,#24H,NONE2
- MOV @R0,#0
- SJMP NONE2
- MIN: CJNE @R0,#60H,NONE2 ;校正分
- MOV @R0,#0
- SJMP NONE2
- SURE: CLR 20H.1 ;校時完成跳轉到走時標志
- SJMP TIME2
- NONE2: JNB 21H.1,DATE2 ;判斷送到顯示緩沖區的是時間還是日期
- TIME2: SETB 20H.0 ;時間/日期標志置1,為顯示時間狀態
- MOV 3BH,32H ;時間送到顯示緩沖區
- MOV 3AH,33H
- LJMP DISP
- DATE2: CLR 20H.0 ;時間/日期標志位清零,為顯示日期狀態
- MOV 3BH,30H ;日期送到顯示緩沖區
- MOV 3AH,31H
- DISP: MOV A,3BH ;顯示緩沖區中的內容分解為四位BCD碼依次放入43H~40H單元
- ANL A,#0F0H
- SWAP A
- MOV 43H,A
- MOV A,3BH
- ANL A,#0FH
- MOV 42H,A
- MOV A,3AH
- ANL A,#0F0H
- SWAP A
- MOV 41H,A
- MOV A,3AH
- ANL A,#0FH
- MOV 40H,A
- JNB 20H.1,DISP1;不是校正狀態,正常顯示,否則校正狀態下,閃爍顯示
- JNB 2FH.3,DISP1 ;若2FH.3為1,校正內容對應的BCD碼單元送熄滅碼
- JNB 21H.0,N1 ;為0高兩位傳送,為1低兩位傳送
- MOV 40H,#0AH
- MOV 41H,#0AH
- SJMP DISP1
- N1: MOV 42H,#0AH
- MOV 43H,#0AH
- LJMP DISP1
- DISP1: MOV DPTR,#TAB ;指向表單
- MOV A,40H ;查最高位
- MOVC A,@A+DPTR
- CJNE A,#09H,NEXT1 ;判斷最高位是否為0
- MOV A,#0FFH ;為0 則給熄滅碼
- NEXT1: MOV SBUF,A ;傳送到數碼管上,串行靜態顯示
- JNB TI,$
- CLR TI
- MOV A,41H ;查第二位
- MOVC A,@A+DPTR
- MOV SBUF,A ;傳送到數碼管上
- JNB TI,$ ;等待傳輸完畢
- MOV A,42H ;查第三位
- CLR TI ;允許繼續傳輸
- MOVC A,@A+DPTR ;查顯示數據對應段碼
- JNB 20H.0,NEXT2 ;判斷時間/日期標志
- ;CJNE A,#11H,NEXT2 ; 日期滅0,時間狀太不滅0
- ;MOV A,#0FFH
- ;MOV C,2FH.3 ;判斷并改變小數點,并判斷半秒亮半秒滅
- ;ANL C,20H.0
- mov c,2fH.3
- MOV ACC.4,C ;小數點為.4位
- NEXT2: MOV SBUF,A
- JNB TI,$
- CLR TI
- MOV A,43H ;查第四位
- MOVC A,@A
- MOV SBUF,A
- JNB TI,$
- CLR TI
- POP ACC ;現場恢復
- POP PSW
- RETI
- TAB: DB 11H,0d7H,98H,92H,56H,32H,30H,97H,10H,12H,0FFH
- END
復制代碼
完整的Word格式文檔51黑下載地址:
單片機課程設計.doc
(984.33 KB, 下載次數: 36)
2018-6-27 23:02 上傳
點擊文件名下載附件
|