基于AT89C51單片機的電子表設(shè)計_第1頁
基于AT89C51單片機的電子表設(shè)計_第2頁
基于AT89C51單片機的電子表設(shè)計_第3頁
基于AT89C51單片機的電子表設(shè)計_第4頁
基于AT89C51單片機的電子表設(shè)計_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、黃河科技學(xué)院課程設(shè)計任務(wù)書 工 學(xué)院 機械 系 機械設(shè)計制造及其自動化 專業(yè) 11 級 3 班學(xué)號 1101110035 姓名 席世琦 指導(dǎo)教師 朱煜鈺 題目: 基于at89c51單片機的電子表設(shè)計 課程: 單片機應(yīng)用技術(shù)課程設(shè)計 課程設(shè)計時間 2014年 10月27 日 至2014年11 月 10 日 共 2 周課程設(shè)計工作內(nèi)容與基本要求(設(shè)計要求、設(shè)計任務(wù)、工作計劃、所需相關(guān)資料)(紙張不夠可加頁)1設(shè)計要求利用at89c51單片機作為微控制器,在數(shù)碼管通過一個控制鍵轉(zhuǎn)換來顯示相應(yīng)的時間和日期,能通過多個控制鍵用來實現(xiàn)時間和日期的調(diào)節(jié)。 2. 設(shè)計任務(wù)與要求2.1系統(tǒng)硬件電路設(shè)計根據(jù)該系統(tǒng)

2、設(shè)計的功能要求選擇所用元器件,設(shè)計硬件電路。要求用proteus繪制整個系統(tǒng)電路原理圖。2.2軟件設(shè)計根據(jù)該系統(tǒng)要求的功能進行軟件設(shè)計,繪制整個系統(tǒng)的軟件流程圖;根據(jù)流程圖編寫程序并匯編調(diào)試通過;列出軟件清單,軟件清單要求逐條加以注釋。2.3 proteus仿真用proteus對系統(tǒng)軟硬件進行仿真調(diào)試并通過。2.4 編寫設(shè)計說明書內(nèi)容包括任務(wù)書、設(shè)計方案分析、硬件部分設(shè)計、軟件部分設(shè)計、調(diào)試結(jié)果整理分析、設(shè)計調(diào)試的心得體會等,字數(shù)不少于5000字;硬件部分設(shè)計要繪制整個系統(tǒng)電路原理圖,對各部分電路設(shè)計原理做出說明;軟件設(shè)計部分要(用visio2003畫圖軟件)繪制整個系統(tǒng)及各部分的軟件流程圖,

3、列出程序清單,逐條加以注釋,并注明各程序功能塊的功能。3工作計劃 序號設(shè)計內(nèi)容所用時間1布置任務(wù)及調(diào)研天3制作與調(diào)試天4撰寫設(shè)計報告書2天合 計14天4主要參考資料單片機課程設(shè)計指導(dǎo)書 皮大能 北京理工大學(xué)出版社2012.78051單片機實踐與應(yīng)用 吳金戎 清華大學(xué)出版社2003.8單片機技術(shù)基礎(chǔ)教程與實踐 夏路易 電子工業(yè)出版社2008.1單片機原理及應(yīng)用張毅剛 高等教育出版社 2012.11基于proteus的單片機系統(tǒng)設(shè)計與仿真實例 蔣輝平 機械工業(yè)出版社 2007.7 指導(dǎo)老師簽字: 日 期: 一、電子表 1.1電子表簡介 1957年,ventura發(fā)明了世界上第一個電子表,從而奠定了

4、電子表的基礎(chǔ),電子表開始迅速發(fā)展起來?,F(xiàn)代的電子表是基于單片機的一種計時工具,采用延時程序產(chǎn)生一定的時間中斷,用于一秒的定義,通過計數(shù)方式進行滿六十秒分鐘進一,滿六十分小時進一,滿二十四小時小時清零。從而達到計時的功能,是人民日常生活補課缺少的工具。1.2 電子表的原理 該電子表由at89c51,74ls373,button,數(shù)碼管等構(gòu)成,采用晶振電路作為驅(qū)動電路,由延時程序和循環(huán)程序產(chǎn)生的一秒定時,達到時分秒的計時,六十秒為一分鐘,六十分鐘為一小時,滿二十四小時為一天,滿三十天(閏年二月滿二十九天,平年二月滿二十八天)為一個月,滿十二個月為一年。電路中的鍵控1實現(xiàn)“年”和“分”的調(diào)節(jié),鍵控2

