2025-04-13 01:02:19 +08:00
|
|
|
|
/* 头文件申明*/
|
|
|
|
|
#include <STC15F2K60S2.H>
|
|
|
|
|
#include <Key.h>
|
|
|
|
|
#include <Seg.h>
|
|
|
|
|
#include <Led.h>
|
|
|
|
|
#include <Init.h>
|
2025-04-22 17:34:15 +08:00
|
|
|
|
#include <onewire.h>
|
2025-04-13 01:02:19 +08:00
|
|
|
|
|
|
|
|
|
/* 变量申明*/
|
|
|
|
|
unsigned char Key_Slow_Down;//按键减速变量
|
|
|
|
|
unsigned char Key_Val,Key_Old,Key_Down,Key_Up;
|
|
|
|
|
unsigned int Seg_Slow_Down;
|
|
|
|
|
unsigned char Seg_Pos;
|
|
|
|
|
unsigned char Seg_Buf[8]=
|
|
|
|
|
{
|
|
|
|
|
16,16,16,16,16,16,16,16
|
|
|
|
|
};
|
|
|
|
|
unsigned char Seg_Point[8]=
|
|
|
|
|
{
|
|
|
|
|
0,0,0,0,0,0,0,0
|
|
|
|
|
};
|
|
|
|
|
unsigned char ucLed[8]=
|
|
|
|
|
{
|
2025-04-22 17:34:15 +08:00
|
|
|
|
1,0,1,0,0,0,0,0
|
2025-04-13 01:02:19 +08:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
unsigned char Seg_Show;
|
2025-04-22 17:34:15 +08:00
|
|
|
|
unsigned int Tempr_Show_10x = 0,Relay_Timer;
|
|
|
|
|
unsigned char Relay_Flag;
|
2025-04-13 01:02:19 +08:00
|
|
|
|
|
|
|
|
|
/* 处理函数(key,seg,led)*/
|
|
|
|
|
void Key_Proc()
|
|
|
|
|
{
|
|
|
|
|
if(Key_Slow_Down) return;
|
|
|
|
|
Key_Slow_Down = 1;
|
|
|
|
|
|
|
|
|
|
Key_Val = Key_Read();
|
|
|
|
|
Key_Down = Key_Val & (Key_Old ^ Key_Val);
|
|
|
|
|
Key_Up = ~Key_Val & (Key_Old ^ Key_Val);
|
|
|
|
|
Key_Old = Key_Val;
|
|
|
|
|
|
|
|
|
|
if(Key_Down != 0)
|
|
|
|
|
Seg_Show = Key_Down;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Seg_Proc()
|
|
|
|
|
{
|
|
|
|
|
if(Seg_Slow_Down) return;
|
|
|
|
|
Seg_Slow_Down = 1;
|
|
|
|
|
|
2025-04-22 17:34:15 +08:00
|
|
|
|
Tempr_Show_10x = Tempr_Read() * 10;
|
|
|
|
|
Seg_Buf[0] = Tempr_Show_10x /100 %10;
|
|
|
|
|
Seg_Buf[1] = Tempr_Show_10x /10 %10;
|
|
|
|
|
Seg_Point[1] = 1;
|
|
|
|
|
Seg_Buf[2] = Tempr_Show_10x % 10;
|
2025-04-13 01:02:19 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Led_Proc()
|
|
|
|
|
{
|
2025-04-22 17:34:15 +08:00
|
|
|
|
ucLed[4] = 1;
|
|
|
|
|
ucLed[5] = 0;
|
|
|
|
|
ucLed[6] = 0;
|
|
|
|
|
ucLed[7] = 1;
|
2025-04-13 01:02:19 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* 定时器函数(初始化、中断函数)*/
|
|
|
|
|
void Timer0_Init(void) //1毫秒@12.000MHz
|
|
|
|
|
{
|
|
|
|
|
AUXR &= 0x7F; //定时器时钟12T模式
|
|
|
|
|
TMOD &= 0xF0; //设置定时器模式
|
|
|
|
|
TL0 = 0x18; //设置定时初始值
|
|
|
|
|
TH0 = 0xFC; //设置定时初始值
|
|
|
|
|
TF0 = 0; //清除TF0标志
|
|
|
|
|
TR0 = 1; //定时器0开始计时
|
|
|
|
|
ET0 = 1;
|
|
|
|
|
EA = 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Timer0_Server() interrupt 1
|
|
|
|
|
{
|
|
|
|
|
if(++Key_Slow_Down == 10) Key_Slow_Down = 0;
|
|
|
|
|
if(++Seg_Slow_Down == 500) Seg_Slow_Down = 0;
|
|
|
|
|
if(++Seg_Pos == 8) Seg_Pos = 0;
|
2025-04-22 17:34:15 +08:00
|
|
|
|
|
2025-04-13 01:02:19 +08:00
|
|
|
|
Seg_Disp(Seg_Pos,Seg_Buf[Seg_Pos],Seg_Point[Seg_Pos]);
|
|
|
|
|
Led_Disp(Seg_Pos,ucLed[Seg_Pos]);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
/* 主函数*/
|
|
|
|
|
void main()
|
|
|
|
|
{
|
|
|
|
|
System_Init();
|
|
|
|
|
Timer0_Init();
|
|
|
|
|
while(1)
|
|
|
|
|
{
|
|
|
|
|
Key_Proc();
|
|
|
|
|
Seg_Proc();
|
|
|
|
|
Led_Proc();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|