原创 51 DS1302实时时钟 实验(十四)

2008-5-12 11:06 4182 8 9 分类: MCU/ 嵌入式

点击下载


这个实验利用DS1302做一个实时时钟.详情见附件


平台:FDR51 开发板


主代码:


#include <reg52.h>


#include "ds1302.h"
#include "key.h"


#define LEDPORT P0


/*-------------数码管显示函数--------------------
参数:number 要显示的数字
参数:pos    要显示的位置(从左到右为1--4)
返回值:无
------------------------------------------------*/
void display(unsigned char number,unsigned char pos)//数码管显示函数
{          
 unsigned char temp;    //临时变量
 if(number<10 && pos<5 && pos>0) //确定数据合法
 {  
  temp=(number<<4)&0xf0;  //获得要显示的数据
  temp+=1<<(pos-1);     //送位置位
  LEDPORT=temp;      ////送显示数据,开始显示
 }
}
void display_hour_and_minute(unsigned char count,unsigned char i)
{
 if(i==0)
 {
  if(count>=10)
  {
   display(count/10,1);
   delayms(1);
   display(count%10,2);
  }
  else  display(count%10,1);
 }
 else
 {
  if(count>=10)
  {
   display(count/10,3);
   delayms(1);
   display(count%10,4);
  }
  else  display(count%10,4);
 }
 delayms(1);
}
void display_year_and_weak(unsigned char count,unsigned char i)
{
 if(i==0)
 {
  display(2,1);
  delayms(1);
  display(0,2);
  delayms(1);
  display(count/10,3);
  delayms(1);
 }
 display(count%10,4);
 delayms(1);
}
void main()
{
 unsigned int j="2000";
 write_1302_time(times);
 KEY=1;
 while(1)
 {
  read_1302_time(times);
  keyread();
  while(KEY==1 && j--)     //显示分秒
  {
   display_hour_and_minute(times[0],1);
   display_hour_and_minute(times[1],0);
  }
  while(KEY==2 && j--)     //显示星期和小时
  {
   display_hour_and_minute(times[2],1);
   display_hour_and_minute(times[5],0);
  }
  while(KEY==3 && j--)     //显示月和日
  {
   display_hour_and_minute(times[3],1);
   display_hour_and_minute(times[4],0);
  }
  while(KEY==4 && j--)     //显示年号
  {
  display_year_and_weak(times[6],0);
  delayms(1);
  }
  j=50;
 }
}

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户183085 2009-5-19 10:29

谢谢分享!
相关推荐阅读
正点原子 2013-05-17 23:47
【连载】【ALIENTEK 战舰STM32开发板】STM32开发指南--第六十一章 战舰STM32开发板综合实验(标准例程终结篇)
   第六十一章 战舰STM32开发板综合实验        前面已经给大家讲了55个实例了,本章将设计一个综合实例,作为本指南的最后一个实验 ,该实验向大家展示了STM...
正点原子 2013-05-03 23:02
【连载】【ALIENTEK 战舰STM32开发板】STM32开发指南--第六十章 UCOSII实验3-消息队列、信号量集和软件定时器
   第六十章 UCOSII实验3-消息队列、信号量集和软件定时器   上一章,我们学习了UCOSII的信号量和邮箱的使用,本章,我们将学习消息队列、信号量集和软件定时器...
正点原子 2013-05-03 20:42
【连载】【ALIENTEK 战舰STM32开发板】STM32开发指南--第五十七章 ENC28J60网络实验
第五十七章 ENC28J60网络实验   本章,我们将向大家介绍ALIENTEK ENC28J60网络模块及其使用。本章,我们将使用ALIENTEK ENC28J60网络模块...
正点原子 2013-05-01 23:00
【连载】【ALIENTEK 战舰STM32开发板】STM32开发指南--第五十九章 UCOSII实验2-信号量和邮箱
第五十九章 UCOSII实验2-信号量和邮箱      上一章,我们学习了如何使用UCOSII,学习了UCOSII的任务调度,但是并没有用到任务间的同步与通信,本章我们将学习两个最基本的...
正点原子 2013-04-30 10:55
【连载】【ALIENTEK 战舰STM32开发板】STM32开发指南--第五十八章 UCOSII实验1-任务调度
  第五十八章 UCOSII实验1-任务调度      前面我们所有的例程都是跑的裸机程序(裸奔),从本章开始,我们将分3个章节向大家介绍UCOSII(实时多任务操作系...
正点原子 2013-04-26 23:16
【连载】【ALIENTEK 战舰STM32开发板】STM32开发指南--第五十七章 ENC28J60网络实验
 第五十七章 ENC28J60网络实验  本章,我们将向大家介绍ALIENTEK ENC28J60网络模块及其使用。本章,我们将使用ALIENTEK ENC28J60网络模块和uIP 1...
EE直播间
更多
我要评论
1
8
关闭 站长推荐上一条 /3 下一条