5、實現(xiàn)“月”和“時”的調(diào)節(jié),鍵控3實現(xiàn)“日”和“分”的調(diào)節(jié)。每按一次就加一。二、 控制系統(tǒng)的硬件設(shè)計2.1 單片機型號的選擇 通過對多種單片機性能的分析,最終認為89c51是最理想的電子時鐘開發(fā)芯片。89c51是一種帶4k字節(jié)閃爍可編程可擦除只讀存儲器的低電壓,高性能cmos8位微處理器,器件采用atmel高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的mcs-51指令集和輸出管腳相兼容。由于將多功能8位cpu和閃爍存儲器組合在單個芯片中,atmel的89c51是一種高效微控制器,而且它與mcs-51兼容,且具有4k字節(jié)可編程閃爍存儲器和1000寫/擦循環(huán),數(shù)據(jù)保留時間為10年等特點,是最好的選擇。

6、2.2 數(shù)碼管顯示工作原理數(shù)碼管是一種把多個led(7seg-mp*8-ca-blue)顯示段集成在一起的顯示設(shè)備。有兩種類型,一種是共陽型,一種是共陰型。共陽型就是把多個led顯示段的陽極接在一起,又稱為公共端。共陰型就是把多個led顯示段的陰極接在一起,即為公共商。陽極即為二極管的正極,又稱為正極,陰極即為二極管的負極,又稱為負極。通常的數(shù)碼管又分為8段,即8個led顯示段,這是為工程應(yīng)用方便如設(shè)計的,分別為a、b、c、d、e、f、g、dp,其中dp 是小數(shù)點位段。而多位數(shù)碼管,除某一位的公共端會連接在一起,不同位的數(shù)碼管的相同端也會連接在一起。即,所有的a段都會連在一起,其它的段也是如此

7、,這是實際最常用的用法。數(shù)碼管顯示方法可分為靜態(tài)顯示和動態(tài)顯示兩種。靜態(tài)顯示就是數(shù)碼管的8段輸入及其公共端電平一直有效。動態(tài)顯示的原理是,各個數(shù)碼管的相同段連接在一起,共同占用8 位段引管線;每位數(shù)碼管的陽極連在一起組成公共端。利用人眼的視覺暫留性,依次給出各個數(shù)碼管公共端加有效信號,在此同時給出該數(shù)碼管加有效的數(shù)據(jù)信號,當(dāng)全段掃描速度大于視覺暫留速度時,顯示就會清晰顯示出來。 共陰數(shù)碼管2.3 74ls373介紹:373為三態(tài)輸出的八 d 透明鎖存器,373 的輸出端 o0o7 可直接與總線相連。 當(dāng)三態(tài)允許控制端 oe 為低電平時,o0o7 為正常邏輯狀態(tài),可用來驅(qū)動負載或總 線。當(dāng) oe

