ds1302实时时钟c程序加仿真原理图.doc

上传人:sk****8 文档编号:3550935 上传时间:2019-06-04 格式:DOC 页数:19 大小:168.50KB
下载 相关 举报
ds1302实时时钟c程序加仿真原理图.doc_第1页
第1页 / 共19页
ds1302实时时钟c程序加仿真原理图.doc_第2页
第2页 / 共19页
ds1302实时时钟c程序加仿真原理图.doc_第3页
第3页 / 共19页
ds1302实时时钟c程序加仿真原理图.doc_第4页
第4页 / 共19页
ds1302实时时钟c程序加仿真原理图.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

1、#ifndef _1602_yejing_#define _1602_yejing_#include#define uchar unsigned char#define uint unsigned intsbit lcden=P34;sbit lcdrs=P35;void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void write_com(uchar com)lcdrs=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;void write_data(uchar date)lcdrs=1;P

2、0=date;delay(5);lcden=1;delay(5);lcden=0;void write_lcd(uchar x,char *cha) uchar length,i=0;write_com(x);for(length=0;chalength!=0;length+); for(i=0;i4)write_data(ch2);write_data(ch1);void write_fd(float t)/显示 float 型函数 uchar s1,s2,s3,s4;uint tt;tt=t*100;s1=tt/1000;s1+=0x30;s2=tt%1000/100;s2+=0x30;s

3、3=tt%1000%100/10;s3+=0x30;s4=tt%10;s4+=0x30;write_data(s1);write_data(s2);write_data(46);write_data(s3);write_data(s4); void init()lcden=0;write_com(0x38);/设置 16*2 显示write_com(0x0c);/设置开显示,不显示光标write_com(0x06);/写一个字符后地址指针加 1write_com(0x01);/显示清 0,数据指针清 0#endif/*THE REAL TIMER DS1302 DRIVER LIBCOPYRI

4、GHT (c) 2010 BY ZYK.- ALL RIGHTS RESERVED -File Name: DS1302.hAuthor: ZHANG YUAN KECreated: 2010/06/21Modified: NORevision: 1.0*/#ifndef _DS1302_2010_06_21_#define _DS1302_2010_06_21_sbit SCLK = P16; /实时时钟时钟线引脚 sbit DIO = P17; /实时时钟数据线引脚 sbit CE = P15; /实时时钟复位线引脚sbit ACC0 = ACC0;sbit ACC7 = ACC7;cha

5、r sec,min,hour,day,mon,week,year;char *tab7=“Sun“,“Mon“,“Tue“,“Wed“,“Thu“,“Fri“,“Sat“,;void write_1302(uchar add,uchar dat)uchar i;ACC=add;CE=0;SCLK=0;CE=1;for(i=0;i=1;ACC=dat;for(i=0;i=1;CE=0;uchar read_1302(uchar add)uchar i;ACC=add;CE=0;SCLK=0;CE=1;for(i=8;i0;i-) / 为什么不能 for(i=0;i=1;SCLK=0;for(i=

6、8;i0;i-) ACC=1;ACC7=DIO;SCLK=1;SCLK=0;return(ACC); CE=0; void inputbyte(uchar d) /实时时钟写入一字节(内部函数) uchar i;ACC=d;for(i=8;i0;i-)DIO=ACC0; /相当于汇编中的 RRCSCLK=1;SCLK=0;ACC=1; uchar outputbyte() /实时时钟读取一字节(内部函数) uchar i;for(i=8; i0; i-)ACC=ACC1; /相当于汇编中的 RRC ACC7=DIO;SCLK=1;SCLK=0; return(ACC); void write_

7、1302(uchar add,uchar dat) /ucAddr: DS1302 地址, ucData: 要写的数据CE=0;SCLK=0;CE=1;inputbyte(add); / 地址,命令 inputbyte(dat); / 写 1Byte 数据CE=0; uchar read_1302(uchar add) /读取 DS1302 某地址的数据uchar dat;CE=0;SCLK=0;CE=1;inputbyte(add); / 地址,命令 dat=outputbyte(); / 读 1Byte 数据CE=0;return(dat);void setprotect(bit flag

8、)if(flag)write_1302(0x8e,0x80);elsewrite_1302(0x8e,0x00);void gettime_1302()sec=read_1302(0x81);min=read_1302(0x83);hour=read_1302(0x85);day=read_1302(0x87);mon=read_1302(0x89);week=read_1302(0x8b);year=read_1302(0x8d); void stop_time(bit flag) / 是否将时钟停止unsigned char dat;dat=read_1302(0x81);setprote

9、ct(0);if(flag)write_1302(0x80, dat|0x80);elsewrite_1302(0x80, datvoid init_1302() uchar second=read_1302(0x81); if(second/*void BurstWrite1302(unsigned char *pWClock) /往 DS1302 写入时钟数据( 多字节方式)unsigned char i;Write1302(0x8e,0x00); / 控制命令,WP=0,写操作 ?DS1302_RST = 0;DS1302_CLK = 0;DS1302_RST = 1;DS1302Inp

10、utByte(0xbe); / 0xbe:时钟多字节写命令for (i = 8; i0; i-) /8Byte = 7Byte 时钟数据 + 1Byte 控制DS1302InputByte(*pWClock); / 写 1Byte 数据pWClock+;DS1302_CLK = 1;DS1302_RST = 0; void BurstRead1302(unsigned char *pRClock) /读取 DS1302 时钟数据( 时钟多字节方式)unsigned char i;DS1302_RST = 0;DS1302_CLK = 0;DS1302_RST = 1;DS1302InputBy

11、te(0xbf); / 0xbf:时钟多字节读命令 for (i=8; i0; i-) *pRClock = DS1302OutputByte(); / 读 1Byte 数据 pRClock+;DS1302_CLK = 1;DS1302_RST = 0;*/#endif#include “1602.h“#include “DS1302.h“sbit set=P32;sbit jia1=P30;sbit jian1=P31;uchar slect=0;uchar bcdtoasc(uchar cha)return (cha/16)*10+(cha%16);uchar asctobcd(uchar

12、 cha)return (cha/10)*16+(cha%10);void disp_week() switch(week) case 1:write_lcd(0xcd,tab0); break;case 2:write_lcd(0xcd,tab1); break;case 3:write_lcd(0xcd,tab2); break;case 4:write_lcd(0xcd,tab3); break;case 5:write_lcd(0xcd,tab4); break;case 6:write_lcd(0xcd,tab5); break;case 7:write_lcd(0xcd,tab6)

13、; break;void disp_time()write_com(0x87);write_bcd(year);write_com(0x8a);write_bcd(mon);write_com(0x8d);write_bcd(day);write_com(0xc5);write_bcd(hour);write_com(0xc8);write_bcd(min);write_com(0xcb);write_bcd(sec);disp_week();void keyscan()set=1;jia1=1;jian1=1;stop_time(1); if(set=0)delay(10);if(set=0

14、) delay(200); slect+;if(slect=8) slect=0; stop_time(0);write_com(0x0c);if(slect)switch(slect) case 1:write_com(0xcb);write_com(0x0d); if(jia1=0)delay(10);if(jia1=0) delay(200);sec=read_1302(0x81);sec=secsec=bcdtoasc(sec);sec+=1;if(sec=60)sec=0;sec=asctobcd(sec);write_1302(0x80,sec);write_com(0x0c);write_bcd(sec);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 精品笔记

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。