ds1302可调时钟没法在oled上显示
只显示时钟就能显示,吧调节时间的程序加上去过后就没法正常运行了,请各位大佬帮我看看#include <REGX52.H>#include "OLED.h"
#include "DS1302.h"
#include "Key.h"
#include "Timer0.h"
#include "Delay.H"
#define uchar unsigned char
#define uint unsigned int
unsigned char KeyNum,SHOW_MODE,TimeSetFlashFlag;
char TimeSetSelect;
void TimeShow(void)
{
DS1302_ReadTime();
OLED_ShowNum(0,3,DS1302_Time/10,1,8);
OLED_ShowNum(7,3,DS1302_Time%10,1,8);
OLED_ShowString(15,3,"-",8);
OLED_ShowNum(22,3,DS1302_Time/10,1,8);
OLED_ShowNum(29,3,DS1302_Time%10,1,8);
OLED_ShowString(35,3,"-",8);
OLED_ShowNum(42,3,DS1302_Time/10,1,8);
OLED_ShowNum(49,3,DS1302_Time%10,1,8);
OLED_ShowNum(0,4,DS1302_Time/10,1,8);
OLED_ShowNum(7,4,DS1302_Time%10,1,8);
OLED_ShowString(15,4,":",8);
OLED_ShowNum(22,4,DS1302_Time/10,1,8);
OLED_ShowNum(29,4,DS1302_Time%10,1,8);
OLED_ShowString(35,4,":",8);
OLED_ShowNum(42,4,DS1302_Time/10,1,8);
OLED_ShowNum(49,4,DS1302_Time%10,1,8);
}
void TimeSet(void)
{
if(KeyNum==2){TimeSetSelect++;if(TimeSetSelect>5){TimeSetSelect=0;}}
if(KeyNum==3){TimeSetSelect--;if(TimeSetSelect<0){TimeSetSelect=5;}}
if(KeyNum==4)
{
DS1302_Time++;
if(DS1302_Time>99){DS1302_Time=0;}
if(DS1302_Time>12){DS1302_Time=1;}
if( DS1302_Time==1 || DS1302_Time==3 || DS1302_Time==5 || DS1302_Time==7 ||
DS1302_Time==8 || DS1302_Time==10 || DS1302_Time==12)
{
if(DS1302_Time>31){DS1302_Time=1;}
}
else if(DS1302_Time==4 || DS1302_Time==6 || DS1302_Time==9 || DS1302_Time==11)
{
if(DS1302_Time>30){DS1302_Time=1;}
}
else if(DS1302_Time==2)
{
if(DS1302_Time%4==0)
{
if(DS1302_Time>29){DS1302_Time=1;}
}
else
{
if(DS1302_Time>28){DS1302_Time=1;}
}
}
if(DS1302_Time>23){DS1302_Time=0;}
if(DS1302_Time>59){DS1302_Time=0;}
if(DS1302_Time>59){DS1302_Time=0;}
}
if(KeyNum==5)
{
DS1302_Time--;
if(DS1302_Time<0){DS1302_Time=99;}
if(DS1302_Time<1){DS1302_Time=12;}
if( DS1302_Time==1 || DS1302_Time==3 || DS1302_Time==5 || DS1302_Time==7 ||
DS1302_Time==8 || DS1302_Time==10 || DS1302_Time==12)
{
if(DS1302_Time<1){DS1302_Time=31;}
if(DS1302_Time>31){DS1302_Time=1;}
}
else if(DS1302_Time==4 || DS1302_Time==6 || DS1302_Time==9 || DS1302_Time==11)
{
if(DS1302_Time<1){DS1302_Time=30;}
if(DS1302_Time>30){DS1302_Time=1;}
}
else if(DS1302_Time==2)
{
if(DS1302_Time%4==0)
{
if(DS1302_Time<1){DS1302_Time=29;}
if(DS1302_Time>29){DS1302_Time=1;}
}
else
{
if(DS1302_Time<1){DS1302_Time=28;}
if(DS1302_Time>28){DS1302_Time=1;}
}
}
if(DS1302_Time<0){DS1302_Time=23;}
if(DS1302_Time<0){DS1302_Time=59;}
if(DS1302_Time<0){DS1302_Time=59;}
}
if(TimeSetSelect==0 && TimeSetFlashFlag==1){OLED_ShowString(0,3,"",8);}
else {OLED_ShowNum(0,3,DS1302_Time/10,1,8);OLED_ShowNum(7,3,DS1302_Time%10,1,8);}
if(TimeSetSelect==1 && TimeSetFlashFlag==1){OLED_ShowString(22,3,"",8);}
else {OLED_ShowNum(22,3,DS1302_Time/10,1,8);OLED_ShowNum(29,3,DS1302_Time%10,1,8);}
if(TimeSetSelect==2 && TimeSetFlashFlag==1){OLED_ShowString(42,3,"",8);}
else {OLED_ShowNum(42,3,DS1302_Time/10,1,8);OLED_ShowNum(49,3,DS1302_Time%10,1,8);}
if(TimeSetSelect==3 && TimeSetFlashFlag==1){OLED_ShowString(0,4,"",8);}
else {OLED_ShowNum(0,4,DS1302_Time/10,1,8);OLED_ShowNum(7,4,DS1302_Time%10,1,8);}
if(TimeSetSelect==4 && TimeSetFlashFlag==1){OLED_ShowString(22,4,"",8);}
else {OLED_ShowNum(22,4,DS1302_Time/10,1,8);OLED_ShowNum(29,4,DS1302_Time%10,1,8);}
if(TimeSetSelect==5 && TimeSetFlashFlag==1){OLED_ShowString(42,4,"",8);}
else {OLED_ShowNum(42,4,DS1302_Time/10,1,8);OLED_ShowNum(49,4,DS1302_Time%10,1,8);}
}
void main()
{
OLED_Init();
OLED_Clear();
DS1302_Init();
Timer0_Init();
DS1302_SetTime();//设置时间
while(1)
{
KeyNum=Key_shi();
if(KeyNum==1)
{
if(SHOW_MODE==0){SHOW_MODE=1;TimeSetSelect=0;}
else if(SHOW_MODE==1){SHOW_MODE=0;DS1302_SetTime();}
}
switch(SHOW_MODE)
{
case 0:TimeShow();break;
case 1:TimeSet();break;
}
}
}
void Timer0_Routine() interrupt 1
{
static unsigned int T0Count;
TL0 = 0x66;
TH0 = 0xFC;
T0Count++;
if(T0Count>=500)
{
T0Count=0;
TimeSetFlashFlag=!TimeSetFlashFlag;
}
}
你先把问题分开:
1, 先搞定 OLED12864显示;
2, 再搞定 DS1302这个 RTC.
OLED12864, 我们给你 老刘爱捣鼓的演示程序,就是OLED12864
RTC, 你用STC8H8K64U实验箱的 RTC演示程序就可以省掉 外部的 RTC
这是 经典的 【老刘爱捣鼓示波器】 + 【三角波,正玄波,方波,波形发声器】
https://www.stcaimcu.com/data/attachment/forum/202304/01/183531i85hz7685wk67kh6.png
https://www.stcaimcu.com/data/attachment/forum/202304/01/183531z5xgqezd5luhef56.png
第25个程序是【老刘爱捣鼓示波器】 + 【三角波,正玄波,方波,波形发声器】
第26个程序是:
【科学计算器】 + 【虚拟OLED12864显示,虚拟键盘,USB不停电下载,USB-CDC/就是最简单最强大的串口】
===做菜单,做汉字字模
第24个程序是【强大的STC-老梁开源示波器简化版】 + 【波形发声器】
“吧调节时间的程序加上去过后就没法正常运行了”
请详细描述下不能正常运行的现象,操作步骤等越详细越好
页:
[1]