회원가입 ID/PW 찾기

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

콘텐츠 수 739
판매자 심야땜쟁이 판매 납포인트 무료 평점 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%를 돌려드립니다.
439 마이크로프로세서 랩뷰 강의 자료 [13] 무료 dhoh 2010-03-24 0 9217
438 마이크로프로세서 Or-Cad 쓰실 때, ATmega128 심볼입니다. ㅎ [14] 무료 른수 2010-03-23 0 4628
437 마이크로프로세서 스태핑 모터 Stepper Motor (103H546 - 0440 SANYO DENKI) 데이터시트입니다. ㅎ [5] 무료 른수 2010-03-23 0 5962
436 마이크로프로세서 HS-5645MG 서보모터 데이터 시트입니다. [2] 무료 른수 2010-03-23 0 5659
435 마이크로프로세서 단위환산프로그램 [2] 무료 dhoh 2010-03-23 0 5064
434 마이크로프로세서 STM32 시리얼통신 기능 끄기 [6] 무료 아크마 2010-03-22 0 4461
433 마이크로프로세서 STM32 DMA를 연동하여 ADC값 읽어오기 [3] 무료 아크마 2010-03-22 0 9757
432 마이크로프로세서 8052 시물레이터 [9] 무료 영원한 2010-03-22 0 4976
431 마이크로프로세서 STM32 TIM1 PWM with Wizard [1] 무료 아크마 2010-03-22 0 6633
430 마이크로프로세서 STM32 채널별로 ADC값 읽어오기 [7] 무료 아크마 2010-03-22 0 10920
428 마이크로프로세서 STM32F101xx and STM32F103xx advanced ARM-based 32-bit MCUs [5] 무료 아크마 2010-03-22 0 4102
427 마이크로프로세서 8051로 DA컨버터 사용법 설명입니다. [8] 무료 어쩌라고 2010-03-20 0 4681
426 마이크로프로세서 카르노맵 간략화 프로그램입니다. [22] 무료 어쩌라고 2010-03-20 0 6605
425 마이크로프로세서 NE555시정수 계산 프로그램입니다. [10] 무료 어쩌라고 2010-03-20 0 5294
424 마이크로프로세서 GM0027 ( Driver - SED1565DBB ) LCD Source Code - ATmega128 사용 [3] 무료 심야땜쟁이 2010-03-19 0 4123
» 마이크로프로세서 LCD ( Driver - UC1617 ) - ATmega128 사용 [6] 무료 심야땜쟁이 2010-03-19 0 5450
422 마이크로프로세서 LG2401281 ( Driver - T6963C ) LCD Source Code - ATmega128 사용 [3] 무료 심야땜쟁이 2010-03-19 0 7220
421 마이크로프로세서 USART3 사용시 문제점 해결 무료 아크마 2010-03-18 0 5424
420 마이크로프로세서 LM6029A ( Driver - s6b0724a01 ) LCD Source Code - AVR (ATmega128) [1] 무료 심야땜쟁이 2010-03-18 0 4455
  • 사랑이란 뿌리는, 땅 속 깊숙이 박았지만 가지는 하늘로 치뻗은 나무이어야 한다.
    - B.러 셀
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.