1.建立工程模板
2.编写所需的底层文件
3.定义数码管显示模式变量
·将三个显示界面放到0-2 三个设置界面放到3-5
4.编写时钟显示界面
1)定义时钟数据数组
·数组的数据以BCD码形式储存 不建议以十进制储存
2)上电初始化DS1302芯片
3)实时读取DS1302数据 并显示在数码管上
5.编写闹钟显示界面
1)定义闹钟数据变量
方法一:
·建议以BCD码形式定义
·删除数据以0xbb储存 0xbb/16 = 0xbb%16 = 11 -> “-”
方法二:
2)定义闹钟编号变量
3)显示闹钟数据
方法一:
仿真显示(好慢啊这玩意儿
简化版
方法二:一维数组显示闹钟
6.日期显示界面
1)补充日期相关底层
隔开了就不能用for循环了
2)定义日期数据数组
3)上电初始化日期
4)实时读取日期数据
5)显示日期数据在数码管上
仿真显示
7.编写界面切换按键
界面切换按键,“时钟-闹钟-日期”循环切换【显示模式】 不需要保存啥的莫
PS:蓝桥杯板子的按键是4 而仿真上是3!!
显示over!!
8.编写设置界面
1)定义设置数组
·简化程序变量繁多的问题
2)显示设置数组
9.编写参数设置按键
参数设置按键,跳转到当前【显示参数】的【设置模式】
·memcpy(目标数组,数据数组,数据长度) -> <string.h>
·指针数组优化程序
才可以跳过去
10.设置界面完善
1)定义计时变量、闪烁标志位变量
2)编写中断代码 取反!!
3)定义闪烁判断位
4)编写数码管代码
11.数据输入
1)定义标志位
2)编写按键代码
12.数据保存
1)数据合理性的判
Set_Dat[0]
直接引用了数组的第一个元素,其类型为unsigned char
。这意味着它是一个值,而非一个地址。&Set_Dat[0]
是获取Set_Dat
数组第一个元素的地址(或简单地使用Set_Dat
,其类型为unsigned char*
,即指向unsigned char
的指针。
case 15:/*参数设置按键,跳转到当前【显示参数】的【设置模式】*/
if(Seg_Mode < 3)//在非设置界面 而在显示界面
{
Seg_Mode +=3;//切换到对应设置界面
Alarm_Index = 0;//开始设置 对应的设置数组的指针要复位
Input_Index=Input_Flag=0;
// switch(Seg_Mode)
// {
// case 3://切换到 时钟设置界面
// memcpy(Set_Dat,ucRtc,9);
// break;
// case 6://切换到 闹钟设置界面
// memcpy(Set_Dat,ucAlarm,9);
// break;
// case 9://切换到 日期设置界面
// memcpy(Set_Dat,ucDate,9);
// break;
// }
//把实际值赋值给设置值
memcpy(Set_Dat,Set_Flag[Seg_Mode-3],9);//3 6 9--> 0 1 2
}
else//在参数设置界面下
{
if(Input_Index >= 3)//只有输入完三次数据后才能使能保存按键
{
if(Seg_Mode==4)
{
if(Dat_Judgment(&Set_Dat[0],Seg_Mode - 3) && Dat_Judgment(&Set_Dat[3],Seg_Mode - 3),Dat_Judgment(&Set_Dat[6],Seg_Mode - 3))
result = 1;
}
else if(Seg_Mode == 3 || Seg_Mode == 5)
{
if(Dat_Judgment(&Set_Dat[0],Seg_Mode - 3))
result = 1;
else
result = 0;
}
if(result == 1)//有效
{
// if(Dat_Judgment(&Set_Dat[0],Seg_Mode-3) && Dat_Judgment(&Set_Dat[3],Seg_Mode-3) && Dat_Judgment(&Set_Dat[6],Seg_Mode-3))
// {
switch(Seg_Mode)
{
case 3://时钟
Set_Rtc(Set_Dat);
break;
case 4://闹钟
memcpy(ucAlarm,Set_Dat,9);
break;
case 5://日期
Set_Date(Set_Dat);
break;
}
Seg_Mode -= 3;//跳转回显示界面
}
else//无效
{
memcpy(Set_Dat,Set_Flag[Seg_Mode - 3],9);
Input_Index = Input_Flag =0;
}
}
}
break;
Seg_Disp_Mode -= 3;//跳转回数据显示界面
13.闹钟删除按键
14.闹钟切换按键
15.设置退出按键 (退出设置界面时,设置的指针清零
16.闹钟功能按键
1)定义使能标志位
2)编写按键代码
17.Led显示
1)L1
1.定义标志位
2.判断闹钟使能条件
可能是没删干净,if后面加了个;......