📄 st7920serial.c
字号:
LCD_Write_number(e);
}
if(flag == 0)
LCD_Write_number(11);//显示:
else
LCD_Write_number(10);
if(sec==1) //秒闪烁标志位
{
if(flag==1)
{
d=read_clock(0x81);//读秒
e=d;
d=d>>4;
e=e&0x0f;
LCD_Write_number(d);//送显示
LCD_Write_number(e);
}
else
{
LCD_Write_number(10); //显示数字空格
LCD_Write_number(10);
}
}
else
{
d=read_clock(0x81);//读秒
e=d;
d=d>>4;
e=e&0x0f;
LCD_Write_number(d);
LCD_Write_number(e);
}
if(year==1) //年闪烁标志位
{
if(flag==1)
{
d=read_clock(0x8d);//读年
e=d;
d=d>>4;
e=e&0x0f;
LCD_set_xy(2,2);
LCD_Write_number(d);
LCD_Write_number(e);
}
else
{
LCD_set_xy(2,2);
LCD_Write_number(10); //显示空格
LCD_Write_number(10);
}
}
else
{
d=read_clock(0x8d);//读年
e=d;
d=d>>4;
e=e&0x0f;
LCD_set_xy(2,2);
LCD_Write_number(d);
LCD_Write_number(e);
}
if(mon==1) //月闪烁标志位
{
if(flag==1)
{
d=read_clock(0x89);//读月
e=d;
d=d>>4;
e=e&0x0f;
LCD_set_xy(2,4);
LCD_Write_number(d);
LCD_Write_number(e);
}
else
{
LCD_set_xy(2,4);
LCD_Write_number(10); //显示空格
LCD_Write_number(10);
}
}
else
{
d=read_clock(0x89);//读月
e=d;
d=d>>4;
e=e&0x0f;
LCD_set_xy(2,4);
LCD_Write_number(d);
LCD_Write_number(e);
}
if(day==1) //日闪烁标志位
{
if(flag==1)
{
d=read_clock(0x87);//读日
e=d;
d=d>>4;
e=e&0x0f;
LCD_set_xy(2,6);
LCD_Write_number(d);
LCD_Write_number(e);
}
else
{
LCD_set_xy(2,6);
LCD_Write_number(10); //显示空格
LCD_Write_number(10);
}
}
else
{
d=read_clock(0x87);//读日
e=d;
d=d>>4;
e=e&0x0f;
LCD_set_xy(2,6);
LCD_Write_number(d);
LCD_Write_number(e);
}
if(weekk==1) //星期闪烁标志位
{
if(flag==1)
{
d=read_clock(0x8b);//读星期
LCD_Write_week(d);
}
else
{
LCD_Write_week(8); //显示空格
}
}
else
{
d=read_clock(0x8b);//读星期
LCD_Write_week(d);
}
}
/******************************************************************************************
* 函数名称 :Disp2
* 功能描述 :显示和闪烁函数
* 参数 : 参数名称: 输入/输出? 类型 描述
*
* 返回值 :
* 作者 :
* 创建日期 :2006-12-19
* 全局变量 :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本 : 修改人: 修改日期:
* 修改说明 :
******************************************************************************************/
void Disp2(void)
{
if(Kgb==1) //开关闪烁标志位
{
if(flag==1)
{
if(Bell_Swh == 0)//0为关
{
LCD_Write_string(1,6,guan);//显示关
}
else
{
LCD_Write_string(1,6,kai);//显示开
}
}
else
{
LCD_Write_string(1,6,space_c); //显示空格
}
}
else
{
if(Bell_Swh == 0)//关
{
LCD_Write_string(1,6,guan);
}
else
{
LCD_Write_string(1,6,kai);
}
}
if(Hourb==1) //时闪烁标志位
{
if(flag==1)
{
d=read_clock(0xc3);//读闹钟小时的数值
e=d;
d=d>>4;
e=e&0x0f;
LCD_set_xy(3,3);
LCD_Write_number(d);
LCD_Write_number(e);
}
else
{
LCD_set_xy(3,3);
LCD_Write_number(10); //显示空格
LCD_Write_number(10);
}
}
else
{
d=read_clock(0xc3);//读闹钟小时的数值
e=d;
d=d>>4;
e=e&0x0f;
LCD_set_xy(3,3);
LCD_Write_number(d);
LCD_Write_number(e);
}
if(flag == 0)
LCD_Write_number(11);//显示:构成闪烁壮
else
LCD_Write_number(10);
if(Minb==1) //分钟闪烁标志位
{
if(flag==1)
{
d=read_clock(0xc5);//读闹钟分钟的数值
e=d;
d=d>>4;
e=e&0x0f;
LCD_Write_number(d);
LCD_Write_number(e);
}
else
{
LCD_Write_number(10); //显示空格
LCD_Write_number(10);
}
}
else
{
d=read_clock(0xc5);//读闹钟分钟的数值
e=d;
d=d>>4;
e=e&0x0f;
LCD_Write_number(d);
LCD_Write_number(e);
}
}
/******************************************************************************************
* 函数名称 :id_case1_key
* 功能描述 :id为1时的下一级选择
* 参数 : 参数名称: 输入/输出? 类型 描述
*
* 返回值 :
* 作者 :
* 创建日期 :2006-12-19
* 全局变量 :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本 : 修改人: 修改日期:
* 修改说明 :
******************************************************************************************/
void id_case1_key(void)
{
if(Add_Key == 0) //增加
{
Delay(100);
if(Add_Key == 0)
Set_time(id,0); //调用Set_time函数
while(Add_Key ==0);
}
if (Dec_Key==0) //减少
{
Delay(100);
if(Dec_Key == 0)
Set_time(id,1);
while(Dec_Key ==0);
}
}
/******************************************************************************************
* 函数名称 :Set_time
* 功能描述 :根据选择调整相应项目并写入DS1302
* 参数 : 参数名称: 输入/输出? 类型 描述
*
* 返回值 :
* 作者 :
* 创建日期 :2006-12-19
* 全局变量 :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本 : 修改人: 修改日期:
* 修改说明 :
******************************************************************************************/
void Set_time(unsigned char sel, bit sel_1)
{
signed char address,item;
signed char max,mini;
if(sel==7)
{
address=0x80;
max=0;
mini=0;
} //秒
if(sel==6)
{
address=0x82;
max=59;
mini=0;
} //分钟
if(sel==5)
{
address=0x84;
max=23;
mini=0;
} //小时
if(sel==3)
{
address=0x86;
max=31;
mini=1;
} //日
if(sel==2)
{
address=0x88;
max=12;
mini=1;
} //月
if(sel==1)
{
address=0x8c;
max=99;
mini=0;
} //年
if(sel==4)
{
address=0x8a;
max=7;
mini=1;
} //星期
//读取1302某地址上的数值转换成10进制赋给item
item=((read_clock(address+1))/16)*10 + (read_clock(address+1))%16;
if(sel_1==0)
item++;
else
item--;
if(item>max)
item=mini;
if(item<mini)
item=max;
write_clock(0x8e,0x00);//允许写操作
write_clock(address,(item/10)*16+item%10);//转换成16进制写入1302
write_clock(0x8e,0x80);//写保护,禁止写操作
}
/******************************************************************************************
* 函数名称 :id_case2_key
* 功能描述 :id为1时的下一级选择
* 参数 : 参数名称: 输入/输出? 类型 描述
*
* 返回值 :
* 作者 :
* 创建日期 :2006-12-19
* 全局变量 :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本 : 修改人: 修改日期:
* 修改说明 :
******************************************************************************************/
void id_case2_key(void)
{
if(Add_Key == 0) //增加
{
Delay(100);
if(Add_Key == 0)
Set_Bell(id2,0); //调用Set_time函数
while(Add_Key ==0);
}
if (Dec_Key==0) //减少
{
Delay(100);
if(Dec_Key == 0)
Set_Bell(id2,1);
while(Dec_Key ==0);
}
}
/******************************************************************************************
* 函数名称 :Set_Bell
* 功能描述 :根据选择调整相应项目
* 参数 : 参数名称: 输入/输出? 类型 描述
*
* 返回值 :
* 作者 :
* 创建日期 :2006-12-19
* 全局变量 :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本 : 修改人: 修改日期:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -