




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上PROTEUS仿真圖:KEIL C程序:#include <REGX52.H>#include "LCD1602.h"#include "DS1302.h"void Delay1ms(unsigned int count)unsigned int i,j;for(i=0;i<count;i+)for(j=0;j<120;j+);main()SYSTEMTIME CurrentTime;LCD_Initial();Initial_DS1302();GotoXY(0,0);Print(" tian
2、ma dian zi");GotoXY(0,1);Print("Time: ");while(1)DS1302_GetTime(&CurrentTime);TimeToStr(&CurrentTime);GotoXY(6,1);Print(CurrentTime.TimeString);Delay1ms(400);#ifndef LCD_CHAR_1602_2005_4_9#define LCD_CHAR_1602_2005_4_9#include <intrins.h>/Port Definitions*sbit LcdRs= P20
3、;sbit LcdRw= P21;sbit LcdEn = P22;sfr DBPort = 0x80;/P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.數(shù)據(jù)端口/內(nèi)部等待函數(shù)*unsigned char LCD_Wait(void)LcdRs=0;LcdRw=1;_nop_();LcdEn=1;_nop_();/while(DBPort&0x80);/在用Proteus仿真時(shí),注意用屏蔽此語(yǔ)句,在調(diào)用GotoXY()時(shí),會(huì)進(jìn)入死循環(huán), /可能在寫(xiě)該控制字時(shí),該模塊沒(méi)有返回寫(xiě)入完備命令,即DBPort&0x80=0x80 /實(shí)際硬件時(shí)打開(kāi)此語(yǔ)句LcdEn=0;r
4、eturn DBPort;/向LCD寫(xiě)入命令或數(shù)據(jù)*#define LCD_COMMAND0 / Command#define LCD_DATA1 / Data#define LCD_CLEAR_SCREEN0x01 / 清屏#define LCD_HOMING 0x02 / 光標(biāo)返回原點(diǎn)void LCD_Write(bit style, unsigned char input)LcdEn=0;LcdRs=style;LcdRw=0;_nop_();DBPort=input;_nop_();/注意順序LcdEn=1;_nop_();/注意順序LcdEn=0;_nop_();LCD_Wait()
5、;/設(shè)置顯示模式*#define LCD_SHOW0x04 /顯示開(kāi)#define LCD_HIDE0x00 /顯示關(guān) #define LCD_CURSOR0x02 /顯示光標(biāo)#define LCD_NO_CURSOR0x00 /無(wú)光標(biāo) #define LCD_FLASH0x01 /光標(biāo)閃動(dòng)#define LCD_NO_FLASH0x00 /光標(biāo)不閃動(dòng)void LCD_SetDisplay(unsigned char DisplayMode)LCD_Write(LCD_COMMAND, 0x08|DisplayMode);/設(shè)置輸入模式*#define LCD_AC_UP0x02#define
6、 LCD_AC_DOWN0x00 / default#define LCD_MOVE0x01 / 畫(huà)面可平移#define LCD_NO_MOVE0x00 /defaultvoid LCD_SetInput(unsigned char InputMode)LCD_Write(LCD_COMMAND, 0x04|InputMode);/移動(dòng)光標(biāo)或屏幕*/*#define LCD_CURSOR0x02 #define LCD_SCREEN0x08#define LCD_LEFT0x00#define LCD_RIGHT0x04void LCD_Move(unsigned char object,
7、unsigned char direction)if(object=LCD_CURSOR)LCD_Write(LCD_COMMAND,0x10|direction);if(object=LCD_SCREEN)LCD_Write(LCD_COMMAND,0x18|direction);*/初始化LCD*void LCD_Initial()LcdEn=0;LCD_Write(LCD_COMMAND,0x38); /8位數(shù)據(jù)端口,2行顯示,5*7點(diǎn)陣LCD_Write(LCD_COMMAND,0x38);LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); /開(kāi)啟顯示, 無(wú)
8、光標(biāo)LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); /清屏LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); /AC遞增, 畫(huà)面不動(dòng)/*void GotoXY(unsigned char x, unsigned char y)if(y=0)LCD_Write(LCD_COMMAND,0x80|x);if(y=1)LCD_Write(LCD_COMMAND,0x80|(x-0x40);void Print(unsigned char *str)while(*str!='0')LCD_Write(LCD_DATA,*str);
9、str+;/*void LCD_LoadChar(unsigned char user8, unsigned char place)unsigned char i;LCD_Write(LCD_COMMAND,0x40|(place*8);for(i=0; i<8; i+)LCD_Write(LCD_DATA,useri);*/*#endif#ifndef _REAL_TIMER_DS1302_2003_7_21_#define _REAL_TIMER_DS1302_2003_7_21_sbit DS1302_CLK = P16; /實(shí)時(shí)時(shí)鐘時(shí)鐘線引腳 sbit DS1302_IO = P
10、17; /實(shí)時(shí)時(shí)鐘數(shù)據(jù)線引腳 sbit DS1302_RST = P15; /實(shí)時(shí)時(shí)鐘復(fù)位線引腳sbit ACC0 = ACC0;sbit ACC7 = ACC7;typedef struct _SYSTEMTIME_unsigned char Second;unsigned char Minute;unsigned char Hour;unsigned char Week;unsigned char Day;unsigned char Month;unsigned char Year;unsigned char DateString9;unsigned char TimeString9;SY
11、STEMTIME;/定義的時(shí)間類(lèi)型#define AM(X)X#define PM(X)(X+12) / 轉(zhuǎn)成24小時(shí)制#define DS1302_SECOND0x80#define DS1302_MINUTE0x82#define DS1302_HOUR0x84 #define DS1302_WEEK0x8A#define DS1302_DAY0x86#define DS1302_MONTH0x88#define DS1302_YEAR0x8C#define DS1302_RAM(X)(0xC0+(X)*2) /用于計(jì)算 DS1302_RAM 地址的宏 void DS1302InputBy
12、te(unsigned char d) /實(shí)時(shí)時(shí)鐘寫(xiě)入一字節(jié)(內(nèi)部函數(shù)) unsigned char i; ACC = d; for(i=8; i>0; i-) DS1302_IO = ACC0; /相當(dāng)于匯編中的 RRC DS1302_CLK = 1; DS1302_CLK = 0; ACC = ACC >> 1; unsigned char DS1302OutputByte(void) /實(shí)時(shí)時(shí)鐘讀取一字節(jié)(內(nèi)部函數(shù)) unsigned char i; for(i=8; i>0; i-) ACC = ACC >>1; /相當(dāng)于匯編中的 RRC ACC7
13、= DS1302_IO; DS1302_CLK = 1; DS1302_CLK = 0; return(ACC); void Write1302(unsigned char ucAddr, unsigned char ucDa)/ucAddr: DS1302地址, ucData: 要寫(xiě)的數(shù)據(jù) DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1; DS1302InputByte(ucAddr); / 地址,命令 DS1302InputByte(ucDa); / 寫(xiě)1Byte數(shù)據(jù) DS1302_CLK = 1; DS1302_RST = 0; unsign
14、ed 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) /是否寫(xiě)保護(hù)if(flag)Writ
15、e1302(0x8E,0x10);elseWrite1302(0x8E,0x00);void DS1302_SetTime(unsigned char Address, unsigned char Value) / 設(shè)置時(shí)間函數(shù)DS1302_SetProtect(0);Write1302(Address, (Value/10)<<4 | (Value%10); void DS1302_GetTime(SYSTEMTIME *Time)unsigned char ReadValue;ReadValue = Read1302(DS1302_SECOND);Time->Second
16、 = (ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_MINUTE);Time->Minute = (ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_HOUR);Time->Hour = (ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);ReadValue = Read1302(D
17、S1302_DAY);Time->Day = (ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_WEEK);Time->Week = (ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_MONTH);Time->Month = (ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);R
18、eadValue = 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 =
19、 Time->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->T
20、imeString0 = Time->Hour/10 + '0'Time->TimeString1 = Time->Hour%10 + '0'Time->TimeString2 = ':'Time->TimeString3 = Time->Minute/10 + '0'Time->TimeString4 = Time->Minute%10 + '0'Time->TimeString5 = ':'Time->TimeString6 = Tim
21、e->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);/*void BurstWrite1302(unsigned char *pWClock)/往DS1302寫(xiě)入時(shí)鐘數(shù)據(jù)(多字節(jié)方式) unsigned char i; Write1302(0x8e,0x00); / 控制命令,WP=0,寫(xiě)操作? DS
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 花茶創(chuàng)意美術(shù)課件
- 部門(mén)經(jīng)理培訓(xùn)
- 電梯房樓頂施工方案
- 新疆交通職業(yè)技術(shù)學(xué)院《光電成像系統(tǒng)設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 山東商業(yè)職業(yè)技術(shù)學(xué)院《油畫(huà)半身像》2023-2024學(xué)年第二學(xué)期期末試卷
- 遼寧體育運(yùn)動(dòng)職業(yè)技術(shù)學(xué)院《小型商住空間設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 江西應(yīng)用技術(shù)職業(yè)學(xué)院《工程管理與預(yù)算》2023-2024學(xué)年第二學(xué)期期末試卷
- 許昌陶瓷職業(yè)學(xué)院《商務(wù)英語(yǔ)閱讀III》2023-2024學(xué)年第一學(xué)期期末試卷
- 山東藥品食品職業(yè)學(xué)院《金融監(jiān)管學(xué)(雙語(yǔ))》2023-2024學(xué)年第二學(xué)期期末試卷
- 皖西學(xué)院《微視頻制作》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年03月四川成都農(nóng)業(yè)科技中心公開(kāi)招聘筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 2025至2030年中國(guó)臺(tái)式特定電磁波譜治療器數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 正式戀愛(ài)協(xié)議書(shū)
- 2024年多媒體應(yīng)用設(shè)計(jì)師理論知識(shí)試題及答案
- 創(chuàng)建全國(guó)文明城市培訓(xùn)
- 2024年北京體育大學(xué)招聘考試真題
- 2024-2025學(xué)年七年級(jí)數(shù)學(xué)人教版(2024)下學(xué)期期中考試模擬卷A卷(含解析)
- 2025年大學(xué)生心理健康趣味知識(shí)競(jìng)賽參考題庫(kù)及答案(共150題)
- 超星爾雅學(xué)習(xí)通《花道-插花技藝養(yǎng)成(南林業(yè)職業(yè)技術(shù)學(xué)院)》2025章節(jié)測(cè)試附答案
- T-CRHA 086-2024 住院患者胰島素泵應(yīng)用護(hù)理規(guī)范
- 河南省鄭州市建筑職業(yè)技術(shù)學(xué)院2024年4月單招考試職測(cè)試題
評(píng)論
0/150
提交評(píng)論