




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、微機原理課程設計課程設計任務書系 別:機電學院專 業(yè):電信12級學 生 姓 名:張峰、汪志明學 號:2012011230 2012011242課程設計題目:數(shù)字鬧鐘起 迄 日 期:6月22日 7月4日課程設計地點:機電樓實驗室指 導 教 師:楊婷下達任務書日期: 2015 年 6月 22日目 錄一、摘要2二、實驗要求2三、實驗電路及功能說明2四、實驗程序流程圖5五、實驗結果分析7 六、設計心得8七、程序清單9八、參考文獻14九、附錄(AT89C51單片機)14一、摘要:作為一個合格的大學生,不僅需要有過硬的理論知識,還應該有動手實踐的能力,并且是將理論結合實際,提升到應用層面。以后走上社會,還
2、是會有很多新的知識是需要我們學習的,屆時需要我們有比較強的自學能力。此次微機課程設計對理論結合實際的動手能力和自學能力有很強的體現(xiàn)。我們這次是基于AT89C51單片機數(shù)字鬧鐘的設計。關鍵詞:數(shù)字鬧鐘,單片機AT89C51,LED數(shù)碼管。二、 實驗要求:三、 1.通過單片機內(nèi)部定時器產(chǎn)生秒脈沖定時中斷,在中斷服務程序中實現(xiàn)秒,分,小時的進位(24小時制)。四、 2.將當前時分秒在七段LED顯示器上顯示;(如:112233)五、 3.可設置鬧鐘的時間當前值(對準時間),設置鬧鈴時間,鬧鈴功能的關閉和開放。.三、實驗電路及功能說明:仿真電路圖如下:圖1時鐘界面圖2鬧鐘開啟狀態(tài)該數(shù)字鬧鐘是用一片AT8
3、9C51A單片機通過編程去驅動8個數(shù)碼管實現(xiàn)的。通過5個開關控制,從上到下5個開關KEY1KEY5的功能分別為: KEY1,調(diào)節(jié)時間,每調(diào)一次分加1;KEY2, 調(diào)節(jié)時間,每調(diào)一次時加1;KEY3,從其它狀態(tài)切換至時鐘狀態(tài);KEY4,切換至鬧鐘設置狀態(tài);KEY5,鬧鐘關閉和開放.控制鍵分別與P1.0P1.4口連接其中:A. 通過P2口和P3口去控制數(shù)碼管的顯示如圖所示P2口接數(shù)碼管的ag端,是控制輸出編碼,P3口接數(shù)碼管的18端,是控制動態(tài)掃描輸出B. 從P0.4輸出一個信號發(fā)光二極管發(fā)光,二極管在鬧鈴開關打開時發(fā)光。C. 從P1.5輸出一個信號使蜂鳴器發(fā)聲,蜂鳴器在鬧鈴打開并設置的鬧鐘時間到
4、了時候鳴叫。(圖1是時鐘運行狀態(tài),圖2是鬧鐘運行狀態(tài))功能說明:1 各個控制鍵的功能:可對時間進行校準調(diào)節(jié)(只能加);按下設置鍵數(shù)字時鐘進入鬧鐘設置狀態(tài),設置鬧鐘的時間;時加、分加鍵是在校準時間時或設置鬧鐘時間對小時數(shù)或分鐘數(shù)調(diào)節(jié)而設置的;2 AT89C51單片機,通過編寫程序對數(shù)碼顯示進行控制。3 八個7段數(shù)碼管顯示時鐘信號。四、實驗程序流程圖:1. 主程序流程圖: 圖32. 時鐘中斷程序流程圖: 圖43. 按鍵程序流程圖:圖5五、實驗結果分析:此數(shù)字鬧鐘設計是利用protues仿真軟件進行仿真?;旧蠈崿F(xiàn)了要求的功能,該多功能數(shù)字鐘實現(xiàn)的時鐘顯示、鬧鐘功能,校準時鐘時只設計了時加鍵和分加鍵
5、以及清零鍵,沒有設置減分減時鍵以及秒數(shù)調(diào)整按鍵??梢酝ㄟ^循環(huán)調(diào)節(jié)得到正確的調(diào)節(jié)數(shù)值。本程序共有分端口設置模塊,計數(shù)模塊,顯示模塊等幾個模塊。經(jīng)過調(diào)試,本程序可以實現(xiàn)題目的要求。時、分、秒都分兩位。個位滿十后就向前進一位。分秒的十位滿六十后也向前進一位。顯示小時兩位在滿二十四后重新計數(shù)。程序中設置5個開關控制,從上到下5個開關KEY1KEY5的功能分別為: KEY1,調(diào)節(jié)時間,每調(diào)一次分加1;KEY2, 調(diào)節(jié)時間,每調(diào)一次時加1;KEY3,從其它狀態(tài)切換至時鐘狀態(tài);KEY4,切換至鬧鐘設置狀態(tài);KEY5,鬧鐘關閉和開放.控制鍵分別與P1.0P1.4口連接應該注意的是,經(jīng)仿真,程序中設置的功能全都
6、可以良好運行。過程中遇到的問題:1.數(shù)碼管顯示不正常,出現(xiàn)亂碼; 2.實驗過程中,按下按鍵會出現(xiàn)抖動,需適當調(diào)整延時程序。六、設計心得通過對數(shù)字鬧鐘的編程實現(xiàn),對硬件特別是單片機的原理和實現(xiàn)都有了很深的解。更加深了對C語言和匯編的使用.整個程序中涉及單片機的使用,C語言和匯編語言熟練掌握的要求??梢哉f整個文件中最麻煩的就是進位條件的判斷,編程中經(jīng)常犯想當然的錯誤。另外對于中斷服務子程序的類型設置問題,由于以前對這個概念的理解留于表面,編程中出現(xiàn)了不少奇怪的錯誤。再調(diào)試中嘗試使用了分割法,對錯誤模塊進行定位,再進行排查.在算法實現(xiàn)上要有一定的思路要更能體現(xiàn)設計的目的。同時上機調(diào)試也是十分重要的,
7、在調(diào)試的過程中能夠不斷的發(fā)現(xiàn)在編寫算法時應該注意的一些細節(jié)和算法語句的非法使用,在調(diào)試過程中通過對算法的不斷測試、更正、擴充功能、修飾細節(jié),使算法程序不斷的得到完善。通過這次的課程設計使我認識到要將微機原理這門計算機專業(yè)的課學好不僅僅是要把書上的基本知識學好而且還要不斷進行實踐,將所學的跟實踐操作結合起來才能更好地鞏固所學,才能提高自己實踐能力.通過這次的設計使我認識到只停留在表面理解問題是很難使問題得到很好的解決的,實踐能力與理論知識同樣重要??梢哉f此課程設計的理論難度并不大,但是若要深入發(fā)掘其中的東西,并且實際去編程實現(xiàn),就遇到了相當大的難度。因為與之涉及的很多方面并沒有學過,需要自己去自
8、學和實踐檢驗。所以在以后的學習中一方面我要不斷的鞏固自己所學的理論知識,一方面還要多參加實際操作工作以便提高自己的實際操作能力。其實這次課程設計的最大收獲應該是找到了解決問題的幾個很好的途徑:1.討論2.通過網(wǎng)絡,在自己的網(wǎng)站上也收獲了很多,共享讓我們共同進步。此外,我學會了看硬件結構圖,并學會了自己去獨立的完善一個程序,對程序的效用等做思考。并體會到:問別人只能幫你開拓思路,真正解決問題還是要靠自己去摸索。當然討論是很好的學習途徑,它會讓你事半功倍.由于時間不是很充裕,程序中有很多值得改善的地方,我嘗試再其中加入更多的功能,但調(diào)試的結果沒有,所以需要繼續(xù)努力。七、 程序清單#include&
9、lt;reg51.h>#define uchar unsigned char#define uint unsigned intuint tcount,u;dat2=0,0,0,0,0,0,0,0;/uchar dat1=0,0,0,0,0,0,0,0;/時鐘定時緩沖區(qū)uchar alarms=0,0,0,0,0,0,0,0;/鬧鐘定時緩沖區(qū)uchar dis_bit=0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01;/unsigned char code SEG711=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,
10、0x90,0xBF,;/共陽極led數(shù)碼管"09","-"的字段碼sbit tminute=P10;sbit thour=P11;sbit shizhong=P12;sbit alarm=P13;sbit alarmswitch=P14;sbit P0_4=P04;sbit P0_0=P00;uint sw=0;uchar k;uchar ms=0;uchar flag=0;/鬧鐘切換標志位uchar sec=0;/鬧鐘計時秒uchar minit=0;/鬧鐘計時分struct timeuchar second;uchar minute;uchar ho
11、ur;time1;/定義名為time的結構體,變量名time1 uchar n,i;void delay(n)/1ms延時函數(shù) while(n-) for(i=120;i>0;i-); void modify(void)/時間調(diào)整 EA=0; if(thour=0) if(flag=0)/時鐘調(diào)整每次加1 dat16+;delay(200); if(dat16>3&&dat17=2) dat16=0;dat17=0; if(dat16>9) dat16=0;dat17+;if(dat17>2) dat17=0; if(flag=1)/鬧鐘時鐘定時 ala
12、rms6+;delay(200); if(alarms6>3&&alarms7=2) alarms6=0;alarms7=0; if(alarms6>9) alarms6=0;alarms7+; if(alarms7>2) alarms7=0; if(tminute=0)/分鐘調(diào)整每次加1 if(flag=0) dat13+;delay(200); if(dat13>9) dat14+;dat13=0;if(dat14>5) dat14=0; if(flag=1)/鬧鐘分鐘定時 alarms3+;delay(200); if(alarms3>
13、9) alarms4+;alarms3=0; if(alarms4>5) alarms4=0; if(shizhong=0)/時鐘返回,秒表顯示和緩沖初始化 flag=0; if(alarmswitch=0) if(sw=0) sw=1; P0=0x10;else sw=0; P0=0x00; delay(500); if(alarm=0)/鬧鐘鍵按下,顯示00-00-00flag=1; alarms0=0; alarms1=0;alarms2=10; alarms3=0;alarms4=0;alarms5=10;alarms6=0;alarms7=0; EA=1; void init(
14、void)/初始化TMOD = 0x11; TH0 = 0xDB;TL0 =0xFF;/工作方式3(兩個8位定時/計時器(只有T0有),定時24 ET0 = 1; TR0=1; tcount=0;u=0;P0=0x00;EA = 1;/開放中斷 void test(void) for(k=0;k<8;k+) if(flag=0) P3=dis_bitk;P2=SEG7dat1k; delay(1);P3=0X00; if(flag=1) P3=dis_bitk;P2=SEG7alarmsk; delay(1);P3=0X00; void main() init(); delay(10);
15、 while(1) /括號的“1”表示while()判斷條件為真,只要不是“0”,這個循環(huán)就一直循環(huán)下去,要跳出這個循環(huán),只能在子程序里設置出口。 modify(); test(); void diplay() interrupt 1 /定時/計數(shù)器T0中斷 time1.second=dat10+dat11*10; time1.minute=dat13+dat14*10; time1.hour=dat16+dat17*10; ET0=0; TR0=0; TH0 = 0xDB; TL0 = 0xff; TR0=1; tcount+; if(tcount=100) time1.second+; t
16、count=0;dat10=(time1.second)%10;dat11=(time1.second)/10; if(time1.second>59) time1.second=0; time1.minute+; dat10=(time1.second)%10;dat11=(time1.second)/10; dat13=(time1.minute)%10;dat14=(time1.minute)/10; if(time1.minute=60) time1.minute=0; time1.hour+; dat13=(time1.minute)%10;dat14=(time1.minut
17、e)/10; dat16=time1.hour%10;dat17=time1.hour/10; if(time1.hour>23) time1.hour=0; dat15=10; dat12=10; if(alarms7=dat17)&&(alarms6=dat16)&&(alarms4=dat14)&&(alarms3=dat13)&&(sw=1) P0=0x11; ET0=1;八、參考文獻1. 微型計算機原理與接口技術(中國科學技術大學出版社)2. 戴梅萼等. 微型計算機技術及應用.北京:清華大學出版社,20033. 王
18、成耀等. 匯編語言程序設計.北京:機械工業(yè)出版社,20044. 單片機原理與應用及C51程序設計(清華大學出版社)5.張毅坤. 單片微型計算機原理及應用,西安電子科技大學出版社 6.徐建民,匯編語言程序設計,電子工業(yè)出版社7.余錫存、曹國華.單片機原理及接口技術M.陜西:西安電子科技大學 8.周明德.微型計算機系統(tǒng)原理及應用.北京:清華大學出版社九、附錄(At89c51資料)(一)、AT89C51功能及管腳圖: VCC:供電電壓。 GND:接地。 P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,
19、它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。 P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。 P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被
20、寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。 P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。 P3口也可作為AT89C51的一些特殊功能口: P3.0 RXD(串行輸入口) P3.1 TXD(串行輸出口) P3.2 /INT0(外部中斷0) P3.3 /INT1(外部中斷1) P3.4 T0(記時器0外部輸入) P3.5 T1(記時器1外部輸入) P3.6 /WR(外部
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- YY/T 1284-2024牙科學牙科鑷
- 銷售公司業(yè)務員勞動合同協(xié)議
- 房屋按揭共同還款合同樣本2025
- 生態(tài)養(yǎng)殖基地租賃合同
- 特許經(jīng)營合同示范文本
- 新能源貨車租賃合同
- 采購合同管理:風險防范與應對措施
- 合作建房借款合同(單位集體住房)
- 度產(chǎn)品試用合同協(xié)議
- 金屬冶煉安全管理課件
- 2025包頭青山賓館有限公司面向社會公開招聘18人筆試參考題庫附帶答案詳解
- 課件-DeepSeek從入門到精通
- 2025至2030年中國毛絨卡通玩具數(shù)據(jù)監(jiān)測研究報告
- 2025年度智能充電樁場地租賃合同范本3篇
- 2024年蕪湖職業(yè)技術學院高職單招語文歷年參考題庫含答案解析
- 心電監(jiān)護儀的操作及注意事項 課件
- GB/T 718-2024鑄造用生鐵
- 細胞生物學(全套1047張課件)
- CFM56-7發(fā)動機滑油系統(tǒng)及其常見故障分析(共41頁)
- 《嵌入式技術》課程標準(STM32版)
- tplink-mr11u刷openwrt教程
評論
0/150
提交評論