时钟1302.doc_第1页
时钟1302.doc_第2页
时钟1302.doc_第3页
时钟1302.doc_第4页
时钟1302.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#include #include #define DS1302_W_ADDR 0xBE#define DS1302_R_ADDR 0xBF#define KEY_DELAY 200 / 按键扫描延时/键值typedef unsigned char uint8;typedef unsigned int uint16;typedef unsigned long uint32;typedef char int8;typedef int int16;typedef long int32;/ DS1302sbit SCK = P17;/时钟sbit SDA = P23;/数据sbit RST = P13; /DS1302复位(片选)sbit key0=P30;sbit key1=P31;sbit key2=P32;sbit key3=P33;void delay(uint16 cnt);void delay1(uint16 del)uint16 x,y;for(x=0;xdel;x+)for(y=0;y148;y+);code uint8 Ledcode14=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf,0x86,0x00;uint8 Time7=55,59,11,22,2,2,11;/秒分时日月周年10-08-15 11:59:55uint8 Led_buf6;uint8 Num=0, Led_n=0, T_n=0,min=0;bit flag;bit Wow;void delay(uint16 n)while (n-);/* * 初始化系统定时器*/void write_ds1302_byte(uint8 dat) uint8 i;for (i=0;i= 1;SCK = 0;/* * 读一个字节*/uint8 read_ds1302_byte(void) uint8 i, dat=0;for (i=0;i= 1;if (SDA)dat |= 0x80;SCK = 1;SCK = 0; return dat;void reset_ds1302(void)RST = 0;SCK = 0;RST = 1;/* * 清除写保护*/void clear_ds1302_WP(void) reset_ds1302();RST = 1;write_ds1302_byte(0x8E);write_ds1302_byte(0);SDA = 0;RST = 0;/* * 设置写保护*/void set_ds1302_WP(void) reset_ds1302();RST = 1;write_ds1302_byte(0x8E);write_ds1302_byte(0x80);SDA = 0;RST = 0;/* * 设定时钟数据*/void set_time(uint8 *timedata)uint8 i, tmp;for (i=0; i7; i+) / 转化为BCD格式tmp = timedatai / 10;timedatai = timedatai % 10;timedatai = timedatai + tmp*16;clear_ds1302_WP();reset_ds1302();RST = 1;write_ds1302_byte(DS1302_W_ADDR);for (i=0; i7; i+)write_ds1302_byte(timedatai);delay(10);write_ds1302_byte(0);SDA = 0;RST = 0;set_ds1302_WP();/* * 读时钟数据*/void read_time(uint8 *timedata)uint8 i, tmp;clear_ds1302_WP();reset_ds1302();RST = 1;write_ds1302_byte(DS1302_R_ADDR);for (i=0; i7; i+)timedatai = read_ds1302_byte();delay(10);SDA = 0;RST = 0;set_ds1302_WP();for (i=0; i= 7)Led_n = 0;elseLed_n+; void set_clock(void)if (key0 = 0)delay1(3);if (key0 = 0) delay1(3);while(!key0);if(min=2) Time2+;if(Time2=24)Time2=0;if(min=1)Time1+;if(Time1=60)Time1=0;set_time(Time);if (key1= 0)delay1(3);if (key1= 0) delay1(3);while(!key1);if(min=2) if(Time2=0)Time2=24; Time2-; if(min=1) if(Time1=0) Time1=60; Time1-; set_time(Time); void gai()if (key2 = 0)delay(KEY_DELAY);if (key2 = 0)while(!key2); min+; if(min=3) min=0; while(min=1) read_time(Time); flash1(flag); show_time(Led_buf); set_clock(); if(key2=0) break; while(min=2) read_time(Time); flash2(flag); show_time(Led_buf); set_clock(); if(key2=0) break; while(min=0) read_time(Time); make_led_number(); show_time(Led_buf); set_clock(); if(key2=0) break; void main()systimer_init();set_time(Time); /初始时间设定 while (1)read_time(Time);make_led_nu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论