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

📄 lcd1602a.lst

📁 C8051F系列单片机BTF020多功能板的LCD16*2控制程序
💻 LST
字号:
C51 COMPILER V7.50   LCD1602A                                                              11/23/2007 16:35:08 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE LCD1602A
OBJECT MODULE PLACED IN LCD1602A.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LCD1602A.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //-----------------------------------------------------------------------------
   2          //程序描述:
   3          //  这个程序可以在该液晶模块上显示字符:"  BT F020 V1.0  www.xhl.com.cn"
   4          //  此程序用4位数据线来驱动液晶
   5          //  液晶接线方法 :1脚接地;2脚接+5V;3脚通过1个10K电阻接+5v,通过1个430欧电阻接地;
   6          //  15脚接地;16脚通过1个15R电阻接+5v。液晶别的引脚直接接相应的数据或控制信号线。
   7          //作者:ZDP
   8          //时间:2005-11-30
   9          //版本:V1.0
  10          //-----------------------------------------------------------------------------
  11          // 头文件包含
  12          //-----------------------------------------------------------------------------
  13          #include <c8051f020.h>                 
  14          
  15          //-----------------------------------------------------------------------------
  16          //全局变量定义
  17          //-----------------------------------------------------------------------------
  18          
  19                                           
  20          unsigned long x;                 //"www.xhl.com.cn"
  21          unsigned char xdata Netdata[16]={0x77,0x77,0x77,0x2e,0x78,0x68,0x6c,0x2e,0x63,0x6f,
  22                                          0x6d,0x2e,0x63,0x6e};                                
  23                                         
  24                                           //"  BT F020 V1.0  "
  25          unsigned char xdata NCDdata[17]={0x20,0x20,0x42,0x54,0x20,0x46,0x30,0x32,0x30,0x20,
  26                                           0x56,0x31,0x2e,0x30,0x20,0x20};
  27                                                                        
  28          unsigned char *lcdpoint;        //指向 lcddata数组的指针
  29          unsigned char lcd_data_count;
  30          //-----------------------------------------------------------------------------
  31          // 函数定义
  32          //-----------------------------------------------------------------------------
  33          void SYSCLK_Init (void);
  34          void PORT_Init (void);
  35          void LCD_Init(void);
  36          //-----------------------------------------------------------------------------
  37          // 主程序
  38          //-----------------------------------------------------------------------------
  39          void main (void)
  40           {
  41   1              static unsigned char data1;
  42   1          WDTCN = 0xde;
  43   1          WDTCN = 0xad;                               //禁止看门狗定时器
  44   1      
  45   1          SYSCLK_Init ();                             // 系统时钟初始化
  46   1                                                
  47   1          PORT_Init ();                               // 交叉开关和通用I/O口初始化
  48   1      
  49   1              while(1){
  50   2                      LCD_Init();                         //LCD初始化
  51   2                  P2  = 0xA0;                         //准备送数据
  52   2                  for(x=0;x<5000;x++);
  53   2                  lcdpoint=&NCDdata;                                  //取地址
  54   2                  for(lcd_data_count=14;lcd_data_count>0;lcd_data_count--)//显示第一行字符
  55   2                  { 
C51 COMPILER V7.50   LCD1602A                                                              11/23/2007 16:35:08 PAGE 2   

  56   3                          data1=*lcdpoint;                            //读出数据                              
  57   3                          P3 = data1;                                         //写数据到端口
  58   3                              P2 = 0X20;
  59   3                      P2 = 0XA0;                                              //控制LCD       
  60   3                      lcdpoint++;
  61   3                              for(x=0;x<5000;x++);
  62   3                      }
  63   2                      P2 = 0X80;
  64   2                      P3 = 0xc0;
  65   2                      P2 = 0x00;              
  66   2                      P2 = 0x80;              
  67   2                      for(x=0;x<1000;x++);
  68   2                  lcdpoint=&Netdata;
  69   2                  for(lcd_data_count=14;lcd_data_count>0;lcd_data_count--)//显示第一行字符
  70   2                  { 
  71   3                          data1=*lcdpoint;
  72   3                          P3 = data1; 
  73   3      //-----------------------------------------------------
  74   3              //        P2 = 0x20;                   /*原来的LCD程序*/ 
  75   3              //              P2 = 0xA0;
  76   3      //-----------------------------------------------------
  77   3                          P2 = 0xA0;                   //修改后的LCD程序
  78   3                  P2 = 0x20;
  79   3      //------------------------------------------------------/
  80   3                      lcdpoint++;
  81   3                              for(x=0;x<5000;x++);
  82   3                      }
  83   2              }
  84   1      }
  85          
  86          //-----------------------------------------------------------------------------
  87          //函数名称:      SYSCLK_Init ()
  88          //函数功能:      系统时钟初始化
  89          //入口参数:      无
  90          //出口参数:      无
  91          //全局变量引用:  无
  92          //调用模块:      无 
  93          //-----------------------------------------------------------------------------
  94          //
  95          
  96            void SYSCLK_Init (void)
  97          {
  98   1         //int i;                              // delay counter
  99   1      
 100   1         //OSCXCN = 0x67;                      // start external oscillator with
 101   1                                             // 22.1184MHz crystal
 102   1      
 103   1         //for (i=0; i < 256; i++) ;           // Wait for osc. to start up
 104   1      
 105   1         //while (!(OSCXCN & 0x80)) ;          // Wait for crystal osc. to settle
 106   1      
 107   1         //OSCICN = 0x88;    
 108   1      
 109   1         OSCICN = 0x05;                          // 系统时钟初始化为片内的 24.5MHz / 8                          
             -                                 
 110   1       }
 111          
 112          //-----------------------------------------------------------------------------
 113          //函数名称:      PORT_Init  ()
 114          //函数功能:      通用I/O口及交叉开关初始化
 115          //入口参数:      无
 116          //出口参数:      无
C51 COMPILER V7.50   LCD1602A                                                              11/23/2007 16:35:08 PAGE 3   

 117          //全局变量引用:  无
 118          //调用模块:      无  
 119          //-----------------------------------------------------------------------------
 120          
 121          void PORT_Init (void)
 122          {
 123   1      
 124   1         XBR0     = 0x00;                       // 没有选择数字外设
 125   1         XBR2     = 0x40;
 126   1         P2MDOUT  = 0xe0;                       // P2口设为推挽方式
 127   1      }
 128          //-----------------------------------------------------------------------------
 129          //函数名称:      LCD_Init ()
 130          //函数功能:      LCD初始化
 131          //入口参数:      无
 132          //出口参数:      无
 133          //全局变量引用:  无
 134          //调用模块:      无  
 135          //-----------------------------------------------------------------------------
 136          void LCD_Init(void)
 137          {
 138   1         P2 = 0X80;
 139   1         for(x=0;x<50000;x++);
 140   1         //P7 = 0x30;                         /*一行显示*/
 141   1         P3 = 0x38;                           /*两行显示*/
 142   1         P2 = 0X00;//0x08;
 143   1         P2 = 0X80;//0x09; 
 144   1         for(x=0;x<1000;x++);
 145   1         P3 = 0x0e;
 146   1         P2 = 0x00;
 147   1         P2 = 0x80;
 148   1         for(x=0;x<1000;x++);
 149   1         P3=  0x06;
 150   1         P2 = 0x00;
 151   1         P2 = 0x80;
 152   1         for(x=0;x<5000;x++);
 153   1         P3 = 0x01;
 154   1         P2 = 0x00;
 155   1         P2 = 0x80; 
 156   1         for(x=0;x<5000;x++);
 157   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    657    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =     33    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      9    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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