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

📄 tc1602a.lst

📁 STC51系列的源码
💻 LST
字号:
C51 COMPILER V8.02   TC1602A                                                               10/05/2008 17:55:05 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE TC1602A
OBJECT MODULE PLACED IN .\TC1602A.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\TC1602A\TC1602A.c LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.\TC1602A.lst) O
                    -BJECT(.\TC1602A.obj)

line level    source

   1          /********************************************************************************/
   2          /* filename : TC1602A.c                                                         */
   3          /* created  : xillinx                                                           */
   4          /* descript : 处理字符型LCD显示                                                 */
   5          /********************************************************************************/
   6          #include "../CPU/CPU.h"
   7          #include "../CFG/CFG.h"
   8          #include "../UART/UART.h"
   9          #include "../TC1602A/TC1602A.h"
  10          
  11          /********************************************************************************/
  12          /* funname : LCDT_delay_5ms()                                                   */
  13          /* created : xillinx                                                            */
  14          /* time    : 2008-08-06                                                         */
  15          /* descript: 延时等待,1US需要3.7个NOP, 1000000US需要 3700000                    */
  16          /********************************************************************************/
  17          void LCDT_delay_5ms(void)
  18          {   unsigned int time=0xE000;
  19   1          while(time--);
  20   1      }
  21          
  22          /********************************************************************************/
  23          /* funname : LCDT_set_display()                                                 */
  24          /* created : xillinx                                                            */
  25          /* time    : 2008-08-06                                                         */
  26          /* descript: 设置显示模式                                                       */
  27          /********************************************************************************/
  28          void LCDT_set_display(unsigned char mode)
  29          {       LCDT_wr_cmd = 0x08|mode;        
  30   1      }
  31          
  32          /********************************************************************************/
  33          /* funname : LCDT_wait_busy()                                                   */
  34          /* created : xillinx                                                            */
  35          /* time    : 2008-08-06                                                         */
  36          /* descript: 等待释放BUSY信号                                                   */
  37          /********************************************************************************/
  38          void LCDT_wait_busy(void)
  39          {       while((LCDT_rd_cmd&0x80)==0x80);  //* 等待BUSY释放
  40   1      }
  41          
  42          /********************************************************************************/
  43          /* funname : LCDT_print_char()                                                  */
  44          /* created : xillinx                                                            */
  45          /* time    : 2008-08-06                                                         */
  46          /* descript: 按指定位置显示一个字符,x表示列,y表示行                             */
  47          /********************************************************************************/
  48          void LCDT_print_char(unsigned char x, unsigned char y, unsigned char mdata)  
  49          {   y &= 0x1;           //* y不能大于0x1
  50   1          x &= 0xF;           //* x不能大于0xF
  51   1          if(y==0x1)               
  52   1          {  x|=0x40;         //* 当要显示第二行时地址码+0x40;
  53   2          }                   
  54   1          x |= 0x80;          //* 算出指令码,写显示RAM/DDRAM的地址
C51 COMPILER V8.02   TC1602A                                                               10/05/2008 17:55:05 PAGE 2   

  55   1          LCDT_wr_cmd =x;     //* 写入显示数据要写的地址单元
  56   1          LCDT_wait_busy();
  57   1          LCDT_wr_data=mdata; //* 写入显示数据
  58   1      }
  59          
  60          /********************************************************************************/
  61          /* funname : LCDT_print_string()                                                */
  62          /* created : xillinx                                                            */
  63          /* time    : 2008-08-06                                                         */
  64          /* descript: 按指定位置显示一串字符,x表示列,y表示行                             */
  65          /********************************************************************************/
  66          void LCDT_print_string(unsigned char x, unsigned char y, unsigned char * mdata)  
  67          {   unsigned char list=0x0;
  68   1          y &= 0x1;   //* y不能大于0x1
  69   1          x &= 0xF;   //* x不能大于0xF
  70   1          while(x<0x10)
  71   1          {   if(mdata[list]==0x0)
  72   2              {  break;
  73   3              }
  74   2              LCDT_print_char(x, y, mdata[list]); //* 显示单个字符
  75   2              list++;
  76   2              x++;
  77   2          }
  78   1      }
  79          
  80          /********************************************************************************/
  81          /* fun_name : LCDT_LED_open()                                                   */
  82          /* version  : v1.00                                                             */
  83          /* created  : xillinx                                                           */
  84          /* descript : LCDP的背光打开                                                    */
  85          /********************************************************************************/
  86          void LCDT_LED_open(void)
  87          {   c51_U07_latch|=0x40;               //* LCD背光打开
  88   1          c51_hc138_cs_keyw[0x0]=c51_U07_latch;
  89   1      }
  90          
  91          /********************************************************************************/
  92          /* fun_name : LCDT_LED_clear()                                                  */
  93          /* version  : v1.00                                                             */
  94          /* created  : xillinx                                                           */
  95          /* descript : LCDP的背光打开                                                    */
  96          /********************************************************************************/
  97          void LCDT_LED_clear(void)
  98          {   LCDT_wr_cmd = 0x01; //* 清显示屏
  99   1              LCDT_wait_busy();   //* 等待BUSY释放
 100   1      }
 101          /********************************************************************************/
 102          /* funname : LCDT_initialize()                                                  */
 103          /* created : xillinx                                                            */
 104          /* time    : 2008-08-06                                                         */
 105          /* descript: 字符型显示LCD                                                      */
 106          /********************************************************************************/
 107          void LCDT_initialize()
 108          {       LCDT_wr_cmd = 0x38; 
 109   1              LCDT_delay_5ms();
 110   1              LCDT_wr_cmd = 0x38;
 111   1              LCDT_delay_5ms();
 112   1              LCDT_wr_cmd = 0x38;
 113   1              
 114   1              LCDT_wr_cmd = 0x38; ///* 8位数据端口,2行显示,5x7点阵
 115   1              LCDT_wait_busy();   //* 等待BUSY释放
 116   1              
C51 COMPILER V8.02   TC1602A                                                               10/05/2008 17:55:05 PAGE 3   

 117   1              LCDT_wr_cmd = 0x08; //* 关闭显示
 118   1              LCDT_wait_busy();   //* 等待BUSY释放
 119   1              
 120   1              LCDT_wr_cmd = 0x02; //* 归位
 121   1              LCDT_wait_busy();   //* 等待BUSY释放
 122   1              
 123   1              LCDT_wr_cmd = 0x01; //* 清显示屏
 124   1              LCDT_wait_busy();   //* 等待BUSY释放
 125   1              
 126   1              LCDT_wr_cmd = 0x06; //* 输入方式设置为指针加1计数,允许画面滚动
 127   1              LCDT_wait_busy();   //* 等待BUSY释放
 128   1              
 129   1              LCDT_wr_cmd = 0x08|LCDT_ENB_DISPLAY;    //* 打开显示,其他不设置
 130   1              LCDT_wait_busy();   //* 等待BUSY释放
 131   1              
 132   1              LCDT_LED_open();
 133   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    219    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----       4
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   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 + -