亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mid_lcd.lst

?? PICC 16X Code for study and learning
?? LST
字號:
     1: // MID_LCD.C

     2: // Contain all the necessary LCD subroutines for EVM Board APP001 in Mid Range HIGHTEC C Format

     3: // Must include "MID_LCD.H"

     4: 

     5: #include "mid_lcd.h"

     6: #include <pic.h>

     7: 

     8: //

     9: // Defines for I/O ports that provide LCD data & control

    10: // PORTD[0:3]-->DB[4:7]: Higher order 4 lines data bus with bidirectional

    11: //                                        : DB7 can be used as a BUSY flag

    12: // PORTA.2 --> [E] : LCD operation start signal control 

    13: // PORTD.5 --> [RW]: LCD Read/Write control

    14: // PORTD.4 --> [RS]: LCD Register Select control

    15: //                         : "0" for Instrunction register (Write), Busy Flag (Read)

    16: //                                 : "1" for data register (Read/Write)

    17: //

    18: #define         CPU_SPEED                       16                              // CPU speed is 16 Mhz !!

    19: #define         LCD_RS                          RD4                     // The definition of control pins

    20: #define         LCD_RW                          RD5

    21: #define         LCD_E                           RA2

    22: #define         LCD_DATA                        PORTD                   // PORTD[0:3] as LCD DB[4:7]

    23: #define         DIR_LCD_DATA            TRISD

    24: #define         MASK_DIR_LCD_DATA       0b00000000 

    25: #define         DIR_LCD_RS                      TRISD4

    26: #define         DIR_LCD_RW                      TRISD5

    27: #define         DIR_LCD_E                       TRISA2          

    28: 

    29: 

    30: //  LCD Module commands

    31: #define DISP_2Line_8Bit 0b00111000

    32: #define DISP_2Line_4Bit 0b00101000

    33: #define DISP_ON                 0x00C           // Display on

    34: #define DISP_ON_C               0x00E           // Display on, Cursor on

    35: #define DISP_ON_B               0x00F           // Display on, Cursor on, Blink cursor

    36: #define DISP_OFF                0x008           // Display off

    37: #define CLR_DISP                0x001           // Clear the Display

    38: #define ENTRY_INC               0x006           //

    39: #define ENTRY_INC_S             0x007           //

    40: #define ENTRY_DEC               0x004           //

    41: #define ENTRY_DEC_S             0x005           //

    42: #define DD_RAM_ADDR             0x080           // Least Significant 7-bit are for address

    43: #define DD_RAM_UL               0x080           // Upper Left coner of the Display      

    44: 

    45:  

    46:                 

    47: unsigned char   Temp_CMD ;

    48: unsigned char   Str_Temp ;

    49: unsigned char   Out_Mask ;      

    50: unsigned char   Temp_LCD_DATA ; 

    51: 

    52: void OpenLCD(void)

    53: 

    54: {

    55:         DIR_LCD_DATA = MASK_DIR_LCD_DATA ;      

    56:         DIR_LCD_RS = 0 ;

    57:         DIR_LCD_RW = 0 ;

    58:         DIR_LCD_E = 0 ;

    59: 

    60:         LCD_E=0;        

    61:         

    62:         TRISA2 = 0 ;                                            // RA2 as output                                                                

    63:         

    64:         LCD_DATA = 0x00;                                        // LCD DB[4:7] & RS & R/W --> Low

    65: 

    66:         DIR_LCD_DATA = 0x00;                            // LCD DB[4:7} & RS & R/W are output function

    67:         LCD_E=0;                                        // Set E pin as output

    68: 

    69:         LCD_DATA = 0b00000011 ;

    70:         LCD_CMD_W_Timing() ;

    71:         LCD_L_Delay() ;

    72: 

    73:         LCD_DATA = 0b00000011 ;

    74:         LCD_CMD_W_Timing() ;

    75:         LCD_L_Delay() ;

    76: 

    77:         LCD_DATA = 0b00000011 ;

    78:         LCD_CMD_W_Timing() ;

    79:         LCD_L_Delay() ;

    80: 

    81:         LCD_DATA = 0b00000010 ;

    82:         LCD_CMD_W_Timing() ;

    83:         LCD_L_Delay() ;

    84: 

    85:         WriteCmdLCD(DISP_2Line_4Bit) ;

    86:         LCD_S_Delay() ;

    87: 

    88:         WriteCmdLCD(DISP_ON) ;

    89:         LCD_S_Delay() ;

    90: 

    91:         WriteCmdLCD(ENTRY_INC) ;

    92:         LCD_S_Delay() ;

    93: 

    94:         WriteCmdLCD(CLR_DISP) ;

    95:         LCD_L_Delay() ;

    96: 

    97:                 

    98: }

    99: 

   100: //*********************************************

   101: //     _    ______________________________

   102: // RS  _>--<______________________________

   103: //     _____

   104: // RW       \_____________________________

   105: //                  __________________

   106: // E   ____________/                  \___

   107: //     _____________                ______

   108: // DB  _____________>--------------<______

   109: //***********************************************

   110: // Write Command to LCD module

   111: //

   112: void WriteCmdLCD( unsigned char LCD_CMD) 

   113: {

   114: 

   115:         Temp_LCD_DATA = LCD_DATA ;      

   116: 

   117:         Temp_CMD = (LCD_CMD & 0xF0)>>4 ;                        // Send high nibble to LCD bus

   118:         LCD_DATA= (LCD_DATA & 0xF0)|Temp_CMD ;

   119:         LCD_CMD_W_Timing () ;

   120: 

   121:         Temp_CMD = LCD_CMD & 0x0F ;                             // Send low nibble to LCD bus

   122:         LCD_DATA= (LCD_DATA & 0xF0)|Temp_CMD ;

   123:         LCD_CMD_W_Timing () ;

   124: 

   125:         LCD_DATA = Temp_LCD_DATA ;

   126: 

   127:         LCD_S_Delay() ;                                                 // Delay 100uS for execution

   128: }

   129: 

   130: //***********************************************

   131: // Write Data to LCD module

   132: //

   133: void WriteDataLCD( unsigned char LCD_CMD) 

   134: {

   135:         

   136:         Temp_LCD_DATA = LCD_DATA ;

   137: 

   138:         Temp_CMD = (LCD_CMD & 0xF0)>>4 ;                        // Send high nibble to LCD bus

   139:         LCD_DATA= (LCD_DATA & 0xF0)|Temp_CMD ;

   140:         LCD_DAT_W_Timing () ;

   141: 

   142:         Temp_CMD = LCD_CMD & 0x0F ;                             // Send low nibble to LCD bus

   143:         LCD_DATA= (LCD_DATA & 0xF0)|Temp_CMD ;

   144:         LCD_DAT_W_Timing () ;

   145: 

   146:         LCD_DATA = Temp_LCD_DATA ;

   147: 

   148:         LCD_S_Delay() ;                                                 // Delay 100uS for execution

   149: }

   150: 

   151: void putcLCD(unsigned char LCD_Char)

   152: {

   153:         WriteDataLCD(LCD_Char) ;

   154: 

   155: }

   156: void LCD_CMD_W_Timing( void )

   157: {

   158:         LCD_RS = 0 ;    // Set for Command Input

   159:         #asm

   160:                 nop

   161:                 nop

   162:         #endasm

   163:         LCD_RW = 0 ;

   164:         #asm

   165:                 nop

   166:                 nop

   167:                 nop

   168:                 nop

   169:                 nop

   170:                 nop

   171:                 nop

   172:                 nop

   173:                 nop

   174:                 nop

   175:         #endasm

   176:         LCD_E = 1 ;

   177:         #asm

   178:                 nop

   179:                 nop

   180:                 nop

   181:                 nop

   182:                 nop

   183:                 nop

   184:                 nop

   185:                 nop

   186:                 nop

   187:                 nop

   188:         #endasm

   189:         LCD_E = 0 ;

   190: }

   191: 

   192: void LCD_DAT_W_Timing( void )

   193: {

   194:         LCD_RS = 1 ;    // Set for Data Input

   195:         

   196:         #asm

   197:                 nop

   198:                 nop

   199:         #endasm

   200:         

   201:         LCD_RW = 0 ;    

   202:         

   203:         #asm

   204:                 nop

   205:                 nop

   206:                 nop

   207:                 nop

   208:                 nop

   209:                 nop

   210:                 nop

   211:                 nop

   212:                 nop

   213:                 nop

   214:         #endasm

   215:         LCD_E = 1 ;

   216:         #asm

   217:                 nop

   218:                 nop

   219:                 nop

   220:                 nop

   221:                 nop

   222:                 nop

   223:                 nop

   224:                 nop

   225:                 nop

   226:                 nop

   227:         #endasm 

   228:         LCD_E = 0 ;

   229: }

   230: 

   231: //***********************************************

   232: //     Set Cursor position on LCD module

   233: //                      CurY = Line (0 or 1)

   234: //              CurX = Position ( 0 to 15)

   235: //

   236: void LCD_Set_Cursor(unsigned char CurX, unsigned char CurY)

   237: {

   238:         WriteCmdLCD( 0x80 + CurY * 0x40 + CurX) ;

   239:         LCD_S_Delay( ) ;

   240:         LCD_S_Delay( ) ;

   241:         LCD_S_Delay( ) ;

   242:         LCD_S_Delay( ) ;

   243:         LCD_S_Delay( ) ;

   244: }

   245: 

   246: //***********************************************

   247: //    Put a ROM string to LCD Module

   248: //

   249: void putrsLCD( const char *Str )

   250: {

   251:    while (1)

   252:    {

   253:         Str_Temp = *Str ;

   254: 

   255:                 if (Str_Temp != 0x00 )

   256:                    {

   257:                         WriteDataLCD(Str_Temp) ;

   258:                         Str ++ ;

   259:                    }

   260:                 else

   261:                         break ;

   262:    }

   263: }

   264: 

   265: //***********************************************

   266: //    Put a RAM string to LCD Module

   267: //

   268: void putsLCD( char *Str)

   269: {

   270:    while (1)

   271:    {

   272:         Str_Temp = *Str ;

   273: 

   274:                 if (Str_Temp != 0x00 )

   275:                    {

   276:                         WriteDataLCD(Str_Temp) ;

   277:                         Str ++ ;

   278:                    }

   279:                 else

   280:                         break ;

   281:    }

   282: }

   283: 

   284: 

   285: void puthexLCD(unsigned char HEX_Val)

   286: {

   287:         unsigned char Temp_HEX ;

   288: 

   289:         Temp_HEX = (HEX_Val >> 4) & 0x0f ;

   290: 

   291:         if ( Temp_HEX > 9 )Temp_HEX += 0x37 ;

   292:     else Temp_HEX += 0x30 ;

   293: 

   294:         WriteDataLCD(Temp_HEX) ;

   295: 

   296:         Temp_HEX = HEX_Val  & 0x0f ;

   297:         if ( Temp_HEX > 9 )Temp_HEX += 0x37 ;

   298:     else Temp_HEX += 0x30 ;

   299: 

   300:         WriteDataLCD(Temp_HEX) ;

   301: }

   302: 

   303: // *********************************************************************************

   304: // Delay for atleast 10 ms 

   305: // *********************************************************************************

   306: void    LCD_L_Delay(void)

   307: {

   308:         unsigned int    Loop_L ;

   309:         

   310:         for ( Loop_L = 0 ; Loop_L < 10000 ; Loop_L ++ ) ;

   311: 

   312: }

   313: 

   314: // *********************************************************************************

   315: // Delay for 100 us

   316: // *********************************************************************************

   317: void    LCD_S_Delay(void)

   318: {

   319:         unsigned int    Loop_S ;

   320:                 

   321:         for ( Loop_S = 0 ; Loop_S < 100 ; Loop_S ++ ) ; 

   322: }

   323: 

   324: 

   325: void    Delay10KTCYx( int Loop_10K )

   326: {

   327:                 int     Loop_1 , Loop_2 ;

   328:                 

   329:                 for ( Loop_1 = 0 ; Loop_1 < Loop_10K ; Loop_1++ ) 

   330:                 {

   331:                         for ( Loop_2 = 0 ; Loop_2 < 10000 ; Loop_2++ )

   332:                         {

   333:                                 #asm

   334:                                  nop

   335:                                 #endasm

   336:                         }

   337:                 }

   338:                  

   339: }

   340: 

   341: void    Delay100TCYx( int D_Value )

   342: {

   343:         int     D_Loop , D_LoopA ;

   344:         

   345:                 for ( D_Loop = 0 ; D_Loop < D_Value ; D_Loop++ )

   346:                 {

   347:                         for (D_LoopA = 0 ; D_LoopA < 10 ; D_LoopA ++ ) 

   348:                         {

   349:                                 #asm

   350:                                 nop

   351:                                 #endasm

   352:                         }

   353:                 }

   354: }

   355: 

   356: void    LCD_Put_HEX(unsigned char HEX_Val)

   357: {

   358:         unsigned char Temp_HEX ;

   359: 

   360:         Temp_HEX = (HEX_Val >> 4) & 0x0f ;

   361:         if ( Temp_HEX > 9 )

   362:         Temp_HEX += 0x37 ;

   363:     else

   364:                 Temp_HEX += 0x30 ;

   365: 

   366:         putcLCD(Temp_HEX) ;

   367: 

   368:         Temp_HEX = HEX_Val  & 0x0f ;

   369:         if ( Temp_HEX > 9 )

   370:         Temp_HEX += 0x37 ;

   371:     else

   372:                 Temp_HEX += 0x30 ;

   373: 

   374:         putcLCD(Temp_HEX) ;     

   375: 

   376: }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲与欧洲av电影| 色综合网站在线| 精品一区二区三区久久久| 一区二区三区四区在线免费观看 | 亚洲丝袜精品丝袜在线| 久久综合丝袜日本网| 欧美猛男男办公室激情| 欧洲在线/亚洲| 在线91免费看| 日韩精品一区二区三区在线| 精品国产91洋老外米糕| 精品精品国产高清一毛片一天堂| 欧美一区二区高清| 精品久久国产老人久久综合| 久久久五月婷婷| 亚洲视频资源在线| 亚洲天堂福利av| 亚洲一二三区在线观看| 亚洲五码中文字幕| 久久精品国产**网站演员| 国产一区二区不卡| 成人黄色小视频在线观看| av一区二区三区在线| 成人av在线观| 欧美一区二区三级| 国产亚洲视频系列| 一区二区三区中文字幕在线观看| 日韩成人免费电影| 国产高清久久久| 色综合久久天天| 日韩视频免费观看高清完整版 | 国产性做久久久久久| 国产精品网站在线播放| 亚洲一级在线观看| 国产精品亚洲а∨天堂免在线| 97久久人人超碰| 精品久久久久久久久久久久久久久| 国产精品久久影院| 日本三级亚洲精品| 成人h精品动漫一区二区三区| 欧美综合亚洲图片综合区| 日韩三级中文字幕| 亚洲精品视频在线观看免费 | 中文字幕亚洲成人| 美女视频一区二区| 色妹子一区二区| 国产区在线观看成人精品 | 国产视频一区在线观看 | 国产九九视频一区二区三区| 在线国产亚洲欧美| 国产精品午夜在线| 久久91精品久久久久久秒播| 91在线码无精品| 国产女同性恋一区二区| 三级在线观看一区二区| av电影天堂一区二区在线| 日韩视频在线你懂得| 亚洲一二三区视频在线观看| proumb性欧美在线观看| 欧美xingq一区二区| 亚洲一二三四在线| 色综合久久天天| 亚洲欧美色综合| 91免费观看视频在线| 久久久不卡影院| 精品一区二区三区免费播放| 宅男噜噜噜66一区二区66| 亚洲综合色丁香婷婷六月图片| 99久久99久久精品免费看蜜桃| 久久久久国产免费免费| 天堂成人免费av电影一区| 91黄视频在线观看| 亚洲精品视频自拍| 在线观看av不卡| 亚洲图片欧美色图| 欧美特级限制片免费在线观看| 亚洲香肠在线观看| 欧美色中文字幕| 午夜激情久久久| 7777精品伊人久久久大香线蕉超级流畅 | 国产精品1区2区| 欧美国产欧美综合| 成av人片一区二区| 国产精品电影院| 色哟哟日韩精品| 亚洲国产欧美日韩另类综合| 在线观看免费亚洲| 日韩电影一区二区三区四区| 在线不卡一区二区| 久久精品国产精品亚洲精品| 欧美一级艳片视频免费观看| 久久99精品一区二区三区 | 成人深夜福利app| 亚洲免费观看高清完整版在线观看| 色综合天天性综合| 亚洲第一成年网| 精品99一区二区三区| 国产精品亚洲第一区在线暖暖韩国 | 丝袜亚洲另类欧美综合| 91精品欧美福利在线观看| 青青草国产精品亚洲专区无| 欧美精品一区二区三| 国产精品小仙女| 亚洲精品国产第一综合99久久 | 日韩中文字幕亚洲一区二区va在线 | 婷婷一区二区三区| 久久综合九色综合久久久精品综合| 成人av免费在线| 视频一区免费在线观看| 久久人人爽人人爽| 91福利国产精品| 狠狠狠色丁香婷婷综合久久五月| 日本一区二区在线不卡| 欧美性受xxxx黑人xyx性爽| 免费在线一区观看| 国产精品高潮呻吟久久| 欧美日本韩国一区二区三区视频 | 久久久久久久久免费| 99免费精品在线观看| 日本伊人精品一区二区三区观看方式| 国产精品视频免费| 欧美卡1卡2卡| 色综合久久天天| 国产一区二区91| 日韩国产一区二| 亚洲视频你懂的| www激情久久| 91精品国产免费| 在线欧美日韩国产| 国产精品亚洲人在线观看| 亚洲大尺度视频在线观看| 国产偷国产偷亚洲高清人白洁| 欧美精品少妇一区二区三区| 91年精品国产| 不卡av在线免费观看| 奇米影视一区二区三区小说| 亚洲少妇中出一区| 中文字幕欧美三区| 久久这里只有精品6| 在线91免费看| 欧美久久久久免费| 91国内精品野花午夜精品| 成人美女视频在线看| 伦理电影国产精品| 亚洲电影视频在线| 亚洲综合免费观看高清完整版| 亚洲日本欧美天堂| 中文字幕中文字幕一区| 久久久夜色精品亚洲| 日韩一区二区三区高清免费看看| 欧美人与禽zozo性伦| 一本色道久久综合亚洲91| 成人中文字幕电影| 国产a区久久久| 成人丝袜高跟foot| 成人黄色免费短视频| 成人国产在线观看| 波多野结衣中文字幕一区二区三区 | 成人av集中营| 99re热这里只有精品免费视频| 成人午夜精品一区二区三区| 国产毛片一区二区| 国产成人av一区二区三区在线观看| 国产伦理精品不卡| 国产精品亚洲专一区二区三区 | 国模冰冰炮一区二区| 国产二区国产一区在线观看| 国产精品一卡二卡| av一本久道久久综合久久鬼色| 99精品视频在线观看| 91在线码无精品| 欧美精品乱人伦久久久久久| 91麻豆精品久久久久蜜臀 | 91官网在线观看| 日韩一级视频免费观看在线| 日韩精品一区二区三区四区| 国产欧美一区二区精品性色| 一区二区中文视频| 午夜精品久久一牛影视| 麻豆成人免费电影| 国产成人av自拍| 欧美午夜电影在线播放| 日韩精品最新网址| 国产精品久久毛片a| 一区二区三区美女| 久久精品999| 色综合久久精品| 日韩三级精品电影久久久 | 欧美影院一区二区| 精品国产免费久久| 亚洲蜜桃精久久久久久久| 午夜影视日本亚洲欧洲精品| 国产一区在线观看麻豆| 色一情一乱一乱一91av| 日韩一区二区不卡| 亚洲色图制服丝袜| 精品一区二区成人精品| 色综合天天视频在线观看 | 91色.com| 国产色爱av资源综合区|