📄 tempfan.c
字号:
#include <reg52.H>#include <stdio.h>#include <string.h>
#include <intrins.h>
#include "ADC.c"
#include "LCD.c"
sbit PWMPIN= P3^7;
bit USRFLG=0;
unsigned char pwm_width;
void itoa(unsigned int value ,unsigned char *string);
void Speed(unsigned char Temp);
//***************************************************************
// Timer 0 interrupt
//***************************************************************
void timer0() interrupt 1
{ if(!USRFLG)
{ //Start of High level USRFLG = 1; //Set flag PWMPIN = 1; //Set PWM o/p pin TH0 = pwm_width; //Load timer TF0 = 0; //Clear interrupt flag // return; //Return } else
{ //Start of Low level USRFLG = 0; //Clear flag PWMPIN = 0; //Clear PWM o/p pin TH0 = 255 - pwm_width; //Load timer TF0 = 0; //Clear Interrupt flag// return; //return }}
//***************************************************************
// Serial Port initialization for 9600 baud
//***************************************************************
void SerInit()
{
TMOD |=0x20;
TH1=-3;
SCON=0x50;
TR1=1;
TI=1;
}
//***************************************************************
// Delay for 1 MS
//***************************************************************
void Delay_MS(unsigned int value)
{
unsigned int x,y;
for(x=0;x<1000;x++)
for(y=0;y<value;y++);
}
//***************************************************************
// PWM setup
//***************************************************************
void pwm_setup()
{ TMOD = 0; pwm_width = 160; EA = 1; ET0 = 1; TR0 = 1;
TH0=0;
TL0=0;}
//***************************************************************
// Delay for 1 MS
//***************************************************************
void main()
{
unsigned int Temp;
unsigned char Ascii[10];
ADCinit();
SerInit();
lcd_init();
lcd_com(15); // first line
lcd_puts(" TEMPERATURE ");
lcd_com(0xC0); //second line
lcd_puts(" CONTROLLED FAN");
Delay_MS(100);
lcd_com(0x01);
lcd_com(0x80);
lcd_com(0x0C);
lcd_puts("TEMP deg C");
pwm_setup();
while(1)
{
AddressLatch();
Start();
EOCCheck();
Temp=(unsigned char)ReadADC();
Speed(Temp);
itoa(Temp ,Ascii);
lcd_com(0x84);
lcd_puts(Ascii);
}
}
//***************************************************************
// Integer to Ascii Conversion
//***************************************************************
void itoa(unsigned int value ,unsigned char *string)
{
if(value<10)
{
string[3]='\0';
string[2]=((value%10)+0x30);
value=value/10;
string[1]=((value%10)+0x30);
string[0]=' ';
}
else if(value<100)
{
string[3]='\0';
string[2]=((value%10)+0x30);
value=value/10;
string[1]=((value%10)+0x30);
string[0]=' ';
}
else if(value<1000)
{
string[3]='\0';
string[2]=((value%10)+0x30);
value=value/10;
string[1]=((value%10)+0x30);
value=value/10;
string[0]=((value%10)+0x30);
}
else if(value<10000)
{
string[4]='\0';
string[3]=((value%10)+0x30);
value=value/10;
string[2]=((value%10)+0x30);
value=value/10;
string[1]=((value%10)+0x30);
value=value/10;
string[0]=((value%10)+0x30);
}
}
//********************************************************************
//********************************************************************
void Speed(unsigned char Temp)
{
if(Temp>50)
pwm_width=0;
else if(Temp<50)
if(Temp<30)
pwm_width=255;
else
pwm_width=(255-((Temp-30)*6));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -