找回密码
 立即注册
查看: 2074|回复: 2

ds1302可调时钟没法在oled上显示

[复制链接]

该用户从未签到

1

主题

0

回帖

5

积分

新手上路

积分
5
发表于 2023-4-1 18:19:52 | 显示全部楼层 |阅读模式
10-1 DS1302时钟.zip (107.83 KB, 下载次数: 44) 只显示时钟就能显示,吧调节时间的程序加上去过后就没法正常运行了,请各位大佬帮我看看
  1. #include <REGX52.H>
  2. #include "OLED.h"
  3. #include "DS1302.h"
  4. #include "Key.h"
  5. #include "Timer0.h"
  6. #include "Delay.H"
  7. #define uchar unsigned char   
  8. #define uint unsigned int
  9. unsigned char KeyNum,SHOW_MODE,TimeSetFlashFlag;
  10. char TimeSetSelect;
  11. void TimeShow(void)
  12. {
  13.         DS1302_ReadTime();
  14.         OLED_ShowNum(0,3,DS1302_Time[0]/10,1,8);        
  15.         OLED_ShowNum(7,3,DS1302_Time[0]%10,1,8);        
  16.         OLED_ShowString(15,3,"-",8);               
  17.         OLED_ShowNum(22,3,DS1302_Time[1]/10,1,8);        
  18.         OLED_ShowNum(29,3,DS1302_Time[1]%10,1,8);
  19.         OLED_ShowString(35,3,"-",8);
  20.         OLED_ShowNum(42,3,DS1302_Time[2]/10,1,8);
  21.         OLED_ShowNum(49,3,DS1302_Time[2]%10,1,8);
  22.         OLED_ShowNum(0,4,DS1302_Time[3]/10,1,8);
  23.         OLED_ShowNum(7,4,DS1302_Time[3]%10,1,8);
  24.         OLED_ShowString(15,4,":",8);
  25.         OLED_ShowNum(22,4,DS1302_Time[4]/10,1,8);
  26.         OLED_ShowNum(29,4,DS1302_Time[4]%10,1,8);
  27.         OLED_ShowString(35,4,":",8);
  28.         OLED_ShowNum(42,4,DS1302_Time[5]/10,1,8);
  29.         OLED_ShowNum(49,4,DS1302_Time[5]%10,1,8);
  30. }
  31. void TimeSet(void)
  32. {
  33.         if(KeyNum==2){TimeSetSelect++;if(TimeSetSelect>5){TimeSetSelect=0;}}
  34.         if(KeyNum==3){TimeSetSelect--;if(TimeSetSelect<0){TimeSetSelect=5;}}        
  35.         
  36.         if(KeyNum==4)
  37.         {
  38.                 DS1302_Time[TimeSetSelect]++;
  39.                 if(DS1302_Time[0]>99){DS1302_Time[0]=0;}
  40.                 if(DS1302_Time[1]>12){DS1302_Time[1]=1;}
  41.                 if( DS1302_Time[1]==1 || DS1302_Time[1]==3 || DS1302_Time[1]==5 || DS1302_Time[1]==7 ||
  42.                         DS1302_Time[1]==8 || DS1302_Time[1]==10 || DS1302_Time[1]==12)
  43.                 {
  44.                         if(DS1302_Time[2]>31){DS1302_Time[2]=1;}
  45.                 }
  46.                 else if(DS1302_Time[1]==4 || DS1302_Time[1]==6 || DS1302_Time[1]==9 || DS1302_Time[1]==11)
  47.                 {
  48.                         if(DS1302_Time[2]>30){DS1302_Time[2]=1;}
  49.                 }
  50.                 else if(DS1302_Time[1]==2)
  51.                 {
  52.                         if(DS1302_Time[0]%4==0)
  53.                         {
  54.                                 if(DS1302_Time[2]>29){DS1302_Time[2]=1;}
  55.                         }
  56.                         else
  57.                         {
  58.                                 if(DS1302_Time[2]>28){DS1302_Time[2]=1;}
  59.                         }
  60.                 }
  61.                 if(DS1302_Time[3]>23){DS1302_Time[3]=0;}
  62.                 if(DS1302_Time[4]>59){DS1302_Time[4]=0;}
  63.                 if(DS1302_Time[5]>59){DS1302_Time[5]=0;}
  64.         }
  65.         if(KeyNum==5)
  66.         {
  67.                 DS1302_Time[TimeSetSelect]--;
  68.                 if(DS1302_Time[0]<0){DS1302_Time[0]=99;}
  69.                 if(DS1302_Time[1]<1){DS1302_Time[1]=12;}
  70.                 if( DS1302_Time[1]==1 || DS1302_Time[1]==3 || DS1302_Time[1]==5 || DS1302_Time[1]==7 ||
  71.                         DS1302_Time[1]==8 || DS1302_Time[1]==10 || DS1302_Time[1]==12)
  72.                 {
  73.                         if(DS1302_Time[2]<1){DS1302_Time[2]=31;}
  74.                         if(DS1302_Time[2]>31){DS1302_Time[2]=1;}
  75.                 }
  76.                 else if(DS1302_Time[1]==4 || DS1302_Time[1]==6 || DS1302_Time[1]==9 || DS1302_Time[1]==11)
  77.                 {
  78.                         if(DS1302_Time[2]<1){DS1302_Time[2]=30;}
  79.                         if(DS1302_Time[2]>30){DS1302_Time[2]=1;}
  80.                 }
  81.                 else if(DS1302_Time[1]==2)
  82.                 {
  83.                         if(DS1302_Time[0]%4==0)
  84.                         {
  85.                                 if(DS1302_Time[2]<1){DS1302_Time[2]=29;}
  86.                                 if(DS1302_Time[2]>29){DS1302_Time[2]=1;}
  87.                         }
  88.                         else
  89.                         {
  90.                                 if(DS1302_Time[2]<1){DS1302_Time[2]=28;}
  91.                                 if(DS1302_Time[2]>28){DS1302_Time[2]=1;}
  92.                         }
  93.                 }
  94.                 if(DS1302_Time[3]<0){DS1302_Time[3]=23;}
  95.                 if(DS1302_Time[4]<0){DS1302_Time[4]=59;}
  96.                 if(DS1302_Time[5]<0){DS1302_Time[5]=59;}
  97.         }
  98.         if(TimeSetSelect==0 && TimeSetFlashFlag==1){OLED_ShowString(0,3,"  ",8);}
  99.         else {OLED_ShowNum(0,3,DS1302_Time[0]/10,1,8);OLED_ShowNum(7,3,DS1302_Time[0]%10,1,8);}
  100.         if(TimeSetSelect==1 && TimeSetFlashFlag==1){OLED_ShowString(22,3,"  ",8);}
  101.         else {OLED_ShowNum(22,3,DS1302_Time[1]/10,1,8);OLED_ShowNum(29,3,DS1302_Time[1]%10,1,8);}
  102.         if(TimeSetSelect==2 && TimeSetFlashFlag==1){OLED_ShowString(42,3,"  ",8);}
  103.         else {OLED_ShowNum(42,3,DS1302_Time[2]/10,1,8);OLED_ShowNum(49,3,DS1302_Time[2]%10,1,8);}
  104.         if(TimeSetSelect==3 && TimeSetFlashFlag==1){OLED_ShowString(0,4,"  ",8);}
  105.         else {OLED_ShowNum(0,4,DS1302_Time[3]/10,1,8);OLED_ShowNum(7,4,DS1302_Time[3]%10,1,8);}
  106.         if(TimeSetSelect==4 && TimeSetFlashFlag==1){OLED_ShowString(22,4,"  ",8);}
  107.         else {OLED_ShowNum(22,4,DS1302_Time[4]/10,1,8);OLED_ShowNum(29,4,DS1302_Time[4]%10,1,8);}
  108.         if(TimeSetSelect==5 && TimeSetFlashFlag==1){OLED_ShowString(42,4,"  ",8);}
  109.         else {OLED_ShowNum(42,4,DS1302_Time[5]/10,1,8);OLED_ShowNum(49,4,DS1302_Time[5]%10,1,8);}
  110. }
  111. void main()
  112. {
  113.         OLED_Init();
  114.         OLED_Clear();
  115.         DS1302_Init();
  116.     Timer0_Init();
  117.         
  118.         DS1302_SetTime();//设置时间
  119.         
  120.         while(1)
  121.         {
  122.                 KeyNum=Key_shi();
  123.                 if(KeyNum==1)
  124.                 {
  125.                         if(SHOW_MODE==0){SHOW_MODE=1;TimeSetSelect=0;}
  126.                         else if(SHOW_MODE==1){SHOW_MODE=0;DS1302_SetTime();}
  127.                 }
  128.                 switch(SHOW_MODE)
  129.                 {
  130.                         case 0:TimeShow();break;
  131.                         case 1:TimeSet();break;
  132.                 }                                
  133.         }
  134. }
  135. void Timer0_Routine() interrupt 1
  136. {
  137.         static unsigned int T0Count;
  138.         TL0 = 0x66;               
  139.         TH0 = 0xFC;               
  140.         T0Count++;
  141.         if(T0Count>=500)
  142.         {
  143.                 T0Count=0;
  144.                 TimeSetFlashFlag=!TimeSetFlashFlag;
  145.         }
  146. }
复制代码


回复 送花

使用道具 举报

该用户从未签到

557

主题

9729

回帖

1万

积分

管理员

积分
14220
发表于 2023-4-1 19:06:55 | 显示全部楼层
你先把问题分开:
1, 先搞定 OLED12864显示;
2, 再搞定 DS1302这个 RTC.

OLED12864, 我们给你 老刘爱捣鼓的演示程序,就是OLED12864
RTC, 你用STC8H8K64U实验箱的 RTC演示程序就可以省掉 外部的 RTC

这是 经典的 【老刘爱捣鼓示波器】 + 【三角波,正玄波,方波,波形发声器】



第25个程序是  【老刘爱捣鼓示波器】 + 【三角波,正玄波,方波,波形发声器】
第26个程序是:
【科学计算器】 + 【虚拟OLED12864显示,虚拟键盘,USB不停电下载,USB-CDC/就是最简单最强大的串口】
===做菜单,做汉字字模
第24个程序是  【强大的STC-老梁开源示波器简化版】 + 【波形发声器】

回复 支持 反对 送花

使用道具 举报

  • TA的每日心情
    开心
    4 天前
  • 签到天数: 107 天

    [LV.6]常住居民II

    42

    主题

    1028

    回帖

    7100

    积分

    荣誉版主

    冲哥视频教程和各种开源资料QQ交流群884047237,可群

    积分
    7100
    QQ
    发表于 2023-4-17 10:03:41 | 显示全部楼层
    “吧调节时间的程序加上去过后就没法正常运行了”
    请详细描述下不能正常运行的现象,操作步骤等越详细越好
    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-6-3 11:00 , Processed in 0.060012 second(s), 40 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表