-->

16x2 LCD Interfacing with STM32,STM32F103C6

By

 16x2 LCD  Interfacing with STM32,STM32F103C6






  

lcd_init();

   LCD_LINE1;
  lcd_String("  GeElectron");
  LCD_LINE2;
   lcd_String("   Welcome");

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */

	  HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13, GPIO_PIN_SET);// LCD Enable PIN to High
	 	  	  HAL_Delay(500);
	 	  HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13, RESET);
	  	      HAL_Delay(500);
	  	  //  lcd_String("Hello");

  }
  /* USER CODE END 3 */
}
LCD.c File


/*
 * lcd.c
 *
 *  Created on: Sep 30, 2023
 *      Author: Geelabs
 */
#include "stm32f1xx_hal.h"
#include "lcd.h"
#include "main.h"



extern void Delay_Us (uint16_t us);
void lcd_Strobe(void)
{

	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_11, GPIO_PIN_SET);// LCD Enable PIN to High
    HAL_Delay(1);   
    HAL_GPIO_WritePin(GPIOB,GPIO_PIN_11, RESET);// LCD Enable High to Low
    HAL_Delay(1);
 }

void lcd_init(void)
{

  HAL_Delay(40);
  lcd_cmd(0x03);
  HAL_Delay(5);
  lcd_cmd(0x03);
  HAL_Delay(1);
  lcd_cmd(0x03);
  HAL_Delay(10);
  lcd_cmd(0x02); // Function set --> DL=0 (4 bit mode), N = 1 (2 line display) F = 0 (5x8 characters)
  HAL_Delay(1);
  lcd_cmd(0x28);
  lcd_cmd(0x08);
  HAL_Delay(10);
  lcd_cmd(0x00);
  lcd_cmd(0x01);
  HAL_Delay(3);
  lcd_cmd(0x00);

   lcd_cmd(0x0c);            // Make cursorinvisible
   lcd_Clear();            // Clear screen
   lcd_cmd(0x6);            // Set entry Mode(auto increment of cursor)
}

void lcd_cmd(__uint16_t cmd)
{
	    HAL_GPIO_WritePin(GPIOB,GPIO_PIN_10, GPIO_PIN_RESET);
        cmd = (cmd << 8) ;
        GPIOB->ODR =  (cmd & 0xf000);
        lcd_Strobe();
        cmd = (cmd << 4) ;
        GPIOB->ODR =  (cmd & 0xf000);
        lcd_Strobe();
}


void lcd_data(__uint16_t lcd_data)
{
    HAL_GPIO_WritePin(GPIOB,GPIO_PIN_10, GPIO_PIN_SET);
     lcd_data = (lcd_data << 8) ;
     GPIOB->ODR =  (lcd_data& 0xf000)|0x400;
     lcd_Strobe();
     lcd_data = (lcd_data << 4) ;
     GPIOB->ODR =  (lcd_data & 0xf000)|0x400;
     lcd_Strobe();
   }


void lcd_Clear(void)
{
    lcd_cmd(0x01);
    HAL_Delay(5);
}

void lcd_String(const char *ptr)  // ptr pointing the address of displaying string
{
    while (*ptr)             // check weather the endo of file then exit the loop
    {
        lcd_data(*ptr++);    // Sending data to LCD_data functions
    }
}




More Posts

gElectron. Powered by Blogger.

Contributors

16x2 LCD Interfacing with STM32,STM32F103C6

 16x2 LCD  Interfacing with STM32,STM32F103C6 lcd_init(); LCD_LINE1; lcd_String(" GeElectron"); LCD_LINE2; lc...

Contact Form

Name

Email *

Message *

Contact us

Name

Email *

Message *

Follow Us

https://www.facebook.com/gElectron-393939667321867/ FBbox/https://www.facebook.com/IVYthemes

Comments

[blogger]

MKRdezign

Test
google.com, pub-8429441124104529, DIRECT, f08c47fec0942fa0
[blogger]

Latest

[recent][newsticker]

Technology

Top Ads

RECENT COMMENTS

Subscribe Via Email

Subscribe to our newsletter to get the latest updates to your inbox. ;-)


Your email address is safe with us!

RECENT COMMENTS