회원가입 ID/PW 찾기

1) 지식 창고는 본인이 작성한 콘텐츠(팁/노하우/리소스/강좌 등)을 무료 혹은 가상화폐인 납포인트를 통해 공유하는 공간입니다.
2) 본인이 작성한 콘텐츠에 대해서만 지식 창고에 등록할 수 있으며, 저작권에 위배되는 콘텐츠는 사전경고 없이 삭제될 수 있습니다.
3) 콘텐츠 구매 및 첨부파일 다운로드는 회원그룹 '연구원' 이상 가능하오니, 경험치를 쌓아 진급한 후에 이용 부탁드립니다.
4) 무료 콘텐츠의 본문은 구매절차 없이 즉시 이용할 수 있으며, 판매 납포인트가 있는 콘텐츠는 구매 후 이용할 수 있습니다.
5) 콘텐츠 판매에 따른 납포인트 수익은 지정한 비율(50%)에 따라 판매자에게 지급하며, 납포인트 수익을 통해 진급을 빨리할 수 있습니다.
6) 구매 후 평가를 하면 구매 납포인트의 20%를 돌려 드립니다.

콘텐츠 수 15
판매자 심야땜쟁이 판매 납포인트 무료 평점 0점 / 총 0명 참여

UC1617 Driver를 사용하는 LCD의 Source Code 입니다.
MCU는 ATmega128 사용했고, Compiler는 CodeVision AVR 2.04.4a 사용했습니다.

-------------------------------------------------------------------------------------------------------------------------------------

#define UC1617_COMMAND_SET_PAGE_C_ADDRESS           0X00        // 0 0 0 # # # # #
#define UC1617_COMMAND_SET_TEMP_COMPENSATION        0X24        // 0 0 1 0 0 1 # #
#define UC1617_COMMAND_SET_PANEL_LOADING            0X28        // 0 0 1 0 1 0 # #
#define UC1617_COMMAND_SET_PUMP_CONTROL             0X2C        // 0 0 1 0 1 1 # #
#define UC1617_COMMAND_SET_ADV_PROGRAM CONTROL      0X30        // 0 0 1 1 0 0 # #      # # # # # # # #
#define UC1617_COMMAND_SET_SCROLL_LINE_LSB          0X40        // 0 1 0 0 # # # #
#define UC1617_COMMAND_SET_SCROLL LINE_MSB          0X50        // 0 1 0 1 - # # #
#define UC1617_COMMAND_SET_ROW_ADDRESS_LSB          0X60        // 0 1 1 0 # # # #
#define UC1617_COMMAND_SET_ROW_ADDRESS_MSB          0X70        // 0 1 1 1 - # # #
#define UC1617_COMMAND_SET_VBIAS_POTENTIOMETER      0X81        // 1 0 0 0 0 0 0 1      # # # # # # # #
#define UC1617_COMMAND_SET_PARTIAL_DISPLAY CONTROL  0X84        // 1 0 0 0 0 1 # #
#define UC1617_COMMAND_SET_RAM_ADDRESS_CONTROL      0X88        // 1 0 0 0 1 # # #
#define UC1617_COMMAND_SET_FIXED_LINES              0X90        // 1 0 0 1 0 0 0 0      # # # # # # # #
#define UC1617_COMMAND_SET_LINE_RATE                0XA0        // 1 0 1 0 0 0 # #
#define UC1617_COMMAND_SET_ALL_PIXEL_ON             0XA4        // 1 0 1 0 0 1 0 #
#define UC1617_COMMAND_SET_INVERSE_DISPLAY          0XA6        // 1 0 1 0 0 1 1 #
#define UC1617_COMMAND_SET_DISPLAY_ENABLE           0XAC        // 1 0 1 0 1 1 # #
#define UC1617_COMMAND_SET_LCD_MAPPING_CONTROL      0XC0        // 1 1 0 0 0 # # #
#define UC1617_COMMAND_SET_N_LINE_INVERSION         0XC8        // 1 1 0 0 1 0 0 0      # # # # # # # #
#define UC1617_COMMAND_SET_LCD_GRAY_SHADE           0xD0        // 1 1 0 1 0 # # #
#define UC1617_COMMAND_SYSTEM_RESET                 0xE2        // 1 1 1 0 0 0 1 0
#define UC1617_COMMAND_NOP                          0xE3        // 1 1 1 0 0 0 1 1

#define UC1617_COMMAND_SET_LCD_BIAS_RATIO           0xE8        // 1 1 1 0 1 0 # #
    //#define LCD_BIAS_


#define UC1617_COMMAND_RESET_CURSOR_UPDATE_MODE     0xEE        // 1 1 1 0 1 1 1 0
#define UC1617_COMMAND_SET_CURSOR_UPDATE_MODE       0xEF        // 1 1 1 0 1 1 1 1
#define UC1617_COMMAND_SET_COM_END                  0xF1        // 1 1 1 1 0 0 0 1      # # # # # # # #
#define UC1617_COMMAND_SET_PARTIAL_DISPLAY_START    0xF2        // 1 1 1 1 0 0 1 0      # # # # # # # #
#define UC1617_COMMAND_SET_PARTIAL_DISPLAY_END      0xF3        // 1 1 1 1 0 0 1 1      # # # # # # # #
#define UC1617_COMMAND_SET_WIN_START_PAGE_C_ADDRESS 0xF4        // 1 1 1 1 0 1 0 0      # # # # # # # #
#define UC1617_COMMAND_SET_WIN_START_ROW_ADDRESS    0xF5        // 1 1 1 1 0 1 0 1      # # # # # # # #
#define UC1617_COMMAND_SET_WIN_END_PAGE_C_ADDRESS   0xF6        // 1 1 1 1 0 1 1 0      # # # # # # # #
#define UC1617_COMMAND_SET_WIN_END_ROW_ADDRESS      0xF7        // 1 1 1 1 0 1 1 1      # # # # # # # #
#define UC1617_COMMAND_ENABLE_WINDOW_PROGRAM        0xF8        // 1 1 1 1 1 0 0 0      # # # # # # # #
#define UC1617_COMMAND_SET_MTP_OPERATION_CONTROL    0xB8        // 1 0 1 1 1 0 0 0      # # # # # # # #
#define UC1617_COMMAND_SET_MTP_WRITE_MASK           0xB9        // 1 0 1 1 1 0 0 1      # # # # # # # #
#define UC1617_COMMAND_SET_VMTP1_POTENTIOMETER      0xF4        // 1 1 1 1 0 1 0 0      # # # # # # # #
#define UC1617_COMMAND_SET_VMTP2_POTENTIOMETER      0xF5        // 1 1 1 1 0 1 0 1      # # # # # # # #
#define UC1617_COMMAND_SET_MTP_WRITE_TIMER          0xF6        // 1 1 1 1 0 1 1 0      # # # # # # # #
#define UC1617_COMMAND_SET_MTP_READ_TIMER           0xF7        // 1 1 1 1 0 1 1 1      # # # # # # # #

void UC1617_WriteCommand ( byte Command )
{  
    UC1617_CD = 0;
    UC1617_CS0 = 0;
    UC1617_WRITE_DATA = Command;
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    UC1617_WR = 0;
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    UC1617_WR = 1;
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    UC1617_CS0 = 1;
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
}  

void UC1617_WriteData ( byte Data )
{
    UC1617_CD = 1;
    UC1617_CS0 = 0;
    UC1617_WRITE_DATA = Data;
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    UC1617_WR = 0;
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    UC1617_WR = 1;
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    UC1617_CS0 = 1;
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
}
   
byte UC1617_ReadData ( void )
{   byte Data;
                       
    UC1617_WRITE_DATA = 0xFF;
    UC1617_DIR_DATA = 0x00;
    #asm ("nop");

    UC1617_CD = 1;
    UC1617_CS0 = 0;
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    UC1617_RD = 0;
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    Data = UC1617_READ_DATA;
    UC1617_RD = 1;
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    UC1617_CS0 = 1;
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    UC1617_DIR_DATA = 0xFF;
    #asm ("nop");
       
    return Data;
}           

TypeUnionDword Status;

dword UC1617_ReadStatus ( void )
{   byte Data;
               
    Status.Byte[3] = 0x00;
    Status.Byte[2] = 0x00;
    Status.Byte[1] = 0x00;
    Status.Byte[0] = 0x00;

    UC1617_DIR_DATA = 0x00;
    #asm ("nop");
   
    UC1617_CD = 0;
    UC1617_CS0 = 0;
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    UC1617_RD = 0;
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    Data = UC1617_READ_DATA;
    Status.Byte[2] = Data;
    UC1617_RD = 1;
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    UC1617_CS0 = 1;
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");

    UC1617_CD = 0;
    UC1617_CS0 = 0;
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    UC1617_RD = 0;
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    Data = UC1617_READ_DATA;
    Status.Byte[1] = Data;
    UC1617_RD = 1;
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    UC1617_CS0 = 1;
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");

    UC1617_CD = 0;
    UC1617_CS0 = 0;
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    UC1617_RD = 0;
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    Data = UC1617_READ_DATA;
    Status.Byte[0] = Data;
    UC1617_RD = 1;
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    UC1617_CS0 = 1;
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");
    #asm ("nop");

    UC1617_DIR_DATA = 0xFF;
    #asm ("nop");
   
    return Status.Dword;
}
   

byte UC1617_SetXY ( byte StartX, byte StartY )
{   byte RowAddress;
    byte LowerAddress;
    byte UpperAddress;
    byte PageAddress;
    byte OffsetCount;
   
    RowAddress = StartY;
    LowerAddress = ( 0x60 | ( RowAddress & 0x0F ));
    UpperAddress = ( 0x70 | (( RowAddress >> 0x04 ) & 0x07 ));
    PageAddress = ( StartX >> 0x03 );
    OffsetCount = ( StartX & 0x07 );
                         
    UC1617_WriteCommand ( LowerAddress );
    UC1617_WriteCommand ( UpperAddress );
    UC1617_WriteCommand ( PageAddress );
   
    return OffsetCount;   
}       
       
#define FONT_SMALL          0
#define FONT_MIDDLE         1
#define FONT_LARGE          2

void UC1617_Initialize ( void )
{  

    /* 
    //UC1617_WriteCommand (0xE2); // SET SYSTEM RESET
    //delay_ms (1000);
    UC1617_WriteCommand ( UC1617_COMMAND_SET_LCD_BIAS_RATIO + 0x03 );
    UC1617_WriteCommand ( UC1617_COMMAND_SET_VBIAS_POTENTIOMETER );
    UC1617_WriteCommand ( 55 );   // 55
    UC1617_WriteCommand ( UC1617_COMMAND_SET_TEMP_COMPENSATION + 0x03 );    // SET TEMP=-0.1%
    UC1617_WriteCommand ( UC1617_COMMAND_SET_LCD_GRAY_SHADE + 0x00 );       // SET GRAY SHADE
    UC1617_WriteCommand ( UC1617_COMMAND_SET_PANEL_LOADING + 0x01 );        // < 7.2NF
    UC1617_WriteCommand ( UC1617_COMMAND_SET_PUMP_CONTROL + 0x03 );         // INTERNAL PUMP
   
    UC1617_WriteCommand ( UC1617_COMMAND_SET_RAM_ADDRESS_CONTROL + 0x01 );  // SET RAM CONTROL
    // AC[2] = 0    AC[1] = 0   AC[0] = 1
    // AC[2] RID : When AC0 = 1 and CA reaches CA boundary, PID controls whether row Address will be adjusted by +1 or -1.
    // AC[1] AI  : 0 : COLUMN ADDRESS increase (+1) first until CA reaches CA boundary, then RA will increase by (+/-1).
    //             1 : ROW ADDRESS increase (+/-1) first until RA reach RA boundary, then CA will increase by (+1).
    // AC[0] WA  : 0: CA or RA ( depends on AC[1]= 0 or 1 ) will stop increasing after reaching boundary.
    //             1: CA or RA ( depends on AC[1]= 0 or 1 ) will restart, and RA or CA will increase by one.
   
    UC1617_WriteCommand ( UC1617_COMMAND_SET_LINE_RATE + 0x00 );            // SET LINE RATE
    // 00b : 14.2 Kl/s
    // 01b : 17.3 Kl/s
    // 10b : 21.1 Kl/s
    // 11b : 25.6 Kl/s
   
    UC1617_WriteCommand ( UC1617_COMMAND_SET_LCD_MAPPING_CONTROL + 0x04 );  // SET LCD MAP CONTROL
    // MY : MY is implemented by reversing the mapping order between RAM and COM electrodes.
    //      The data stored in RAM is not affected by MY command. MY will have immediate effect on the display image.
    // MX : MX is implemented by selecting the CA or 31-CA as write/read (from host interface) display RAM
    //      page_c address so this function will only take effect after rewriting the RAM data.
    // LC0 : LC0 controls whether the soft icon section (0~ 2xFL) is display or not during partial display mode.
   
    UC1617_WriteCommand ( UC1617_COMMAND_SET_COM_END );                     // CON
    UC1617_WriteCommand ( 127 );
    UC1617_WriteCommand ( UC1617_COMMAND_SET_DISPLAY_ENABLE + 0x03 );       // SET DISPLAY ENABLE/4-GRAY
    delay_ms (100);
    */
   
    UC1617_WriteCommand ( 0xe2); // SET SYSTEM RESET
    delay_ms (1000);
    //UC1617_WriteCommand ( 0xea); // SET BIAS=1/11
    UC1617_WriteCommand ( 0x25); // SET TEMP=-0.1%
    UC1617_WriteCommand ( 0xd0); // SET GRAY SHADE
    UC1617_WriteCommand ( 0x28); // <7.2NF
    UC1617_WriteCommand ( 0x2f); // INTERNAL PUMP
    UC1617_WriteCommand ( 0x81); // SET VOP
    UC1617_WriteCommand ( 55); // 55
    UC1617_WriteCommand ( 0x89); // SET RAM CONTROL
    UC1617_WriteCommand ( 0xa3); // SET LINE RATE
    UC1617_WriteCommand ( 0xc2); // SET LCD MAP CONTROL
    UC1617_WriteCommand ( 0xf1); // CON
    UC1617_WriteCommand ( 127);
    UC1617_WriteCommand ( 0xAf); // SET DISPLAY ENABLE/4-GRAY
    delay_ms (100);   
}


profile
blurlink 2010.04.28 17:40
감사합니다.
profile
나도좀하자 2010.05.02 11:08

고맙습니다~~

profile
달피 2010.05.14 00:19
감사합니다!!
profile
woorajilation 2010.06.18 20:04
자료 감사합니다.
profile
컴쟁이 2013.03.17 00:02
자료감사합니다
profile
시나브로69 2016.07.16 17:25

좋은 자료 감사합니다.

search
List of Articles
번호 분류 제목 평점 포인트 판매자 등록일 구매수 조회 수
공지 공공의 목적으로 공유하고자 하는 소프트웨어는 '소프트웨어 자료실'에 업로드를 요청드립니다.
공지 구매후 평점 댓글을 남겨주시면 구매포인트의 20%를 돌려드립니다.
15 전력전자 DC-DC Switching Converter IC Design 이론 자료 입니다. [8] 무료 또지 2018-03-03 0 440
14 전력전자 벅 컨버터 설계자료 [31] 무료 칸장군 2012-02-10 0 3755
13 전력전자 buck converter LC filter 설계 [3] 무료 파월 2010-09-09 0 6343
12 전력전자 high efficiency optimization of llc resonant converter for wide road range [4] 무료 파월 2010-09-09 0 3032
11 전력전자 Forward 컨버터 설계 관련 팁입니다. [4] 무료 여비04 2010-08-02 0 3168
10 전력전자 3상 전원회로의 기본~! [5] 무료 열정의도가니 2010-07-27 0 4039
9 전력전자 DC-DC 강의 PPT자료 입니다. [26] 무료 풩님 2010-07-20 0 5244
8 전력전자 SMPS 기초입니다. [32] 무료 에드문도 2010-07-12 0 3027
7 전력전자 watt 계산표 [13] 무료 연거리 2010-04-21 0 2649
6 전력전자 SMPS개요2 [5] 무료 키스님 2009-12-15 0 2803
5 전력전자 SMPS개요 [8] 무료 키스님 2009-12-15 0 2852
4 전력전자 정전압 회로 [9] 무료 DJh 2009-12-03 0 4663
3 전력전자 3레벨 컨버터를 이용한 철도차량용 주 전력변환장치 [1] 무료 나입니다. 2009-11-08 0 2255
2 전력전자 전원회로 설계 핸드북 [28] 무료 치프 2009-11-02 0 5564
1 전력전자 DC-DC 컨버터 두개 병렬연결 가능한가요?? [17] 무료 날뽕녀 2008-11-14 0 4396
  • 자기가 해야 할 일을 소년 시절에 찾아낸 사람은 행복하다.
    - 헤딘
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.