DS1302和51单片机设计电子钟数码管显示.doc_第1页
DS1302和51单片机设计电子钟数码管显示.doc_第2页
DS1302和51单片机设计电子钟数码管显示.doc_第3页
DS1302和51单片机设计电子钟数码管显示.doc_第4页
DS1302和51单片机设计电子钟数码管显示.doc_第5页
全文预览已结束

下载本文档

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

文档简介

DS1302和51单片机设计电子钟数码管显示2010-09-03 10:39DS1302和51单片机设计电子钟数码管显示(未作出防真)#include#define uchar unsigned char#define uint unsigned intuchar dis16=0,0,0,0,10,10,0,0,7,2,9,0,9,0,0,2;uchar P2_scan4=0xf7,0xfb,0xfd,0xfe; /位选择 显示扫描uchar P0_scan11=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff;/数字显示 不带小数点uchar P0_scan111=0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x7f;/数字显示 带小数点char clock7=4,0,15,10,27,9,9;uchar tiao,m=0,n=8,S;bit time=0,p=0;sbit CLK = P10;sbit IO = P11;sbit RST = P12;sbit P32 = P32;sbit P33 = P33;sbit P34 = P34;sbit P35 = P35;/* 延时函数 */void delay(uchar time)/延时0.1ms uchar i,j; do for(i=0;i10;i+) for(j=0;j0);/* 复位函数 */void reset() CLK = 0; RST = 0; RST = 1;/* 字节写入函数 */void wbyte(uchar W_Byte) uchar i; for(i =0;i=1; /* 字节读取函数 */uchar rbyte() uchar i; uchar R_Byte; uchar TmpByte; R_Byte=0x00; IO=1; for(i=0;i8;+i) CLK=1; CLK=0; TmpByte=(uchar)IO; /读IO口 TmpByte=1 ; R_Byte|=TmpByte; return R_Byte;/* DS1302初始化函数 */void initialize_DS1302(void) reset(); wbyte(0x8e); / 写保护控制寄存器 wbyte(0); / 允许写入 reset(); wbyte(0x90); / 涓流充电控制寄存器 wbyte(0xab); / 允许充电, 双二极管, 8K 电阻 reset(); wbyte(0xbe); / 以多字节突发方式写入时钟数据(8个字节) wbyte(clock1); /秒 wbyte(clock2); /分 wbyte(clock3); /时 wbyte(clock4); /日 wbyte(clock5); /月 wbyte(clock0); /星期 wbyte(clock6); /年 wbyte(0x00); / 以多字节突发方式写入时钟数据时,必须对写保护控制寄存器写入0值 reset(); /* 显示函数 */void scan(void)/显示函数 uchar k; for (k=0;k4) P0=P0_scandisk+S; else P0=P0_scandisk+S; P2=P2_scank; delay(5); P0=0x00; P2=0xff; /* BCD-非BCD */void transform(void) uchar k; for(k=0;k 4) * 10) + (clockk & 0xf); /* 非BCD-BCD */void transform_1(void) uchar k; for(k=0;k7;+k) clockk=(clockk / 10) 4) | (clockk % 10); /* 定时器中断0 */void timer0(void) interrupt 1 TR0=0 ; if(p=0) reset(); wbyte(0xbf); / 以多字节突发方式从DS1302读取时钟数据 clock1 = rbyte(); / 秒 clock2 = rbyte(); / 分 clock3 = rbyte(); / 小时 clock4 = rbyte(); / 日期 clock5 = rbyte(); / 月份 clock0 = rbyte(); / 星期 此程序不用 clock6 = rbyte(); / 年 reset(); transform(); dis0=clock1%10;dis1=clock1/10; dis2=clock2%10;dis3=clock2/10; dis6=clock3%10;dis7=clock3/10; dis8=clock4%10;dis9=clock4/10; dis10=clock5%10;dis11=clock5/10; dis12=clock6%10;dis13=clock6/10; scan(); TH0=0xff ; TL0=0x38 ; TR0=1 ;/* 主函数 */void main(void) TMOD=0x01 ; TH0=0xff ; TL0=0x38 ; ET0=1 ; EA=1 ; transform_1(); initialize_DS1302

温馨提示

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

评论

0/150

提交评论