急求hc6800开发板 52吴鉴鹰单片机开发板闹钟程序

查看: 435|回复: 0
基于51单片机(蓝桥杯开发板)闹钟开源代码下载即可用
#include&reg52.h&
#define uchar unsigned char
#define uint unsigned int
#define CLOSE P2 &= 0x1f
#define y6 P2=P2&0x1f,P2=P2|0xc0
#define y7 P2=P2&0x1f,P2=P2|0xe0
#define y5 P2=P2&0x1f,P2=P2|0xa0
#define y4 P2=P2&0x1f,P2=P2|0x80
void nao();
sbit d=P0^6;
sbit k1=P3^0;
sbit k2=P3^1;
sbit k3=P3^2;
sbit k4=P3^3;
uint num=0,sum=0,miao=55,fen=0,shi=0,yue=11,ri=19,miao1=0,fen1=1,shi1=0,miao2=0;
unsigned char table[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char colork[]={0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,0x80,0x90};
uchar flag=0;
void time(uint n)
& &int i,j;
& &for(i=n;i&0;i--)
& &&&for(j=150;j&0;j--);
void feng()& & & & & & & & & & & & & & & & & & & & & & & && & //&&关闭蜂鸣器
void xiang()& & & & & & & & & & & & & & & & & & & && & //&&响铃&&1
void xiang1()& & & & & & & & & & & & & & & & & & & && & //&&响铃&&2
& & & && & xiang();
& & & && & time(500);
& & & && & feng();
void xiang2()& & & & & & & & & & & & & & & & & & & & & & & &&&//&&响铃 3
& &xiang();
& &time(500);
& &feng();
& &time(200);
& &xiang();
& &time(300);
& &feng();
& &time(200);
& &xiang();
& &time(100);
& &feng();
void display()& & & & & & & & & & & & & & & & & & & & //&&时间显示
& & & & CLOSE;
& & & & P0=0x24;&&& & & & & & & & & & & & & & & & //& & & & & & & &
& & & & P2=0xc0;&&& & & & & & & & & & & & & & & & //y6
& & & & CLOSE;
& & & & P0=0
& & & & P2=0xe0;
& & & & time(2);& & & & & & & & & & & &&&& & & & //y7
& & & & CLOSE;& & & & & & & & & & & & & & & &&&& & & & //suozhu&&shuzi
& & & & CLOSE;
& & & & P0=0x80;&&& & & & & & & & & & & & & & & & //& & & & & & & &
& & & & P2=0xc0;&&& & & & & & & & & & & & & & & & //y6
& & & & CLOSE;
& & & & P0=table[miao%10];
& & & & P2=0xe0;
& & & & time(2);& & & & & & & & & & & &&&& & & & //y7
& & & & CLOSE;& & & & & & & & & & & & & & & &&&& & & & //suozhu&&shuzi
& & & & CLOSE;
& & & & P0=0x40;& && && && && & & & //& & & & & & & &
& & & & P2=0xc0;& & & & & & & & & & & & & & & & //y6
& & & & CLOSE;
& & & & P0=table[miao/10];
& & & & P2=0xe0;
& & & & time(2);& & & & & & & & & & & && && & & & //y7
& & & & CLOSE;& & & & & & & & & & & & & & & && && & & & //suozhu shuzi
& & & & CLOSE;
& & & & P0=0x10;& && && && & & & & & //& & & & & & & &
& & & & P2=0xc0;& & & & & & & & & & & & & & & & //y6
& & & & CLOSE;
& & & & P0=table[fen%10];
& & & & P2=0xe0;
& & & & time(2);& & & & & & & & & & & && && & & & //y7
& & & & CLOSE;& & & & & & & & & & & & & & & && && & & & //suozhu shuzi
& & & & CLOSE;
& & & & P0=0x08;&&& & & & & & & & & & & & & & & & //& & & & & & & &
& & & & P2=0xc0;& & & & & & & & & & & & & & & & //y6
& & & & CLOSE;
& & & & P0=table[fen/10];
& & & & P2=0xe0;
& & & & time(2);& & & & & & & & & & & && && & & & //y7
& & & & CLOSE;& & & & & & & & & & & & & & & && && & & & //suozhu shuzi
& & & & CLOSE;
& & & & P0=0x02;&&& & & & & & & & & & & & & & & & //& & & & & & & &
& & & & P2=0xc0;& & & & & & & & & & & & & & & & //y6
& & & & CLOSE;
& & & & P0=table[shi%10];
& & & & P2=0xe0;
& & & & time(2);& & & & & & & & & & & && && & & & //y7
& & & & CLOSE;& & & & & & & & & & & & & & & && && & & & //suozhu shuzi
& & & & CLOSE;
& & & & P0=0x01;&&& & & & & & & & & & & & & & & & //& & & & & & & &
& & & & P2=0xc0;& & & & & & & & & & & & & & & & //y6
& & & & CLOSE;
& & & & P0=table[shi/10];
& & & & P2=0xe0;
& & & & time(2);& & & & & & & & & & & && && & & & //y7
& & & & CLOSE;& & & & & & & & & & & & & & & && && & & & //suozhu shuzi
& & & & nao();
void naozhong()& & & & & & & & & & & & & & & &&&//&&闹钟显示
& & & & CLOSE;
& & & & P0=0x80;&&& & & & & & & & & & & & & & & & //& & & & & & & &
& & & & P2=0xc0;&&& & & & & & & & & & & & & & & & //y6
& & & & CLOSE;& & & && & & & & & & & & & & & & & & & & & //&&suozhu weizhi
& & & & P0=table[miao2%10];
& & & & P2=0xe0;& & & & & & & & & & & &&&& & & & //y7
& & & & CLOSE;& & & & & & & & & & & & & & & &&&& & & & //suozhu&&shuzi
& & & & time(1);
& & & & CLOSE;
& & & & P0=0x40;& && && && && & & & //& & & & & & & &
& & & & P2=0xc0;& & & & & & & & & & & & & & & & //y6
& & & & CLOSE;& & & & & & & & & & & & & & & &&&& & & & //suozhu weihzi
& & & & P0=table[miao2/10];
& & & & P2=0xe0;& & & & & & & & & & & && && & & & //y7
& & & & CLOSE;& & & & & & & & & & & & & & & && && & & & //suozhu shuzi
& & & & time(1);
& &P0=0x01;
& &y6;& & & & & & & & & & & & & & & & & & & & & & & & //&&& & & &
& &P0=table[shi1%10];
& &time(4);
& &P0=0x02;
& &y6;& & & & & & & & & & & & & & & & & & & & & & & & //&&& & & &
& &P0=table[shi1/10];
& &time(4);
& &P0=0x04;
& &y6;& & & & & & & & & & & & & & & & & & & & & & & & //&&& & & &
& &P0=0& & & & & & & & & & & & & & & & & & & & //& &
& &time(4);
& &P0=0x08;
& &y6;& & & & & & & & & & & & & & & & & & & & & & & & //&&& & & &
& &P0=table[fen1/10];
& &time(4);
& &P0=0x10;
& &y6;& & & & & & & & & & & & & & & & & & & & & & & & //&&& & & &
& &P0=table[fen1%10];
& &time(4);
void play0()
& && & & & & & & && && & & &
& & P3=0& & & & & & & & & & & && & & & & & & & & & & & & & & & & & //&&检测第一行按键
& & & && && && && && && && &&&& & & & & & & & & & & & & & & & //将第一行线置为低电平,其余全为高电平& & & &&&
& & & & temp=P3;
& & & & temp=temp&0xf0;& & & & & & & &&&& & & & & & & & & & & & & & & & //0xfe & 0xf0& & & & & & & =&&
& & & & if(temp!=0xf0)
& & & & & & & & time(10);
& & & & & & & & temp=P3;
& & & & & & & & temp=temp&0xf0;
& & & & & & & & if(temp!=0xf0)& && &&&& & & & & & & & & & & & //再次确认按键是否被按下,避免上次为抖动
& & & & & & & & {
& & & & & & & && &
& & & & & & & & & & & & temp=P3;
& & & & & & & & & & & & switch(temp)& && && && && & & & // 判断按键
& & & & & & & & & & & & {
& & & & & & & && && && &case 0xee:& & & & & & & & & & & & & & & & //
& & & & & & & & & & & & & & & && & feng();& & & & & & & & & & & & & & & & //关闹铃
& & & & & & & && && && && &
& & & & & & & & & & & & }
& & & & & & & & & & & & while(temp!=0xf0)& && && & & & & & & & //&&等待按键释放
& & & & & & & & & & & & {
& & & & & & & & & & & && &&&time(4);
& & & & & & & & & & & && &&&feng();
& & & & & & & & & & & & & & & & temp=P3;
& & & & & & & & & & & & & & & & temp=temp&0xf0;& & & & & & & & & & & & //&&将按键复原
& & & && && && &}
& & & & & & & & }
void play1()& & & & & & & & & & & & & & & & & & & & & & & &&&//&&调整时间
& &if(fen==60)
& && &fen=0;
& && &shi++;
& & & && &if(shi==24)
& & & && &{
& & & && && &shi=0;
& & & && &}
void play2()& & & & & & & & & & & & & & & & & & & && & //& &暂停时间
& & while(!0x7e);
& && & & & TR0=~TR0;
void day()& & & & & & & & & & & & & & & & & & & && & //&&日期显示
& &P0=0x01;
& &y6;& & & & & & & & & & & & & & & & & & & & & & & & //&&& & & &
& &P0=table[yue%10];
& &time(4);
& &P0=0x02;
& &y6;& & & & & & & & & & & & & & & & & & & & & & & & //&&& & & &
& &P0=table[yue/10];
& &time(4);
& &P0=0x04;
& &y6;& & & & & & & & & & & & & & & & & & & & & & & & //&&& & & &
& &P0=0& & & & & & & & & & & & & & & & & & & & //& &
& &time(4);
& &P0=0x08;
& &y6;& & & & & & & & & & & & & & & & & & & & & & & & //&&& & & &
& &P0=table[ri/10];
& &time(4);
& &P0=0x10;
& &y6;& & & & & & & & & & & & & & & & & & & & & & & & //&&& & & &
& &P0=table[ri%10];
& &time(4);
void play4()& & & & & & & & & & & & & & & & //&&闹钟自定义
& &fen1++;
& &if(fen1==60)
& && &fen=0;
& && &shi1++;
& & & && &if(shi1==24)
& & & && &{
& & & && && &shi1=0;
& & & && &}
void play5()& & & & & & & & & & & & & & & & & & & & //&&日期自定义&&
& &if(ri==31)
& && &ri=1;
& && &yue++;
& & & && &if(yue==12)
& & & && &{
& & & && && &yue=1;
& & & && &}
void play6()& & & & & & & & & & & & & & & & & & & && & //&&进入闹钟界面
& & & & temp=P3;
& & while(temp==P3)
& & & & naozhong();& & & & & & & & & & & && && & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &
void play7()& & & & & & & & & & & & & & & & & & & && &//&&进入日期界面
& & & & temp=P3;
& & while(temp==P3)
& & & & day();
void play3()& & & & & & & & & & & & & & & & & & & & //&&自定义闹铃& & & && &&&
& & & &&&miao2++;
& & & &&&if(miao2==3)
& & & && &&&miao2=0;
void major()& & & & & & & & & & & & & & & & & & & & & & & & //&&矩阵按键扫描
& && & & & & & & && &
& & & & P3=0& & & & & & & & & & & && & & & & & & & & & & & & & & & & & //&&检测第一行按键
& & & && && && && && && && &&&& & & & & & & & & & & & & & & & //将第一行线置为低电平,其余全为高电平& & & &&&
& & & & temp=P3;
& & & & temp=temp&0xf0;& & & & & & & &&&& & & & & & & & & & & & & & & & //0xfe & 0xf0& & & & & & & =&&
& & & & if(temp!=0xf0)
& & & & & & & & time(10);
& & & & & & & & temp=P3;
& & & & & & & & temp=temp&0xf0;
& & & & & & & & if(temp!=0xf0)& && &&&& & & & & & & & & & & & //再次确认按键是否被按下,避免上次为抖动
& & & & & & & & {
& & & & & & & & & & & & temp=P3;
& & & & & & & & & & & & switch(temp)& && && && && & & & // 判断按键
& & & & & & & & & & & & {
& & & & & & & && && && &case 0xee:& & & & & & & & & & & & & & & & //
& & & & & & & & & & & & & & & && & feng();& & & & & & & & & & & & & & & & //关闹铃
& & & & & & & && && && && &
& & & & & & & & & & & & & & & & case 0xde:
& & & & & & & & & & & & & & & && &&&play1();& & & & & & & & & & & & //&&调整时间& & & & & & & & & & & & & & & &&&//&&
& & & & & & & & & & & & & & & && &&&
& & & & & & & & & & & && &&&case 0xbe:
& & & & & & & & & & & & & & & && &&&play4();& & & & & & & & & & & & //调整闹钟时间
& & & & & & & & & & & & & & & & & & & &
& & & & & & & && &&&& & & & case 0x7e:
& & & & & & & & & & & & & & & && &&&play7();& & & & & & & & & & & & //& & & &&&进入riqi界面
& & & & & & & & & & & & & & & && &&&& & & && &
& & & & & & & & & & & & }
& & & & & & & & & & & & while(temp!=0xf0)& && && & & & & & & & //&&等待按键释放
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & temp=P3;
& & & & & & & & & & & & & & & & temp=temp&0xf0;& & & & & & & & & & & & //&&将按键复原
& & & & & & & & & & & & }
& & & & & & & && &}& & & & & & & & & & & & & & & &&&
& & & &&&& & & & }
& & & & P3=0& & & & & & & &&&& & & & & & & & & & & && && && &//& &检测第二行按键& & & &&&
& & & && && && && && && && && & & & & & & & & & & & & & & & //& &将第二行置为低电平,其余全为高电平
& & & & temp=P3;
& & & & temp=temp&0xf0;
& & & & if(temp!=0xf0)
& & & & & & & & time(10);
& & & & & & & & temp=P3;
& & & && &&&temp=temp&0xf0;
& & & & & & & & if(temp!=0xf0)& && && & & & & & & & & & //& &再次确认按键是否被按下,避免上次为抖动
& & & & & & & & {
& & & & & & & & & & & & temp=P3;
& & & & & & & & & & & & switch(temp)& && &&&& & & & & & & & //& &判断按键
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & case 0xed:
& & & & & & & & & & & & & & & && & play2();& & & & & & & & & & & & & & & && &//&&暂停时间
& & & & & & & & & & & & & & & && &
& & & & & & & & & & & & & & & & case 0xdd:
& & & & & & & & & & & & & & & & & & & & play5();& & & & & & & & & & & &&&// 日期自定义
& & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & case 0xbd:
& & & & & & & & & & & & & & & & & & & & play6();& & & & & & & & & & & && & //进入闹钟界面
& & & & & & & & & & & & & & & & & & & &
& & & && && && & & & & & & & case 0x7d:
& & & & & & & & & & & & & & & & & & & & play3();& & & & & & & & & & & && & // 自定义闹铃
& & & & & & & & & & & & & & & & & & & && & & &
& & & & & & & & & & & & }
& & & & & & & & & & & & while(temp!=0xf0)& & & & & & & & & & //等待按键释放
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & temp=P3;
& & & & & & & & & & & & & & & & temp=temp&0xf0;
& & & & & & & & & & & & }
& & & & & & & & }
& & & & }& & & &
void nao()& & & & & & & & & & & & & & & & & & & & & & & & & & & && &//&&启用闹铃
& &if(fen==fen1&&shi==shi1&&miao==flag)
& && &if(miao2==0)
& & & && && & xiang();
& & & && &else if(miao2==1)
& & & && && & xiang1();
& & & && &else if(miao2==2)
& & & && && & xiang2();
void main()
& &feng();
& &TMOD=0x01;& && && && && && & // & & & & 设置定时器0为工作方式1(M1M0为01)
& && && && && && && && && && &&&//&&TMOD是定时器的工作方式寄存器,确定工作方式和功能。
& &TH0=()/256;& & & && &&&//& & & & 装初值11.0592M晶振定时50ms数为45872
& &TL0=()%256;& & & && &&&//& &&&
& &EA=1;& & & & & & & & & & & & & & & & & & & && &&&//& & & & 开总中断
& &ET0=1;& & & & & & & & & & & & & & & & & & & && &&&//& & & & 开定时器0中断
& &TR0=1;& & & & & & & & & & & & & & & & & & & & & & & & //& & & & 启动定时器0
& &while(1)& & & & & & & & & & & & & & & & & & & && & & & & & //& & & & 程序停止在这里不断扫描数码管的同时等待中断发生
& &&&display();
//& & & &&&play0();
& & & &&&major();
& &}& & & & & & & & & & & & & & & &
void TO_time() interrupt 1
& &TH0=()/256;& & & && && && &//重装初值
& &TL0=()%256;
& &sum++; & & & & & & & & & & & & & & & & & & & & & & & && &&&//num每加1次判断一次是否到20次
& &if(sum==20)& & & & & & & & & & & & & & & && && && &//如果到了20次,说明1秒时间到
& && & sum=0;
& & & && & miao++;& & & & & & & & & & & & & & & & & & & && && &
& & & && & if(miao==60)
& & & && & {
& & & && && & miao=0;
& & & & & & & && &fen++;
& & & & & & & && &if(fen==60)
& & & & & & & && &{
& & & & & & & && && &fen=0;
& & & & & & & & & & & &&&shi++;
& & & & & & & & & & & &&&if(shi==24)
& & & & & & & & & & & &&&{
& & & & & & & & & & & && &&&shi=0;
& & & & & & & & & & & & & & & & ri++;
& & & & & & & & & & & & & & & & if(ri==31)
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & && & ri=0;
& & & & & & & & & & & & & & & && & yue++;
& & & & & & & & & & & & & & & && & {
& & & & & & & & & & & & & & & && && & if(yue==12)
& & & & & & & & & & & & & & & & & & & && &{
& & & & & & & & & & & & & & & & & & & && && &yue=1;
& & & & & & & & & & & & & & & & & & & & & & & &&&nao();
& & & & & & & & & & & & & & & & & & & && &}
& & & & & & & & & & & & & & & && & }
& & & & & & & & & & & & & & & & }
& & & & & & & & & & & &&&}
& & & & & & & && &}
& & & && & }
Powered by基于51单片机实现的简单闹钟设计_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
基于51单片机实现的简单闹钟设计
总评分3.9|
浏览量611765
用知识赚钱
试读已结束,如果需要继续阅读或下载,敬请购买
定制HR最喜欢的简历
你可能喜欢
您可以上传图片描述问题
联系电话:
请填写真实有效的信息,以便工作人员联系您,我们为您严格保密。他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)51单片机开发板HC6800说明书_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
51单片机开发板HC6800说明书
&&51单片机开发板HC6800说明书
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩34页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢求普中科技51单片机开发板的闹钟代码_百度知道
求普中科技51单片机开发板的闹钟代码
我有更好的答案
有什么具体要求?
/********************************************************************************&&&&&&&&&&&&&&&&&*&&&&&&&&&&&&&&&&&
&&&&&&&普中科技--------------------------------------------------------------------------------*&实&验&名
&:&DS1302时钟显示试验*&实验说明&&&&&&&:&数码管显示时钟信息*&连接方式&&&&&&&:&见连接图*&注&&&&意
&:&*******************************************************************************/#include&reg51.h&#include&ds1302.h&//--定义使用的IO--//#define&GPIO_DIG&P0sbit&LSA=P2^2;sbit&LSB=P2^3;sbit&LSC=P2^4;//--定义全局变量--//unsigned&char&code&DIG_CODE[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码unsigned&char&DisplayData[8];//用来存放要显示的8位数的值//--声明全局变量--//void&DigDisplay();/********************************************************************************&函&数&名&&&&&&&&&:&main*&函数功能
&&&:&主函数*&输&&&&入&&&&&&&&&:&无*&输&&&&出&&&&&&&&&:&无*******************************************************************************/void&main(){ Ds1302Init(); while(1) {
Ds1302ReadTime();
DisplayData[0]&=&DIG_CODE[TIME[2]/16];
DisplayData[1]&=&DIG_CODE[TIME[2]&0x0f];
DisplayData[2]&=&0x40;
DisplayData[3]&=&DIG_CODE[TIME[1]/16];
DisplayData[4]&=&DIG_CODE[TIME[1]&0x0f];
DisplayData[5]&=&0x40;
DisplayData[6]&=&DIG_CODE[TIME[0]/16];
DisplayData[7]&=&DIG_CODE[TIME[0]&0x0f];
DigDisplay();
} }/********************************************************************************&函&数&名&&&&&&&&&:&DigDisplay*&函数功能
&&&:&使用数码管显示*&输&&&&入&&&&&&&&&:&无*&输&&&&出&&&&&&&&&:&无*******************************************************************************/void&DigDisplay(){ unsigned&char&i; unsigned&int&j; for(i=0;i&8;i++) {
switch(i) &//位选,选择点亮的数码管,
LSA=0;LSB=0;LSC=0;&//显示第0位
LSA=1;LSB=0;LSC=0;&//显示第1位
LSA=0;LSB=1;LSC=0;&//显示第2位
LSA=1;LSB=1;LSC=0;&//显示第3位
LSA=0;LSB=0;LSC=1;&//显示第4位
LSA=1;LSB=0;LSC=1;&//显示第5位
LSA=0;LSB=1;LSC=1;&//显示第6位
LSA=1;LSB=1;LSC=1;&//显示第7位
GPIO_DIG=DisplayData[i];//发送段码
&//扫描间隔时间设定
while(j--);
GPIO_DIG=0x00;//消隐 }}#include&ds1302.h&//---DS1302写入和读取时分秒的地址命令---////---秒分时日月周年&最低位读写位;-------//uchar&code&READ_RTC_ADDR[7]&=&{0x81,&0x83,&0x85,&0x87,&0x89,&0x8b,&0x8d};&uchar&code&WRITE_RTC_ADDR[7]&=&{0x80,&0x82,&0x84,&0x86,&0x88,&0x8a,&0x8c};//---DS1302时钟初始化日星期二12点00分00秒。---////---存储顺序是秒分时日月周年,存储格式是用BCD码---//uchar&TIME[7]&=&{0,&0,&0x12,&0x01,&0x01,&0x02,&0x13};/********************************************************************************&函&数&名&&&&&&&&&:&Ds1302Write*&函数功能
&&&:&向DS1302命令(地址+数据)*&输&&&&入&&&&&&&&&:&addr,dat*&输&&&&出&&&&&&&&&:&无*******************************************************************************/void&Ds1302Write(uchar&addr,&uchar&dat){ uchar&n; RST&=&0; _nop_(); SCLK&=&0;//先将SCLK置低电平。 _nop_(); RST&=&1;&//然后将RST(CE)置高电平。 _nop_(); for&(n=0;&n&8;&n++)//开始传送八位地址命令 {
DSIO&=&addr&&&0x01;//数据从低位开始传送
addr&&&=&1;
SCLK&=&1;//数据在上升沿时,DS1302读取数据
_nop_(); } for&(n=0;&n&8;&n++)//写入8位数据 {
DSIO&=&dat&&&0x01;
dat&&&=&1;
SCLK&=&1;//数据在上升沿时,DS1302读取数据
& RST&=&0;//传送数据结束 _nop_();}/********************************************************************************&函&数&名&&&&&&&&&:&Ds1302Read*&函数功能
&&&:&读取一个地址的数据*&输&&&&入&&&&&&&&&:&addr*&输&&&&出&&&&&&&&&:&dat*******************************************************************************/uchar&Ds1302Read(uchar&addr){ uchar&n,dat,dat1; RST&=&0; _nop_(); SCLK&=&0;//先将SCLK置低电平。 _nop_(); RST&=&1;//然后将RST(CE)置高电平。 _nop_(); for(n=0;&n&8;&n++)//开始传送八位地址命令 {
DSIO&=&addr&&&0x01;//数据从低位开始传送
addr&&&=&1;
SCLK&=&1;//数据在上升沿时,DS1302读取数据
SCLK&=&0;//DS1302下降沿时,放置数据
_nop_(); } _nop_(); for(n=0;&n&8;&n++)//读取8位数据 {
dat1&=&DSIO;//从最低位开始接收
dat&=&(dat&&1)&|&(dat1&&7);
SCLK&=&0;//DS1302下降沿时,放置数据
_nop_(); } RST&=&0; _nop_(); //以下为DS1302复位的稳定时间,必须的。 SCLK&=&1; _nop_(); DSIO&=&0; _nop_(); DSIO&=&1; _nop_(); return& }/********************************************************************************&函&数&名&&&&&&&&&:&Ds1302Init*&函数功能
&&&:&初始化DS1302.*&输&&&&入&&&&&&&&&:&无*&输&&&&出&&&&&&&&&:&无*******************************************************************************/void&Ds1302Init(){ uchar&n; Ds1302Write(0x8E,0X00);
&//禁止写保护,就是关闭写保护功能 for&(n=0;&n&7;&n++)//写入7个字节的时钟信号:分秒时日月周年 {
Ds1302Write(WRITE_RTC_ADDR[n],TIME[n]);
} Ds1302Write(0x8E,0x80);
&//打开写保护功能}/********************************************************************************&函&数&名&&&&&&&&&:&Ds1302ReadTime*&函数功能
&&&:&读取时钟信息*&输&&&&入&&&&&&&&&:&无*&输&&&&出&&&&&&&&&:&无*******************************************************************************/void&Ds1302ReadTime(){ uchar&n; for&(n=0;&n&7;&n++)//读取7个字节的时钟信号:分秒时日月周年 {
TIME[n]&=&Ds1302Read(READ_RTC_ADDR[n]); }
}#ifndef&__DS1302_H_#define&__DS1302_H_//---包含头文件---//#include&reg51.h&#include&intrins.h&//---重定义关键词---//#ifndef&uchar#define&uchar&unsigned&char#endif#ifndef&uint&#define&uint&unsigned&int#endif//---定义ds1302使用的IO口---//sbit&DSIO=P3^4;sbit&RST=P3^5;sbit&SCLK=P3^6;//---定义全局函数---//void&Ds1302Write(uchar&addr,&uchar&dat);uchar&Ds1302Read(uchar&addr);void&Ds1302Init();void&Ds1302ReadTime();//---加入全局变量--//extern&uchar&TIME[7]; //加入全局变量#endif
帮我充个百度云会员, 给你全部的资料, 加手把手, 加天祥的;不多20G;要STM32F1;STM32F4;STMF7;ARM9;ARM11;A20;都可以找我, 好几个T的资料, 哪 天我要用百度云再说
为您推荐:
其他类似问题
您可能关注的内容
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 单片机开发板原理图 的文章

 

随机推荐