久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6438|回復: 5
打印 上一主題 下一主題
收起左側

求助ds1302電子時鐘程序困擾

[復制鏈接]
跳轉到指定樓層
樓主
ID:33455 發表于 2011-11-21 13:14 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

自己弄了個四位共陰數碼管顯示電子時鐘帶按鍵帶鬧鈴 現在想另加個1302芯片讓掉電后時鐘繼續走 望高人幫幫我怎么在程序里面實現 謝謝 我把我的源程序貼上望高人指點 在此謝過

 

//鬧鈴功能說明:
//按下KEY之后 進入設置鬧鈴模式  小數點不閃爍
//設置完鬧鈴時間后 再按一下KEY 繼續顯示時鐘
//時鐘到達設置時間后 P1^0變為高電平 持續一秒鐘

#include <at89x51.h>          //頭文件包含 
                    
#define uchar unsigned char       //宏定義 
#define uint  unsigned int 
#define ON  0              //定義0為打開 
#define OFF 1              //定義1為關閉 
#define LEDBus P2            //定義p2口為數碼管段碼口 
sbit MIAO =P1^7;             //秒點 ,數碼管第二位小數點,可以自己隨意定義. 
sbit HOU_S=P3^3;            //時十位位選 
sbit HOU_G=P3^2;            //時個位位選 
sbit MIN_S=P3^1;            //分十位位選 
sbit MIN_G=P3^0;            //分個位位選 
sbit ALA=P1^0;              //鬧鈴蜂鳴
sbit KEY  =P0^0;            //鬧鈴設置按鍵
sbit H_KEY=P0^5;            //時調整鍵 
sbit M_KEY=P0^4;            //分調整鍵 
bit  SHAN;               //閃爍標志位 
uchar second,minute,hour,m,h,flag;        //定義秒、分、時寄存器 
uchar code LEDTab[]={0x3f,0x06,0x5b,  //共陰數碼管段碼表0--9碼 
0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; 
void delay(uchar t);          //延時函數 
void init();              //初始化函數 
void display(uchar,uchar);             //顯示函數 
void min_tiao();            //分調整函數 
void hou_tiao();            //時調整函數 
void alarm_tiao();
/*************************************** 
函 數 名:main 
功    能:主函數 
說    明: 
入口參數:無 
返 回 值:無 
****************************************/ 
void main() 
{ 
 init();                //調用初始化函數 
 while(1)               //主程序循環 
 { 
  if(!H_KEY) hou_tiao();       //如果時調整鍵按下(為0),調用時調整函數 
  if(!M_KEY) min_tiao();       //如果分調整鍵按下(為0),調用分調整函數 
  if(!KEY)  
  {
   while(!KEY);
   alarm_tiao();
  }
  if((m==minute)&&(h==hour)==1) ALA=1;
  else ALA=0;
  display(minute,hour);             //調用顯示函數 
 } 
} 
/*************************************** 
函 數 名:init 
功    能:初始化函數 
說    明:初始化定時器及中斷 
入口參數:無 
返 回 值:無 
***************************************/ 
void init() 
{ 
 TMOD=1;TH0=0X3C;TL0=0XB0;       //定時器0模式1,50毫秒 
 ET0=1;TR0=1;EA=1;           //開定時器0中斷、啟動定時器0、開總中斷 
 m=0;h=0;flag=0;
} 
/*************************************** 
函 數 名:display 
功    能:顯示函數 
說    明: 
入口參數:無 
返 回 值:無 
***************************************/ 
void display(uchar minute,uchar hour) 
{ 
 LEDBus=LEDTab[minute%10];       //分個位送數碼管顯示 
 MIN_G=ON;               //打開分個位位選 
 delay(1);               //顯示1毫秒 
 MIN_G=OFF;              //關閉分個位位選 
 LEDBus=LEDTab[minute/10];       //分十位送數碼管顯示 
 MIN_S=ON;               //打開分十位位選 
 delay(1);               //顯示1毫秒 
 MIN_S=OFF;              //關閉分十位位選 
 LEDBus=LEDTab[hour%10];        //時個位送數碼管顯示 
 MIAO=SHAN;              //秒點閃爍 
 HOU_G=ON;               //打開時個位位選 
 delay(1);               //顯示1毫秒 
 HOU_G=OFF;              //關閉時個位位選 
 if(hour/10)              //如果時十位為0,不顯示十位數字 
 { 
  LEDBus=LEDTab[hour/10];       //時十位送數碼管顯示 
  HOU_S=ON;              //打開時十位位選 
  delay(1);              //顯示1毫秒 
  HOU_S=OFF;             //關閉時十位位選 
 } 
} 
/*************************************** 
函 數 名:min_tiao 
功    能:分調整 
說    明: 
入口參數:無 
返 回 值:無 
***************************************/ 
void min_tiao() 
{ 
 while(!M_KEY) display(minute,hour);       //等待分調整鍵松開 
 second=0;minute++;          //秒清零、分加1 
 if(minute==60) minute=0;       //如果分等于60,分變0 
} 
/*************************************** 
函 數 名:hou_tiao 
功    能:時調整 
說    明: 
入口參數:無 
返 回 值:無 
***************************************/ 
void hou_tiao() 
{ 
 while(!H_KEY) display(minute,hour) ;       //等待時調整鍵松開 
 second=0;hour++;           //秒清零,時加1 
 if(hour==24) hour=0;         //如果時等于24,時變0 
} 
/*************************************** 
函 數 名:delay 
功    能:延時函數 
說    明: 
入口參數:t:延時時間長短 
返 回 值:無 
***************************************/ 

void alarm_tiao()
{
 flag=1;
 while(flag)
 {
   if(!H_KEY)
   {
   while(!H_KEY) display(m,h) ;
   h++;
   if(h==24) h=0;
   }
   if(!M_KEY)  
   {
   while(!M_KEY) display(m,h);
   m++;
   if(m==60) m=0;
   }
   if(!KEY) flag=0;
  display(m,h);
 }
 while(!KEY);
}


void delay(uchar t) 
{ 
 uchar i;               //定義變量 
 for(;t>0;t--)             //如果t大于0,t減1(外層循環) 
  for(i=124;i>0;i--);         //i等于124,如果i大于0,i減1 
} 

/*************************************** 
函 數 名:timer0 
功    能:定時器0中斷函數 
說    明: 
入口參數:無 
返 回 值:無 
***************************************/ 
void timer0() interrupt 1        //定時器0(中斷1) 
{ 
 uchar tim1,tim2;           //定義臨時變量 
 TL0=TL0+0XB0;TH0=0X3C;        //重裝定時器初值 
 tim1++;                //每中斷一次tim1加1 
 if(tim1==10)             //中斷10(0.5秒) 
 { 
  if(!flag)
  {              
  SHAN=!SHAN;             //閃爍標志取反 
  }
  tim1=0;tim2++;           //tim1清零,tim2加1 
  if(tim2==2)             //到了1秒 
  { 
   tim2=0;second++;         //tim2清零,秒加1 
   if(second==60)          //如果秒到60 
   {                 
    second=0;minute++;       //秒變0,分加1 
    if(minute==60)         //如果分到60 
    { 
     minute=0;hour++;       //分變0,時加1 
     if(hour==24) hour=0;     //如果時到24,時變0 
    } 
   } 
  } 
 } 
} 
/*************************************** 
program end               程序結束 
***************************************/ 
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:27916 發表于 2011-11-21 13:28 | 只看該作者

做一個1302的讀寫函數,上電 后就從1302里讀出時間來,放到LED上顯示,有按鍵調準時間的時候就對1302寫一次新的時間進去

回復

使用道具 舉報

板凳
ID:33455 發表于 2011-11-21 15:25 | 只看該作者

嘿嘿 我不會寫不知道怎么弄 謝謝

回復

使用道具 舉報

地板
ID:33975 發表于 2012-2-1 21:23 | 只看該作者
找個ds1302的數據手冊,按照時序圖一步步寫就是,很簡單的
回復

使用道具 舉報

5#
ID:41214 發表于 2012-6-2 01:12 | 只看該作者
嗯 了解 手冊我有  就是一個邏輯錯誤 找不出來  顯示時鐘 日歷都很正常  就是交替顯示 時間不是我設定的10秒
回復

使用道具 舉報

6#
ID:41214 發表于 2012-6-2 01:13 | 只看該作者
 說錯了 我設定的是10秒  但 就是這個時間的問題    感覺是switch語句的問題
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲第一av| 一二三四在线视频观看社区 | 视频在线亚洲 | 欧美成人精品激情在线观看 | 在线看成人av | 久久国产精品视频 | 免费a网站 | 99综合| 久久久久久久一区 | 天天艹 | 黑人一级片视频 | 久久99国产精品 | 一级aaaa毛片 | 久热精品在线观看视频 | 亚洲码欧美码一区二区三区 | 国产丝袜人妖cd露出 | 欧美a级成人淫片免费看 | 鲁大师一区影视 | 中文字幕日韩欧美一区二区三区 | 免费看大片bbbb欧美 | 欧美精品一区三区 | 亚洲免费视频网址 | 国产乱码精品一区二区三区中文 | 蜜桃av人人夜夜澡人人爽 | 久久久精品一区 | 精品一区二区三区四区五区 | 久久精品视频网站 | 伊人网站视频 | 久久国产精品视频 | 在线a视频网站 | 欧美炮房 | 免费99精品国产自在在线 | 午夜影视在线观看 | 日韩和的一区二在线 | 精品免费国产视频 | 欧美一级二级三级视频 | 天堂素人约啪 | 91大神在线资源观看无广告 | 久久av一区二区三区 | 日韩av最新网址 | 精品欧美一区二区精品久久久 |