版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
【摘要】眾所周知鬧鐘對我們?nèi)粘I顏碇v是一個很重要的工具,因而我利用單片機AT89C52制作一個簡單的倒計時定時鬧鐘。本設(shè)計利用單片機的內(nèi)部中斷資源和按鍵的基本使用方法構(gòu)思而成。利用按鍵設(shè)定需要定時的時間長短,利用中斷設(shè)置20次中斷定義一秒,然后利用程序設(shè)計時間倒數(shù)。并使用4個8段數(shù)碼管顯示分和秒,并且定時結(jié)束后使用電鈴警示。硬件系統(tǒng)利用proteus仿真,在仿真中就能觀察到系統(tǒng)的實際運行情況?!娟P(guān)鍵字】單片機AT89C51倒計時定時中斷protues仿真設(shè)計項目簡介基于51單片機進行簡單鬧鐘設(shè)計。四位數(shù)碼管從左往右分別代表十分位,分位,十秒位,秒位。按動對應(yīng)按鍵能增加各個位的數(shù)值,按動開始計時按鍵能開始倒計時。硬件設(shè)計總體設(shè)計思路控制芯片使用比較熟悉的AT89C52單片機芯片,數(shù)碼管使用四位相連的8段共陰數(shù)碼管,并且使用74HC573鎖存器控制數(shù)碼管的顯示。在定時過程使用s1控制十分位,s2控制分位,s3控制十秒位,s4控制秒位,s5開始倒計時。基本思路設(shè)計如下:數(shù)碼管位數(shù)碼管位AT89C52控制芯片AT89C52控制芯片段74HC573鎖存器控制按鍵段74HC573鎖存器控制按鍵AT89C52芯片介紹80C52是INTEL公司MCS-51系列單片機中基本的產(chǎn)品,它采用INTEL公司可靠的CHMOS工藝技術(shù)制造的高性能8位單片機,屬于標準的MCS-51的HCMOS產(chǎn)品。它結(jié)合了HMOS的高速和高密度技術(shù)及CHMOS的低功耗特征,它基于標準的MCS-51單片機體系結(jié)構(gòu)和指令系統(tǒng),屬于80C51增強型單片機版本,集成了時鐘輸出和向上或向下計數(shù)器等更多的功能,適合于類似馬達控制等應(yīng)用場合。80C52內(nèi)置8位中央處理單元、256字節(jié)內(nèi)部數(shù)據(jù)存儲器RAM、8k片內(nèi)程序存儲器(ROM)32個雙向輸入/輸出(I/O)口、3個16位定時/計數(shù)器和5個兩級中斷結(jié)構(gòu),一個全雙工串行通信口,片內(nèi)時鐘振蕩電路。此外,80C52還可工作于低功耗模式,可通過兩種軟件選擇空閑和掉電模式。在空閑模式下凍結(jié)CPU而RAM定時器、串行口和中斷系統(tǒng)維持其功能。掉電模式下,保存RAM數(shù)據(jù),時鐘振蕩停止,同時停止芯片內(nèi)其它功能。80C52有PDIP(40pin)和PLCC(44pin)兩種封裝形式。8051片內(nèi)有ROM,無須外接外存儲器和373,更能體現(xiàn)“單片”的簡練。74HC573芯片介紹74HC573的八個鎖存器都是透明的D型鎖存器,當使能(G)為高時,Q輸出
將隨數(shù)據(jù)(D)輸入而變。當使能為低時,輸出將鎖存在已建立的數(shù)據(jù)電平上。輸出控制不影響鎖存器的內(nèi)部工作,即老數(shù)據(jù)可以保持,甚至當輸出被關(guān)閉時,新的數(shù)據(jù)也可以置入。這種電路可以驅(qū)動大電容或低阻抗負載,可以直接與系統(tǒng)總線接口并驅(qū)動總線,而不需要外接口。特別適用于緩沖寄存器,I/O通道,雙向總線驅(qū)動器和工作寄存器。數(shù)據(jù)鎖存當輸入的數(shù)據(jù)消失時,在芯片的輸出端,數(shù)據(jù)仍然保持;這個概念在并行數(shù)據(jù)擴展中經(jīng)常使用到。OE120Vcc1D2191Q2D3182Q3D4173Q4D5164Q5D6155Q6D7146Q7D8137Q8D9128QGND1011LEOEˉLEDQLHHHLHLLLLXQ0HXXZ1腳三態(tài)允許控制端低電平有效1D~8D為數(shù)據(jù)輸入端1Q~8Q為數(shù)據(jù)輸出端74HC573引腳圖鎖存器接單片機芯片如下:單片機內(nèi)部中斷原理內(nèi)部中斷是指單片機內(nèi)部的功能模塊產(chǎn)生中斷信號,只要是單片機內(nèi)部在CPU外圍能獨立工作的功能模塊都會提供中斷功能,常見的內(nèi)部中斷類型有時鐘Timer、串口UART、模數(shù)轉(zhuǎn)換ADC等。內(nèi)部中斷的工作流程和外部中斷沒太多區(qū)別,只是中斷請求信號是在單片機內(nèi)部進行傳輸,中斷信號不是管腳上的電平狀態(tài),而是一個寄存器里面的相應(yīng)標志位,通常當某個內(nèi)部中斷產(chǎn)生中斷請求時就會將相應(yīng)標志位置為1,CPU響應(yīng)中斷時將這個標志位清0。設(shè)計原理圖軟件設(shè)計C語言源程序#include<reg52.h>#defineuintunsignedint#defineucharunsignedcharsbitdula=P2^6;//段碼和位碼設(shè)置。sbitwela=P2^7;sbits1=P3^0;//設(shè)置按鍵,s1代表十分位,s2分位,s3十秒位,s4秒位。sbits2=P3^1;sbits3=P3^2;sbits4=P3^3;sbits5=P3^4;sbitbeep=P2^3;//設(shè)置電鈴ucharcodeseg_table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共陰極8位段碼表,帶點和不帶點。ucharcodeseg_table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};voiddelay(uintt);//各個子函數(shù)的申明。intdisplay1();voiddisplay2(uintk);voidinit_t0();uintNUM;uintSEC;uintS;uintM;uintk1;uintk2;uintk3;uintk4;voidmain(){NUM=0,SEC=0,S=0,M=0,k1=0,k2=0,k3=0,k4=0,wela=0,dula=0,wela=1,P1=0x00,wela=0,dula=1,P1=seg_table[NUM],dula=0;while(1){display1();//運行開始設(shè)置時間函數(shù)if(s5==0){gotostart;//當s5按鍵按下,開始倒計時。}}start:init_t0();while(1){display2(M);//顯示函數(shù)}}intdisplay1()//按動按鍵開始設(shè)置時間{if(s1==0){delay(150);if(s1==0)//設(shè)置十分位 { k1++; if(k1==6) {k1=0; } wela=1; P1=0xf7; wela=0; dula=1; P1=seg_table[k1]; dula=0; delay(1); }}if(s2==0)//設(shè)置分位{delay(150);if(s2==0) { k2++; if(k2==10) { k2=0; } wela=1; P1=0xfb; wela=0; dula=1; P1=seg_table[k2]; dula=0; delay(1); }}if(s3==0)//設(shè)置十秒位{delay(150);if(s3==0){ k3++; if(k3==6) { k3=0; } wela=1; P1=0xfd; wela=0; dula=1; P1=seg_table[k3]; dula=0; delay(1);}}if(s4==0)//設(shè)置秒位{delay(150);if(s4==0){ k4++; if(k4==10) { k4=0; } wela=1; P1=0xfe; wela=0; dula=1; P1=seg_table[k4]; dula=0; delay(1);}}S=k1*600+k2*60+k3*10+k4;returnS;//返回全局變量}voiddelay(uintt)//延時函數(shù){uintx,y;for(x=t;x>0;x--){for(y=120;y>0;y--){ }}}voiddisplay2(uintk)//倒計時時間顯示函數(shù){uintmiao,shimiao,fen,shifen;shifen=k/600;fen=k%600/60;shimiao=k%60/10;miao=k/10;wela=1;P1=0xfe;wela=0;dula=1;P1=seg_table[miao];dula=0;delay(1);wela=1;P1=0xf7;wela=0;dula=1;P1=seg_table[shifen];dula=0;delay(1);wela=1;P1=0xfb;wela=0;dula=1;P1=seg_table1[fen];dula=0;delay(1);wela=1;P1=0xfd;wela=0;dula=1;P1=seg_table[shimiao];dula=0;delay(1);}voidinit_t0()//內(nèi)部中斷T0初始化{TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;}voidt0()interrupt1//中斷函數(shù),使用方式一中斷{TH0=(65536-50000)/256;TL0=(65536-50000)%256;NUM++;if(NUM==20){NUM=0;SEC++;M=S-SEC;if(M==0){TR0=0;beep=0;delay(1000);beep=1;}}}調(diào)試1、 調(diào)試方法本設(shè)計使用Proteus軟件繪制電路圖,裝載keil軟件編寫編譯完成的源程序生成的hex文件,進行仿真測試檢查系統(tǒng)運行情況,觀察實驗現(xiàn)象是否與理論一致。2、 調(diào)試步驟打開已經(jīng)畫好的ProteusDSN文件,雙擊圖中的AT89S52芯片,就彈出一個窗口,在programfile項中通過路徑選擇在keil中生成hex文件,雙擊選中后確定,這樣仿真圖中的AT89S52芯片就已經(jīng)讀取了本設(shè)計中的hex文件。然后進行仿真。3、調(diào)試問題在調(diào)試過程中發(fā)現(xiàn)定時完成以后,按動開始定時按鍵s5發(fā)現(xiàn)數(shù)碼管顯示不正常,秒位顯示不正常。但功能使用正常,初步判斷是延時出現(xiàn)問題,通過改變數(shù)碼管顯示延遲的長久,問題仍未解決。調(diào)試圖:心得體會本設(shè)計的數(shù)字秒表是由AT89S52單片機、共陰極數(shù)碼管和控制按鍵等器件組成的,設(shè)有四位計時顯示。系統(tǒng)設(shè)計合理,線路簡單,性能穩(wěn)定、程序簡單。給出了較為詳盡的電路設(shè)計方法。本系統(tǒng)以單片機為核心,但僅單片機方面的知識是不夠的,還應(yīng)根據(jù)具體硬件結(jié)構(gòu),以及針對具體應(yīng)用對象特點的軟硬件結(jié)合,以作完善。單片機應(yīng)用的越來越廣泛,也要求了我們對單片機知識要有更深的體會,更好的掌握單片機的相關(guān)應(yīng)用。不僅掌握理論知識,還要有相應(yīng)的動手能力。這次的課程設(shè)計便是對我們平時
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新教材高考地理二輪復習綜合題專項訓練六地理過程類含答案
- 【華師】第三次月考卷
- 語文教學論教案 第三章 語文教學設(shè)計
- 調(diào)研報告:醫(yī)療保險基金管理使用中存在的問題及建議
- 金屬的腐蝕與防護-2024年高中化學講義
- 聯(lián)盟加盟合同模板
- 挖掘機租賃合同示范文本
- 房地產(chǎn)抵押合同2024年
- 銀行承兌匯票貼現(xiàn)協(xié)議模板
- 股權(quán)投資合作協(xié)議格式設(shè)計
- HACCP風險評估報告樣板
- 大學生職業(yè)生涯規(guī)劃(師范類)
- 因孩子上學房子過戶協(xié)議書
- 部編版四年級語文上冊課內(nèi)閱讀復習試題含答案全套
- 幼兒園課程審議制度
- 英語演講技巧與實訓學習通課后章節(jié)答案期末考試題庫2023年
- TSG特種設(shè)備安全技術(shù)規(guī)范
- 中國民族民俗:白族三道茶
- 自動扶梯與自動人行道2023版自行檢測規(guī)則
- TD-T 1044-2014 生產(chǎn)項目土地復墾驗收規(guī)程
- 《魯濱遜漂流記》讀書心得600字左右5篇
評論
0/150
提交評論