mian.c
来自「温度传感器」· C语言 代码 · 共 339 行 · 第 1/2 页
C
339 行
bit c=1; //C用于标志十位和个位1为十位0为个位。
uchar g=0; //二维数组存放的下标,,,,str[g][f];;
uchar f=0; //一维数组存放的下标,,,,
uchar e=3; //用于对移动位数进行计数,左右移不会移出范围
write_command(0x01,1); //清屏
write_command(0x0e,1); //设置1602显示光标
get_time_DS12887(); //读日历
display_time(); //显示调整界面
DisplayOneChar(13,1,str2[(str1[0][6])/10]); //////显示温度///////////
DisplayOneChar(14,1,str2[(str1[0][6])%10]); ///////显示温度////////////////
DisplayOneChar(2,1,str2[g]);//显示第几段,数组str[g]
write_command(0x85,1); //把光标指向年的十位
/*******************************************************************************/
while(a!=15&&a!=14) //15,14键值各为推出和确定,完成对时
{
a=kbscan1();
if(a==13) //左移键值
{f++;
e++;
c=1;
if(e>9)
{f=0;
e=3;}
switch (e)
{case 3: write_command(0x85,1); break;
case 4: write_command(0x88,1); break;
case 5: write_command(0x8b,1); break;
case 6: write_command(0xc4,1); break;
case 7: write_command(0xc7,1); break;
case 8: write_command(0xca,1); break;
case 9: write_command(0xcd,1); break;
}
}
else if(a==12) //指向下一段
{
g++;
f=0;
c=1;
e=3;
if(g>2)
{g=0;
}
DisplayOneChar(2,1,str2[g]);//显示第几段,数组str[g]
write_command(0x85,1);
}
else if(a<10)
{if(c==1)
{str1[g][f]=((str1[g][f])%10)+a*10;
c=0;
switch (e)
{case 3: DisplayOneChar(5,0,str2[str1[g][f]/10]);write_command(0x86,1); break;
case 4: DisplayOneChar(8,0,str2[str1[g][f]/10]);write_command(0x89,1); break;
case 5: DisplayOneChar(11,0,str2[str1[g][f]/10]);write_command(0x8c,1); break;
case 6: DisplayOneChar(4,1,str2[str1[g][f]/10]);write_command(0xc5,1); break;
case 7: DisplayOneChar(7,1,str2[str1[g][f]/10]);write_command(0xc8,1); break;
case 8: DisplayOneChar(10,1,str2[str1[g][f]/10]);write_command(0xcb,1); break;
case 9: DisplayOneChar(13,1,str2[str1[g][f]/10]);write_command(0xce,1); break;
}
}
else if(c==0)
{str1[g][f]=((str1[g][f])/10)*10+a;
c=1;
switch (e)
{case 3: DisplayOneChar(6,0,str2[str1[g][f]%10]);write_command(0x85,1); break;
case 4: DisplayOneChar(9,0,str2[str1[g][f]%10]);write_command(0x88,1); break;
case 5: DisplayOneChar(12,0,str2[str1[g][f]%10]);write_command(0x8b,1); break;
case 6: DisplayOneChar(5,1,str2[str1[g][f]%10]);write_command(0xc4,1); break;
case 7: DisplayOneChar(8,1,str2[str1[g][f]%10]);write_command(0xc7,1); break;
case 8: DisplayOneChar(11,1,str2[str1[g][f]%10]);write_command(0xca,1); break;
case 9: DisplayOneChar(14,1,str2[str1[g][f]/10]);write_command(0xcd,1); break;
}
}
}
}
/*******************************************************************************/
write_command(0x0c,1); //设置1602不显示光标
write_command(0x01,1); //清屏
}
/********************************************************************************************/
/********************************************************************************************/
/**************************************调试显示**************************************/
display1()
{ DisplayOneChar(0,1,str2[(str1[2][0])/10]);
DisplayOneChar(1,1,str2[(str1[2][0])%10]);
DisplayOneChar(3,1,str2[(str1[2][1])/10]);
DisplayOneChar(4,1,str2[(str1[2][1])%10]);
DisplayOneChar(6,1,str2[(str1[2][2])/10]);
DisplayOneChar(7,1,str2[(str1[2][2])%10]);
DisplayOneChar(9,1,str2[(str1[2][3])/10]);
DisplayOneChar(10,1,str2[(str1[2][3])%10]);
DisplayOneChar(12,1,str2[(str1[2][4])/10]);
DisplayOneChar(13,1,str2[(str1[2][4])%10]);
DisplayOneChar(14,1,str2[(str1[2][6])/10]);
DisplayOneChar(15,1,str2[(str1[2][6])%10]);
}
display2()
{ DisplayOneChar(0,1,str2[(str1[0][0])/10]);
DisplayOneChar(1,1,str2[(str1[0][0])%10]);
DisplayOneChar(3,1,str2[(str1[0][1])/10]);
DisplayOneChar(4,1,str2[(str1[0][1])%10]);
DisplayOneChar(6,1,str2[(str1[0][2])/10]);
DisplayOneChar(7,1,str2[(str1[0][2])%10]);
DisplayOneChar(9,1,str2[(str1[0][3])/10]);
DisplayOneChar(10,1,str2[(str1[0][3])%10]);
DisplayOneChar(12,1,str2[(str1[0][4])/10]);
DisplayOneChar(13,1,str2[(str1[0][4])%10]);
DisplayOneChar(14,1,str2[(str1[0][5])/10]);
DisplayOneChar(15,1,str2[(str1[0][5])%10]);
}
main()
{ uchar d;
initialization_Lcd(); // 初始化1602
start_DS12887(); //初始化12887
////显示模式图标**********************************************
DisplayOneChar(2,1,str2[10]);//MMMMMMMMM
DisplayOneChar(3,1,str2[12]);
DisplayOneChar(4,1,str2[m]);
////显示模式图标**********************************************
DisplayOneChar(9,1,str2[11]);//TTTTTTTTT
DisplayOneChar(10,1,str2[12]);
////显示模式图标*********************************************
while(1)
{
get_time_DS12887();//读12887数据
display_time1();//正常工作时的时钟显示。
d=kbscan1(); //扫描键盘
/*******************************校时程序***********************************************/
if(d==10) //10是校时键值
{Adr_B=0x86;//设置时间停止,读出的值不再变,但12887内部的时钟还在走着。
Adr_A=0x00;//设置12887内部时钟不再计时.
adjust_time();
}
/*******************************校时程序***********************************************/
/*******************************设置模式程序***********************************************/
else if(d==11)//11是模式切换键值
{
if(m==1)//改变标志位M,在两种模式之间切换
m=0;
else m=1;
DisplayOneChar(2,1,str2[10]);//MMMMMMMMM
DisplayOneChar(3,1,str2[12]);
DisplayOneChar(4,1,str2[m]);
}
/*******************************设置模式程序***********************************************/
/*******************************设定时间段,温度程序***************************************/
else if(d==15)//确定键与设定时间段键复用
{
setup_time();
}
/*******************************设定时间段,温度程序***************************************/
/*******************************yuyin语音***************************************/
isd_data1=0x00;
isd_data2=55;
/*******************************语音***********************************************/
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?