📄 12864指针式时钟.txt
字号:
break;
case 3:if(temp[2]<49) //分十位调整
{
temp[2]+=10;
}
else
{
temp[2]=(temp[1]%10);
}
break;
case 4:if((temp[2]%10)==9) // 分个位调整
{
temp[2]=(temp[2]/10)*10;
}
else
{
temp[2]+=1;
}
break;
case 5:if(temp[3]<49) //秒十位调整
{
temp[3]+=10;
}
else
{
temp[3]=(temp[3]%10);
}
break;
case 6:if((temp[3]%10)==9) // 秒个位调整
{
temp[3]=(temp[3]/10)*10;
}
else
{
temp[3]+=1;
}
break;
case 7:if(temp[4]<20) //时十位调整 定时 关-----------------------------
{
temp[4]+=10;
}
else
{
temp[4]-=20;
}
break;
case 8:if((temp[4]%10)==9) //时个位调整
{
temp[4]=(temp[4]/10)*10;
}
else
{
temp[4]+=1;
}
break;
case 9:if(temp[5]<49) //分十位调整
{
temp[5]+=10;
}
else
{
temp[5]=(temp[5]%10);
}
break;
case 10:if((temp[5]%10)==9) // 分个位调整
{
temp[5]=(temp[5]/10)*10;
}
else
{
temp[5]+=1;
}
break;
case 11:if(temp[6]<49) //秒十位调整
{
temp[6]+=10;
}
else
{
temp[6]=(temp[6]%10);
}
break;
case 12:if((temp[6]%10)==9) // 秒个位调整
{
temp[6]=(temp[6]/10)*10;
}
else
{
temp[6]+=1;
}
break;
}
address--;
W1302(0x8e,0x00); //控制命令,WP=0,允许写操作
for(i =0; i<7; i++)
{
W1302(address,temp[i]); // 状态 时分秒.时分秒
address +=2;
}
W1302(0x8e,0x80); // 控制命令,WP=1,写保护
}
/****************************************************************************
函 数 名: four_down(void)
功 能:按键下键处理
说 明:处于四级菜单下.调整定时时间和状态
入口参数:无
返 回 值:无
*****************************************************************************/
void four_down()
{
unsigned char i,temp[7],address;
address=(two_show-50)*14+0xc1;
for(i=0;i<7;i++)
{
temp[i]=R1302(address+(i*2));
}
switch(three_show)
{
case 0:if(temp[0]==0) //状态调整"开/关"
{
temp[0]=1;
}
else
{
temp[0]=0;
}
break;
case 1:if(temp[1]>9) //时----开
{
temp[1]-=10;
}
else
{
temp[1]+=20;
}
break;
case 2:if(temp[1]%10==0)
{
temp[1]=((temp[1]/10)*10+9);
}
else
{
temp[1]-=1;
}
break;
case 3:if(temp[2]>9) //分---开
{
temp[2]-=10;
}
else
{
temp[2]+=50;
}
break;
case 4:if(temp[2]%10==0)
{
temp[2]=((temp[2]/10)*10+9);
}
else
{
temp[2]-=1;
}
break;
case 5:if(temp[3]>9) //秒---开
{
temp[3]-=10;
}
else
{
temp[3]+=50;
}
break;
case 6:if(temp[3]%10==0)
{
temp[3]=((temp[3]/10)*10+9);
}
else
{
temp[3]-=1;
}
break;
case 7:if(temp[4]>9) //时----关
{
temp[4]-=10;
}
else
{
temp[4]+=20;
}
break;
case 8:if(temp[4]%10==0)
{
temp[4]=((temp[4]/10)*10+9);
}
else
{
temp[4]-=1;
}
break;
case 9:if(temp[5]>9) //分---关
{
temp[5]-=10;
}
else
{
temp[5]+=50;
}
break;
case 10:if(temp[5]%10==0)
{
temp[5]=((temp[5]/10)*10+9);
}
else
{
temp[5]-=1;
}
break;
case 11:if(temp[6]>9) //秒---关
{
temp[6]-=10;
}
else
{
temp[6]+=50;
}
break;
case 12:if(temp[6]%10==0)
{
temp[6]=((temp[6]/10)*10+9);
}
else
{
temp[6]-=1;
}
break;
}
address--;
W1302(0x8e,0x00); //控制命令,WP=0,允许写操作
for(i =0; i<7; i++)
{
W1302(address,temp[i]); // 状态 时分秒.时分秒
address +=2;
}
W1302(0x8e,0x80); // 控制命令,WP=1,写保护
}
/****************************************************************************
函 数 名: key_up(void)
功 能:按键向上键处理
说 明:根据当前菜单状态跳转到相应处理函数处理
入口参数:无
返 回 值:无
*****************************************************************************/
void key_up()
{
switch(disp_set)
{
case 3:two_up();
break;
case 10:three_up();
break;
case 20:four_up();
break;
}
}
/****************************************************************************
函 数 名: key_down(void)
功 能:按键向下键处理
说 明:根据当前菜单状态跳转到相应处理函数处理
入口参数:无
返 回 值:无
*****************************************************************************/
void key_down()
{
switch(disp_set)
{
case 3: two_down();
break;
case 10:three_down();
break;
case 20:four_down();
break;
}
}
void disp_update()
{
;
}
/****************************************************************************
函 数 名: key_transact(void)
功 能:按键处理
说 明:根据键值进入相应按键处理
入口参数:无
返 回 值:无
*****************************************************************************/
void key_transact(unsigned char temp)
{
switch(temp)
{
case 1: key_left();
break;
case 2: key_up();
break;
case 3: key_ok();
break;
case 4: key_down();
break;
case 5:key_right();
break;
}
}
/****************************************************************************
函 数 名: key(void)
功 能:按键检测
说 明:检测是否有按键按下,有则进入按键处理
入口参数:无
返 回 值:无
*****************************************************************************/
void key(void)
{
unsigned char ankey;
if(((PIND&0X10)==0)||((PIND&0X08)==0)||((PIND&0X04)==0)||((PINB&0X01)==0)||((PINB&0X40)==0))
{
Delay(2);
if(((PIND&0X10)==0)||((PIND&0X08)==0)||((PIND&0X04)==0)||((PINB&0X01)==0)||((PINB&0X40)==0))
{
if((PIND&0X08)==0)
{
ankey=3;
}
if((PIND&0X10)==0)
{
ankey=4;
}
if((PIND&0X04)==0)
{
ankey=2;
}
if((PINB&0X01)==0)
{
ankey=1;
}
if((PINB&0X40)==0)
{
ankey=5;
}
key_transact(ankey);
}
do
{
disp_update();
}
while(((PIND&0X04)==0)||((PIND&0X08)==0)||((PIND&0X10)==0)||((PINB&0X01)==0)||((PINB&0X40)==0));
}
}
/****************************************************************************
函 数 名: Port_init(void)
功 能:端口初始化
说 明:方向及上拉电阻设置
入口参数:无
返 回 值:无
*****************************************************************************/
void Port_init(void)
{
DDRC=0xff;
DDRA=0xff;
DDRB&=~(1<<6); //SW5 按键4,取消/返回 右键
PORTB|=(1<<6); //SW5 使能上拉电阻
DDRD&=~(1<<4); //SW4 按键4,快捷改变颜色
PORTD|=(1<<4); //SW4 使能上拉电阻
DDRD&=~(1<<3); //SW3 按键3,快捷改变模式
PORTD|=(1<<3); //SW3 使能上拉电阻
DDRD&=~(1<<2); //SW2 按键2,快捷改变型号
PORTD|=(1<<2); //SW2 使能上拉电阻
DDRB&=~(1<<0); //SW1 按键2,快捷改变型号
PORTB|=(1<<0); //SW1 使能上拉电阻
DDRD|=(1<<7); //i/O
DDRD|=(1<<6); //sck
DDRB|=(1<<4); //rst
}
/****************************************************************************
功 能:农历信息存储数组
说 明: 时间2000----2099
*****************************************************************************/
const unsigned char year_code[] PROGMEM={
0x0C,0x96,0x45, //2000
0x4d,0x4A,0xB8, //2001
0x0d,0x4A,0x4C, //2002
0x0d,0xA5,0x41, //2003
0x25,0xAA,0xB6, //2004
0x05,0x6A,0x49, //2005
0x7A,0xAd,0xBd, //2006
0x02,0x5d,0x52, //2007
0x09,0x2d,0x47, //2008
0x5C,0x95,0xBA, //2009
0x0A,0x95,0x4e, //2010
0x0B,0x4A,0x43, //2011
0x4B,0x55,0x37, //2012
0x0A,0xd5,0x4A, //2013
0x95,0x5A,0xBf, //2014
0x04,0xBA,0x53, //2015
0x0A,0x5B,0x48, //2016
0x65,0x2B,0xBC, //2017
0x05,0x2B,0x50,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -