⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd.lst

📁 高奇公司ICD的例子,全部能用,非常好!C语言编程
💻 LST
字号:
     1: /*********************************************************************

     2: *  Goldenchip ICDDEMO Workshop for MCUPIC16F877                      *

     3: **********************************************************************

     4: * 本程序包含控制外部液晶面板的4-BIT控制模式子程序。这些程序是专门为  *

     5: * 高奇ICDDEMO演示板设计的。但它也可作为其他类型的使用 KS0066U控制器的*

     6: * 液晶面板的控制程序。                                               *

     7: * ICDDEMO板使用的LCD显示信号口为:                                    *

     8: *   PORTB2-》数据位0                                                 *

     9: *   PORTB3-》数据位1                                                 *

    10: *   PORTB4-》数据位2                                                 *

    11: *   PORTB5-》数据位3                                                 *

    12: *   PORTB1-》RS控制位                                                *

    13: *   PORTA5-》E 控制位                                                *

    14: * 本程序使用4M晶振                                                   *

    15: *********************************************************************/

    16: 

    17: /*********************************************************************

    18: *   Filename:       lcd.c                                            *

    19: *   Date:           10/19/2002                                       *

    20: *   Edit by Yamato View ,Goldenchip Electronic Co. ,Ltd.             *

    21: *                                                                    *

    22: *   TEL: 86-0591-3375855-721                                         *

    23: *                                                                    *

    24: *********************************************************************/

    25:         #include <pic.h>

    26:         #include "lcd.h"                        

    27: // PORTBITS 

    28: #define PortBit(port,bit)    ((unsigned)&(port)*8+(bit))

    29: #define RS  RB1

    30: #define E   RA5

    31: 

    32: void Init_Lcd( void )                       // 初始化 LCD 显示 

    33: {

    34:     PORTB = 0xC1;                         

    35:     TRISB = 0xC1;                       

    36:     TRISA = 0xDF;

    37: 

    38:         Delay15Ms();                            // ~15mS延时 

    39: 

    40:     DATA = 0x00;                            

    41:     E = 1;                                  

    42:         NOP();

    43:         NOP();

    44:     E = 0;                                  

    45:         

    46:     DATA = 0x08;                            

    47:     E = 1;                                      

    48:         NOP();

    49:         NOP();

    50:     E = 0;                                  

    51:     Delay5Ms();                            

    52: 

    53:     Write_Lcd_Cmd( 0x28 );                  // 

    54:     Write_Lcd_Cmd( 0x0C );                  // 开显示

    55:     Write_Lcd_Cmd( 0x06 );                  // 设置指针移动方式

    56:     Write_Lcd_Cmd( 0x01 );                  // 清屏            

    57: }

    58: 

    59: void Write_Lcd_Cmd( unsigned char cmd )     // 写命令到LCD子程序

    60: {

    61:     DATA &=0xc3;  

    62:     DATA |= ( ( cmd >>2 ) & 0x3C );          // 送高4位

    63:     RS = 0;                                 // 设置为发送命令格式

    64:     E = 1;                                  // 发送信号,下降沿触发

    65:         NOP();

    66:         NOP();

    67:     E = 0; 

    68:     DATA &=0xc3 ;                                 // 

    69:     DATA |= ( ( cmd <<2 ) & 0x3C );          // 送低4位

    70:     E = 1;                                  // 发送信号,下降沿触发

    71:         NOP();

    72:         NOP();

    73:     E = 0;                                  // 

    74:     Delay5Ms();                             //  

    75: }

    76: 

    77: 

    78: void Write_Lcd_Data( unsigned char data )   // 写数据到LCD的子程序

    79: {

    80:     DATA &= 0xc3; 

    81:     DATA |= ( ( data >>2 ) & 0x3C );         // 送高4位

    82:     RS = 1;                                 // 设置为发送数据格式

    83:     E = 1;                                  // 

    84:         NOP();

    85:         NOP();                                  //

    86:     E = 0;                                  // set enable low

    87:         //;DATA &= 0xF0;

    88:     DATA &= 0xc3; 

    89:     DATA |= ( ( data <<2 ) & 0x3C );         // 送低4位

    90:     E = 1;                                  //

    91:         NOP();

    92:         NOP();                              //

    93:     E = 0;                                  //

    94:     Delay5Ms();                             //  

    95: }

    96: 

    97: void Home_Clr( void )                       // 清屏 

    98: {

    99:     Write_Lcd_Cmd( 0x01 );

   100: }

   101: 

   102: 

   103: void Line_1( void )                        // 从第一行显示

   104: {

   105:     Write_Lcd_Cmd( 0x80 );

   106: }

   107: 

   108: void Line_2( void )                         // 从第2行开始显示

   109: {

   110:     Write_Lcd_Cmd (0xC0 );

   111: }

   112: 

   113: 

   114: 

   115: void Delay15Ms( void )                      // 精确 15ms 延时

   116: {

   117:         unsigned char outer, inner;

   118:         for (outer = 45; outer > 0; outer--)

   119:                 for (inner = 235; inner > 0; inner--);

   120: }

   121: 

   122: void Delay5Ms( void )                       // 精确 5ms 延时

   123: {

   124:         unsigned char outer, inner;

   125:         for (outer = 15; outer > 0; outer--)

   126:                 for (inner = 240; inner > 0; inner--);

   127: }

   128: 

   129: 

   130: void Delay200Us( void )                     // 精确 200us 延时

   131: {

   132:         unsigned char delay;

   133:                 for (delay = 167; delay > 0; delay--);

   134: }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -