📄 main.c
字号:
#include <REGX52.H>
#include "hardware.h"
#include "types.h"
#include "serial.h"
#include "stdio.h"
#include "18B20.H"
#include "HT1621.H"
#include "tea5767.h"
#include "24c01.h"
keyscan_process (void);
extern uchar gc_KeyValue;
//================================================
extern void initTimer(void);
//==========音量控制=============
extern void WriteFM62429(uchar volset);
uchar TimeCounter1=0;
uchar TimeCounter2=0;
uint TimeCounter3=0;
uchar flash2=0;
uchar flash3=0;
uchar flash4=0;
bit FmCDOnOff=0;
bit TEMPITURE_SET=0;
uchar tempSet;
uchar volSet;
//=================================================================================================================================
//idata
uchar TempBuffer[40] ;
void LoadSysInformation(void)
{
uchar i;
for(i=0;i<5;i++)
{
Read24c02(&TempBuffer[i*8],i*8,8);
}
//---------------Fm Global Varable---------------------
if(TempBuffer[0]==0x55&&TempBuffer[1]==0xaa)
{
GlobalFmVar.FmState = TempBuffer[2];
if (GlobalFmVar.FmState > 1) GlobalFmVar.FmState = 0;
GlobalFmVar.FmSaveNum = TempBuffer[3];
if (GlobalFmVar.FmSaveNum >= FREQMAXNUMBLE) GlobalFmVar.FmSaveNum = 0;
tempSet=TempBuffer[4];
volSet=TempBuffer[5];
//--------------------Freq------------------------
for (i = 0; i < FREQMAXNUMBLE; i++)
{
GlobalFmVar.FmFreqArray[i] = (TempBuffer[8 + i*2] << 8) + TempBuffer[8 + i*2+1];
}
}
else //load default
{
tempSet=40;
volSet=3;
FmCDOnOff=0;
}
}
void SaveSysInformation(void)
{
uchar i;
//---------------Fm Global Varable---------------------
TempBuffer[0]= 0x55;
TempBuffer[1]= 0xaa;
TempBuffer[2] = GlobalFmVar.FmState;
TempBuffer[3] = GlobalFmVar.FmSaveNum;
TempBuffer[4] = tempSet;
TempBuffer[5] = volSet;
TempBuffer[6] = FmCDOnOff;
for (i = 0; i < FREQMAXNUMBLE+1; i++)
{
TempBuffer[8 + i*2] = GlobalFmVar.FmFreqArray[i] >> 8;
TempBuffer[8 + i*2+1] = GlobalFmVar.FmFreqArray[i] & 0xff;
}
for(i=0;i<5;i++)
{
Write24c02(&TempBuffer[i*8],i*8,8);
}
}
//---------------------------------------------
void initsystem(void)
{
//===========硬件init==================
BEEP=OFF;
LED=OFF;
FAN=OFF;
STEAM=OFF;
UPLIGHT=OFF;
DOWNLIGHT=OFF;
WATEROUT=OFF;
TEL_RING=OFF;
UPLIGHT=OFF;
DOWNLIGHT=OFF;
AMP=OFF;
CD=OFF;
FM=OFF;
FM62429_DAT=1;
FM62429_CLK=1;
//=======系统init=====================
initTimer();
TR0=1;
ET0=1;
EA=1;
//=========调试时用init serial========
// initUart();
// printf("serial init ok!!\n");
//==================================
Init_1621();
clear_all();
TurnOn_1621(OFF);
//===============变量init===========
TimeCounter1=100;
TimeCounter2=30;
TEMPITURE_SET=0;
EA=0;
LoadSysInformation();
EA=1;
FmVariableInit();
}
//=============================================================
//=============================================================
#if 1
void main(void)
{
initsystem();
convert(); // 启动温度转换,需要750ms
while(1)
{
if(!TimeCounter1&&!TEMPITURE_SET)
{
TimeCounter1=100;
if(RdTemp())
{
if(TempData>=tempSet)
{
STEAM=OFF;
FAN=ON;
UPLIGHT=ON;
}
DigitalDisplay(); //读取温度并显示
}
convert();// 启动温度转换,需要750ms
}
//==============================================
if(!TimeCounter2)
{
TimeCounter2=30;
flash2++;
flash2%=2;
flash3++;
flash3%=3;
flash4++;
flash4%=4;
if(WATEROUT)FangShuiMov(flash4);
if(FAN)FengFanMov(flash3);
if(STEAM)ZhengQiMov(flash4);
if(UPLIGHT)UpLightMov(flash4);
if(DOWNLIGHT)DownDengMov(flash2);
if(TEL_RING)DianHuaMov(flash3);
//=========SET 温度================
if(TEMPITURE_SET)
{
if(flash2)
SetTempDisplay(tempSet);
else
SetTempDisplay(0);
}
}
//=====================================================
if(!TimeCounter3&&TEMPITURE_SET)
{
TEMPITURE_SET=0;
}
if(gc_KeyValue)
{
//printf("=====================\n");
//printf("key =%2bx\n",gc_KeyValue);
if(gc_KeyValue==LONG_START_POWER_KEY)
{
LED=~LED;
TurnOn_1621(LED);
if(LED)//开机
{
// if(FmCDOnOff)
DisCD(FmCDOnOff);
}
else
{ EA=0;
SaveSysInformation(); //关机
EA=1;
FAN=OFF;
STEAM=OFF;
UPLIGHT=OFF;
DOWNLIGHT=OFF;
WATEROUT=OFF;
TEL_RING=OFF;
UPLIGHT=OFF;
DOWNLIGHT=OFF;
AMP=OFF;
CD=OFF;
FM=OFF;
if(!UPLIGHT)UpLightMov(4);
if(!DOWNLIGHT)DownDengMov(3);
if(!FAN)FengFanMov(3);
if(!STEAM)ZhengQiMov(3);
if(!WATEROUT)FangShuiMov(3);
if(!TEL_RING)DianHuaMov(3);
}
}
if(!LED) gc_KeyValue=0;
switch(gc_KeyValue)
{
//-----------------------------------------------------
case SHORT_SEACHINC_KEY:
if(TEMPITURE_SET)
{
TimeCounter3=800;
tempSet++;
if(tempSet>=60)tempSet=60;
}
else if(FmCDOnOff)
{
if (GlobalFmVar.FmState == FM_STATE_MANUAL)
{ FmTimerCount = 5; Tuner_MuteControl(1); Tuner_FreqChange(TUN_UP,TUNERFREQSTEP); FmPlayStart(); } if (GlobalFmVar.FmState == FM_STATE_PRESET)
{ FmTimerCount = 20; Tuner_MuteControl(1); GetNextStation();
TimeCounter1=200;
SetVolDisplay(GlobalFmVar.FmSaveNum);
FmPlayStart(); }
FmFreqDisplay(GlobalFmVar.FmFreq);
break;
}
break;
case LONG_START_SEACHINC_KEY:
case LONG_SEACHINC_KEY:
if (GlobalFmVar.FmState == FM_STATE_MANUAL)
{
Tuner_FreqChange(TUN_UP,TUNERFREQSTEP);
Tuner_PLLCount(GlobalFmVar.FmFreq,1);
FmFreqDisplay(GlobalFmVar.FmFreq);
}
break;
case LONG_RELEASE_SEACHINC_KEY:
if (GlobalFmVar.FmState == FM_STATE_MANUAL)
{
UpDownFlag = TUN_UP;
Funtion=MSG_FUNCTION1_FM_SEND_FREQHSI;
}
break;
case SHORT_SEACHDEC_KEY:
if(TEMPITURE_SET)
{
TimeCounter3=800;
tempSet--;
if(tempSet<=35)tempSet=35;
}
else if(FmCDOnOff)
{
if (GlobalFmVar.FmState == FM_STATE_MANUAL)
{ FmTimerCount = 5; Tuner_MuteControl(1); Tuner_FreqChange(TUN_DOWN,TUNERFREQSTEP);
FmPlayStart(); } if (GlobalFmVar.FmState == FM_STATE_PRESET)
{ FmTimerCount = 20; Tuner_MuteControl(1); GetPrevStation();
TimeCounter1=200;
SetVolDisplay(GlobalFmVar.FmSaveNum);
FmPlayStart(); }
FmFreqDisplay(GlobalFmVar.FmFreq);
break;
}
break;
case LONG_START_SEACHDEC_KEY:
case LONG_SEACHDEC_KEY:
if(!FmCDOnOff) break;
if (GlobalFmVar.FmState == FM_STATE_MANUAL)
{
Tuner_FreqChange(TUN_DOWN,TUNERFREQSTEP);
Tuner_PLLCount(GlobalFmVar.FmFreq,1);
FmFreqDisplay(GlobalFmVar.FmFreq);
}
break;
case LONG_RELEASE_SEACHDEC_KEY:
if(!FmCDOnOff) break;
if (GlobalFmVar.FmState == FM_STATE_MANUAL)
{
UpDownFlag = TUN_DOWN;
Funtion=MSG_FUNCTION1_FM_SEND_FREQHSI;
}
break;
//---------------------------------------
case SHORT_PLAY_KEY:
if(!FmCDOnOff) break;//如果收音机没打开就不能保存电台操作
if (GlobalFmVar.FmState == FM_STATE_MANUAL)//自动扫描搜索到电台并保存电台
{
GlobalFmVar.FmFreqArray[GlobalFmVar.FmSaveNum] = GlobalFmVar.FmFreq;
TimeCounter1=200;
SetVolDisplay(GlobalFmVar.FmSaveNum);
// printf("num=%d,freq=%d\n",(int)GlobalFmVar.FmSaveNum,(int)GlobalFmVar.FmFreqArray[GlobalFmVar.FmSaveNum]);
if ((GlobalFmVar.FmFreq == FmFreqMaxVal) || (++GlobalFmVar.FmSaveNum >= FREQMAXNUMBLE))
{
GlobalFmVar.FmSaveNum = 0;
// GlobalFmVar.FmFreq = GlobalFmVar.FmFreqArray[GlobalFmVar.FmSaveNum];
// printf("=================\n") ;
// printf("num=%d,freq=%d\n",(int)GlobalFmVar.FmSaveNum,(int)GlobalFmVar.FmFreqArray[GlobalFmVar.FmSaveNum]);
if((GlobalFmVar.FmFreq < FmFreqMinVal) || (GlobalFmVar.FmFreq > FmFreqMaxVal))
{
GlobalFmVar.FmFreq = FmFreqMinVal;
}
break;
}
}
break;
//-----------------------------------------------------
case SHORT_VOLINC_KEY:
TimeCounter1=200;
if(volSet<10)volSet++;
WriteFM62429(volSet);
if(TEMPITURE_SET)break;
SetVolDisplay(volSet);
break;
case SHORT_VOLDEC_KEY:
TimeCounter1=200;
if(volSet)volSet--;
WriteFM62429(volSet);
if(TEMPITURE_SET)break;
SetVolDisplay(volSet);
break;
//-----------------------------------------------------
case SHORT_UPLIGHT_KEY:
UPLIGHT=~UPLIGHT;
if(!UPLIGHT)UpLightMov(4);
break;
//-----------------------------------------------------
case SHORT_DOWNLIGHT_KEY:
DOWNLIGHT=~DOWNLIGHT;
if(!DOWNLIGHT)DownDengMov(3);
break;
//-----------------------------------------------------
case SHORT_FAN_KEY:
FAN=~FAN;
if(!FAN)FengFanMov(3);
break;
//-----------------------------------------------------
case SHORT_STEAM_KEY:
STEAM=~STEAM;
if(!STEAM)ZhengQiMov(3);
break;
//-----------------------------------------------------
case SHORT_WATEROUT_KEY:
WATEROUT=~WATEROUT;
if(!WATEROUT)FangShuiMov(3);
break;
//-----------------------------------------------------
case SHORT_TELPHONE_KEY:
TEL_RING=~TEL_RING;
if(!TEL_RING)DianHuaMov(3);
break;
//-----------------------------------------------------
case SHORT_FMORCD_KEY:
FmCDOnOff=~FmCDOnOff;
if(FmCDOnOff) //FM OPEN
{
AMP=ON;
CD=OFF;
FM=ON;
FmPlayStart();
FmFreqDisplay(GlobalFmVar.FmFreq);
}
else //CD OPEN
{
AMP=ON;
FM=OFF;
CD=ON;
DisCD(!FmCDOnOff);
Tuner_MuteControl(1);
// FmFreqDisplay(0);
WriteFM62429(volSet);
}
break;
//------------------------------------------------------
case SHORT_TEMPITURE_KEY:
TimeCounter3=800;
TEMPITURE_SET=~TEMPITURE_SET;
break;
//------------------------------------------------------
case LONG_START_PLAY_KEY:
if(GlobalFmVar.FmState == FM_STATE_MANUAL)
{
GlobalFmVar.FmState = FM_STATE_PRESET;
FMCDMov(1);
}
else
{
GlobalFmVar.FmState = FM_STATE_MANUAL;
FMCDMov(0);
}
break;
default:
break;
}
gc_KeyValue=0;
}
if(FmCDOnOff)FmPlay();
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -