전공공부/전자공학

[마이크로프로세서] font 설계& dislay

intro_ch 2020. 5. 29. 15:23

 

 

< module type의 ATmega128 실습 장치(LCD가 2개의 port 사용 )에서 font 설계 및 display >

 

LCD 첫째 줄에는 자신의 " 영문 이름 "

LCD 둘째 줄에는 "정사각형 JBNU 이등변 삼각형"

(제작한 font에의한 정사각형 심볼과 JBNU글자 사이에는 한개의 글자 간격, JBNU글자와 제작한 font에의한 이등변 삼각형 심볼간의 간격은 한개의 글자 간격 )
(정사각형 심볼과 이등변 삼각형 심볼의 크기는 임의로 설계)

 


#include <mega128.h>
#include <delay.h>
#asm
    .equ __lcd_port=0x18
#endasm

#include <lcd.h>
#include <stdio.h>

#define PORT_LCD PORTB

typedef unsigned char BYTE;

// 정사각형 모양
BYTE flash FONT1[8] ={
0b00000000,
0b00000000,
0b00011111,
0b00010001,
0b00010001,
0b00010001,
0b00011111,
0b00000000};

// 이등변 삼각형 모양
BYTE flash FONT2[8] ={
0b00000000,
0b00000000,
0b00000000,
0b00000100,
0b00001010,
0b00011111,
0b00000000,
0b00000000};

void make_custom_font(unsigned char addr, unsigned char flash *font)
{
   unsigned char cnt, ADDR;
   addr <<= 3;
   ADDR = addr | 0x40;
   
   for ( cnt = 0; cnt <8 ; cnt++)
   {
      lcd_write_byte(ADDR+cnt, font[cnt]);
   }
}


void lcd_Cmd(char command)
{
   unsigned char temp;
   temp = (command & 0xF0) | 0x04;
   delay_ms(1);
   PORT_LCD = temp;
   PORT_LCD &= ~0x04;
   delay_ms(1);

   temp =((command & 0x0F)<<4)|0x04;
   delay_ms(1);
   PORT_LCD = temp;
   PORT_LCD &= ~0x04;
   delay_ms(1);
}


void Write_Data(char ch)
{
   unsigned char temp;
   temp = (ch & 0xF0) | 0x05;
   delay_ms(1);
   PORT_LCD = temp;
   PORT_LCD &= ~0x04;
   delay_ms(1);

   temp = ((ch & 0x0F) <<4) | 0x05;
   delay_ms(1);
   PORT_LCD = temp;
   PORT_LCD &= ~0x04;
   delay_ms(1);
}


void CLCD_String(flash unsigned char *str)
{
   while(*str)
   {
      Write_Data(*str);
      str++;
      delay_ms(200); 
   }
}


void main()
{
   delay_ms(15);
   lcd_init(16);
   
   delay_ms(15);
   lcd_gotoxy(0,0);
   lcd_Cmd(0x01);

   while(1)
   {
      lcd_Cmd(0x80);
      CLCD_String("chang hwan");
      
      lcd_Cmd(0xC0);
      lcd_putchar(1);
      CLCD_String(" JBNU ");
      lcd_putchar(2);
 
      make_custom_font(1, FONT1); 
      make_custom_font(2, FONT2);
   }
}


결과 사진