單片機仿真課程設計——基于51單片機的實時時鐘_第1頁
單片機仿真課程設計——基于51單片機的實時時鐘_第2頁
單片機仿真課程設計——基于51單片機的實時時鐘_第3頁
單片機仿真課程設計——基于51單片機的實時時鐘_第4頁
單片機仿真課程設計——基于51單片機的實時時鐘_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、精品文檔基于51系列單片機及DS1302時鐘芯片的實時時鐘仿真設計一、課程設計目的意義通過本次課程設計可以靈活運用單片機的基礎知識,依據(jù)課程設計內容,能夠完成從硬件電路圖設計,到軟件編程及系統(tǒng)調試實現(xiàn)系統(tǒng)功能,完成課程設計,加深對單片機基礎知識的理解并靈活運用。二、實現(xiàn)目標本設計主要為實現(xiàn)一款可正常顯示時鐘/日歷的實時電子時鐘。對當前電子鐘開發(fā)手段進行了比較和分析,最終確定了采用單片機技術實現(xiàn)電子時鐘。本設計應用AT89C52芯片作為核心,LCD顯示屏,使用DS1302實時時鐘日歷芯片完成時鐘 /日歷的基本功能。這種實 現(xiàn)方法的優(yōu)點是電路簡單,性能可靠,實時性好,時間精確,操作簡單,編程容易。

2、 三、硬件設計本設計采用具有 32根I/O引腳的AT89C52單片機。AT89C52單片機是一款低功耗,低 電壓,高性能 CMO密位單片機,片內含 4KB (可經(jīng)受1000次擦寫周期)的FLASH可編程可 反復擦寫的只讀程序存儲器(EPROM,器件采用CMOS:藝和ATMEI公司的高密度、非易失性存儲器(NURAM技術制造,其輸出引腳和指令系統(tǒng)都與MCS-52兼容。片內的FLASHY儲器允許在系統(tǒng)內可改編程序或用常規(guī)的非易失性存儲器編程器來編程。因此,AT89C52是一種功能強,靈活性高且價格合理的單片機,可方便的應用在各個控制領域。AT89C52具有以下主要性能:1. 4KB可改編程序Fla

3、sh存儲器;2. 全靜態(tài)工作:024Hz;3. 128X8字節(jié)內部RAM4. 32個外部雙向輸入/輸出(I/O) 口;5. 6個中斷優(yōu)先級;2個16位可編程定時計數(shù)器;6. 可編程串行通道;7. 片內時鐘振蕩器。DS1302是美國DALLAS公司推出的一種高性能、低功耗的實時時鐘日歷芯片,附加 31 字節(jié)靜態(tài)RAM采用SPI三線接口與CPUS行同步通信,并可采用突發(fā)方式一次傳送多個字 節(jié)的時鐘信號和 RAM數(shù)據(jù)。實時時鐘可提供秒、分、時、日、星期、月和年,一個月小于31天時可以自動調整,且具有閏年補償功能。工作電壓寬達2.55.5V。采用雙電源供電(主電源和備用電源),可設置備用電源充電方式,

4、提供了對后備電源進行涓細電流充電的能力。有主電源和備份電源雙引腳,而且備份電源可由大容量電容( 1F)來替代。需要強調的是,DS1302需要使用32.768KHz的晶振。pSJ3C二V0C1V0C2XI5C1K:2IOONDR3T四、原理圖so J2歡迎下載RP133LB 2辦一戶之3 2鵬ny&嚙 吆Mj F2中也可 困的總 迎程除AF3 JIKT1P 三:4E帕包1年朝正 的軍商Fra用出此理國揶閥電PQ 404 凹 同中?!碑嘡j OMC-ra :JTW1| -13 1-, FIP13P-1?Fl OnFl 1(T3KP11F”五、程序源代碼#include #include LCD16

5、02.h#include DS1302.hvoid Delay1ms(unsigned int count) unsigned int i,j;for(i=0;icount;i+) for(j=0;j0; i-)DS1302_IO = ACC0;DS1302_CLK = 1;DS1302_CLK = 0;ACC = ACC 1;unsigned char DS1302OutputByte(void)unsigned char i;for(i=8; i0; i-)ACC = ACC 1;ACC7 = DS1302_IO;DS1302_CLK = 1;DS1302_CLK = 0;/用于計算 DS

6、1302_RAM地址的宏/ 實時時鐘寫入一字節(jié)( 內部函數(shù) )/ 相當于匯編中的 RRC/ 實時時鐘讀取一字節(jié)( 內部函數(shù) )/ 相當于匯編中的 RRCreturn(ACC);/ucAddr:DS1302地void Write1302(unsigned char ucAddr, unsigned char ucDa) 址 , ucData:要寫的數(shù)據(jù)DS1302_RST = 0;DS1302_CLK = 0;DS1302_RST = 1;DS1302InputByte(ucAddr); /地址,命令DS1302InputByte(ucDa);/ 寫 1Byte 數(shù)據(jù)DS1302_CLK = 1

7、;DS1302_RST = 0;unsigned char Read1302(unsigned char ucAddr)讀取 DS1302某地址的數(shù)據(jù)unsigned char ucData;DS1302_RST = 0;DS1302_CLK = 0;DS1302_RST = 1;DS1302InputByte(ucAddr|0x01);/地址,命令ucData = DS1302OutputByte();/讀 1Byte 數(shù)據(jù)DS1302_CLK = 1;DS1302_RST = 0;return(ucData);void DS1302_SetProtect(bit flag) /是否寫保護i

8、f(flag)Write1302(0x8E,0x10); elseWrite1302(0x8E,0x00);設置void DS1302_SetTime(unsigned char Address, unsigned char Value) / 時間函數(shù)DS1302_SetProtect(0);Write1302(Address, (Value/10)Second = (ReadValue&0x70)4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_MINUTE);Time-Minute = (ReadValue&0x70)4)*10 +

9、(ReadValue&0x0F);ReadValue = Read1302(DS1302_HOUR);Time-Hour = (ReadValue&0x70)4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_DAY);Time-Day = (ReadValue&0x70)4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_WEEK);Time-Week = (ReadValue&0x70)4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1

10、302_MONTH);Time-Month = (ReadValue&0x70)4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_YEAR);Time-Year = (ReadValue&0x70)4)*10 + (ReadValue&0x0F);void DateToStr(SYSTEMTIME *Time)Time-DateString0 = Time-Year/10 + 0;Time-DateString1 = Time-Year%10 + 0;Time-DateString2 = -;Time-DateString3 = Time

11、-Month/10 + 0;Time-DateString4 = Time-Month%10 + 0;Time-DateString5 = -;Time-DateString6 = Time-Day/10 + 0;Time-DateString7 = Time-Day%10 + 0;Time-DateString8 = 0;void TimeToStr(SYSTEMTIME *Time)Time-TimeString0 = Time-Hour/10 + 0;Time-TimeString1 = Time-Hour%10 + 0;Time-TimeString2 = :;Time-TimeStr

12、ing3 = Time-Minute/10 + 0;Time-TimeString4 = Time-Minute%10 + 0;Time-TimeString5 = :;Time-TimeString6 = Time-Second/10 + 0;Time-TimeString7 = Time-Second%10 + 0;Time-DateString8 = 0;void Initial_DS1302(void)unsigned char Second=Read1302(DS1302_SECOND);if(Second&0x80)DS1302_SetTime(DS1302_SECOND,0);#

13、endif#ifndef LCD_CHAR_1602#define LCD_CHAR_1602#include /Port Definitionssbit LcdRs= P2A0;sbit LcdRw= P2A1;sbit LcdEn=P2A2;/P0=0x80,P1=0x90,P2=0xA0,P3=0xB0. 數(shù)據(jù)端口sfr DBPort= 0x80;/ 內部等待函數(shù)unsigned char LCD_Wait(void) LcdRw=1;_nop_();LcdEn=1;_nop_();/while(DBPort&0x80);/LcdRs=0;在用 Proteus 仿真時,注意用屏蔽此語句,

14、在調用 GotoXY()時,會進入死循環(huán),/ 可能在寫該控制字時,該模塊沒有返回寫入完備命令,即DBPort&0x80=0x80/ 實際硬件時打開此語句LcdEn=0;return DBPort;/向LCD寫入命令或數(shù)據(jù)0/ Command1/ Data0x01/清屏0x02/光標返回原點#define LCD_COMMAND#define LCD_DATA#define LCD_CLEAR_SCREEN#define LCDHOMING void LCD_Write(bit style, unsigned char input) LcdEn=0;LcdRs=style;LcdRw=0;_no

15、p_();DBPort=input;_nop_();/注意順序LcdEn=1;_nop_();/注意順序LcdEn=0;_nop_();LCD_Wait();/ 設置顯示模式#define LCD_SHOW0x04/顯示開#define LCD_HIDE0x00/日二顯示關#define LCD_CURSOR0x02/ 顯示光標#define LCD_NO_CURSOR0x00/無光標#define LCD_FLASH0x01/光標閃動#define LCDNO_FLASH0x00/光標不閃動void LCD_SetDisplay(unsigned char DisplayMode)LCD_W

16、rite(LCD_COMMAND, 0x08|DisplayMode);/ 設置輸入模式#define LCDAC_UP0x02#define LCDAC_DOWN0x00/ default#define LCDMOVE0x01/ 畫面可平移#define LCDNOMOVE0x00/defaultvoid LCD_SetInput(unsigned char InputMode)LCD_Write(LCD_COMMAND, 0x04|InputMode);/ 初始化 LCDvoid LCD_Initial()LcdEn=0;LCD_Write(LCD_COMMAND,0x38); /8 位數(shù)

17、據(jù)端口 ,2 行顯示 ,5*7 點陣LCD_Write(LCD_COMMAND,0x38);LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); / 開啟顯示 , 無光標LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); 清屏/LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); /AC 遞增 , 畫面不動 void GotoXY(unsigned char x, unsigned char y)if(y=0)LCD_Write(LCD_COMMAND,0x80|x);8歡迎下載 。精品文檔if(y=1)LCD_Write(LCD_COMMAND,0x80|(x-0x40);void Print(unsigned char *str)while(*str!=0)LCD_Write(LCD_DATA,*str);str+;#endif六、

溫馨提示

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

評論

0/150

提交評論