單片機課程設(shè)計電子時鐘_第1頁
單片機課程設(shè)計電子時鐘_第2頁
單片機課程設(shè)計電子時鐘_第3頁
單片機課程設(shè)計電子時鐘_第4頁
單片機課程設(shè)計電子時鐘_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、目 錄1課題綜述11.1 課題來源11.2 課題目的11.3 面對的問題11.4 需要解決的關(guān)鍵技術(shù)12系統(tǒng)分析12.1 涉及的基礎(chǔ)知識12.2 解決的基本思路23設(shè)計方案23.1 總體設(shè)計23.2 硬件設(shè)計33.3 軟件設(shè)計53.3 結(jié)果分析74設(shè)計代碼75總結(jié).196致謝.207參考文獻.211課題綜述1.1 課題來源電子鐘是一種利用數(shù)字電路來顯示秒、分、時的計時裝置,與傳統(tǒng)的機械鐘相比,它具有走時準確、顯示直觀、無機械傳動裝置等優(yōu)點,因而電子鐘得到廣泛應(yīng)用。隨著人們生活環(huán)境的不斷改善和美化,在許多場合可以看到數(shù)字電子鐘。1.2 課題目的設(shè)計了一種基于stc公司的stc10f08xe單片機

2、,實時時鐘芯片ds1302提供當(dāng)前日期和時間數(shù)據(jù),并將實時的日期數(shù)據(jù)字符型液晶顯示器lcd上顯示,本次設(shè)計的多功能數(shù)字鐘采用數(shù)字電路對日期進行控制設(shè)置,我們采用以24小時的計時方式在lcd上顯示,根據(jù)lcd顯示原理進行顯示,定時器計數(shù)。在本次設(shè)計中,電路具有顯示日期、時間、星期的基本功能,還可以實現(xiàn)對它們的調(diào)整。之所以選擇這個芯片,是因為stc 單片機降低成本,提升性能,原有程序直接使用,硬件無需改動。并且其抗干擾性強,加密性強,超低功耗,可以遠程升級,內(nèi)部有專用復(fù)位電路,價格也較便宜,一般的利用stc系列的單片機芯片加上一些外圍的供電電路,復(fù)位電路,下載電路,特定功能電路等就能實現(xiàn)特定的功能

3、。由于這些特點使得 stc 系列單片機的應(yīng)用日趨廣泛。1.3 面對的問題 要求該電路具有顯示日期、時間、的基本功能,還可以通過按鍵實現(xiàn)對它們的調(diào)整,并且能夠顯示星期。1.4 需要解決的關(guān)鍵技術(shù)具有時間顯示和手動校對功能;具有年、月、日顯示和手動校對和切換功能;具有顯示當(dāng)前星期的功能。通過ds1302芯片來控制整個時鐘電路的萬年歷計時功能。2系統(tǒng)分析2.1 涉及的基礎(chǔ)知識2.1.1 單片機介紹單片機是指一個集成在一塊芯片上的完整計算機系統(tǒng)。盡管他的大部分功能集成在一塊小芯片上,但是它具有一個完整計算機所需要的大部分部件:cpu、內(nèi)存、內(nèi)部和外部總線系統(tǒng),目前大部分還會具有外存。同時集成諸如通訊接

4、口、定時器,實時時鐘等外圍設(shè)備。而現(xiàn)在最強大的單片機系統(tǒng)甚至可以將聲音、圖像、網(wǎng)絡(luò)、復(fù)雜的輸入輸出系統(tǒng)集成在一塊芯片上。單片機也被稱為微控制器(microcontroller),它不是完成某一個邏輯功能的芯片,而是把一個計算機系統(tǒng)集成到一個芯片上。概括的講:一塊芯片就成了一臺計算機。它的體積小、質(zhì)量輕、價格便宜、為學(xué)習(xí)、應(yīng)用和開發(fā)提供了便利條件。單片機誕生于20世紀70年代末,經(jīng)歷了scm、mcu、soc三大階段。stc單片機完全兼容51單片機,并有其獨到之處,其抗干擾性強,加密性強,超低功耗,可以遠程升級,內(nèi)部有專用復(fù)位電路,價格也較便宜,由于這些特點使得 stc 系列單片機的應(yīng)用日趨廣泛。

5、本文設(shè)計了一種基于stc公司的stc10f08xe單片機,使用dallas的實時時鐘芯片ds1302提供當(dāng)前日期和時間數(shù)據(jù),數(shù)據(jù)在顯示器lcd上顯示,本次設(shè)計的電子鐘采用數(shù)字電路對日期進行控制設(shè)置,我們采用lcd顯示,以24小時的計時方式,根據(jù)lcd顯示原理進行顯示,定時器計數(shù)。在本次設(shè)計中,電路具有顯示日期、時間、的基本功能,還可以實現(xiàn)對它們的調(diào)整和切換。2.1.2 ds1302芯片介紹ds1302 是dallas 公司推出的涓流充電時鐘芯片內(nèi)含有一個實時時鐘/日歷和31 字節(jié)靜態(tài)ram 通過簡單的串行接口與單片機進行通信實時時鐘/日歷電路提供秒分時日日期月年的信息每月的天數(shù)和閏年的天數(shù)可自

6、動調(diào)整時鐘操作可通過am/pm 指示決定采用24 或12 小時格式ds1302 與單片機之間能簡單地采用同步串行的方式進行通信僅需用到三個口線1 res 復(fù)位2 i/o 數(shù)據(jù)線3 sclk串行時鐘時鐘/ram 的讀/寫數(shù)據(jù)以一個字節(jié)或多達31 個字節(jié)的字符組方式通信ds1302 工作時功耗很低保持數(shù)據(jù)和時鐘信息時功率小于1mw。2.2 解決的基本思路 按照勾畫出的電路圖正確焊接電路板上的器件,待檢測過硬件正確工作后,進行軟件代碼的設(shè)計。軟件設(shè)計代碼是通過com和相關(guān)軟件把代碼程序輸入到單片機芯片中。待全部完成后,繼續(xù)進行調(diào)試。3設(shè)計方案3.1 總體設(shè)計采用單片機ds1302芯片以及相關(guān)的芯片來

7、實現(xiàn)電子鐘。該設(shè)計選用dallas的實時時鐘芯片ds1302提供當(dāng)前日期和時間數(shù)據(jù),并將實時的日期數(shù)據(jù)在顯示器lcd上顯示出來。本次設(shè)計的電子鐘采用數(shù)字電路對日期進行控制設(shè)置,我們以24小時的計時方式,根據(jù)lcd顯示原理進行顯示,定時器計數(shù)。在本次設(shè)計中,電路具有顯示日期、時間、的基本功能,還可以通過按鍵實現(xiàn)對它們的切換和調(diào)整。系統(tǒng)采用usb2.0接口給系統(tǒng)傳輸電,采用com口給單片機輸入相應(yīng)的代碼程序。該系統(tǒng)不但接口設(shè)計簡單、便于控制,而且具有很好的人機界面,可以通過幾個按鍵對當(dāng)前的時間進行調(diào)整,并且通過切換按鍵可以獲得相應(yīng)的年,月、日,時、分,星期、秒等功能。其原理框圖如下圖3.1所示:串

8、行通信接口電路lcd顯示 時鐘電路stc89c52單片機供電電路電壓轉(zhuǎn)換電路鍵盤控制電路圖3.1 電子鐘原理框圖3.2 硬件設(shè)計3.2.1 ds1302時鐘電路ds1302是美國dallas公司推出的一種高性能、低功耗的實時時鐘芯片,附加31字節(jié)靜態(tài)ram,采用spi三線接口與cpu進行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號和ram數(shù)據(jù)。實時時鐘可提供秒、分、時、日、星期、月、年,一個月小于31天時可自動進行調(diào)整,且具有閏年補償功能。工作電壓寬達2.55.5v。采用雙電源供電(主電源和備用電源),可設(shè)置備用電源充電方式,提供了對后背電源進行涓細電流充電的能力,因此廣泛應(yīng)用于測量系

9、統(tǒng)中。ds1302是由ds1202改進而來的,增加了以下的特性:雙電源管腳用于主電源和備份電源供應(yīng),vcc1為課編程涓流充電電源,附加七個字節(jié)存儲器。它廣泛應(yīng)用于電話、傳真、便攜式儀器以及電池供電的儀器儀表等產(chǎn)品領(lǐng)域。其外部引腳分配圖及應(yīng)用電路原理圖如下面兩幅圖所示:圖3.2 ds1302的外部時鐘引腳分配圖3.3 ds1302應(yīng)用電路原理圖3.2.2 串行接口連接電路max232是電壓轉(zhuǎn)換芯片,將ttl電平轉(zhuǎn)換成可以和電腦串口匹配的電壓。db9通過下載線纜與電腦連接,可以將程序下載到單片機上。圖3.4 串行通信接口電路3.2.3按鍵電路本次設(shè)計中用到了按鍵電路,通過低電平選中,以便來控制時,

10、分,秒,年,月,日的調(diào)整以及切換。其電路如圖所示:圖3.5 按鍵控制電路3.2.4 lcd顯示電路本設(shè)計中會將時分秒,年月日以及星期的設(shè)置,全部都會顯示到lcd上面,用的是0到9十個數(shù)字。其原理圖如下圖所示:圖3.6 lcd顯示電路3.3 軟件設(shè)計3.3.1軟件內(nèi)容本次設(shè)計選擇的軟件主要是keil。 keil公司成立于1986年,主要開發(fā)、制造和銷售嵌入式8051、251、arm、xc16x/c16x/st10等微控制器軟件開發(fā)工具,提供ansi c編譯器、宏匯編程序、實時管理、調(diào)試和模擬器、綜合評估板等。keil公司的uvision把編輯、編譯、鏈接和仿真等模式打包成集成開發(fā)環(huán)境,當(dāng)然其集成

11、的c51編譯器肯定跟franklin公司的相關(guān)模塊肯定有交叉性,uvision還包含項目管理和調(diào)試器等非常有用的功能。而軟件仿真部分就用的是仿真軟件protues。protues軟件是英國labcenter electronics公司出版的eda工具軟件。它不僅具有其它eda工具軟件的仿真功能,還能仿真單片機及外圍器件。雖然目前國內(nèi)推廣剛起步,但已受到單片機愛好者、從事單片機教學(xué)的教師、致力于單片機開發(fā)應(yīng)用的科技工作者的青睞,是目前世界上唯一將電路仿真軟件、pcb設(shè)計軟件和虛擬模型仿真軟件三合一的設(shè)計平臺,其處理器模型支持8051、hc11、pic10/12/16/18/24/30/dspic

12、33、avr、arm、8086和msp430等,2010年即將增加cortex和dsp系列處理器,并持續(xù)增加其他系列處理器模型。在編譯方面,它也支持iar、keil和mplab等多種編譯器。在protues繪制好原理圖后,調(diào)入已編譯好的目標代碼文件:*.hex,可以在protues的原理圖中看到模擬的實物運行狀態(tài)和過程。protues 是單片機課堂教學(xué)的先進助手。 protues不僅可將許多單片機實例功能形象化,也可將許多單片機實例運行過程形象化。前者可在相當(dāng)程度上得到實物演示實驗的效果,后者則是實物演示實驗難以達到的效果。它的元器件、連接線路等卻和傳統(tǒng)的單片機實驗硬件高度對應(yīng)。這在相當(dāng)程度上

13、替代了傳統(tǒng)的單片機實驗教學(xué)的功能,例:元器件選擇、電路連接、電路檢測、電路修改、軟件調(diào)試、運行結(jié)果等。3.3.2設(shè)計流程本次設(shè)計的系統(tǒng)軟件設(shè)計主要包括主程序設(shè)計和日歷日期數(shù)據(jù)子模塊程序、按鍵控制子模塊程序和lcd顯示子模塊程序設(shè)計等。主程序主要完成器件的初始化,并判斷有無按鍵按下,并根據(jù)判斷的結(jié)果調(diào)用相應(yīng)的子模塊程序;日歷日期數(shù)據(jù)子模塊程序完成相應(yīng)的數(shù)據(jù)采集、處理和保存,按鍵處理子模塊程序完成日期的設(shè)置,而lcd顯示子模塊只要把上述子模塊儲存的數(shù)據(jù)送去顯示即可。對時鐘芯片的操作主要包括2個方面:一是將芯片中的日期等數(shù)據(jù)讀出來,二是在進行日期等設(shè)置時將設(shè)置的數(shù)據(jù)寫入芯片,這也是按鍵處理時的主要內(nèi)

14、容。無論是讀數(shù)據(jù)還是寫數(shù)據(jù),都要滿足ds1302 對時序的要求。而對芯片各個數(shù)據(jù)部分的訪問是通過地址進行的,且讀和寫的地址不一樣。讀出的數(shù)據(jù)同樣要轉(zhuǎn)為asc ii碼,然后儲存起來,等待送去顯示。系統(tǒng)總的流程圖如下圖所示:開始初始化n 按鍵按下 日歷日期數(shù)據(jù)處理y lcd顯示按鍵控制時間日期的修改按鍵掃描圖3.7 主程序流程3.3 結(jié)果分析第一,通過usb接口給單片機上電,打開單片機開關(guān),首先觀察單片機電源指示燈是否亮。按照如上步驟,我們的電子鐘電源燈是亮的,這說明系統(tǒng)能夠正常供電。第二,顯示電路的調(diào)試檢查它與單片機的連線:設(shè)計是rs接的p07口,要保證它為高電平。en接口接單片機的p05端,也

15、要保證它為高電平;讀寫信號低電平有效;編寫一段顯示程序,燒錄到單片機看是否能正常顯示。很遺憾的是我們的單片機打開開關(guān)后還是只有電源指示燈亮,后來我們發(fā)現(xiàn)是我們代碼編寫錯誤。4設(shè)計代碼/* p0位選,p1段選*/#include#define uchar unsigned char#define uint unsigned intsbit dr1=p10;sbit dr2=p11;sbit dr3=p12;sbit dr4=p13;sbit key1=p14;sbit key2=p15;sbit key3=p16;sbit key4=p17;sbit acc0=acc0;sbit acc7=ac

16、c7;sbit sclk=p32;sbit io=p33;sbit rst=p34; uchar m=0;uchar sec =0x00, min =0x00, hour =0x00, day =0x31, month=0x12, week =0x05, year =0x10;uchar min_temp =00, hour_temp=00;uchar code table12= 0x14,0xd7,0x4c,0x45,0x87, 0x25,0x24,0x57,0x04,0x05 ;void delay(uint x)uint i,j;for(i=x;i0;i-)for(j=114;j0;j-

17、);void write_ds1302byte(uchar dat)uchar i;acc=dat;for(i=8;i0;i-)io=acc0;sclk=0;sclk=1;sclk=0;acc=acc1; uchar read_ds1302byte()uchar i;for(i=8;i0;i-)acc=acc1;acc7=io;sclk=1;sclk=0;return acc; void write_ds1302(uchar addr,uchar dat)rst=0;sclk=0;delay(1);rst=1;write_ds1302byte(addr);write_ds1302byte(da

18、t);rst=0;sclk=1;uchar read_ds1302(uchar addr)uchar da;rst=0;sclk=0;rst=1;write_ds1302byte(addr);da=read_ds1302byte();rst=0;sclk=1;return da;void init_ds1302() write_ds1302(0x8e,0x00);/寫保護關(guān)write_ds1302(0x80,sec);/寫秒,十進制初值write_ds1302(0x82,min);/分write_ds1302(0x84,hour);/時write_ds1302(0x86,day);/daywr

19、ite_ds1302(0x88,month);/monthwrite_ds1302(0x8a,week);/weekwrite_ds1302(0x8c,year);/yearwrite_ds1302(0x90,0x00);/渦流write_ds1302(0x8e,0x80);/寫保護開void display_year() uchar shi,ge; year=read_ds1302(0x8d);ge=year&0x0f; shi=(year4)&0x07; dr4=0;p0=tablege;delay(4); dr4=1;dr3=0;p0=tableshi;delay(4); dr3=1;

20、dr2=0;p0=0x14;delay(4); dr2=1;dr1=0;p0=0x4c;delay(4); dr1=1;void display_month_day() uchar shi,ge; day=read_ds1302(0x87);ge=day&0x0f; shi=(day4)&0x07;dr4=0;p0=tablege;delay(4); dr4=1;dr3=0;p0=tableshi;delay(4); dr3=1;month=read_ds1302(0x89);ge=month&0x0f; shi=(month4)&0x07; dr2=0;p0=tablege;delay(4)

21、; dr2=1;dr1=0;p0=tableshi;delay(4); dr1=1;void display_hour_min() uchar shi,ge; min=read_ds1302(0x83);ge=min&0x0f; shi=(min4)&0x07;dr4=0;p0=tablege;delay(4); dr4=1;dr3=0;p0=tableshi;delay(4); dr3=1; hour=read_ds1302(0x85);ge=hour&0x0f; shi=(hour4)&0x07; dr2=0;p0=tablege;delay(4); dr2=1;dr1=0;p0=tabl

22、eshi;delay(4); dr1=1; void display_week_sec() uchar shi,ge; week=read_ds1302(0x8b);ge=week&0x0f; shi=(week4)&0x07;dr2=0;p0=tablege;delay(4); dr2=1;dr1=0;p0=tableshi;delay(4); dr1=1; sec=read_ds1302(0x81);ge=sec&0x0f; shi=(sec4)&0x07; dr4=0;p0=tablege;delay(4); dr4=1;dr3=0;p0=tableshi;delay(4); dr3=1

23、; void main() /主程序;uchar i;uchar temp1,temp2; uchar flag=0x00;for(i=0;i=24) hour_temp=0;temp1=hour_temp%10;/個位temp2=hour_temp/10;/十位temp1=(temp2&0x03)=60) min_temp=0;temp1=min_temp%10;/個位temp2=min_temp/10;/十位temp1=(temp2&0x07)4)|temp1; write_ds1302(0x82,temp1); while(!key4); switch(m) case 0: displa

24、y_year();break; case 1: display_month_day();break; case 2: display_hour_min(); break;case 3: display_week_sec();break;總結(jié)在本次設(shè)計中,我們最終完成本次課程設(shè)計的基本要求及功能,將年月日以及時間在lcd上顯示出來,并且能夠通過按鍵對顯示的時間進行調(diào)整控制等功能。但由于時間倉促和我們自身水平有限,對于在掉電模式下,不讓電子鐘時間恢復(fù)默認值,而是讓電子鐘的時間繼續(xù)走,我們沒有完成按鍵對其的控制和調(diào)整,很遺憾。并且對于電路的可靠性,穩(wěn)定性等參數(shù)還未做過詳細的測試。并在此基礎(chǔ)了對系統(tǒng)功能作出星期設(shè)置的擴展。在設(shè)計開始前老師先給我們動員,并且教會我們通過軟件繪制電路圖,對各個模塊進行了詳細的分析和設(shè)計準備工作,設(shè)計過程中,并且在老師的指導(dǎo)下,在實驗室?guī)孜煌瑢W(xué)耐心的幫助下,我們組的成員相互協(xié)調(diào),我焊接了一部分電路,并且在同學(xué)幫助下,從參考文獻中參考了本分代

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論