585 lines
14 KiB
C
585 lines
14 KiB
C
//24Mhz
|
|
#include <STC8H.H>
|
|
#include <intrins.h>
|
|
#include"delay.h"
|
|
#include"tm1650.h"
|
|
#include <math.h>
|
|
/*[-外部信号-][-开始-][-----][-----][-----]*/
|
|
//------------------------------------------------------------------------220V电源检测模块
|
|
sbit PW_OUT_ACC=P5^4;
|
|
unsigned char ACC_NUM_RST=3;
|
|
/*[-外部信号-][-停止-][-----][-----][-----]*/
|
|
/*[-外部信号-][-开始-][-----][-----][-----]*/
|
|
//------------------------------------------------------------------------外部信号
|
|
|
|
sbit MCU_BED_1=P2^7;
|
|
sbit MCU_BED_2=P2^6;
|
|
sbit IN_PTC=P3^3;
|
|
sbit IN_BED=P3^6;
|
|
sbit IN_PWR=P3^7;
|
|
/*[-外部信号-][-结束-][-----][-----][-----]*/
|
|
|
|
/*[-PTC加热继电器-][-开始-][-----][-----][-----]*/
|
|
//------------------------------------------------------------------------PTC
|
|
sbit PTC_RLY_1=P2^1;
|
|
sbit PTC_RLY_2=P2^2;
|
|
sbit PTC_RLY_3=P2^3;
|
|
sbit PTC_RLY_FAN=P2^0;
|
|
void PTC_WORK();
|
|
unsigned char PTC_WORK_POS=99;
|
|
unsigned char PTC_DEL_TIME=0;
|
|
bit PTC_STATE=0;
|
|
/*[-PTC加热继电器-][-结束-][-----][-----][-----]*/
|
|
/*[-PWM8-][-开始-][-----][-----][-----]*/
|
|
//------------------------------------------------------------------------PWM
|
|
unsigned int PWM=10000;
|
|
unsigned char PWM_DUT=50;
|
|
void SETPWM8(unsigned int cycle,unsigned int duty);
|
|
/*[-PWM8-][-结束-][-----][-----][-----]*/
|
|
//------------------------------------------------------------------------串口
|
|
/*[-串口通信-][-开始-][-----][-----][-----]*/
|
|
#define FOSC 24000000UL
|
|
//#define FOSC 11059200UL
|
|
#define BRT (65536 - FOSC / 115200 / 4)
|
|
void UartInit();
|
|
void UartSend(char dat);
|
|
void UartSendStr(char *p);
|
|
void UartInit2();
|
|
void UartSend2(char dat);
|
|
void UartSendStr2(char *p);
|
|
void UartSendNum(unsigned int n);
|
|
void UartSendNumRN(unsigned int n);
|
|
void UartSendEcho();//返回信息
|
|
void UART_CMD();//串口命令解析
|
|
bit UART_SEND_OK=0;
|
|
bit busy;
|
|
xdata unsigned char UART_RST_NUM=0;
|
|
xdata char old_data=0;
|
|
bit UART_OK=0;
|
|
xdata unsigned char UART_NUM=0;
|
|
char wptr;
|
|
char rptr;
|
|
char buffer[16];
|
|
/*[-串口通信-][-结束-][-----][-----][-----]*/
|
|
//------------------------------------------------------------------------ADC
|
|
/*[-ADC采样-][-开始-][-----][-----][可控硅温度]*/
|
|
unsigned int FAN_TEMP=0;
|
|
void ADCINIT();//温度采集 初始化
|
|
unsigned int GETADC_ADC0();//获取ADC数据
|
|
float temp_data(float ADC_data);//计算温度数据
|
|
void AUTOFAN();//自动风扇
|
|
bit ADC_TEMP_OK=0;
|
|
/*[-ADC采样-][-结束-][-----][-----][可控硅温度]*/
|
|
/*[-PWM-][-开始-][-----][-----][-----]*/
|
|
void SETPWM8(unsigned int cycle,unsigned int duty);//频率 占空比
|
|
/*[-PWM-][-结束-][-----][-----][-----]*/
|
|
//------------------------------------------------------------------------定时器
|
|
/*[-定时器0-][-结束-][-----][-----][-----]*/
|
|
void Timer0_Init(void); //25毫秒@24.000MHz
|
|
unsigned int SYS_TIME_NUM=0;
|
|
//unsigned int SYS_TIME_S=0;
|
|
unsigned int hour=0,min=0,sec=0;
|
|
/*[-定时器0-][-结束-][-----][-----][-----]*/
|
|
//------------------------------------------------------------------------外部IO
|
|
/*[-外部控制IO-][-开始-][-----][-----][-----]*/
|
|
sbit BUZZER = P0^2;
|
|
/*[-外部控制IO-][-结束-][-----][-----][-----]*/
|
|
//------------------------------------------------------------------------外部中断0
|
|
/*[-外部中断0-][-开始-][-----][-----][-----]*/
|
|
unsigned char ACC_NUM=0;
|
|
unsigned char ACC_FREQ=0;
|
|
/*[-外部中断0-][-结束-][-----][-----][-----]*/
|
|
/*[-函数声明-][-----][-----][-----][-----]*/
|
|
void SYSINIT();//系统初始化
|
|
void SMGSHOW();//数码管显示
|
|
/*[-变量声明-][-----][-----][-----][-----]*/
|
|
xdata unsigned char pag=0;
|
|
xdata unsigned Fan_dut=0;
|
|
/*[-函数声明-][-耗材仓-][-----][-----][-----]*/
|
|
sbit MCU_FILA_FAN=P0^1;
|
|
sbit MCU_FILA_PTC_1=P2^4;
|
|
sbit MCU_FILA_PTC_2=P2^5;
|
|
void FILA_WORK();
|
|
/*[-变量声明-][-----][-----][-----][-----]*/
|
|
xdata unsigned char FILA_PTC_TIME=0;
|
|
xdata unsigned int FILA_FAN_TIME=0;
|
|
void main()
|
|
{
|
|
unsigned int a=0;
|
|
SYSINIT();//系统初始化
|
|
SETPWM8(2400,80);
|
|
ADCINIT();
|
|
while(1)
|
|
{
|
|
SMGSHOW();//数码管显示
|
|
AUTOFAN();
|
|
PTC_WORK();//PTC工作程序
|
|
UART_CMD();//串口命令
|
|
// FILA_WORK();//耗材仓加热
|
|
}
|
|
}
|
|
void UART_CMD()//串口命令解析
|
|
{
|
|
if(UART_OK)
|
|
{
|
|
if(buffer[0]=='<' && buffer[1]=='A' && buffer[2]=='S' && buffer[3]=='K' && buffer[4]=='?'&& buffer[5]=='>')
|
|
{
|
|
if(PW_OUT_ACC==1)UartSendStr2("<ASK>");
|
|
else UartSendStr2("<OFF>");
|
|
}
|
|
// <H1T00S00000>
|
|
if(buffer[0]=='<' && buffer[1]=='H' && buffer[12]=='>')
|
|
{
|
|
if(buffer[2]=='1')FILA_PTC_TIME=255;
|
|
FILA_FAN_TIME=20000;
|
|
}
|
|
|
|
UART_OK=0;
|
|
}
|
|
|
|
UartSendEcho();//串口反馈 1S 一次
|
|
}
|
|
void FILA_WORK()//耗材仓加热
|
|
{
|
|
if(FILA_PTC_TIME>0)
|
|
{
|
|
FILA_PTC_TIME--;
|
|
MCU_FILA_PTC_1=MCU_FILA_PTC_2=1;
|
|
}
|
|
else
|
|
{
|
|
MCU_FILA_PTC_1=MCU_FILA_PTC_2=0;
|
|
}
|
|
|
|
if(FILA_FAN_TIME>0)
|
|
{
|
|
FILA_FAN_TIME--;
|
|
MCU_FILA_FAN=1;
|
|
}
|
|
else
|
|
{
|
|
MCU_FILA_FAN=0;
|
|
}
|
|
|
|
}
|
|
void PTC_WORK()
|
|
{
|
|
switch(PTC_WORK_POS)
|
|
{
|
|
case 0: PTC_RLY_1=0; PTC_RLY_2=1; PTC_RLY_3=1; PTC_RLY_FAN=0; PTC_WORK_POS=1;PTC_DEL_TIME=20;break;
|
|
case 1: if(PTC_DEL_TIME==0)
|
|
{
|
|
PTC_RLY_1=0; PTC_RLY_2=0; PTC_RLY_3=1; PTC_RLY_FAN=0; PTC_WORK_POS=2;PTC_DEL_TIME=20;
|
|
}
|
|
break;
|
|
case 2: if(PTC_DEL_TIME==0)
|
|
{
|
|
PTC_RLY_1=0; PTC_RLY_2=0; PTC_RLY_3=0; PTC_RLY_FAN=0; PTC_WORK_POS=3;PTC_DEL_TIME=0;
|
|
}
|
|
break;
|
|
case 3: PTC_RLY_1=0; PTC_RLY_2=0; PTC_RLY_3=0; PTC_RLY_FAN=0; break;//全开
|
|
case 90:PTC_RLY_1=1; PTC_RLY_2=1; PTC_RLY_3=1; PTC_RLY_FAN=0; PTC_WORK_POS=91;PTC_DEL_TIME=20;break;//延时关闭
|
|
case 91: if(PTC_DEL_TIME==0)
|
|
{
|
|
PTC_RLY_FAN=0;PTC_WORK_POS=99;
|
|
}
|
|
break;
|
|
case 99:PTC_RLY_1=1; PTC_RLY_2=1; PTC_RLY_3=1; PTC_RLY_FAN=1;break;//全部关闭
|
|
|
|
}
|
|
MCU_FILA_FAN=!PTC_RLY_FAN;
|
|
}
|
|
void SETPWM8(unsigned int cycle,unsigned int duty)
|
|
{
|
|
unsigned long a,b,c;
|
|
a=cycle;
|
|
b=duty;
|
|
c=a*b/100;
|
|
P_SW2 = 0x80;
|
|
PWMB_CCER2 = 0x00; //写CCMRx前必须先清零CCERx关闭通道
|
|
PWMB_CCMR4 = 0x68;
|
|
PWMB_CCER2 = 0x10;
|
|
PWMB_CCR8 =(unsigned int)c;
|
|
PWMB_ARR = (unsigned int)a; //设置周期时间
|
|
PWMB_ENO = 0x40;
|
|
PWMB_PS=0x80;
|
|
PWMB_BKR = 0x80; //使能主输出
|
|
PWMB_CR1 = 0x01; //开始计时
|
|
}
|
|
void SMGSHOW()//数码管显示
|
|
{
|
|
switch(pag)
|
|
{
|
|
case 0:if(PW_OUT_ACC==1)SMG1x4_B(FAN_TEMP%1000/100,FAN_TEMP%100/10,FAN_TEMP%10,12,2);
|
|
else SMG1x4(10,10,10,10);break;
|
|
}
|
|
|
|
}
|
|
|
|
void SYSINIT()//系统初始化
|
|
{
|
|
/*[-PINS-][-INIT-][-----][-----][-----]*/
|
|
PTC_RLY_1=1;
|
|
PTC_RLY_1=1;
|
|
PTC_RLY_1=1;
|
|
PTC_RLY_FAN=1;
|
|
P0M0 = 0x0e; P0M1 = 0x00;
|
|
P1M0 = 0x00; P1M1 = 0x08;
|
|
P2M0 = 0xff; P2M1 = 0x00;
|
|
P3M0 = 0x00; P3M1 = 0x00;
|
|
P4M0 = 0x00; P4M1 = 0x00;
|
|
P5M0 = 0x10; P5M1 = 0x00;
|
|
P6M0 = 0x00; P6M1 = 0x00;
|
|
P7M0 = 0x00; P7M1 = 0x00;
|
|
SMG1x4_B(28,1,1,2,2);
|
|
delayMs(500);
|
|
PTC_RLY_1=0;
|
|
PTC_RLY_1=0;
|
|
PTC_RLY_1=0;
|
|
PTC_RLY_FAN=0;
|
|
MCU_FILA_PTC_1=0;
|
|
MCU_FILA_PTC_2=0;
|
|
MCU_BED_1=0;
|
|
MCU_BED_2=0;
|
|
IN_PTC=1;
|
|
IN_BED=1;
|
|
MCU_FILA_FAN=0;
|
|
IN_PWR=1;
|
|
/*[-IO状态-][-INIT-][-----][-----][-----]*/
|
|
BUZZER=0;
|
|
|
|
/*[-上电提示-][-----][-----][-----][-----]*/
|
|
BUZZER=1;delayMs(100);BUZZER=0;delayMs(100);
|
|
BUZZER=1;delayMs(200);BUZZER=0;delayMs(100);
|
|
UartInit2();
|
|
UartInit();//串口初始化
|
|
Timer0_Init();//定时器初始化
|
|
IT0 = 1; //使能INT0上升沿和下降沿中断
|
|
EX0 = 1; //使能INT0中断
|
|
|
|
EA = 1;
|
|
|
|
}
|
|
/*[-外部中断-][-INT0-][-----][-----][-END-]*/
|
|
void INT0_Isr() interrupt 0
|
|
{
|
|
if (P32) //判断上升沿和下降沿
|
|
{
|
|
ACC_NUM++;
|
|
ACC_NUM_RST=1;
|
|
}
|
|
else
|
|
{
|
|
ACC_NUM++;
|
|
ACC_NUM_RST=1;
|
|
}
|
|
}
|
|
/*[-外部中断-][-INT0-][-----][-----][-END-]*/
|
|
|
|
/*[-定时器0-][-开始-][-25ms-][-24Mhz-][-----]*/
|
|
void Timer0_Init(void) //25毫秒@24.000MHz
|
|
{
|
|
AUXR &= 0x7F; //定时器时钟12T模式
|
|
TMOD &= 0xF0; //设置定时器模式
|
|
TL0 = 0xB0; //设置定时初始值
|
|
TH0 = 0x3C; //设置定时初始值
|
|
TF0 = 0; //清除TF0标志
|
|
TR0 = 1; //定时器0开始计时
|
|
ET0=1;
|
|
}
|
|
//hour=0,min=0,sec=0;
|
|
void TM0_Isr() interrupt 1
|
|
{
|
|
SYS_TIME_NUM=(SYS_TIME_NUM+1)%40;
|
|
if(SYS_TIME_NUM==0)
|
|
{
|
|
sec=(sec+1)%60;
|
|
if(sec==0)min=(min+1)%60;
|
|
if(sec==0 && min==0)hour++;
|
|
|
|
ACC_FREQ=ACC_NUM;
|
|
ACC_NUM=0;
|
|
|
|
UART_SEND_OK=1;
|
|
ADC_TEMP_OK=1;
|
|
if(PTC_DEL_TIME>0)PTC_DEL_TIME--;
|
|
}
|
|
// if(IN_PTC==0)PTC_WORK_POS=0;//工作
|
|
// else PTC_WORK_POS=99;//停止
|
|
if(PTC_STATE!=IN_PTC)
|
|
{
|
|
PTC_STATE=IN_PTC;
|
|
if(IN_PTC==0)PTC_WORK_POS=0;//工作
|
|
else PTC_WORK_POS=90;//停止
|
|
}
|
|
MCU_BED_1=MCU_BED_2=!IN_BED;
|
|
|
|
if(ACC_NUM_RST>0)
|
|
{
|
|
ACC_NUM_RST--;
|
|
PW_OUT_ACC=1;
|
|
}
|
|
else
|
|
{
|
|
PW_OUT_ACC=0;
|
|
}
|
|
}
|
|
|
|
/*[-定时器0-][-结束-][-----][-----][-----]*/
|
|
|
|
/*[-串口通信-][-开始-][-----][-----][-----]*/
|
|
//xdata unsigned char UART_RST_NUM=0;
|
|
//xdata char old_data=0;
|
|
void UartIsr() interrupt 4
|
|
{
|
|
char c=0;
|
|
if (TI)
|
|
{
|
|
TI = 0;
|
|
busy = 0;
|
|
}
|
|
if (RI)
|
|
{
|
|
RI = 0;
|
|
c=SBUF;
|
|
if(c != old_data)
|
|
{
|
|
UART_RST_NUM=0;
|
|
}
|
|
else
|
|
{
|
|
if(UART_RST_NUM<100)UART_RST_NUM++;
|
|
if(UART_RST_NUM>50)IAP_CONTR |= 0x60;
|
|
}
|
|
buffer[wptr++] = SBUF;
|
|
wptr &= 0x0f;
|
|
}
|
|
}
|
|
void Uart2Isr() interrupt 8
|
|
{
|
|
char c;
|
|
if (S2CON & 0x02)
|
|
{
|
|
S2CON &= ~0x02;
|
|
busy = 0;
|
|
}
|
|
if (S2CON & 0x01)
|
|
{
|
|
S2CON &= ~0x01;
|
|
c = S2BUF;
|
|
if(c=='<')UART_NUM=0;
|
|
if(c=='>')UART_OK=1;
|
|
if(UART_NUM<16){buffer[UART_NUM]=c;UART_NUM++;}
|
|
}
|
|
}
|
|
void UartInit()
|
|
{
|
|
SCON |= 0x50;
|
|
T2L = BRT;
|
|
T2H = BRT >> 8;
|
|
AUXR |= 0x15;
|
|
ES = 1;
|
|
}
|
|
void UartInit2()
|
|
{
|
|
S2CON |= 0x10;
|
|
T2L = BRT;
|
|
T2H = BRT >> 8;
|
|
AUXR |= 0x14;
|
|
IE2 = 0x01;
|
|
}
|
|
void UartSend(char dat)
|
|
{
|
|
while (busy);
|
|
busy = 1;
|
|
SBUF = dat;
|
|
}
|
|
void UartSend2(char dat)
|
|
{
|
|
while (busy);
|
|
busy = 1;
|
|
S2BUF = dat;
|
|
}
|
|
void UartSendStr(char *p)
|
|
{
|
|
while (*p)
|
|
{
|
|
UartSend(*p++);
|
|
}
|
|
}
|
|
void UartSendStr2(char *p)
|
|
{
|
|
while (*p)
|
|
{
|
|
UartSend2(*p++);
|
|
}
|
|
}
|
|
void UartSendNum(unsigned int n)
|
|
{
|
|
UartSend('0'+n%100000/10000);
|
|
UartSend('0'+n%10000/1000);
|
|
UartSend('0'+n%1000/100);
|
|
UartSend('0'+n%100/10);
|
|
UartSend('0'+n%10);
|
|
|
|
}
|
|
void UartSendNumRN(unsigned int n)
|
|
{
|
|
UartSend('0'+n%100000/10000);
|
|
UartSend('0'+n%10000/1000);
|
|
UartSend('0'+n%1000/100);
|
|
UartSend('0'+n%100/10);
|
|
UartSend('0'+n%10);
|
|
UartSend('\r');
|
|
UartSend('\n');
|
|
}
|
|
void UartSendEcho()//PWM
|
|
{
|
|
if(UART_SEND_OK==1)//hour=0,min=0,sec=0;
|
|
{
|
|
UartSend('T');
|
|
UartSend('>');
|
|
UartSend('0'+hour%100000/10000);
|
|
UartSend('0'+hour%10000/1000);
|
|
UartSend('0'+hour%1000/100);
|
|
UartSend('0'+hour%100/10);
|
|
UartSend('0'+hour%10);
|
|
UartSend(':');
|
|
UartSend('0'+min%100/10);
|
|
UartSend('0'+min%10);
|
|
UartSend(':');
|
|
UartSend('0'+sec%100/10);
|
|
UartSend('0'+sec%10);
|
|
UartSend('\r');UartSend('\n');
|
|
|
|
UartSend('T');UartSend('E');UartSend('M');UartSend('P');
|
|
UartSend(':');
|
|
UartSend('<');
|
|
UartSend('0'+FAN_TEMP%1000/100);
|
|
UartSend('0'+FAN_TEMP%100/10);
|
|
UartSend('.');
|
|
UartSend('0'+FAN_TEMP%10);
|
|
UartSend('C');
|
|
UartSend('>');
|
|
UartSend('\r');UartSend('\n');
|
|
|
|
UartSend('F');UartSend('A');UartSend('N');
|
|
UartSend(':');
|
|
UartSend('<');
|
|
UartSend('0'+PWM_DUT%1000/100);
|
|
UartSend('0'+PWM_DUT%100/10);
|
|
UartSend('0'+PWM_DUT%10);
|
|
UartSend('%');
|
|
UartSend('>');
|
|
UartSend('\r');UartSend('\n');
|
|
|
|
UartSend('A');UartSend('C');UartSend(':');
|
|
UartSend('<');
|
|
UartSend('0'+ACC_FREQ%1000/100);
|
|
UartSend('0'+ACC_FREQ%100/10);
|
|
UartSend('0'+ACC_FREQ%10);
|
|
UartSend('>');
|
|
UartSend('\r');UartSend('\n');
|
|
|
|
UartSend('P');UartSend('W');UartSend('R');UartSend(':');UartSend('<');if(IN_PWR==0)UartSend('1');else UartSend('0');UartSend('>');
|
|
UartSend('\r');UartSend('\n');
|
|
|
|
UartSend('P');UartSend('T');UartSend('C');UartSend(':');UartSend('<');if(IN_PTC==0)UartSend('1');else UartSend('0');UartSend('>');
|
|
UartSend('<');
|
|
if(PTC_RLY_1)UartSend('0');else UartSend('1');UartSend(',');
|
|
if(PTC_RLY_2)UartSend('0');else UartSend('1');UartSend(',');
|
|
if(PTC_RLY_3)UartSend('0');else UartSend('1');UartSend(',');
|
|
if(PTC_RLY_FAN)UartSend('0');else UartSend('1');UartSend('>');
|
|
UartSend('<');UartSend('0'+PTC_DEL_TIME%100/10);UartSend('0'+PTC_DEL_TIME%10);UartSend('>');
|
|
UartSend('\r');UartSend('\n');
|
|
|
|
UartSend('B');UartSend('E');UartSend('D');UartSend(':');UartSend('<');if(IN_BED==0)UartSend('1');else UartSend('0');UartSend('>');
|
|
UartSend('\r');UartSend('\n');
|
|
|
|
UartSend('A');UartSend('C');UartSend('C');UartSend(':');UartSend('<');if(PW_OUT_ACC)UartSend('1');else UartSend('0');UartSend('>');
|
|
UartSend('\r');UartSend('\n');
|
|
UartSend('F');UartSend('I');UartSend('L');UartSend('A');
|
|
UartSend('<');
|
|
UartSend('0'+FILA_PTC_TIME%1000/100);
|
|
UartSend('0'+FILA_PTC_TIME%100/10);
|
|
UartSend('0'+FILA_PTC_TIME%10);
|
|
UartSend('>');
|
|
UartSend('<');
|
|
UartSend('0'+FILA_FAN_TIME%100000/10000);
|
|
UartSend('0'+FILA_FAN_TIME%10000/1000);
|
|
UartSend('0'+FILA_FAN_TIME%1000/100);
|
|
UartSend('0'+FILA_FAN_TIME%100/10);
|
|
UartSend('0'+FILA_FAN_TIME%10);
|
|
UartSend('>');
|
|
UART_SEND_OK=0;
|
|
}
|
|
}
|
|
|
|
/*[-串口通信-][-结束-][-----][-----][-----]*/
|
|
/*[-ADC-][-开始-][-----][-----][-----]*/
|
|
void ADCINIT()
|
|
{
|
|
P_SW2 |= 0x80;
|
|
ADCTIM = 0x3f; //设置ADC内部时序
|
|
P_SW2 &= 0x7f;
|
|
ADCCFG = 0x2f; //设置ADC时钟为系统时钟/2/16
|
|
ADC_CONTR = 0x80; //使能ADC模块
|
|
|
|
}
|
|
unsigned int GETADC_ADC0()
|
|
{
|
|
unsigned int buf=0;
|
|
ADC_CONTR |= 0x43; //启动AD转换
|
|
_nop_();
|
|
_nop_();
|
|
while (!(ADC_CONTR & 0x20)); //查询ADC完成标志
|
|
ADC_CONTR &= ~0x20; //清完成标志 //读取ADC结果
|
|
buf=ADC_RES*256+ADC_RESL;
|
|
return buf;
|
|
}
|
|
float temp_data(float ADC_data)
|
|
{
|
|
float temp;
|
|
float Rt = 0;
|
|
float Rp = 100000;
|
|
float T2 = 273.15 + 25;
|
|
float Bx = 3950;
|
|
float Ka = 273.15;
|
|
float vol = 0;
|
|
vol = (((float)ADC_data) * 2.5 / 1024); // 公式缩减 ADC*(5/1024)
|
|
Rt = (470000 * vol) / (2.5 - vol); // 4.7k 更改为1000k 更改为470K
|
|
temp = 1 / ((log(Rt / Rp)) / Bx + 1 / T2) - Ka;
|
|
if (temp < 0) temp = -1;
|
|
temp=temp*10.0;
|
|
return temp;
|
|
}
|
|
void AUTOFAN()//自动风扇
|
|
{
|
|
/*
|
|
35度以下停止工作
|
|
后面温度计算方式
|
|
*/
|
|
if(ADC_TEMP_OK)
|
|
{
|
|
FAN_TEMP=(unsigned int)temp_data(GETADC_ADC0());
|
|
ADC_TEMP_OK=0;
|
|
}
|
|
if(FAN_TEMP>350)
|
|
{
|
|
PWM_DUT=(FAN_TEMP-350);
|
|
PWM_DUT=PWM_DUT/10;
|
|
PWM_DUT=PWM_DUT*2;
|
|
}
|
|
else
|
|
{
|
|
PWM_DUT=0;
|
|
}
|
|
SETPWM8(PWM,PWM_DUT);
|
|
}
|
|
/*[-ADC-][-结束-][-----][-----][-----]*/
|
|
|
|
/*[-PTC-][-开始-][-----][-----][-----]*/
|
|
|
|
|
|
/*[-PTC-][-结束-][-----][-----][-----]*/
|