#include <stdio.h>
void LCD_Init() { PIO_OER = LCD_RS|LCD_RW|LCD_EN|LCD_BS; PIO_PER = LCD_RS|LCD_RW|LCD_EN|LCD_BS; LCD_CMD_Write(LCD_Func); LCD_CMD_Write(LCD_Entry); LCD_CMD_Write(LCD_Cursir); LCD_CMD_Write(LCD_Display); LCD_CMD_Write(LCD_Clear); LCD_CMD_Write(LCD_Home);
return; }
void LCD_CMD_Write(unsigned char ucDATA) { volatile unsigned int icnt; PIO_CODR = LCD_EN; //CODR이므로 EN을 0V로 PIO_CODR = LCD_RS; // RS를 0V로 PIO_CODR = LCD_RW; // RW를 0V로 for(icnt = 0; icnt < LCD_delay-LCD_delay1; ++icnt); PIO_SODR = LCD_EN; //CODR이므로 EN을 3.3V로 for(icnt = 0; icnt < LCD_delay-LCD_delay2; ++icnt); PIO_CODR = LCD_BS; PIO_SODR = ucDATA << 16; for(icnt = 0; icnt < LCD_delay-LCD_delay3; ++icnt); PIO_CODR = LCD_EN; for(icnt = 0; icnt < LCD_delay-LCD_delay4; ++icnt); return; }
void LCD_DATA_Write(unsigned char ucDATA) { volatile unsigned int icnt; PIO_CODR = LCD_EN; //CODR이므로 EN을 0V로 PIO_SODR = LCD_RS; // RS를 3.3V로 PIO_CODR = LCD_RW; // RW를 0V로 for(icnt = 0; icnt < LCD_delay-LCD_delay1; ++icnt); PIO_SODR = LCD_EN; //CODR이므로 EN을 3.3V로 for(icnt = 0; icnt < LCD_delay-LCD_delay2; ++icnt); PIO_CODR = LCD_BS; PIO_SODR = ucDATA << 16; for(icnt = 0; icnt < LCD_delay-LCD_delay3; ++icnt); PIO_CODR = LCD_EN; for(icnt = 0; icnt < LCD_delay-LCD_delay4; ++icnt);
return; } void LCD_Run() { volatile unsigned int iCnt; volatile unsigned int Han_gul[]={ 0x00, 0x04, 0x1f, 0x00, 0x04, 0x0a, 0x0a, 0x04, //ㅎ 0x00, 0x08, 0x08, 0x08, 0x18, 0x08, 0x18, 0x08, //ㅕ 0x00, 0x00, 0x00, 0x0e, 0x02, 0x0e, 0x08, 0x0e, //ㄹ 0x00, 0x04, 0x04, 0x0a, 0x11, 0x11, 0x00, 0x00, //ㅅ 0x00, 0x08, 0x08, 0x08, 0x0e, 0x08, 0x08, 0x08, //ㅏ 0x1f, 0x00, 0x0e, 0x02, 0x0e, 0x08, 0x0e, 0x00, //를 0x1c, 0x04, 0x1c, 0x10, 0x1c, 0x00, 0x00, 0x00, //ㄹ 0x1f, 0x04, 0x14, 0x14, 0x1f, 0x00, 0x00, 0x00}; ?//문
LCD_Init(); LCD_CMD_Write(0x40); for (iCnt = 0; iCnt < 64; ++iCnt) { LCD_DATA_Write(Han_gul[iCnt]); }
// 윗줄 LCD_CMD_Write(0x80); LCD_DATA_Write(0x00); // ㅎ LCD_CMD_Write(0x81); LCD_DATA_Write(0x01); // ㅕ LCD_CMD_Write(0x82); LCD_DATA_Write(0xbd); // 사용자정의 아님 : ㅈ LCD_CMD_Write(0x83); LCD_DATA_Write(0x48); // 사용자정의 아님 : H LCD_CMD_Write(0x84); LCD_DATA_Write(0x02); // ㄹ LCD_CMD_Write(0x86); LCD_DATA_Write(0x03); // ㅅ LCD_CMD_Write(0x87); LCD_DATA_Write(0x04); // ㅏ LCD_CMD_Write(0x88); LCD_DATA_Write(0xbd); // 사용자정의 아님 :ㅈ LCD_CMD_Write(0x89); LCD_DATA_Write(0x04); // ㅏ LCD_CMD_Write(0x8a); LCD_DATA_Write(0x21); // 사용자정의 아님 : ! LCD_CMD_Write(0x8b); LCD_DATA_Write(0xdb); // 사용자정의 아님 : ㅁ LCD_CMD_Write(0x8c); LCD_DATA_Write(0x4c); // 사용자정의 아님 : L LCD_CMD_Write(0x8d); LCD_DATA_Write(0x04); // ㅏ LCD_CMD_Write(0x8e); LCD_DATA_Write(0xcc); // 사용자정의 아님 : ㄱ LCD_CMD_Write(0x8f); LCD_DATA_Write(0x01); // ㅕ
// 아랫줄 LCD_CMD_Write(0xc1); LCD_DATA_Write(0x4c); // 사용자정의 아님 : L LCD_CMD_Write(0xc4); LCD_DATA_Write(0x05); // 를 LCD_CMD_Write(0xc7); LCD_DATA_Write(0x06); // ㄹ LCD_CMD_Write(0xcb); LCD_DATA_Write(0x07); // 문 LCD_CMD_Write(0xcd); LCD_DATA_Write(0xdf); // 사용자정의 아님 : ㅁ LCD_CMD_Write(0xcf); LCD_DATA_Write(0x6f); // 사용자정의 아님 : ㅇ
return; } int main() { void LCD_Run(); return 0; } |