历时钟的设计.docx

上传人:b****6 文档编号:8257869 上传时间:2023-01-30 格式:DOCX 页数:32 大小:251.75KB
下载 相关 举报
历时钟的设计.docx_第1页
第1页 / 共32页
历时钟的设计.docx_第2页
第2页 / 共32页
历时钟的设计.docx_第3页
第3页 / 共32页
历时钟的设计.docx_第4页
第4页 / 共32页
历时钟的设计.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

历时钟的设计.docx

《历时钟的设计.docx》由会员分享,可在线阅读,更多相关《历时钟的设计.docx(32页珍藏版)》请在冰豆网上搜索。

历时钟的设计.docx

历时钟的设计

 

日历时钟

一、实验目的

以DS1302实时时钟芯片和液晶显示屏LCD1602为基础设计一个日历时钟

二、实验要求

用PROTEUS画出原理图和PCB图,并完成下列任务:

1时间和日期可调整,按键采用3个按键

2实验流程图

3在Proteus上调试通过

三、流程图

四、.ProteusISIS的使用

1、进入ProteusISIS

双击桌面上的ISIS7Professional图标或者单击屏幕左下方的“开始”→“程序”→“Proteus7Professional?

→“ISIS7Professional”,出现如图1-1所示界面,随后就进入了ProteusISIS集成环境

五、图1-1启动时的屏幕

2、工作界面

ProteusISIS的工作界面是一种标准的Windows界面,如图1-2所示。

包括:

标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。

图1-2ProteusISIS的工作界面

3.

KeilC与Proteus连接调试

1、假若KeilC与Proteus均已正确安装在C:

\ProgramFiles的目录里;

2、安装KeilC与Proteus的连接插件vdmagdi.exe;

3、进入KeilCμVision2开发集成环境,创建一个新项目(Project),并为该项目选定合适的单片机CPU器件(如:

Atmel公司的AT89C51)。

并为该项目加入KeilC源程序。

4、需要设置KeilC的选项

单击“Project菜单/OptionsforTarget”选项或者点击工具栏的“optionfortarget”按扭,弹出窗口,点击“Debug”按钮,出现如图3-1所示页面

出现的对话框里在右栏上部的下拉菜单里选中“ProteusVSMMonitor一51Driver”。

并且还要点击一下“Use”前面表明选中的小圆点,再点击“Setting”按钮,设置通信接口,在“Host”后面添上?

27.0.0.1”,如果使用的不是同一台电脑,则需要在这里添上另一台电脑的IP地址(另一台电脑也应安装Proteus)。

在“Port”后面添加?

000”。

设置好的情形如图所示,然后点击“OK”按钮。

最后将工程编译,进入调试状态,并运行。

设置完之后,请重新编译、链接、生成可执行文件

5.Proteus的设置

进入Proteus的ISIS,鼠标左键点击菜单“Debug”,选中“useromotedebugermonitor”,如图3-2所示。

此后,便可实现KeilC与Proteus连接调试

   

选项设置

6.Proteus里加载可执行文件

      左键双击AT89C52原理图,点击加载可执行文件

调试结果

六、实验内容

源代码

#include

#include

#include"da1302.h"

#include"lcd1602.h"

#include"key.h"

unsignedcharkeytemp;

unsignedcharhourf,minutef;

 

voidInit_Com(void)

{

TMOD=0x20;

PCON=0x00;

SCON=0x50;

TH1=0xFd;

TL1=0xFd;

TR1=1;

}

SYSTEMTIMECurrentTime;

voidmain(void)

{

uchartime[8]={0x00,0x00,0x20,0x08,0x08,0x05,0x08,0x00};//1302的时间预设值

LCD_initial();

Initial_DS1302();

set_time(time);

 

while

(1)

{

unsignedcharweek;

/*DS1302_GetTime(&CurrentTime);

DateToStr(&CurrentTime);

TimeToStr(&CurrentTime);

LCD_set_position(0x06);

LCD_prints(CurrentTime.DateString);

LCD_set_position(0x46);

LCD_prints(CurrentTime.TimeString);

*/

Initial_DS1302();

DS1302_GetTime(&CurrentTime);

if((CurrentTime.Hour==7)&&(CurrentTime.Minute==15)&&(CurrentTime.Second==0))

{

LCD_initial();

LCD_set_position(0x00);

 

}

week=CurrentTime.Week+'0';

Delay1ms

(1);

DateToStr(&CurrentTime);

TimeToStr(&CurrentTime);

LCD_set_position(0x02);

LCD_prints(CurrentTime.DateString);

LCD_set_position(0x42);

LCD_prints(CurrentTime.TimeString);

LCD_set_position(0x4c);

LCD_printc(week);

Delay1ms(100);

}

}/*--------------------------------------------------------------------------

AT89X52.H

HeaderfileforthelowvoltageFlashAtmelAT89C52andAT89LV52.

Copyright(c)1988-2002KeilElektronikGmbHandKeilSoftware,Inc.

Allrightsreserved.

--------------------------------------------------------------------------*/

#ifndef__AT89X52_H__

#define__AT89X52_H__

/*------------------------------------------------

ByteRegisters

------------------------------------------------*/

sfrP0=0x80;

sfrSP=0x81;

sfrDPL=0x82;

sfrDPH=0x83;

sfrPCON=0x87;

sfrTCON=0x88;

sfrTMOD=0x89;

sfrTL0=0x8A;

sfrTL1=0x8B;

sfrTH0=0x8C;

sfrTH1=0x8D;

sfrP1=0x90;

sfrSCON=0x98;

sfrSBUF=0x99;

sfrP2=0xA0;

sfrIE=0xA8;

sfrP3=0xB0;

sfrIP=0xB8;

sfrT2CON=0xC8;

sfrT2MOD=0xC9;

sfrRCAP2L=0xCA;

sfrRCAP2H=0xCB;

sfrTL2=0xCC;

sfrTH2=0xCD;

sfrPSW=0xD0;

sfrACC=0xE0;

sfrB=0xF0;

/*------------------------------------------------

P0BitRegisters

------------------------------------------------*/

sbitP0_0=0x80;

sbitP0_1=0x81;

sbitP0_2=0x82;

sbitP0_3=0x83;

sbitP0_4=0x84;

sbitP0_5=0x85;

sbitP0_6=0x86;

sbitP0_7=0x87;

/*------------------------------------------------

PCONBitValues

------------------------------------------------*/

#defineIDL_0x01

#defineSTOP_0x02

#definePD_0x02/*Alternatedefinition*/

#defineGF0_0x04

#defineGF1_0x08

#defineSMOD_0x80

/*------------------------------------------------

TCONBitRegisters

------------------------------------------------*/

sbitIT0=0x88;

sbitIE0=0x89;

sbitIT1=0x8A;

sbitIE1=0x8B;

sbitTR0=0x8C;

sbitTF0=0x8D;

sbitTR1=0x8E;

sbitTF1=0x8F;

/*------------------------------------------------

TMODBitValues

------------------------------------------------*/

#defineT0_M0_0x01

#defineT0_M1_0x02

#defineT0_CT_0x04

#defineT0_GATE_0x08

#defineT1_M0_0x10

#defineT1_M1_0x20

#defineT1_CT_0x40

#defineT1_GATE_0x80

#defineT1_MASK_0xF0

#defineT0_MASK_0x0F

/*------------------------------------------------

P1BitRegisters

------------------------------------------------*/

sbitP1_0=0x90;

sbitP1_1=0x91;

sbitP1_2=0x92;

sbitP1_3=0x93;

sbitP1_4=0x94;

sbitP1_5=0x95;

sbitP1_6=0x96;

sbitP1_7=0x97;

sbitT2=0x90;/*ExternalinputtoTimer/Counter2,clockout*/

sbitT2EX=0x91;/*Timer/Counter2capture/reloadtrigger&dirctl*/

/*------------------------------------------------

SCONBitRegisters

------------------------------------------------*/

sbitRI=0x98;

sbitTI=0x99;

sbitRB8=0x9A;

sbitTB8=0x9B;

sbitREN=0x9C;

sbitSM2=0x9D;

sbitSM1=0x9E;

sbitSM0=0x9F;

/*------------------------------------------------

P2BitRegisters

------------------------------------------------*/

sbitP2_0=0xA0;

sbitP2_1=0xA1;

sbitP2_2=0xA2;

sbitP2_3=0xA3;

sbitP2_4=0xA4;

sbitP2_5=0xA5;

sbitP2_6=0xA6;

sbitP2_7=0xA7;

/*------------------------------------------------

IEBitRegisters

------------------------------------------------*/

sbitEX0=0xA8;/*1=EnableExternalinterrupt0*/

sbitET0=0xA9;/*1=EnableTimer0interrupt*/

sbitEX1=0xAA;/*1=EnableExternalinterrupt1*/

sbitET1=0xAB;/*1=EnableTimer1interrupt*/

sbitES=0xAC;/*1=EnableSerialportinterrupt*/

sbitET2=0xAD;/*1=EnableTimer2interrupt*/

sbitEA=0xAF;/*0=Disableallinterrupts*/

/*------------------------------------------------

P3BitRegisters(Mnemonics&Ports)

------------------------------------------------*/

sbitP3_0=0xB0;

sbitP3_1=0xB1;

sbitP3_2=0xB2;

sbitP3_3=0xB3;

sbitP3_4=0xB4;

sbitP3_5=0xB5;

sbitP3_6=0xB6;

sbitP3_7=0xB7;

sbitRXD=0xB0;/*Serialdatainput*/

sbitTXD=0xB1;/*Serialdataoutput*/

sbitINT0=0xB2;/*Externalinterrupt0*/

sbitINT1=0xB3;/*Externalinterrupt1*/

sbitT0=0xB4;/*Timer0externalinput*/

sbitT1=0xB5;/*Timer1externalinput*/

sbitWR=0xB6;/*Externaldatamemorywritestrobe*/

sbitRD=0xB7;/*Externaldatamemoryreadstrobe*/

/*------------------------------------------------

IPBitRegisters

------------------------------------------------*/

sbitPX0=0xB8;

sbitPT0=0xB9;

sbitPX1=0xBA;

sbitPT1=0xBB;

sbitPS=0xBC;

sbitPT2=0xBD;

/*------------------------------------------------

T2CONBitRegisters

------------------------------------------------*/

sbitCP_RL2=0xC8;/*0=Reload,1=Captureselect*/

sbitC_T2=0xC9;/*0=Timer,1=Counter*/

sbitTR2=0xCA;/*0=Stoptimer,1=Starttimer*/

sbitEXEN2=0xCB;/*Timer2externalenable*/

sbitTCLK=0xCC;/*0=SerialclockusesTimer1overflow,1=Timer2*/

sbitRCLK=0xCD;/*0=SerialclockusesTimer1overflow,1=Timer2*/

sbitEXF2=0xCE;/*Timer2externalflag*/

sbitTF2=0xCF;/*Timer2overflowflag*/

/*------------------------------------------------

T2MODBitValues

------------------------------------------------*/

#defineDCEN_0x01/*1=Timer2canbeconfiguredasup/downcounter*/

#defineT2OE_0x02/*Timer2outputenable*/

/*------------------------------------------------

PSWBitRegisters

------------------------------------------------*/

sbitP=0xD0;

sbitFL=0xD1;

sbitOV=0xD2;

sbitRS0=0xD3;

sbitRS1=0xD4;

sbitF0=0xD5;

sbitAC=0xD6;

sbitCY=0xD7;

/*------------------------------------------------

InterruptVectors:

InterruptAddress=(Number*8)+3

------------------------------------------------*/

#defineIE0_VECTOR0/*0x03ExternalInterrupt0*/

#defineTF0_VECTOR1/*0x0BTimer0*/

#defineIE1_VECTOR2/*0x13ExternalInterrupt1*/

#defineTF1_VECTOR3/*0x1BTimer1*/

#defineSIO_VECTOR4/*0x23Serialport*/

#defineTF2_VECTOR5/*0x2BTimer2*/

#defineEX2_VECTOR5/*0x2BExternalInterrupt2*/

#endif

 

/*--------------------------------------------------------------------------

STDIO.H

PrototypesforstandardI/Ofunctions.

Copyright(c)1988-2002KeilElektronikGmbHandKeilSoftware,Inc.

Allrightsreserved.

--------------------------------------------------------------------------*/

#ifndef__STDIO_H__

#define__STDIO_H__

#ifndefEOF

#defineEOF-1

#endif

#ifndefNULL

#defineNULL((void*)0)

#endif

#ifndef_SIZE_T

#define_SIZE_T

typedefunsignedintsize_t;

#endif

#pragmaSAVE

#pragmaREGPARMS

externchar_getkey(void);

externchargetchar(void);

externcharungetchar(char);

externcharputchar(char);

externintprintf(constchar*,...);

externintsprintf(char*,constchar*,...);

externintvprintf(constchar*,char*);

externintvsprintf(char*,constchar*,char*);

externchar*gets(char*,intn);

externintscanf(constchar*,...);

externintsscanf(char*,constchar*,...);

externintputs(constchar*);

#pragmaRESTORE

#endif//#include

#include

//#include"ds1302.h"

//#include"lm3228.h"

//#include"hanzi.h"

#defineucharunsignedchar

 

voidWrite1302(unsignedcharucAddr,unsignedcharucDa);

unsignedcharRead1302(unsignedcharucAddr);

voidLCD_prints(unsignedchar*lcd_string);

#defineucharunsignedchar

#defineDS1302_SECOND0x80

#defineDS1302_MINUTE0x82

#defineDS1302_HOUR0x84

#defineDS1302_WEEK0x8a

#defineDS1302

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 企业管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1