8、 為高電平時,o0o7 呈高阻態(tài),即不驅(qū)動總線,也不為總線的負載,鎖存器內(nèi)部的邏輯操作不受影響。 當(dāng)鎖存允許端 le 為高電平時,o 隨數(shù)據(jù) d 而變。當(dāng) le 為低電平時,o 被鎖存在 已建立的數(shù)據(jù)電平。當(dāng) le 端施密特觸發(fā)器的輸入滯后作用,使交流和直流噪聲抗擾度被改善 400mv。 引出端符號: d0d7 數(shù)據(jù)輸入端;oe 三態(tài)允許控制端(低電平有效;le 鎖存允許端;o0o7 輸出端圖3 74ls3732.4系統(tǒng)硬件電路設(shè)計 三、控制系統(tǒng)的軟件設(shè)計3.1軟件設(shè)計程序清單#include #includesbit p20=p20; /*定義端口*/sbit khour=p30; sbit

9、 kmin=p31;sbit knian=p32;sbit tiaonian=p33 ;sbit speaker=p37 ;int j=-1 ; /*定義變量,j用以控制掃描*/bit flag=0,leap=0; /*定義flag控制時分秒和年月日的顯示,leap判斷是否為閏年*/char secshi=0,secge=0,minshi=0,minge=0,hourshi=0,hourge=0;char dayshi=0,dayge=0,monthshi=0,monthge=0,yearshi=0,yearge=0 ;unsigned int num=0,sec=0,min=0,hour=0

10、; /*設(shè)置初始時間為00時0分0秒*/unsigned int day=1,month=1,year=10; /*設(shè)置初始日期為2010年1月1日*/char saomiao8=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80; /*掃描數(shù)組,控制位選*/char shijian10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; /*共陰數(shù)碼管的0,1,2,3,4,5,6,7,8,9*/void delay(unsigned int z) /*延時子程序*/ unsigned int x,y;for(x=z

11、;x0;x-)for(y=10;y0;y-) ; void timer() interrupt 1 /*定時器中斷0*/ th0=(65535-5000)/256; /*重新裝入初值*/ tl0=(65535-5000)%256; num+; j+; if(year%4=0&year%100!=0)|(year%400=0) /*判斷是否為閏年*/ leap=1; /*閏年,使leap=1*/else leap=0; /*平年,使leap=0*/ if(num=150) /*實驗微調(diào)得num=150時大概為1s*/ num=0; sec+; /*秒自動加1*/ if(sec=60) sec=0

12、; min+; /*60s時,分自動加1,秒歸0*/ if(min=60) min=0; hour+; /*60分時,小時自動加1,分歸0*/ if(hour=24) hour=0; min=0; sec=0; day+; /*24時,天自動加1,時分秒歸0*/ /*月份的判斷,平年時的2月和閏年時的2月,以及30天和31天的判斷*/if(leap=1&month=2&day=30)|(leap=0&month=2&day=29) day=1; month+; /*2月28天或29天時月自加1*/ if(month=1|month=3|month=5|month=7|month=8|month

13、=10|month=12) if(day=32) day=1; month+; /*月為31天達到時月自動加1*/ if( month=4|month=6|month=9|month=11) if(day=31) day=1; month+; /*月為30天達到時月自動加1*/ if(month=13) year+; month=1; /*新的一年的開始*/ secge=sec%10; secshi=sec/10; minge=min%10; minshi=min/10; hourge=hour%10; hourshi=hour/10; dayge=day%10; dayshi=day/10;

14、 monthge=month%10; monthshi=month/10; yearge=year%10; yearshi=year/10; p1=saomiaoj; /*數(shù)碼管的位選設(shè)置*/if(flag=1) /*flag=1,顯示年月日*/ if(p1=0x80) p2=shijiandayge;if(p1=0x40) p2=shijiandayshi;if(p1=0x20) p2=0xbf; /*年與月之間的分隔符-的顯示*/if(p1=0x10) p2=shijianmonthge;if(p1=0x08) p2=shijianmonthshi;if(p1=0x04) p2=0xbf;

15、 /*月與天之間的分隔符-的顯示*/if(p1=0x02) p2=shijianyearge;if(p1=0x01) p2=shijianyearshi; else /*flag=0,顯示時分秒*/ if(p1=0x80) p2=shijiansecge;if(p1=0x40) p2=shijiansecshi;if(p1=0x20) p2=0xbf;if(p1=0x10) p2=shijianminge;/xian shi if(p1=0x08) p2=shijianminshi;if(p1=0x04) p2=0xbf;if(p1=0x02&hour24) p2=shijianhourge;

16、 /*顯示小時023*/if(p1=0x01&hour23) hour=0; if(flag=1) /*顯示年月日的情況下做年月日的調(diào)整*/ if(kmin=0) day+; while(kmin=0); if(khour=0) month+; while (khour=0); if(month12) month=1; if(tiaonian=0&speaker=1) year+; while (tiaonian=0); void baoshi() /*整點報時子程序*/ if(min=0&sec10) /*整點鬧鐘響,響10秒*/ speaker=0; delay(1) ;speaker=1

17、 ; else speaker=1;void alarm() /*鬧鐘子程序*/ bit ring=1;char xx=10;if(tiaonian=0) ring=0; delay(100);while(tiaonian=0); /*關(guān)閉正在叫的鬧鐘*/if(hour=6&min=xx&ring=1) /*鬧鐘按時鳴叫1分鐘*/ speaker=0; delay(1) ; speaker=1 ;if(hour=6&min=xx+1) /*1分鐘后鬧鐘停止鳴叫*/ speaker=1; void main() tmod=0x01; /*設(shè)置工作方式*/tr0=1;p2=0; th0=(6553

18、5-5000)/256; /*裝入計時初值*/ tl0=(65535-5000)%256; ie= 0x82; ip=0x00; /*設(shè)置中斷優(yōu)先級*/ ea=1; ex0=1; /*開外部中斷0*/ while(1) control() ; alarm() ; baoshi() ; 3.2 proteus仿真圖5.a 時間仿真圖(此時時間為2點8分31秒) 圖5.b 日期仿真圖(此時日期為2010年9月3日)四、心得進過不懈的努力,我們順利完成了這次單片機課程設(shè)計課題中的個性化電子表設(shè)計,本次仿真總的來說是實現(xiàn)了預(yù)期的效果,但是喇叭把的效果不是很好。功能還不夠完善,設(shè)計還比較簡單。不過通過此次設(shè)計我們還是學(xué)會了不少東西。首先,學(xué)會了keil和proteus軟件。然后,由于此次程序是用c語言編寫的,以前的c語言知識的到了鞏固。同時,我們還領(lǐng)悟到了團隊精神的真諦。通過這次的設(shè)計使我認識到本人對單片機方面的知識知道的太少了,對于書本上的很多知識還不能靈活運用,尤其是對程序設(shè)計語句的理解和運用,不能夠充分理解每個語句的具體含義總的

溫馨提示

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

最新文檔

評論

0/150

提交評論