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

📄 smc162.lst

📁 use keil to program this code.
💻 LST
字号:
C51 COMPILER V7.20   SMC162                                                                04/13/2006 13:35:21 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE SMC162
OBJECT MODULE PLACED IN .\SMC162.obj
COMPILER INVOKED BY: C:\Keil_C51\C51\BIN\C51.EXE ..\SMC162\SMC162.c BROWSE INCDIR(D:\暂存\keil_prj\STI SOFT\STI51\LCD\SM
                    -C162\) DEBUG OBJECTEXTEND PRINT(.\SMC162.lst) OBJECT(.\SMC162.obj)

line level    source

   1          /*
   2           *      Copyright (C) 2006, 华中科技大学电气与电子科技创新中心
   3           *      All Rights Reserved.
   4           *      
   5           *      文件名:         smc162.c
   6           *      文件描述:       16*2字符液晶驱动主文件
   7           *                      
   8           *      当前版本:       1.0
   9           *      作者:           ZhangLi(zhangli.xing@gmail.com)
  10           *      完成日期:       2005年12月12日
  11           *      
  12          */
  13          #include "SMC162.h"
  14          
  15          /***************************************
  16          说明:   LCD写函数,完成LCD写操作的物理时序
  17          value:  写的具体值
  18          RS:             0 - 写指令
  19                          1 - 写数据
  20          *****************************************/
  21          void LcdWrite(unsigned char value , bit RS)
  22          {
  23   1              /* 1. 设置RS信号线 */
  24   1              Lcd_RS = RS ;
  25   1              /* 2. 设置RW信号线为读 */
  26   1              Lcd_RW = 0 ;
  27   1              /* 3. 设置LCD片选 */
  28   1              SELECT_LCD();
  29   1              /* 4. 通过P0端口写值 */
  30   1              P0 = value ;
  31   1              /* 5. 锁存 */
  32   1              SELECT_NONE();
  33   1      }
  34          
  35          /***************************************
  36          说明:   LCD读函数,完成LCD读操作的物理时序
  37          RS:             0 - 写指令
  38                          1 - 写数据
  39          return: 读出的具体值
  40          *****************************************/
  41          unsigned char LcdRead(bit RS)
  42          {
  43   1              unsigned char rt ;
  44   1      
  45   1              /* 1. 设置RS信号线 */
  46   1              Lcd_RS = RS ;
  47   1              /* 2. 设置RW信号线为读 */
  48   1              Lcd_RW = 1 ;
  49   1              /* 3. 释放P0口 */
  50   1              P0 = 0xff ;
  51   1              /* 4. 设置LCD片选 */
  52   1              SELECT_LCD();
  53   1              SELECT_LCD();
  54   1              SELECT_LCD();
C51 COMPILER V7.20   SMC162                                                                04/13/2006 13:35:21 PAGE 2   

  55   1              SELECT_LCD();
  56   1              /* 5. 通过P0端口读值 */
  57   1              rt = P0 ;
  58   1              /* 6. 锁存 */
  59   1              SELECT_NONE();
  60   1      
  61   1              return rt ;
  62   1      }       
  63          
  64          /***************************************
  65          说明:   LCD写指令
  66          value:  写的具体值
  67          attrib: 0 - 不检测忙信号
  68                          1 - 监测忙信号
  69          *****************************************/
  70          void LcdWriteCmd(unsigned char value , unsigned char attrib)
  71          {
  72   1              /* 监测忙状态 */
  73   1              if(attrib)
  74   1                      while( LcdRead(0)&0x80 ) ;
  75   1              
  76   1              LcdWrite(value , 0);
  77   1       }
  78          
  79          /***************************************
  80          说明:   LCD写数据
  81          *****************************************/
  82          void LcdWriteData(unsigned char value)
  83          {
  84   1              /* 监测忙状态 */
  85   1              while( LcdRead(0)&0x80 ) ;
  86   1      
  87   1              LcdWrite(value , 1);
  88   1      }
  89          
  90          /***************************************
  91          说明:   LCD读数据
  92          *****************************************/
  93          unsigned char LcdReadData()
  94          {
  95   1              /* 监测忙状态 */
  96   1              while( LcdRead(0)&0x80 ) ;
  97   1      
  98   1              return LcdRead(1);
  99   1      }
 100          
 101          /***************************************
 102          说明:   短延时, 5ms
 103          *****************************************/
 104          void Delay5Ms(void)
 105          {
 106   1              unsigned int i = 5552;
 107   1              while(i--);
 108   1      }
 109          
 110          /***************************************
 111          说明:   长延时 , 400ms
 112          *****************************************/
 113          void Delay400Ms(void)
 114          {
 115   1              unsigned char i = 80;
 116   1              while(i--)
C51 COMPILER V7.20   SMC162                                                                04/13/2006 13:35:21 PAGE 3   

 117   1                      Delay5Ms();
 118   1      }
 119          /***************************************
 120          说明:   LCD初始化函数,需要按照产品
 121                  说明书完成
 122          *****************************************/
 123          void LcdInit(void)
 124          {
 125   1              Delay400Ms();   
 126   1      
 127   1              /* 写指令0x38连续3次, 不检测忙信号*/
 128   1              LcdWriteCmd(0x38 , 0 );
 129   1              Delay5Ms();
 130   1      
 131   1              LcdWriteCmd(0x38 , 0 );
 132   1              Delay5Ms();
 133   1      
 134   1              LcdWriteCmd(0x38 , 0 );
 135   1              Delay5Ms();
 136   1      
 137   1              /* 以后的读写操作均要判断忙信号 */
 138   1              LcdWriteCmd(0x38 , 1 );
 139   1              /* 先设置关屏 */
 140   1              LcdWriteCmd(0x08 , 1 );
 141   1              /* 清屏 */
 142   1              LcdWriteCmd(0x01 , 1 );
 143   1              /* 设置光标显示模式 */
 144   1              LcdWriteCmd(0x06 , 1 );
 145   1              /* 开屏并显示光标 */
 146   1              LcdWriteCmd(0x0c , 1 );
 147   1      }
 148          
 149          /***************************************
 150          说明:   设置光标定位
 151          *****************************************/
 152          void LocateXY(char x , char y)
 153          {
 154   1              unsigned char temp;
 155   1      
 156   1              temp = x & 0xf;
 157   1              y &= 0x1;
 158   1              if ( y )temp |= 0x40;
 159   1              temp |= 0x80;
 160   1              LcdWriteCmd(temp,1);
 161   1      }
 162          
 163          /***************************************
 164          说明:   显示字符
 165          x: 横坐标 y: 纵坐标
 166          value: 显示的字符
 167          *****************************************/
 168          void PutChar(char x , char y , char value)
 169          {
 170   1              LocateXY(x,y);
 171   1              LcdWriteData(value);
 172   1      }
 173          
 174          /***************************************
 175          说明:   显示字符串
 176          *****************************************/
 177          void PutStr(char x , char y , char* str)
 178          {
C51 COMPILER V7.20   SMC162                                                                04/13/2006 13:35:21 PAGE 4   

 179   1              unsigned char i,len=0;
 180   1              /* 计算字符串长度 */
 181   1              while (str[len] >31)
 182   1                      len++;
 183   1              
 184   1              /* 显示字符串 */
 185   1              for (i=0;i<len;i++) 
 186   1              {
 187   2                      PutChar(x++,y,str[i]);
 188   2                      if ( x == 16 )
 189   2                      {
 190   3                              x = 0; y ^= 1;
 191   3                      }
 192   2              }
 193   1      }
 194          
 195          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    322    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       7
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       2
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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