كود:
// ENG / ABDALLA HEGAZY **
// DATA / 2019/8/15 **
// Lcd pinout settings
sbit LCD_RS at RB0_bit;
sbit LCD_EN at RB1_bit;
sbit LCD_D7 at RB5_bit;
sbit LCD_D6 at RB4_bit;
sbit LCD_D5 at RB3_bit;
sbit LCD_D4 at RB2_bit;
// Pin direction
sbit LCD_RS_Direction at TRISB0_bit;
sbit LCD_EN_Direction at TRISB1_bit;
sbit LCD_D7_Direction at TRISB5_bit;
sbit LCD_D6_Direction at TRISB4_bit;
sbit LCD_D5_Direction at TRISB3_bit;
sbit LCD_D4_Direction at TRISB2_bit;
#define D3 delay_ms(300);
unsigned Temp1=0,Temp2=0,Temp3=0,Temp4=0,START=0;
void set()
{
delay_ms(1000);
Lcd_Out(1, 1, "Te1: < /Te2: ");
while(START==0)
{
LCD_Chr(1, 14, 48 + (( Temp2 / 10) % 10));
LCD_Chr(1, 15, 48 + ( Temp2 % 10));
LCD_Chr(1, 5, 48 + (( Temp1 / 10) % 10));
LCD_Chr(1, 6, 48 + ( Temp1 % 10));
if(PORTD.F0==1) { Temp1++; D3 }
if(PORTD.F1==1) { Temp1--; D3 }
if(PORTD.F2==1) { delay_ms(300); START=1; }
} START=0;
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1, 1, "Te1: /Te2: <");
Lcd_Out(2, 1, "Te3: /Te4: ");
while(START==0)
{
LCD_Chr(1, 5, 48 + (( Temp1 / 10) % 10));
LCD_Chr(1, 6, 48 + ( Temp1 % 10));
LCD_Chr(1, 14, 48 + (( Temp2 / 10) % 10));
LCD_Chr(1, 15, 48 + ( Temp2 % 10));
LCD_Chr(2, 5, 48 + (( Temp3 / 10) % 10));
LCD_Chr(2, 6, 48 + ( Temp3 % 10));
if(PORTD.F0==1) { Temp2++; D3 }
if(PORTD.F1==1) { Temp2--; D3 }
if(PORTD.F2==1) { delay_ms(300); START=1; }
} START=0;
//------------------------------------------------------//
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1, 1, "Te1: /Te2: ");
Lcd_Out(2, 1, "Te3: < /Te4: ");
while(START==0)
{
LCD_Chr(1, 5, 48 + (( Temp1 / 10) % 10));
LCD_Chr(1, 6, 48 + ( Temp1 % 10));
LCD_Chr(1, 14, 48 + (( Temp2 / 10) % 10));
LCD_Chr(1, 15, 48 + ( Temp2 % 10));
LCD_Chr(2, 5, 48 + (( Temp3 / 10) % 10));
LCD_Chr(2, 6, 48 + ( Temp3 % 10));
LCD_Chr(2, 14, 48 + (( Temp4 / 10) % 10));
LCD_Chr(2, 15, 48 + ( Temp4 % 10));
if(PORTD.F0==1) { Temp3++; D3 }
if(PORTD.F1==1) { Temp3--; D3 }
if(PORTD.F2==1) { delay_ms(300); START=1; }
} START=0;
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1, 1, "Te1: /Te2: ");
Lcd_Out(2, 1, "Te3: /Te4: <");
while(START==0)
{
LCD_Chr(1, 5, 48 + (( Temp1 / 10) % 10));
LCD_Chr(1, 6, 48 + ( Temp1 % 10));
LCD_Chr(1, 14, 48 + (( Temp2 / 10) % 10));
LCD_Chr(1, 15, 48 + ( Temp2 % 10));
LCD_Chr(2, 5, 48 + (( Temp3 / 10) % 10));
LCD_Chr(2, 6, 48 + ( Temp3 % 10));
LCD_Chr(2, 14, 48 + (( Temp4 / 10) % 10));
LCD_Chr(2, 15, 48 + ( Temp4 % 10));
if(PORTD.F0==1) { Temp4++; D3 }
if(PORTD.F1==1) { Temp4--; D3 }
if(PORTD.F2==1) { delay_ms(300); START=1; }
} START=0;
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1, 1, "Te1: /Te2: ");
Lcd_Out(2, 1, "Te3: /Te4: ");
}
void main() {
TRISB = 0; PORTB=0;
TRISD = 255; PORTD=0;
ADCON1 = 0x0F; // Configure all ports with analog function as digital
Lcd_Init();
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Out(1, 1, "Te1: /Te2: ");
Lcd_Out(2, 1, "Te3: /Te4: ");
while(1){
if(PORTD.F2==1){ delay_ms(250); set();}
//***********************************
LCD_Chr(1, 5, 48 + ((Temp1 / 10) % 10));
LCD_Chr(1, 6, 48 + (Temp1 % 10));
//***********************************
//***********************************
LCD_Chr(1, 14, 48 + ((Temp2 / 10) % 10));
LCD_Chr(1, 15, 48 + (Temp2 % 10));
//***********************************
//***********************************
LCD_Chr(2, 5, 48 + ((Temp3 / 10) % 10));
LCD_Chr(2, 6, 48 + (Temp3 % 10));
//***********************************
//***********************************
LCD_Chr(2, 14, 48 + ((Temp4 / 10) % 10));
LCD_Chr(2, 15, 48 + (Temp4 % 10));
//***********************************
}
}