Mikroc Pic 16f887 điều khiển bơm nước tự động Lcd display

Trong project Mikroc Pic 16f887 điều khiển bơm nước tự động hiển thị trên lcd và led đơn báo đầy và cạn thùng nước. Project gồm code mikroc và proteus mô phỏng, cuối bài có video hướng dẫn và link tải code.

/*Header******************************************************
  Project: auto pump water
  author: Minh Trung
  Site: http://giaoan.link   */
// LCD module connections
sbit LCD_RS at RD4_bit;
sbit LCD_EN at RD5_bit;
sbit LCD_D4 at RD0_bit;
sbit LCD_D5 at RD1_bit;
sbit LCD_D6 at RD2_bit;
sbit LCD_D7 at RD3_bit;
sbit LCD_RS_Direction at TRISD4_bit;
sbit LCD_EN_Direction at TRISD5_bit;
sbit LCD_D4_Direction at TRISD0_bit;
sbit LCD_D5_Direction at TRISD1_bit;
sbit LCD_D6_Direction at TRISD2_bit;
sbit LCD_D7_Direction at TRISD3_bit;
// End LCD module connections
char *text;                          //


void main() {
    ANSEL = 0;                    // All I/O pins are digital
    ANSELH = 0;
    TRISB=0XFF;
    TRISD=0X00;
    TRISE=0X00;
    PORTD=0;
    PORTB=0;
    PORTE=0;
    Lcd_Init();                      // LCD display initialization
    Lcd_Cmd(_LCD_CURSOR_OFF);        // LCD command (cursor off)
    Lcd_Cmd(_LCD_CLEAR);             // LCD command (clear LCD)
    text = "dientudieukhien";       // Define the first message
    Lcd_Out(1,1,text);               // Write the first message in the first line
    text = "Level warter";            // Define the second message
    Lcd_Out(2,1,text);               // Define the first message
    Delay_ms(2000);
   for(;;){
    if(portb.f2){
    Lcd_Cmd(_LCD_CURSOR_OFF);        // LCD command (cursor off)
    Lcd_Cmd(_LCD_CLEAR);             // LCD command (clear LCD)
    text = "dientudieukhien";       // Define the first message
    Lcd_Out(1,1,text);               // Write the first message in the first line
    text = "Empty";                 // Define the second message
    Lcd_Out(2,1,text);               // Define the first message
      porte.f2=1;
      portd.f7=1;}
   else{
      porte.f2=0;}
      
   if(portb.f0){
      porte.f0=0; }
      else{
      Lcd_Cmd(_LCD_CURSOR_OFF);        // LCD command (cursor off)
    Lcd_Cmd(_LCD_CLEAR);             // LCD command (clear LCD)
    text = "dientudieukhien";       // Define the first message
    Lcd_Out(1,1,text);               // Write the first message in the first line
    text = "Full";                  // Define the second message
    Lcd_Out(2,1,text);               // Define the first message
    porte.f0=1;porte.f1=0;porte.f2=0;portd.f7=0;}
   }
}