Saturday, December 26, 2009

Automated Pedestal Fan Speed Control System

During nights, the temperature is initially quite high. As time passes, the
temperature starts dropping. Also, after a person falls asleep, the metabolic rate of one’s
body decreases. Thus, initially the fan/cooler needs to be run at full speed. As time
passes, one has to get up again and again to adjust the speed of the fan or the cooler. This
is a simple example where our system is going to be applied, used in our day-to-day life.

Our main focus was to a give this problem a very suitable .very timely, very
simple solution. In most of the places in Sri Lanka rather than Air Conditioners, fans are
being used. For an example: - In government offices. So we had our thoughts and at last
we decided to implement this system to a pedestal fan. But if someone wants we can
easily implement this system to ceiling fan also.


The method we use here is quite simple. The main device, equipment we use here
is the PIC micro controller. It is the main controller which controls almost all the devices
in our system. Main functionality of our system is to change the speeds of the fan
according to room temperature and to user desired values.



The following are the PIC microcontroller coding (using mikroC) for our entire system.
//Initialization
volatile unsigned int k=0;
volatile unsigned int t=0;
volatile unsigned int set=0;
int check=0;
unsigned int cnt=0;
void interrupt(void){
if (INTCON.INT0IF) {
k=1;
INTCON.INT0IF=0;
}
}
void interrupt_low(void){
if(INTCON.TMR0IF){
cnt++;
if(cnt){
check=1;
cnt=0;
}
INTCON.TMR0IF=0;
}
}
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB7_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;
sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB7_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
char keypadPort at PORTD;
volatile unsigned int tMin=12,tMid=14,tMax=16;
unsigned char tMin1[10]="",tMid1[10]="",tMax1[10]="";
unsigned short d1=0,d2=0;
unsigned short m1=0,m2=0,m=0;
unsigned short kp = 0;
char conv[10]="",cm[10]="";
unsigned temp;
//Cannot use this function
/*unsigned short getKey(unsigned short kp1){
switch (kp1) {
case 1: kp1 = 49; m1=1; break; // 1
case 2: kp1 = 50; m1=2; break; // 2
case 3: kp1 = 51; m1=3; break; // 3
case 5: kp1 = 52; m1=4; break; // 4
case 6: kp1 = 53; m1=5; break; // 5
10/30/2009
18
case 7: kp1 = 54; m1=6; break; // 6
case 9: kp1 = 55; m1=7; break; // 7
case 10: kp1 = 56; m1=8; break; // 8
case 11: kp1 = 57; m1=9; break; // 9
case 14: kp1 = 48; m1=0; break; // 0
default: Lcd_Out(2,1,"Invalid Key"); delay_ms(1000); continue;
}
}*/
void main() {
RCON.IPEN=1;
TMR0L=0;
INTCON.TMR0IF=0;
INTCON2.TMR0IP=0;
INTCON.INT0IE=1;
INTCON.GIEH =1;
INTCON.GIEL=1;
Lcd_Init();
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);
Keypad_Init();
ADCON0=0x18;
TRISA=0x08;
TRISB=0x01;
TRISC=0x00;
TRISD=0xff;
T0CON=0x57; //Timer
T0CON.TMR0ON=t; //Timer Enable
//T0CON=0xD7; //Timer
for(;;){
temp=(ADC_read(3)+1)*100/240;
IntToStr(temp,conv);
Lcd_Out(1,1,"");
Lcd_Out(1, 1, "Room Temprature ");
Lcd_Out(2,1,"");
Lcd_Out_Cp(conv);
Lcd_Chr(2,7,0x60);
Lcd_Chr(2,8,'C');
delay_ms(1000);
Lcd_Cmd(_LCD_CLEAR);
if(tempPORTC=0x00;
}
else if(tempPORTC=0x01;
}
else if(tempPORTC=0x02;
}
else{
PORTC=0x04;
}
while(k){
10/30/2009
19
//-----------------------------------------------------------------------------
//Display Current Settings
IntToStr(tMin,tMin1);
IntToStr(tMid,tMid1);
IntToStr(tMax,tMax1);
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"Old Settings");
Lcd_Out(2,7,"");
Lcd_Out_Cp(tMin1);
Lcd_Out(2,1,"MIN TEMP: ");
delay_ms(1000);
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"Old Settings");
Lcd_Out(2,7,"");
Lcd_Out_Cp(tMid1);
Lcd_Out(2,1,"MID TEMP: ");
delay_ms(1000);
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"Old Settings");
Lcd_Out(2,7,"");
Lcd_Out_Cp(tMax1);
Lcd_Out(2,1,"MAX TEMP: ");
delay_ms(1000);
//-----------------------------------------------------------------------------
if(t==1){
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"Timer Currently");
Lcd_Out(2,4,"");
IntToStr(m,cm);
Lcd_Out_Cp(cm);
Lcd_Out_Cp(" Minutes");
Lcd_Out(2,1,"Remain");
delay_ms(1000);
}
else if(t==0){
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"Timer Currently");
Lcd_Out(2,1,"Disable");
delay_ms(1000);
}
//-----------------------------------------------------------------------------
//Request to Change Settings
if(set==0){
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"Change Settings");
Lcd_Out(2,1,"(Y/N): ");
kp = 0;
do{
kp = Keypad_Key_Click();
}while (!kp);
10/30/2009
20
switch (kp) {
case 4: kp = 65; set=1; Lcd_Out(2,8,"Y"); break; // A
case 8: kp = 66; set=0; Lcd_Out(2,8,"N"); break; // B
default: Lcd_Out(2,1,"Invalid Key"); delay_ms(1000); continue;
}
delay_ms(1000);
}
//-----------------------------------------------------------------------------
//Change Timer Settings
if(set==1){
set=0;
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"Enable Timer");
Lcd_Out(2,1,"(Y/N): ");
kp = 0;
do{
kp = Keypad_Key_Click();
}while (!kp);
switch (kp) {
case 4: kp = 65; t=1; break; // A
case 8: kp = 66; t=0; break; // B
default: Lcd_Out(2,1,"Invalid Key"); delay_ms(1000); continue;
}
if(t==1){
Lcd_Out(2,8,"Y");
delay_ms(1000);
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"");
Lcd_Out(1,1,"Set Timer Value");
Lcd_Out(2,1,"Minutes: ");
kp = 0;
do{
kp = Keypad_Key_Click();
}while (!kp);
switch (kp) {
case 1: kp = 49; m1=1; break; // 1
case 2: kp = 50; m1=2; break; // 2
case 3: kp = 51; m1=3; break; // 3
case 5: kp = 52; m1=4; break; // 4
case 6: kp = 53; m1=5; break; // 5
case 7: kp = 54; m1=6; break; // 6
case 9: kp = 55; m1=7; break; // 7
case 10: kp = 56; m1=8; break; // 8
case 11: kp = 57; m1=9; break; // 9
case 14: kp = 48; m1=0; break; // 0
default: Lcd_Out(2,1,"Invalid Key"); delay_ms(1000); continue;
}
10/30/2009
21
Lcd_Out(2,10,"");
Lcd_Chr_Cp(kp);
kp=0;
do{
kp = Keypad_Key_Click();
}while (!kp);
switch (kp) {
case 1: kp = 49; m2=1; break; // 1
case 2: kp = 50; m2=2; break; // 2
case 3: kp = 51; m2=3; break; // 3
case 5: kp = 52; m2=4; break; // 4
case 6: kp = 53; m2=5; break; // 5
case 7: kp = 54; m2=6; break; // 6
case 9: kp = 55; m2=7; break; // 7
case 10: kp = 56; m2=8; break; // 8
case 11: kp = 57; m2=9; break; // 9
case 14: kp = 48; m2=0; break; // 0
default: Lcd_Out(2,1,"Invalid Key"); delay_ms(1000); continue;
}
Lcd_Chr_Cp(kp);
m=m1*10+m2;
delay_ms(1000);
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"");
Lcd_Out(1,1,"Timer Enable");
delay_ms(1000);
}
else{
Lcd_Out(2,8,"N");
delay_ms(1000);
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"");
Lcd_Out(1,1,"Timer Disable");
delay_ms(1000);
}
//-----------------------------------------------------------------------------
//Change Temperature Settings
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"TemperatureValue");
Lcd_Out(2,1,"Set Minimum: ");
kp = 0;
do{
kp = Keypad_Key_Click();
}while (!kp);
switch (kp) {
case 1: kp = 49; d1=1; break; // 1
case 2: kp = 50; d1=2; break; // 2
case 3: kp = 51; d1=3; break; // 3
10/30/2009
22
case 5: kp = 52; d1=4; break; // 4
case 6: kp = 53; d1=5; break; // 5
case 7: kp = 54; d1=6; break; // 6
case 9: kp = 55; d1=7; break; // 7
case 10: kp = 56; d1=8; break; // 8
case 11: kp = 57; d1=9; break; // 9
case 14: kp = 48; d1=0; break; // 0
default: Lcd_Out(2,1,"Invalid Key"); delay_ms(1000); continue;
}
//Lcd_Out(2,1,"");
Lcd_Chr_Cp(kp);
kp=0;
do{
kp = Keypad_Key_Click();
}while (!kp);
switch (kp) {
case 1: kp = 49; d2=1; break; // 1
case 2: kp = 50; d2=2; break; // 2
case 3: kp = 51; d2=3; break; // 3
case 5: kp = 52; d2=4; break; // 4
case 6: kp = 53; d2=5; break; // 5
case 7: kp = 54; d2=6; break; // 6
case 9: kp = 55; d2=7; break; // 7
case 10: kp = 56; d2=8; break; // 8
case 11: kp = 57; d2=9; break; // 9
case 14: kp = 48; d2=0; break; // 0
default: Lcd_Out(2,1,"Invalid Key"); delay_ms(1000); continue;
}
Lcd_Chr_Cp(kp);
tMin=d1*10+d2;
delay_ms(1000);
//-----------------------------------------------------------------------------
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"TemperatureValue");
Lcd_Out(2,1,"Set Medium: ");
kp = 0;
do{
kp = Keypad_Key_Click();
}while (!kp);
switch (kp) {
case 1: kp = 49; d1=1; break; // 1
case 2: kp = 50; d1=2; break; // 2
case 3: kp = 51; d1=3; break; // 3
case 5: kp = 52; d1=4; break; // 4
case 6: kp = 53; d1=5; break; // 5
case 7: kp = 54; d1=6; break; // 6
case 9: kp = 55; d1=7; break; // 7
case 10: kp = 56; d1=8; break; // 8
10/30/2009
23
case 11: kp = 57; d1=9; break; // 9
case 14: kp = 48; d1=0; break; // 0
default: Lcd_Out(2,1,"Invalid Key"); delay_ms(1000); continue;
}
//Lcd_Out(2,1,"");
Lcd_Chr_Cp(kp);
kp=0;
do{
kp = Keypad_Key_Click();
}while (!kp);
switch (kp) {
case 1: kp = 49; d2=1; break; // 1
case 2: kp = 50; d2=2; break; // 2
case 3: kp = 51; d2=3; break; // 3
case 5: kp = 52; d2=4; break; // 4
case 6: kp = 53; d2=5; break; // 5
case 7: kp = 54; d2=6; break; // 6
case 9: kp = 55; d2=7; break; // 7
case 10: kp = 56; d2=8; break; // 8
case 11: kp = 57; d2=9; break; // 9
case 14: kp = 48; d2=0; break; // 0
default: Lcd_Out(2,1,"Invalid Key"); delay_ms(1000); continue;
}
Lcd_Chr_Cp(kp);
tMid=d1*10+d2;
delay_ms(1000);
//-----------------------------------------------------------------------------
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"TemperatureValue");
Lcd_Out(2,1,"Set Maximum: ");
kp = 0;
do{
kp = Keypad_Key_Click();
}while (!kp);
switch (kp) {
case 1: kp = 49; d1=1; break; // 1
case 2: kp = 50; d1=2; break; // 2
case 3: kp = 51; d1=3; break; // 3
case 5: kp = 52; d1=4; break; // 4
case 6: kp = 53; d1=5; break; // 5
case 7: kp = 54; d1=6; break; // 6
case 9: kp = 55; d1=7; break; // 7
case 10: kp = 56; d1=8; break; // 8
case 11: kp = 57; d1=9; break; // 9
case 14: kp = 48; d1=0; break; // 0
default: Lcd_Out(2,1,"Invalid Key"); delay_ms(1000); continue;
}
Lcd_Chr_Cp(kp);
kp=0;
10/30/2009
24
do{
kp = Keypad_Key_Click();
}while (!kp);
switch (kp) {
case 1: kp = 49; d2=1; break; // 1
case 2: kp = 50; d2=2; break; // 2
case 3: kp = 51; d2=3; break; // 3
case 5: kp = 52; d2=4; break; // 4
case 6: kp = 53; d2=5; break; // 5
case 7: kp = 54; d2=6; break; // 6
case 9: kp = 55; d2=7; break; // 7
case 10: kp = 56; d2=8; break; // 8
case 11: kp = 57; d2=9; break; // 9
case 14: kp = 48; d2=0; break; // 0
default: Lcd_Out(2,1,"Invalid Key"); delay_ms(1000); continue;
}
Lcd_Chr_Cp(kp);
tMax=d1*10+d2;
delay_ms(1000);
//-----------------------------------------------------------------------------
//Check Temperature Values
if(tMin>=tMidtMin>=tMaxtMid>=tMax){
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"Invalid Values");
delay_ms(1000);
continue;
}
//-----------------------------------------------------------------------------
//To Exit
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"Press ANY key");
Lcd_Out(2,1,"to Exit");
kp = 0;
do{
kp = Keypad_Key_Click();
}while (!kp);
}
k=0;
Lcd_Cmd(_LCD_CLEAR);
}
}
}

Monday, November 16, 2009

Automated Pedestal Fan Speed Control System Project

During nights, the temperature is initially quite high. As time passes, the
temperature starts dropping. Also, after a person falls asleep, the metabolic rate of one’s
body decreases. Thus, initially the fan/cooler needs to be run at full speed. As time
passes, one has to get up again and again to adjust the speed of the fan or the cooler. This
is a simple example where our system is going to be applied, used in our day-to-day life.

Our main focus was to a give this problem a very suitable .very timely, very
simple solution. In most of the places in Sri Lanka rather than Air Conditioners, fans are
being used. For an example: - In government offices. So we had our thoughts and at last
we decided to implement this system to a pedestal fan. But if someone wants we can
easily implement this system to ceiling fan also.


The method we use here is quite simple. The main device, equipment we use here
is the PIC micro controller. It is the main controller which controls almost all the devices
in our system. Main functionality of our system is to change the speeds of the fan
according to room temperature and to user desired values.



The following are the PIC microcontroller coding (using mikroC) for our entire system.
//Initialization
volatile unsigned int k=0;
volatile unsigned int t=0;
volatile unsigned int set=0;
int check=0;
unsigned int cnt=0;
void interrupt(void){
if (INTCON.INT0IF) {
k=1;
INTCON.INT0IF=0;
}
}
void interrupt_low(void){
if(INTCON.TMR0IF){
cnt++;
if(cnt){
check=1;
cnt=0;
}
INTCON.TMR0IF=0;
}
}
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB7_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;
sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB7_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
char keypadPort at PORTD;
volatile unsigned int tMin=12,tMid=14,tMax=16;
unsigned char tMin1[10]="",tMid1[10]="",tMax1[10]="";
unsigned short d1=0,d2=0;
unsigned short m1=0,m2=0,m=0;
unsigned short kp = 0;
char conv[10]="",cm[10]="";
unsigned temp;
//Cannot use this function
/*unsigned short getKey(unsigned short kp1){
switch (kp1) {
case 1: kp1 = 49; m1=1; break; // 1
case 2: kp1 = 50; m1=2; break; // 2
case 3: kp1 = 51; m1=3; break; // 3
case 5: kp1 = 52; m1=4; break; // 4
case 6: kp1 = 53; m1=5; break; // 5
10/30/2009
18
case 7: kp1 = 54; m1=6; break; // 6
case 9: kp1 = 55; m1=7; break; // 7
case 10: kp1 = 56; m1=8; break; // 8
case 11: kp1 = 57; m1=9; break; // 9
case 14: kp1 = 48; m1=0; break; // 0
default: Lcd_Out(2,1,"Invalid Key"); delay_ms(1000); continue;
}
}*/
void main() {
RCON.IPEN=1;
TMR0L=0;
INTCON.TMR0IF=0;
INTCON2.TMR0IP=0;
INTCON.INT0IE=1;
INTCON.GIEH =1;
INTCON.GIEL=1;
Lcd_Init();
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);
Keypad_Init();
ADCON0=0x18;
TRISA=0x08;
TRISB=0x01;
TRISC=0x00;
TRISD=0xff;
T0CON=0x57; //Timer
T0CON.TMR0ON=t; //Timer Enable
//T0CON=0xD7; //Timer
for(;;){
temp=(ADC_read(3)+1)*100/240;
IntToStr(temp,conv);
Lcd_Out(1,1,"");
Lcd_Out(1, 1, "Room Temprature ");
Lcd_Out(2,1,"");
Lcd_Out_Cp(conv);
Lcd_Chr(2,7,0x60);
Lcd_Chr(2,8,'C');
delay_ms(1000);
Lcd_Cmd(_LCD_CLEAR);
if(tempPORTC=0x00;
}
else if(tempPORTC=0x01;
}
else if(tempPORTC=0x02;
}
else{
PORTC=0x04;
}
while(k){
10/30/2009
19
//-----------------------------------------------------------------------------
//Display Current Settings
IntToStr(tMin,tMin1);
IntToStr(tMid,tMid1);
IntToStr(tMax,tMax1);
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"Old Settings");
Lcd_Out(2,7,"");
Lcd_Out_Cp(tMin1);
Lcd_Out(2,1,"MIN TEMP: ");
delay_ms(1000);
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"Old Settings");
Lcd_Out(2,7,"");
Lcd_Out_Cp(tMid1);
Lcd_Out(2,1,"MID TEMP: ");
delay_ms(1000);
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"Old Settings");
Lcd_Out(2,7,"");
Lcd_Out_Cp(tMax1);
Lcd_Out(2,1,"MAX TEMP: ");
delay_ms(1000);
//-----------------------------------------------------------------------------
if(t==1){
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"Timer Currently");
Lcd_Out(2,4,"");
IntToStr(m,cm);
Lcd_Out_Cp(cm);
Lcd_Out_Cp(" Minutes");
Lcd_Out(2,1,"Remain");
delay_ms(1000);
}
else if(t==0){
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"Timer Currently");
Lcd_Out(2,1,"Disable");
delay_ms(1000);
}
//-----------------------------------------------------------------------------
//Request to Change Settings
if(set==0){
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"Change Settings");
Lcd_Out(2,1,"(Y/N): ");
kp = 0;
do{
kp = Keypad_Key_Click();
}while (!kp);
10/30/2009
20
switch (kp) {
case 4: kp = 65; set=1; Lcd_Out(2,8,"Y"); break; // A
case 8: kp = 66; set=0; Lcd_Out(2,8,"N"); break; // B
default: Lcd_Out(2,1,"Invalid Key"); delay_ms(1000); continue;
}
delay_ms(1000);
}
//-----------------------------------------------------------------------------
//Change Timer Settings
if(set==1){
set=0;
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"Enable Timer");
Lcd_Out(2,1,"(Y/N): ");
kp = 0;
do{
kp = Keypad_Key_Click();
}while (!kp);
switch (kp) {
case 4: kp = 65; t=1; break; // A
case 8: kp = 66; t=0; break; // B
default: Lcd_Out(2,1,"Invalid Key"); delay_ms(1000); continue;
}
if(t==1){
Lcd_Out(2,8,"Y");
delay_ms(1000);
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"");
Lcd_Out(1,1,"Set Timer Value");
Lcd_Out(2,1,"Minutes: ");
kp = 0;
do{
kp = Keypad_Key_Click();
}while (!kp);
switch (kp) {
case 1: kp = 49; m1=1; break; // 1
case 2: kp = 50; m1=2; break; // 2
case 3: kp = 51; m1=3; break; // 3
case 5: kp = 52; m1=4; break; // 4
case 6: kp = 53; m1=5; break; // 5
case 7: kp = 54; m1=6; break; // 6
case 9: kp = 55; m1=7; break; // 7
case 10: kp = 56; m1=8; break; // 8
case 11: kp = 57; m1=9; break; // 9
case 14: kp = 48; m1=0; break; // 0
default: Lcd_Out(2,1,"Invalid Key"); delay_ms(1000); continue;
}
10/30/2009
21
Lcd_Out(2,10,"");
Lcd_Chr_Cp(kp);
kp=0;
do{
kp = Keypad_Key_Click();
}while (!kp);
switch (kp) {
case 1: kp = 49; m2=1; break; // 1
case 2: kp = 50; m2=2; break; // 2
case 3: kp = 51; m2=3; break; // 3
case 5: kp = 52; m2=4; break; // 4
case 6: kp = 53; m2=5; break; // 5
case 7: kp = 54; m2=6; break; // 6
case 9: kp = 55; m2=7; break; // 7
case 10: kp = 56; m2=8; break; // 8
case 11: kp = 57; m2=9; break; // 9
case 14: kp = 48; m2=0; break; // 0
default: Lcd_Out(2,1,"Invalid Key"); delay_ms(1000); continue;
}
Lcd_Chr_Cp(kp);
m=m1*10+m2;
delay_ms(1000);
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"");
Lcd_Out(1,1,"Timer Enable");
delay_ms(1000);
}
else{
Lcd_Out(2,8,"N");
delay_ms(1000);
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"");
Lcd_Out(1,1,"Timer Disable");
delay_ms(1000);
}
//-----------------------------------------------------------------------------
//Change Temperature Settings
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"TemperatureValue");
Lcd_Out(2,1,"Set Minimum: ");
kp = 0;
do{
kp = Keypad_Key_Click();
}while (!kp);
switch (kp) {
case 1: kp = 49; d1=1; break; // 1
case 2: kp = 50; d1=2; break; // 2
case 3: kp = 51; d1=3; break; // 3
10/30/2009
22
case 5: kp = 52; d1=4; break; // 4
case 6: kp = 53; d1=5; break; // 5
case 7: kp = 54; d1=6; break; // 6
case 9: kp = 55; d1=7; break; // 7
case 10: kp = 56; d1=8; break; // 8
case 11: kp = 57; d1=9; break; // 9
case 14: kp = 48; d1=0; break; // 0
default: Lcd_Out(2,1,"Invalid Key"); delay_ms(1000); continue;
}
//Lcd_Out(2,1,"");
Lcd_Chr_Cp(kp);
kp=0;
do{
kp = Keypad_Key_Click();
}while (!kp);
switch (kp) {
case 1: kp = 49; d2=1; break; // 1
case 2: kp = 50; d2=2; break; // 2
case 3: kp = 51; d2=3; break; // 3
case 5: kp = 52; d2=4; break; // 4
case 6: kp = 53; d2=5; break; // 5
case 7: kp = 54; d2=6; break; // 6
case 9: kp = 55; d2=7; break; // 7
case 10: kp = 56; d2=8; break; // 8
case 11: kp = 57; d2=9; break; // 9
case 14: kp = 48; d2=0; break; // 0
default: Lcd_Out(2,1,"Invalid Key"); delay_ms(1000); continue;
}
Lcd_Chr_Cp(kp);
tMin=d1*10+d2;
delay_ms(1000);
//-----------------------------------------------------------------------------
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"TemperatureValue");
Lcd_Out(2,1,"Set Medium: ");
kp = 0;
do{
kp = Keypad_Key_Click();
}while (!kp);
switch (kp) {
case 1: kp = 49; d1=1; break; // 1
case 2: kp = 50; d1=2; break; // 2
case 3: kp = 51; d1=3; break; // 3
case 5: kp = 52; d1=4; break; // 4
case 6: kp = 53; d1=5; break; // 5
case 7: kp = 54; d1=6; break; // 6
case 9: kp = 55; d1=7; break; // 7
case 10: kp = 56; d1=8; break; // 8
10/30/2009
23
case 11: kp = 57; d1=9; break; // 9
case 14: kp = 48; d1=0; break; // 0
default: Lcd_Out(2,1,"Invalid Key"); delay_ms(1000); continue;
}
//Lcd_Out(2,1,"");
Lcd_Chr_Cp(kp);
kp=0;
do{
kp = Keypad_Key_Click();
}while (!kp);
switch (kp) {
case 1: kp = 49; d2=1; break; // 1
case 2: kp = 50; d2=2; break; // 2
case 3: kp = 51; d2=3; break; // 3
case 5: kp = 52; d2=4; break; // 4
case 6: kp = 53; d2=5; break; // 5
case 7: kp = 54; d2=6; break; // 6
case 9: kp = 55; d2=7; break; // 7
case 10: kp = 56; d2=8; break; // 8
case 11: kp = 57; d2=9; break; // 9
case 14: kp = 48; d2=0; break; // 0
default: Lcd_Out(2,1,"Invalid Key"); delay_ms(1000); continue;
}
Lcd_Chr_Cp(kp);
tMid=d1*10+d2;
delay_ms(1000);
//-----------------------------------------------------------------------------
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"TemperatureValue");
Lcd_Out(2,1,"Set Maximum: ");
kp = 0;
do{
kp = Keypad_Key_Click();
}while (!kp);
switch (kp) {
case 1: kp = 49; d1=1; break; // 1
case 2: kp = 50; d1=2; break; // 2
case 3: kp = 51; d1=3; break; // 3
case 5: kp = 52; d1=4; break; // 4
case 6: kp = 53; d1=5; break; // 5
case 7: kp = 54; d1=6; break; // 6
case 9: kp = 55; d1=7; break; // 7
case 10: kp = 56; d1=8; break; // 8
case 11: kp = 57; d1=9; break; // 9
case 14: kp = 48; d1=0; break; // 0
default: Lcd_Out(2,1,"Invalid Key"); delay_ms(1000); continue;
}
Lcd_Chr_Cp(kp);
kp=0;
10/30/2009
24
do{
kp = Keypad_Key_Click();
}while (!kp);
switch (kp) {
case 1: kp = 49; d2=1; break; // 1
case 2: kp = 50; d2=2; break; // 2
case 3: kp = 51; d2=3; break; // 3
case 5: kp = 52; d2=4; break; // 4
case 6: kp = 53; d2=5; break; // 5
case 7: kp = 54; d2=6; break; // 6
case 9: kp = 55; d2=7; break; // 7
case 10: kp = 56; d2=8; break; // 8
case 11: kp = 57; d2=9; break; // 9
case 14: kp = 48; d2=0; break; // 0
default: Lcd_Out(2,1,"Invalid Key"); delay_ms(1000); continue;
}
Lcd_Chr_Cp(kp);
tMax=d1*10+d2;
delay_ms(1000);
//-----------------------------------------------------------------------------
//Check Temperature Values
if(tMin>=tMidtMin>=tMaxtMid>=tMax){
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"Invalid Values");
delay_ms(1000);
continue;
}
//-----------------------------------------------------------------------------
//To Exit
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"Press ANY key");
Lcd_Out(2,1,"to Exit");
kp = 0;
do{
kp = Keypad_Key_Click();
}while (!kp);
}
k=0;
Lcd_Cmd(_LCD_CLEAR);
}
}
}