질문게시판 > lcd 모니터를 내려서 표기하

TODAY1,819 TOTAL10,480,243
사이트 이용안내
Login▼/회원가입
최신글보기 질문게시판 기술자료 동영상강좌

아두이노 센서 ATMEGA128 PWM LED 초음파 AVR 블루투스 LCD UART 모터 적외선


BASIC4MCU | 질문게시판 | lcd 모니터를 내려서 표기하

페이지 정보

작성자 수포자 작성일2023-04-06 19:29 조회29,286회 댓글5건

본문

	

안녕하세요 stm32의  가지고 코딩중입니다

lcd모니터에가다  영어를 아래줄에  나타내는 방법이 궁금하고

void lcd char(char s) ->하나 나타내는 함수

void lcd char(char x, char, y) 16비트중 원하는곳에 나타내는 함수

{  GPIO_ResetBits(GPIOB, TLCD_RS);

    GPIO_ResetBits(GPIOB, TLCD_RW);

if(y==0) GPIO_Write(DATA, x+0x80);

else if(y==1) GPIO_Write(DATA, x+0xc0);

E_Pules();

}

등 이걸 실행시킬려면 기존에 있는 코드를 지우고 수정하는건지 추가하는건지 알려주시면 감사합니다

추가도 해보고 기존에 있는걸 지워서 수정해도 계속 오류가 나서 뭔지를 모르겠습니다...

 

#include "stm32f4xx.h" 

 

#define TLCD_RS  GPIO_Pin_0   //LCD RS 신호

#define TLCD_RW GPIO_Pin_1  //LCD RW 신호

#define TLCD_E    GPIO_Pin_2  //LCD E 신호

#define TLCD_EN { GPIO_ResetBits(GPIOB, TLCD_E); GPIO_SetBits(GPIOB, TLCD_E);}

#define DATA  GPIOC

 

// delay 함수

static void Delay(const uint32_t Count)

{

  __IO uint32_t index = 0; 

  for(index = (16800 * Count); index != 0; index--);

}

 

static void Delay_us(const uint32_t Count)

{

  __IO uint32_t index = 0; 

  for(index = (16 * Count); index != 0; index--);

}

 

void Port_lnit(void)

{

  GPIO_InitTypeDef   GPIO_InitStructure;

  

  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB|RCC_AHB1Periph_GPIOC, ENABLE);

 

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;

  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;

  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2;

  GPIO_Init(GPIOB, &GPIO_InitStructure);

 

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|

                                             GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;

  GPIO_Init(GPIOC, &GPIO_InitStructure);

 

}

 

void E_Pulse(void)

{

  GPIO_SetBits(GPIOB, TLCD_E);

  Delay(5);

  GPIO_ResetBits(GPIOB, TLCD_E);

}

 

 

void TLCD_DATA(unsigned char data)

{

  GPIO_Write(DATA, data);

  TLCD_EN;

}

 

void Func_Set(void)

{

  GPIO_ResetBits(GPIOB, TLCD_RW);

  GPIO_ResetBits(GPIOB, TLCD_RS);

  GPIO_Write(DATA, 0x38);

  E_Pulse();

}

 

void lnit_LCD(void)

{

  GPIO_ResetBits(GPIOB, TLCD_E);

  Delay(15);

  Func_Set();

  Delay(10);

  Func_Set();

  Delay_us(150);

  Func_Set();

  GPIO_Write(DATA, 0x0f);

  E_Pulse();

  GPIO_Write(DATA, 0x06);

  E_Pulse();

  GPIO_Write(DATA, 0x01);

  E_Pulse();

}

 

void lcd_char(char s)

{

  GPIO_SetBits(GPIOB, TLCD_RS);

  GPIO_Write(DATA, s);

  E_Pulse();

}

 

int main()

{

  Port_lnit();

  lnit_LCD();

  

  lcd_char('1');

  lcd_char('2');

  lcd_char('3');

  lcd_char('4');

  

  while(1);

}

  • BASIC4MCU 작성글 SNS에 공유하기
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기

댓글 5

조회수 29,286

master님의 댓글

master 작성일

#include "stm32f4xx.h"
//
#define TLCD_RS  GPIO_Pin_0  //LCD RS 신호
#define TLCD_RW  GPIO_Pin_1  //LCD RW 신호
#define TLCD_E    GPIO_Pin_2  //LCD E 신호
#define TLCD_EN  {GPIO_ResetBits(GPIOB,TLCD_E); GPIO_SetBits(GPIOB,TLCD_E);}
#define DATA      GPIOC
//
static void Delay_ms(const uint32_t Count){ __IO uint32_t index=0; for(index=(16800*Count);index!=0;index--); }
static void Delay_us(const uint32_t Count){ __IO uint32_t index=0; for(index=(  16*Count);index!=0;index--); }
//
void Port_lnit(void){
  GPIO_InitTypeDef  GPIO_InitStructure;
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB|RCC_AHB1Periph_GPIOC,ENABLE);
  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;
  GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;
  GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;
  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2;
  GPIO_Init(GPIOB,&GPIO_InitStructure);
  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
  GPIO_Init(GPIOC,&GPIO_InitStructure);
}
//
void E_Pulse(void){ GPIO_SetBits(GPIOB,TLCD_E); Delay(5); GPIO_ResetBits(GPIOB,TLCD_E); Delay(5); }
//
void LCD_INST(unsigned char d){ GPIO_ResetBits(GPIOB,TLCD_RW); GPIO_ResetBits(GPIOB,TLCD_RS); GPIO_Write(DATA,d); E_Pulse(); }
void LCD_DATA(unsigned char d){ GPIO_ResetBits(GPIOB,TLCD_RW); GPIO_SetBits(GPIOB,TLCD_RS);  GPIO_Write(DATA,d); E_Pulse(); }
void LCD_Str(unsigned char *s){ while(*s)TLCD_DATA(*s++); }
//
//
void lnit_LCD(void){
  GPIO_ResetBits(GPIOB,TLCD_E);  Delay(15);
  LCD_INST(0x38); Delay(10); LCD_INST(0x38); Delay_us(150); LCD_INST(0x38);
  LCD_INST(0x0f);
  LCD_INST(0x06);
  LCD_INST(0x01);
}
//
void lcd_char(char s){
  GPIO_SetBits(GPIOB,TLCD_RS); GPIO_Write(DATA,s); E_Pulse();
}
//
int main(){
  Port_lnit();
  lnit_LCD();
  LCD_INST(0x80); LCD_Str("Lcd Test");
  LCD_INST(0xC0); LCD_Str("1234");
  while(1);
}

수포자님의 댓글

수포자 댓글의 댓글 작성일

#include "stm32f4xx.h"
//
#define TLCD_RS  GPIO_Pin_0  //LCD RS 신호
#define TLCD_RW  GPIO_Pin_1  //LCD RW 신호
#define TLCD_E    GPIO_Pin_2  //LCD E 신호
#define TLCD_EN  {GPIO_ResetBits(GPIOB,TLCD_E); GPIO_SetBits(GPIOB,TLCD_E);}
#define DATA      GPIOC
//
static void Delay(const uint32_t Count){ __IO uint32_t index=0; for(index=(16800*Count);index!=0;index--); }
static void Delay_us(const uint32_t Count){ __IO uint32_t index=0; for(index=(  16*Count);index!=0;index--); }
//
void Port_lnit(void){
  GPIO_InitTypeDef  GPIO_InitStructure;
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB|RCC_AHB1Periph_GPIOC,ENABLE);
  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;
  GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;
  GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;
  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2;
  GPIO_Init(GPIOB,&GPIO_InitStructure);
  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
  GPIO_Init(GPIOC,&GPIO_InitStructure);
}
//
void E_Pulse(void){ GPIO_SetBits(GPIOB,TLCD_E); Delay(5); GPIO_ResetBits(GPIOB,TLCD_E); Delay(5); }
//
void LCD_INST(unsigned char d){ GPIO_ResetBits(GPIOB,TLCD_RW); GPIO_ResetBits(GPIOB,TLCD_RS); GPIO_Write(DATA,d); E_Pulse(); }
void LCD_DATA(unsigned char d){ GPIO_ResetBits(GPIOB,TLCD_RW); GPIO_SetBits(GPIOB,TLCD_RS);  GPIO_Write(DATA,d); E_Pulse(); }
void LCD_Str(unsigned char *s){ while(*s);LCD_DATA(*s++); }
//
//
void TLCD_DATA(unsigned char data)
{
  GPIO_Write(DATA, data);
  TLCD_EN;
}

void lnit_LCD(void){
  GPIO_ResetBits(GPIOB,TLCD_E);  Delay(15);
  LCD_INST(0x38); Delay(10); LCD_INST(0x38); Delay_us(150); LCD_INST(0x38);
  LCD_INST(0x0f);
  LCD_INST(0x06);
  LCD_INST(0x01);
}
//
void lcd_char(char s){
  GPIO_SetBits(GPIOB,TLCD_RS); GPIO_Write(DATA,s); E_Pulse();
}
//
int main(){
  Port_lnit();
  lnit_LCD();
  LCD_INST(0x80); LCD_Str("1234");
  LCD_INST(0xC0); LCD_Str("test");
  while(1);
}
마스터님 마스터님껄로 돌려봤는데 오류가 3개 떠서 이렇게 수정했습니다 그런데 화면에 안뜨는 이유가 뭔지 여쭤봐도 될까요?

수포자님의 댓글

수포자 작성일

아 이진수를 대입해야 되는군요 감사합니다 아 그리고 여러개를 표기할려면 따음표도 배워갑니다

master님의 댓글

master 댓글의 댓글 작성일

잘 되는가 봅니다.

수포자님의 댓글

수포자 댓글의 댓글 작성일

// stm32f4xx의 각 레지스터들을 정의한 헤더파일
#include "stm32f4xx.h"

#define TLCD_RS  GPIO_Pin_0  //LCD RS 신호
#define TLCD_RW GPIO_Pin_1  //LCD RW 신호
#define TLCD_E    GPIO_Pin_2  //LCD E 신호
#define TLCD_EN { GPIO_ResetBits(GPIOB, TLCD_E); GPIO_SetBits(GPIOB, TLCD_E);}
#define DATA  GPIOC

// delay 함수
static void Delay(const uint32_t Count)
{
  __IO uint32_t index = 0;
  for(index = (16800 * Count); index != 0; index--);
}

static void Delay_us(const uint32_t Count)
{
  __IO uint32_t index = 0;
  for(index = (16 * Count); index != 0; index--);
}

void Port_lnit(void)
{
  GPIO_InitTypeDef  GPIO_InitStructure;
 
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB|RCC_AHB1Periph_GPIOC, ENABLE);

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2;
  GPIO_Init(GPIOB, &GPIO_InitStructure);

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|
                                            GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
  GPIO_Init(GPIOC, &GPIO_InitStructure);

}

void E_Pulse(void)
{
  GPIO_SetBits(GPIOB, TLCD_E);
  Delay(5);
  GPIO_ResetBits(GPIOB, TLCD_E);
}


void TLCD_DATA(unsigned char data)
{
  GPIO_Write(DATA, data);
  TLCD_EN;
}

void Func_Set(void)
{
  GPIO_ResetBits(GPIOB, TLCD_RW);
  GPIO_ResetBits(GPIOB, TLCD_RS);
  GPIO_Write(DATA, 0x38);
  E_Pulse();
}

void lnit_LCD(void)
{
  GPIO_ResetBits(GPIOB, TLCD_E);
  Delay(15);
  Func_Set();
  Delay(10);
  Func_Set();
  Delay_us(150);
  Func_Set();
  GPIO_Write(DATA, 0x0f);
  E_Pulse();
  GPIO_Write(DATA, 0x06);
  E_Pulse();
  GPIO_Write(DATA, 0x01);
  E_Pulse();
}

void lcd_char(char s)
{
  GPIO_SetBits(GPIOB, TLCD_RS);
  GPIO_Write(DATA, s);
  E_Pulse();
}


void lcd_disp(char x, char y)

{  GPIO_ResetBits(GPIOB, TLCD_RS);

    GPIO_ResetBits(GPIOB, TLCD_RW);

if(y==0) GPIO_Write(DATA, x+0x80);

else if(y==1) GPIO_Write(DATA, x+0xc0);

E_Pulse();

}

int main()
{
  Port_lnit();
  lnit_LCD();
  lcd_char('l');
  lcd_char('s');
  lcd_char('a')
  lcd_char('n');
  lcd_disp(0,1); 
  lcd_char('2');
  lcd_char('0');

 

 

  while(1);
}
이런식으로 고쳐서 했더니 나왔습니다 감사합니다!

질문게시판HOME > 질문게시판 목록

MCU, AVR, 아두이노 등 전자공학에 관련된 질문을 무료회원가입 후 작성해주시면 전문가가 답변해드립니다.
ATMEGA128PWMLED초음파
아두이노AVR블루투스LCD
UART모터적외선ATMEGA
전체 스위치 센서
질문게시판 목록
제목 작성자 작성일 조회
질문 이런 투명 LCD는 뭐라고 부르나요?댓글[2] 이미지 펌린이 24-10-29 1142
질문 STM32F429ZIT6 rtc alarm 인터럽트 i2c lcd에 구현하는 방법댓글[5] aaahhhj 24-06-29 5802
질문 Atmega128 LCD 출력이 나오지 않습니다, 코드 확인 부탁드립니다. 이미지첨부파일 코드에막혀 24-06-25 816
답변 답변글 답변 : Atmega128 LCD 출력이 나오지 않습니다, 코드 확인 부탁드립니다.댓글[1] master 24-06-25 1267
질문 atmega128을 이용한 LCD 사용에 문제가 발생했습니다.댓글[3] 이미지 네넴 24-06-05 3112
질문 MSP430런치패드를 이용한 LCD 코딩 관련 질문댓글[1] 뀨쥰이 24-05-16 913
질문 Atmega128 CLCD와 블루투스 통신 문제댓글[1] fanfan 23-12-07 2265
답변 답변글 답변 : Atmega128 CLCD와 블루투스 통신 문제댓글[3] master 23-12-07 6109
질문 ATmega128에서 LCD와 블루투스 fanfan 23-12-05 1860
답변 답변글 답변 : ATmega128에서 LCD와 블루투스댓글[1] master 23-12-05 3009
질문 atmega128 CLCD댓글[2] 릴를 23-12-03 6596
질문 atmega128 블루투스 CLCD댓글[3] 릴를 23-12-03 11567
질문 서브모터,I2C LCD, RFID, 버튼을 이용한 아두이노댓글[1] 돕고살려주세요 23-11-30 2475
질문 atmega128, lm35 온도 값을 i2c lcd에 표시댓글[1] milka 23-11-16 3916
질문 atmega128 lcd led 동시 제어 ewaesdf 23-10-09 2108
답변 답변글 답변 : atmega128 lcd led 동시 제어 master 23-10-09 2087
질문 atmega128a와 i2c lcd댓글[1] 까미 23-10-04 2636
질문 atmega128a 와 캐릭터 LCD연결 방법댓글[4] 까미 23-09-30 9632
질문 타이머 인터럽트를 이용한 LCD제어 질문입니다. Tell 23-09-27 1533
답변 답변글 답변 : 타이머 인터럽트를 이용한 LCD제어 질문입니다.댓글[3] master 23-09-28 4592
질문 lcd,바코드,서보모터, 아두이노 질문 드립니다. ㅠㅠ댓글[1] 아두이노개발자 23-09-26 2604
질문 LCD에 숫자 표기법을 바꾸고 싶습니댓글[2] Bs드리프터 23-09-19 3378
질문 아두이노 lcd 디지털시계 (도와주시면 감사하겠습니다!)댓글[1] 이미지첨부파일 김리 23-06-11 2645
질문 아두이노 LCD 글자 출력질문입니다. Tell 23-06-10 1960
답변 답변글 답변 : 아두이노 LCD 글자 출력질문입니다. master 23-06-10 2058
질문 아두이노 lcd 문자 스크롤디스플레이 wnion 23-05-31 2488
답변 답변글 답변 : 아두이노 lcd 문자 스크롤디스플레이댓글[1] master 23-05-31 4313
질문 앱인벤터 아두이노 보드 LCD 글씨 나타내기 질문댓글[7] 이미지 당찬병아리 23-05-29 48991
질문 토양습도센서 이용시LCD 오류댓글[5] 윤던 23-05-23 29037
질문 LCD 부저연결질문입니다.댓글[1] Tell 23-05-19 3094
게시물 검색

2022년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2021년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2020년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2019년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2018년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
Privacy Policy
MCU BASIC ⓒ 2020
모바일버전으로보기