Exemple #1
0
int main()
{
	mJTAGPortEnable(0);
	mPORTASetPinsDigitalOut(BIT_0|BIT_1|BIT_2|BIT_3|BIT_4|BIT_5|BIT_6|BIT_7);
	mPORTAClearBits(BIT_0|BIT_1|BIT_2|BIT_3|BIT_4|BIT_5|BIT_6|BIT_7);
	INTCONSET=0x1000;
	INTEnableSystemMultiVectoredInt();
	IEC0 =0;
	IFS0 = 0;
	INTCONCLR = 0x00000018;
	IEC0SET = 0x00088000;
	IPC3 = 0x1F000000;
	IPC4 = 0X17000000;
	lcdconfig();

while(1)
{
	if(IFS0 & 0x8000==1)
	{
		lcddata('3');
		PORTA=0X0F;
	}
	if(IFS0 & 0x80000==1)
	{
		lcddata('4');
		PORTA=0XFF;
	}
}
}
void dis_data(char data_value)
{
	char data_value1;
	
	data_value1=data_value&0xF0;
	lcddata(data_value1);
 
	data_value1=((data_value<<4)&0xF0);
	lcddata(data_value1);
}
Exemple #3
0
void manualmode()
{
	menudisplay();
	int j=0;
	lcdcmd(0xC0);
	while(str6[j]!='\0')
	{
 		lcddata(str6[j]);
 		j++;
	}
	while(PORTDbits.RD6==1&&PORTDbits.RD13==1); 
	if(PORTDbits.RD13==0)
	{
 		PORTA=0xff;
		delay(1000000);
		PORTA=0x00;

	} 
	else if(PORTDbits.RD6==0)
	{
 		
		lcdcmd(0x01);
	}
	delay(1000000000);

}
Exemple #4
0
void automode()
{
	menudisplay();
	int j=0;
	lcdcmd(0xC0);
	while(str5[j]!='\0')
	{
  		lcddata(str5[j]);
  		j++;
	}
	while(PORTDbits.RD13==1&&PORTDbits.RD7==1);  
	if(PORTDbits.RD13==0)
	{
  		PORTA=0xff;
		delay(1000000);
	}
	else if(PORTDbits.RD7==0)
	{
 		manualmode();
	}
/*	while(PORTDbits.RD6==1);
	if(PORTDbits.RD6==0)
	{
 		i++;
 		lcdcmd(0x01);
	}*/
}
Exemple #5
0
void temps()                                                        //Function to display temp change                                                       
{
	int j;
  	j=0;
 	menudisplay();
 	lcdcmd(0xC0);
 	while(str3[j]!='\0')
  	{
    	lcddata(str3[j]);
    	j++;
  	}
	delay(10000000);
	while(PORTDbits.RD13==1&&PORTDbits.RD7==1&&PORTDbits.RD6==1);      //Wait till any key press
	if(PORTDbits.RD7==0)
	{
		i++;
		lcdcmd(0x01);
	}
	else if(PORTDbits.RD13==0)
	{
		settemp();
		delay(100000000);
	}
	else if(PORTDbits.RD6==0)
	{
		i--;
		lcdcmd(0x01);
	}

}
Exemple #6
0
void menudisplay()
{
	int j;
	j=0;
	lcdini();
	while(str4[j]!='\0')
	{
 		lcddata(str4[j]);
		j++;
	}
}
void main(void)
	{
	 unsigned int HI, LO, TOTAL;
	 unsigned char l, OV, OFR[16] = "Out Of Range...";
	 OV = 0;
	 T0 = 1;
	 TMOD = 0x05;
	 TL0 = 0;
	 TL1 = 0;
	 lcdinit();
	 while(1)
	 	{
		 do
		 	{
start: TR0 = 1;
			 MSDelay(145);
		 	 LO = TL0;
		 	 HI = TH0;
			 HI = HI << 8;
			 TOTAL = HI | LO;
			 Unit[0] = 'H';
			 Unit[1] = 'z';
			 Unit[2] = ' ';
			 Unit[3] = ' ';
			 if(OV == 1)
			 	{
				 TOTAL = TOTAL / 1000;
				 TOTAL = TOTAL + 65;
				 if(TOTAL > 125)
				 	{
					 for(l=0; l<16; l++)
					 	lcddata(OFR[l]);
					 for(l=0; l<16; l++)
					 	lcdcmd(0x10);
					 goto start; 
					 }
				 OV = 0;
				 Unit[0] = 'K';
			 	 Unit[1] = 'H';
			 	 Unit[2] = 'z';
				 Unit[3] = ' ';
				}
		 	 inttoLCD(TOTAL);

		 	 TL0 = 0;
		 	 TH0 = 0;
			}
		 while(TF0 == 0);
		 OV = 1;
		 TR0 = 0;
		 TF0 = 0;
		}
	}
Exemple #8
0
void settemp()
{

	int j,b,x,v;
	j=0;
	lcdcmd(0x01);
	lcdcmd(0x80);
	while(str7[j]!='\0')
	{
		lcddata(str7[j]);
		j++;
	}

	x = keypad();
	lcdcmd(0xC0);
	lcddata(x+48);
	delay(1000000000);
	v = keypad();
	lcdcmd(0xC1);
	lcddata(v+48);
	PORTA=0xff;
}
unsigned int GetInput()
	{
	 unsigned char L, cnt, Key[5];
	 unsigned int Entry = 0;
	 cnt = 0;
	 do
		{
Re:		 Key[cnt] = KeypadRead();
		 L = Key[cnt];
		 if(L == '+' | L == '-')
		 	goto Re;
		 if(L == '=')
		 	continue;
		 lcddata(Key[cnt]);
		 Key[cnt] = Key[cnt] - 48;
		 cnt++;

		}
	 while(L != '=' & cnt != 5);
	 switch(cnt)
	 	{
		 case(1):
		 	{
			 Entry = Key[0];
			 break;
			}
		 case(2):
		 	{
			 Entry = (Key[0] * 10) + Key[1];
			 break;
			}
		 case(3):
		 	{
			 Entry = (Key[0] * 100) + (Key[1] * 10) + Key[2];
			 break;
			}
		 case(4):
		 	{
			 Entry = (Key[0] * 1000) + (Key[1] * 100) + (Key[2] * 10) + Key[3];
			 break;
			}
		 case(5):
		 	{
			 Entry = (Key[0] * 10000) + (Key[1] * 1000) + (Key[2] * 100) + (Key[3] * 10) + Key[4];
			 break;
			}
		}
	 return Entry;
	}
Exemple #10
0
void batteryv()                                                      //Function to display battery voltage
{
	int j;
  	j=0;
 	menudisplay();
 	lcdcmd(0xC0);
 	while(str2[j]!='\0')
  	{
    	lcddata(str2[j]);
    	j++;
  	}
	delay(10000000);
	while(PORTDbits.RD13==1&&PORTDbits.RD7==1&&PORTDbits.RD6==1);        //Wait till any key press
	if(PORTDbits.RD7==0)
	{
		i++;
		lcdcmd(0x01);
	}
	else if(PORTDbits.RD13==0)
	{
		PORTA=0xff;
		delay(1000000);
		PORTA=0x00;	
		while(PORTDbits.RD6==1);
		if(PORTDbits.RD6==0)
		{
			lcdcmd(0x01);
		}
	}
	else if(PORTDbits.RD6==0)
	{
		i--;
		lcdcmd(0x01);
	}

}
Exemple #11
0
void mode()                                                           //Function for mode selection
{
	int j;
  	j=0;
 	menudisplay();
 	lcdcmd(0xC0);
	while(str1[j]!='\0')
  	{
       lcddata(str1[j]);
       j++;
  	}
	delay(10000000);
	while(PORTDbits.RD13==1&&PORTDbits.RD7==1);                           //Wait till any key press
	if(PORTDbits.RD7==0)
	{
	   i++;
	   lcdcmd(0x01);
	}
	else if(PORTDbits.RD13==0)
	{
	   mode2();
	}

}
void main()
	{
	 float Frequency, Percent, LowTime, HighTime, TotalDelayMilli, TotalDelayMicro;
	 unsigned int ConvHH, ConvLH, ValueH, ConvHL, ConvLL, ValueL;
	 unsigned char x, HighH, LowH, HighL, LowL;
	 unsigned char Freq[17] = "Freq:         Hz", DutyC[17] = "Duty Cycle:    %";
	 unsigned char colloc;

	 Status = 0;
	 KEYPAD = 0xF0;			// make higher bits of keypad port that is column bits input and low row bits outputs
	 Clock = 0;
	 lcdcmd(0x38);			// 2 lines and 5X7 matrix
	 lcdcmd(0x0C);			// Display ON, Cursor Blinking = 0x0E But this command is Display ON, Cursor OFF
	 lcdcmd(0x01);			// Clear Display Screen
	 lcdcmd(0x80);			// Force Cursor to the beginning of the First Line
	 lcdcmd(0x06);
	 
main:lcdcmd(0x01);
	 for(x = 0; x<16; x++)
	 	lcddata(Freq[x]);
	 lcdcmd(0xC0);
	 for(x = 0; x<16; x++)
	 	lcddata(DutyC[x]);
	 lcdcmd(0x80);
	 for(x=0; x<6; x++)
	 	lcdcmd(0x16);
	 lcdcmd(0x0E);
	 Frequency = GetInput();
	 if(Frequency > 20000)
	 	goto main;
	 lcdcmd(0x0C);
	 lcdcmd(0xC0);
	 for(x = 0; x<12; x++)
	 	lcdcmd(0x16);
	 lcdcmd(0x0E);
	 Percent = GetInput();
	 lcdcmd(0x0C);
	 TotalDelayMilli = (1 / Frequency) * 1000;
	 TotalDelayMicro = (TotalDelayMilli * 1000) - 45;	//With correction of 45
	 HighTime = (TotalDelayMicro / 100) * Percent;
	 LowTime = TotalDelayMicro - HighTime;

	 ValueH = 65536 - HighTime;									 
	 ConvLH = ValueH & 0x00FF;				// Zeroing the Higher 8 bits to have Lower 8 bits
	 LowH = ConvLH;						// Storing in a 8 bit character
	 ConvHH = ValueH & 0xFF00;				// Masking the Lower 8 bits to have Higher 8 bits
	 ConvHH = ConvHH >> 8;					// Shifting right 8 bits to hit to the Lower Part to save it to a 8-bit character
	 HighH = ConvHH;					// Storing in a 8 bit character
	 
	 ValueL = 65536 - LowTime;									
	 ConvLL = ValueL & 0x00FF;				// Zeroing the Higher 8 bits to have Lower 8 bits
	 LowL = ConvLL;						// Storing in a 8 bit character
	 ConvHL = ValueL & 0xFF00;				// Masking the Lower 8 bits to have Higher 8 bits
	 ConvHL = ConvHL >> 8;					// Shifting right 8 bits to hit to the Lower Part to save it to a 8-bit character
	 HighL = ConvHL;									
	 
	 Status = 1;
	 while(1)						//2 Machine Cycle
		{
		 Clock = 1;					//1 MC
		 TimerH(HighH, LowH);
		 Clock = 0;
		 TimerL(HighL, LowL);
		 colloc = KEYPAD;				//2 MC		 
	 	 colloc &= 0xF0;				//2 MC		 
		 if(colloc == 0xE0)				//4 MC
		 	{
	 	 	 MSDelay(5);
		 	 colloc = KEYPAD;			//read the columns
		 	 colloc &= 0xF0;			//mask unused bits
			 if(colloc == 0xE0)
			 	{
				 Status = 0;
				 goto main;	 
				}
			}												
		}
	}							//main braces
void inttoLCD(unsigned int value)
	{
	 unsigned int x, y, z, d[5];
	 char l;
	 x = value / 10; 										// => 6553
	 d[0] = (value % 10) + 48; 					// => 6 (LSD) *
	 d[1] = (x % 10) + 48;	 						// => 3 *
	 y = x / 10; 												// => 655
	 d[2] = (y % 10) + 48; 							// => 5 *
	 z = y / 10; 												// => 65
	 d[3] = (z % 10) + 48;							// => 5 *
	 d[4] = (z / 10) + 48;							// => 6 (MSD) *
	 if(d[4] == 48 & d[3] == 48 & d[2] == 48 & d[1] == 48)
		{
		  lcddata(d[0]);
		  lcddata(' ');
		  for(l=0; l<4; l++)
		 	 lcddata(Unit[l]);
		  for(l=0 ; l<11 ; l++)
		  	 lcddata(' ');
		  for(l=0 ; l<17 ; l++)
		 	 lcdcmd(0x10);
		  
		}
	 if(d[4] == 48 & d[3] == 48 & d[2] == 48 & d[1] != 48)
		{
		 for(l=1; l>=0; l--)
	 	 	lcddata(d[l]);
		 lcddata(' ');
		 for(l=0; l<4; l++)
		 	 lcddata(Unit[l]);
		 for(l=0 ; l<10 ; l++)
		  	 lcddata(' ');
		 for(l=0 ; l<17 ; l++)
		 	 lcdcmd(0x10);
		 
		}
	 if(d[4] == 48 & d[3] == 48 & d[2] != 48)
		{
		 for(l=2; l>=0; l--)
	 	 	lcddata(d[l]);
		 lcddata(' ');
		 for(l=0; l<4; l++)
		 	 lcddata(Unit[l]);
		 for(l=0 ; l<9 ; l++)
		  	 lcddata(' ');
		 for(l=0 ; l<17 ; l++)
		 	 lcdcmd(0x10);
		 
		}
	 if(d[4] == 48 & d[3] != 48)
	 	{
		 for(l=3; l>=0; l--)
	 	 	lcddata(d[l]);
		 lcddata(' ');
		 for(l=0; l<4; l++)
		 	lcddata(Unit[l]);
		 for(l=0 ; l<8 ; l++)
		  	 lcddata(' ');
		 for(l=0 ; l<17 ; l++)
		 	 lcdcmd(0x10);
		 
		}
	 if(d[4] != 48)
	 	{
		 for(l=4; l>=0; l--)
		 	lcddata(d[l]);
		 lcddata(' ');
		 for(l=0; l<4; l++)
		 	lcddata(Unit[l]);
		 		 for(l=0 ; l<7 ; l++)
		  	 lcddata(' ');
		 for(l=0 ; l<17 ; l++)
		 	 lcdcmd(0x10);

		}
	 }