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

下載本文檔

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

文檔簡介

1、湖南科技大學(xué)信息與電氣工程學(xué)院課程設(shè)計報告題 目: 電子日歷 專 業(yè): 通信工程 班 級: 3班 姓 名: 黃夏妮 學(xué) 號: 1304040322 指導(dǎo)教師: 陳君 2016年 6 月 16 日單片機原理與應(yīng)用課程設(shè)計評閱書題目電子日歷姓名黃夏妮專業(yè)班級通信3班學(xué)號1304040322指導(dǎo)教師評語:成績評定為: 指導(dǎo)教師(簽字): 年 月 日信息與電氣工程學(xué)院課程設(shè)計任務(wù)書20152016學(xué)年第二學(xué)期專業(yè): 通信工程 班級: 3班 學(xué)號: 1304040322 姓名: 黃夏妮 課程設(shè)計名稱: 單電片機原理與應(yīng)用 設(shè)計題目: 電子日歷 完成期限:自 2016 年 6 月 6 日至 2016 年

2、6 月 17 日共 2 周設(shè)計依據(jù)、要求及主要內(nèi)容(可另加附頁):設(shè)計依據(jù): 本方案以STC15F2K60S2單片機作為主控核心,與時鐘芯片、LED顯示、按鍵等模塊組成硬件系統(tǒng),通過單片機原理與應(yīng)用這門課的課程設(shè)計,學(xué)生應(yīng)能對STC15系列單片機有一個全面的認(rèn)識,掌握以STC15系列單片機為核心的電子電路的設(shè)計方法和應(yīng)用技術(shù)。設(shè)計要求: (1)利用STC15F2K60S2單片機作為主控器組成一個電子日歷和電子鐘。 (2)利用LED分別顯示當(dāng)前時間和日歷。 (3)利用盡可能少的開關(guān)實現(xiàn):校正日歷和時間 (4)定制鬧鐘(時、分、表)設(shè)計內(nèi)容: 該課程設(shè)計是利用STC15F2K60S2單片機內(nèi)容的定

3、時/計數(shù)器、中斷系統(tǒng)、以及行列鍵盤和LED顯示器等部件,設(shè)計一個單片機電子時鐘。設(shè)計的電子時鐘通過數(shù)碼管顯示,并通過按鍵實現(xiàn)時間和暫停、啟動控制等。我們選擇的方法是單片機開發(fā)設(shè)計使用的傳統(tǒng)方法,通過本次設(shè)計,可以了解整個單片機開發(fā)的流程。文章首先介紹了單片機的基本知識,然后同時給出了框圖,流程圖等。論文涵蓋了從系統(tǒng)設(shè)計,編程,原理圖等產(chǎn)品開發(fā)的基本過程。指導(dǎo)教師(簽字): 批準(zhǔn)日期: 年 月 日摘 要本設(shè)計是根據(jù)我們所學(xué)的單片機課程,按照大綱要求利用STC15F2K60S2單片機作為主控器組成一個電子日歷和電子鐘。隨著科技的快速發(fā)展,時間的流逝,從觀太陽、擺鐘到現(xiàn)在電子鐘,人類對時鐘進行不斷研

4、究,不斷創(chuàng)新紀(jì)錄。而本設(shè)計以數(shù)字集成電路技術(shù)為基礎(chǔ),單片機技術(shù)為核心,軟件設(shè)計采用模塊化結(jié)構(gòu),C語言編程,系統(tǒng)通過數(shù)碼管顯示數(shù)據(jù),設(shè)置了可以顯示公歷日期(年、月、日、時、分、秒)、鬧鐘響應(yīng)以及便攜設(shè)置時間的電子日歷和電子鐘。在內(nèi)容安排上首先描述系統(tǒng)硬件工作原理,著重介紹了各硬件接口技術(shù)和各個接口模塊;其次,詳細(xì)的闡述了程序的各個模塊和實現(xiàn)過程。關(guān)鍵詞:電子日歷  單片機  STC15F2K60S2目 錄一、前言1二、設(shè)計目的1三、設(shè)計要求1四、設(shè)計總體方案1、基本框架12、 設(shè)計總原理圖2五、單位模塊設(shè)計1、STC15F2K60S2單片機 32、 數(shù)碼管

5、顯示電路33、矩陣鍵盤接口電路4六、程序設(shè)計 4七、個人總結(jié) 13八、參考資料 13一、前 言 隨著社會的不斷發(fā)展及人們生活水平的不斷提高,單片機控制已經(jīng)越來越普及,它已經(jīng)成為人們生活中必不可少的工具之一,它已經(jīng)普及到我們生活,工作,科研,各個領(lǐng)域,已經(jīng)成為一種比較成熟的技術(shù),其中電子日歷就是一個典型的例子。 本設(shè)計采用STC15F2K60S2單片機作為電子日歷的控制模塊。單片機可把由74LH594中的數(shù)據(jù)利用軟件來進行處理,從而把數(shù)據(jù)傳輸?shù)斤@示模塊,實現(xiàn)日歷和鬧鈴的顯示。以數(shù)碼管為顯示模塊,把單片機傳來的的數(shù)據(jù)顯示出來,并且顯示多樣化,在顯示電路中,主要靠鍵盤來實現(xiàn)各種顯示要求的選

6、擇與切換。二、設(shè)計目的 (1)掌握數(shù)字電子鐘的設(shè)計方法和制作過程。  (2)掌握常用數(shù)字集成電路的功能和使用。  (3)了解各芯片的邏輯功能、引腳安排和使用方法。 (4)熟悉了解通過軟件控制試驗箱來實現(xiàn)所需的功能。 三、設(shè)計要求 (1)利用STC15F2K60S2單片機作為主控器組成一個電子日歷和電子鐘。  (2)利用LED分別顯示當(dāng)前時間和日歷。  (3)利用盡可能少的開關(guān)實現(xiàn):校正日歷和時間  (4)定制鬧鐘(時、分、表)四、設(shè)計總體方案 1、基本框架 2、設(shè)計總原理圖 本系統(tǒng)采用PCF8563時鐘芯片進行計時,STC15F2K6

7、0S2單片機通過IIC總線進行數(shù)據(jù)讀寫,并采用IO方式控制兩片74HC595芯片驅(qū)動8位數(shù)碼管,數(shù)碼管可以實時顯示秒,分,小時,日期,月份和年等信息,并且實現(xiàn)鬧鈴功能時,數(shù)碼管閃爍顯示。陣列式鍵盤采用行列掃描方式,可以實現(xiàn)秒,分,小時,日期,月份和年信息的校準(zhǔn),以及時鐘顯示與日歷顯示的切換功能。5、 單位模塊設(shè)計1、STC15F2K60S2單片機 STC系列單片機是深圳宏晶科技公司研發(fā)的增強型8051內(nèi)核單片機,相對于傳統(tǒng)的8051內(nèi)核單片機,在片內(nèi)資源、性能以及工作速度上都有很大的改進,尤其采用了基于Flash的在線系統(tǒng)(ISP)技術(shù),使得單片機應(yīng)用系統(tǒng)的開發(fā)變得簡單了,無須仿真器或?qū)S镁幊?/p>

8、器就可進行單片機應(yīng)用系統(tǒng)的開發(fā)。本STC15系列單片機采用STC-Y5超告訴CPU內(nèi)核,在相同頻率下,速度比早期1T系列單片機(如STC12、STC11、STC10系列)的速度快20%。 2、數(shù)碼管顯示電路 這是由兩個74HC595芯片控制數(shù)碼管顯示電路。 74HC595是具有8位移位寄存器和一個存儲器,三態(tài)輸出功能,串行輸入并行輸出的芯片。移位寄存器和存儲器分別具有獨立的時鐘信號。數(shù)據(jù)在SHcp的上升沿輸入,在STcp的上升沿進入的存儲寄存器中去。如果兩個時鐘連在一起,則移位寄存器總是比存儲寄存器早一個脈沖。移位寄存器有一個串行移位輸入(Ds),和一個串行輸出(Q7),和一個異步的

9、低電平復(fù)位,存儲寄存器有一個并行8位的,具備三態(tài)的總線輸出,當(dāng)使能OE時(為低電平),存儲寄存器的數(shù)據(jù)輸出到總線。用兩個75HC595芯片分別控制數(shù)碼管的位選和段選,實現(xiàn)數(shù)碼管對時間的顯現(xiàn)。 3、矩陣鍵盤接口電路 矩陣鍵盤又稱為行列式鍵盤,它是用4條I/O線作為行線,4條I/O線作為列線組成的鍵盤。在行線和列線的每一個交叉點上,設(shè)置一個按鍵。這樣鍵盤中按鍵的個數(shù)是4×4個。這種行列式鍵盤結(jié)構(gòu)能夠有效地提高單片機系統(tǒng)中I/O口的利用率。由于各位數(shù)碼管的段線并聯(lián),段碼的輸出對各位數(shù)碼管來說都是相同的。因此,同一時刻如果各位數(shù)碼管的位選線都處于選通狀態(tài)的話,8位數(shù)碼管將顯示相同的字符。若要

10、各位數(shù)碼管能夠顯示出與本位相應(yīng)的字符,就必須采用掃描顯示方式。即在某一時刻,只讓某一位的位選線處于導(dǎo)通狀態(tài),而其它各位的位選線處于關(guān)閉狀態(tài)。同時,段線上輸出相應(yīng)位要顯示字符的字型碼。這樣同一時刻,只有選通的那一位顯示出字符,而其它各位則是熄滅的,如此循環(huán)下去,就可以使各位數(shù)碼管顯示出將要顯示的字符。  雖然這些字符是在不同時刻出現(xiàn)的,而且同一時刻,只有一位顯示,其它各位熄滅,但由于數(shù)碼管具有余輝特性和人眼有視覺暫留現(xiàn)象,只要每位數(shù)碼管顯示間隔足夠短,給人眼的視覺印象就會是連續(xù)穩(wěn)定地顯示。六、程序設(shè)計#define MAIN_Fosc22118400L#include"STC

11、15Fxxxx.H"#defineTimer0_Reload(65536UL -(MAIN_Fosc / 1000)#define DIS_DOT0x20#define DIS_BLACK0x10#define DIS_0x11u8 code t_display=/ 0 1 2 3 4 5 6 7 8 9 A B C D E F0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,/black - H J K L No P U t G Q r M y0x00,0x40,0x76,

12、0x1E,0x70,0x38,0x37,0x5C,0x73,0x3E,0x78,0x3d,0x67,0x50,0x37,0x6e,0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF,0x46;u8 code T_COM=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80;sbitP_HC595_SER = P40;/pin 14SERdata inputsbitP_HC595_RCLK = P54;/pin 12RCLkstore (latch) clocksbitP_HC595_SRCLK = P43;/pin 11

13、SRCLKShift data clocku8 LED88;u8display_index;bitB_1ms;u8hour,minute,second;u8hour1,minute1,second1;u16year,month,day;u16msecond,delay,flag;u8KeyCode;u8cnt10ms;u8 IO_KeyState, IO_KeyState1, IO_KeyHoldCnt;u8cnt50ms;u8 m;voidIO_KeyScan(void);/50ms callvoidDisplayRTC(void)if(m=0)/if(hour >= 10)LED80

14、 = hour / 10;elseLED80 = DIS_BLACK;LED81 = hour % 10;LED82 = DIS_;LED83 = minute / 10;LED84 = minute % 10;LED85 = DIS_;LED86 = second / 10;LED87 = second % 10;else if(m=1)/LED80=2;LED81=0;LED82=year/10;LED83=year%10;LED84=month/10;LED85=month%10;LED86 = day / 10;LED87 = day % 10;else if(m=2)/if(hour

15、 >= 10)LED80 = hour1 / 10;elseLED80 = DIS_BLACK;LED81 = hour1 % 10;LED82 = DIS_;LED83 = minute1 / 10;LED84 = minute1 % 10;LED85 = DIS_;LED86 = second1 / 10;LED87 = second1 % 10;if(hour=hour1)/if(minute=minute1)if(second=second1) P17=0;for(delay=0;delay<=50000;delay+);P17=1;voidRTC(void)if(+sec

16、ond >= 60)second = 0;if(+minute >= 60)minute = 0;if(+hour >= 24)hour = 0;day+;if(day>30)day=0; month+;if(month>12)month=0;year+;void main(void)u8i,k;P0M1 = 0;P0M0 = 0;P1M1 = 0;P1M0 = 0;P2M1 = 0;P2M0 = 0;P3M1 = 0;P3M0 = 0;P4M1 = 0;P4M0 = 0;P5M1 = 0;P5M0 = 0;P6M1 = 0;P6M0 = 0;P7M1 = 0;P

17、7M0 = 0;AUXR = 0x80;/Timer0 set as 1T, 16 bits timer auto-reload, TH0 = (u8)(Timer0_Reload / 256);TL0 = (u8)(Timer0_Reload % 256);ET0 = 1;/Timer0 interrupt enableTR0 = 1;/Tiner0 runEA = 1;display_index = 0;hour = 11;minute = 59;second = 58;hour1 = 12;minute1 = 01;second1 = 00;year=16;month=6;day=13;

18、m=0;RTC();DisplayRTC();/for(i=0; i<8; i+)LED8i = DIS_BLACK;for(i=0; i<8; i+)LED8i = i;k = 0;KeyCode = 0;cnt10ms = 0;IO_KeyState = 0;IO_KeyState1 = 0;IO_KeyHoldCnt = 0;cnt50ms = 0;while(1)if(B_1ms)B_1ms = 0;if(+msecond >= 1000)msecond = 0;RTC();DisplayRTC();if(+cnt50ms >= 50)cnt50ms = 0;I

19、O_KeyScan();if(KeyCode > 0)if(KeyCode = 17)/hour +1if(m=0)if(+hour >= 24)hour = 0;else if(m=1)if(+year>=100)year=0;else if(m=2)if(+hour1 >= 24)hour1 = 0;DisplayRTC();if(KeyCode = 18)/hour -1if(m=0)if(-hour >= 24)hour = 23;else if(m=1)if(-year>=100)year=99;else if(m=2)if(-hour1 >

20、= 24)hour1 = 23;DisplayRTC();if(KeyCode = 19)/minute +1if(m=0)second = 0;if(+minute >= 60)minute = 0;else if(m=1)month+;if(month>=30)month=0;else if(m=2)if(+minute1 >= 60)minute1 = 0;DisplayRTC();if(KeyCode = 20)/minute -1if(m=0)second = 0;if(-minute >= 60)minute = 59;else if(m=1)month-;

21、if(month>30)month=29;else if(m=2)if(-minute1 >= 60)minute1 = 59;DisplayRTC();if(KeyCode = 21)/second +1if(m=0)if(+second >= 60)hour = 0;else if(m=1)if(+day>=30)day=0;else if(m=2)if(+second1 >= 60)second1 = 0;DisplayRTC();if(KeyCode = 22)/second -1if(m=0)if(-second >= 60)second = 59

22、;else if(m=1)if(-day>=30)day=29;else if(m=2)if(-second1 >= 60)hour1 = 59;DisplayRTC();if(KeyCode =32)m+;if(m>2)m=0;KeyCode = 0; /*/u8 code T_KeyTable16 = 0,1,2,0,3,0,0,0,4,0,0,0,0,0,0,0;void IO_KeyDelay(void)u8 i;i = 60;while(-i);voidIO_KeyScan(void)/50ms callu8j;j = IO_KeyState1;P0 = 0xf0;

23、IO_KeyDelay();IO_KeyState1 = P0 & 0xf0;P0 = 0x0f;IO_KeyDelay();IO_KeyState1 |= (P0 & 0x0f);IO_KeyState1 = 0xff;if(j = IO_KeyState1)j = IO_KeyState;IO_KeyState = IO_KeyState1;if(IO_KeyState != 0)F0 = 0;if(j = 0)F0 = 1;else if(j = IO_KeyState)if(+IO_KeyHoldCnt >= 20)IO_KeyHoldCnt = 18;F0 = 1;if(F0)j = T_KeyTableIO_KeyState >> 4;if(j != 0) && (T_KeyTableIO_KeyState& 0x0f != 0) KeyCode = (j - 1) * 4 + T_KeyTableIO_KeyState & 0x0f + 16;elseIO_KeyHoldCnt = 0;P0 =

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論