회원가입 ID/PW 찾기

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

콘텐츠 수 200
판매자 심야땜쟁이 판매 납포인트 무료 평점 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%를 돌려드립니다.
200 펌웨어 & 코딩언어 AVR 128에 시리얼통신칩 설정 참고 [1] 무료 어부 2015-11-17 0 413
199 펌웨어 & 코딩언어 혼자 연구하는 c/c++ 입니다. [26] 무료 신념짱가 2013-08-23 0 1144
198 펌웨어 & 코딩언어 컴구조 공부중에 질문이요 [1] 무료 왈라c 2011-01-25 0 2983
197 펌웨어 & 코딩언어 The Art of Assembly Language [3] 무료 TreeOfDream 2011-01-16 0 2602
196 펌웨어 & 코딩언어 [펌]C언어의 기본구조 [21] 무료 스마트패넘 2010-12-16 0 3681
195 펌웨어 & 코딩언어 C언어 관련 레퍼런스 자료입니다.(C 라이브러리 사용시 유용함.) [14] 무료 승아 2010-11-06 0 3379
194 펌웨어 & 코딩언어 c언어 성적표 프로그램 [3] 무료 RTEE 2010-10-05 0 2931
193 펌웨어 & 코딩언어 c언어 잘할수있는게 [4] 무료 아기 2010-09-27 0 2436
192 펌웨어 & 코딩언어 C 언어 [3] 무료 연희야 2010-08-12 0 2386
191 펌웨어 & 코딩언어 윈도우 7 새 시스템 파티션을 만들거나 기존 시스템 파티션을 찾을 수 없습니다 무료 아크마 2010-07-22 0 8022
190 펌웨어 & 코딩언어 자바 개발 툴 [2] 무료 TreeOfDream 2010-06-21 0 2879
189 펌웨어 & 코딩언어 제가 사용하는 계산기 프로그램입니다. [7] 무료 타미아 2010-06-04 0 3716
188 펌웨어 & 코딩언어 모바일 프로그래밍 res파일 [2] 무료 니나노올 2010-06-02 0 2162
187 펌웨어 & 코딩언어 모바일 프로그래밍 게임소스 [1] 무료 니나노올 2010-06-02 0 2348
186 펌웨어 & 코딩언어 MFC로 영상이미지 역상처리하는 프로그램 [3] 무료 나얼제자 2010-05-25 0 3467
185 펌웨어 & 코딩언어 아스키 코드표 [3] 무료 siwall 2010-05-24 0 5071
184 펌웨어 & 코딩언어 RTOS 자료 두번째. [4] 무료 워터보이 2010-05-13 0 1923
183 펌웨어 & 코딩언어 RTOS 자료. [4] 무료 워터보이 2010-05-13 0 2238
182 펌웨어 & 코딩언어 InnoSetup 셋업 프로그램 만드는 프리웨어 [2] 무료 전자과조교 2010-05-04 0 2159
181 펌웨어 & 코딩언어 freescale사의 s12 instruction set 요약입니다. [2] 무료 아싸라삐야 2010-05-01 0 2303
  • 소인은 특별한 것에 관심이 있고, 위인은 평범한 것에 관심이 있다.
    - 허버트
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.