lcdshow.lst

来自「含有大量的单片机代码」· LST 代码 · 共 178 行

LST
178
字号
C51 COMPILER V7.06   LCDSHOW                                                               12/01/2006 20:21:45 PAGE 1   


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

stmt level    source

   1          
   2          /***************************************************************************/
   3          
   4          #include <REG51.H>
   5          #include <intrins.h>
   6          #include "string.h"
   7          //Port Definitions**********************************************************
   8          sbit LcdRs  = P1^0;
   9          sbit LcdRw  = P1^1;
  10          sbit LcdEn  = P1^2;
  11          sfr  DBPort = 0x80;  //P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口
  12          
  13          sbit LcdLight   = DBPort^4;
  14          
  15          void Delay1ms(unsigned int count)
  16          {
  17   1       unsigned int i,j;
  18   1       for(i=0;i<count;i++)
  19   1       for(j=0;j<120;j++);
  20   1      }
  21          //内部等待函数**************************************************************************
  22          unsigned char LCD_Wait(void)
  23          {
  24   1       LcdRs=0;
  25   1       LcdRw=1; _nop_();
  26   1       LcdEn=1; _nop_();
  27   1       while(DBPort&0x80);  //或do{ACC=DBPort;} while(ACC_7==1); 忙信号??为1忙
  28   1       LcdEn=0;
  29   1       Delay1ms(1);
  30   1       return ACC;  
  31   1      }
  32          //向LCD写入命令或数据************************************************************
  33          #define LCD_COMMAND   0x00      // Command
  34          #define LCD_DATA   0x01         // Data
  35          #define LCD_CLEAR_SCREEN 0x01   // 清屏
  36          #define LCD_HOMING    0x02      // 光标返回原点
  37          void LCD_Write(unsigned char style, unsigned char input)
  38          {
  39   1       LcdRs=style;
  40   1       LcdRw=0;  _nop_();
  41   1       LcdEn=1;  _nop_();
  42   1       DBPort=input; _nop_();
  43   1       LcdEn=0;  _nop_();
  44   1       LCD_Wait(); 
  45   1      }
  46          
  47          //设置显示模式************************************************************
  48          #define LCD_SHOW   0x04    //显示开
  49          #define LCD_HIDE   0x00    //显示关   
  50          
  51          #define LCD_CURSOR   0x02  //显示光标
  52          #define LCD_NO_CURSOR  0x00    //无光标       
  53          
  54          #define LCD_FLASH   0x01    //光标闪动
  55          #define LCD_NO_FLASH  0x00    //光标不闪动
C51 COMPILER V7.06   LCDSHOW                                                               12/01/2006 20:21:45 PAGE 2   

  56          
  57          void LCD_SetDisplay(unsigned char DisplayMode)
  58          {
  59   1       LCD_Write(LCD_COMMAND, 0x08|DisplayMode); 
  60   1      }
  61          
  62          //设置输入模式************************************************************
  63          #define LCD_AC_UP   0x02
  64          #define LCD_AC_DOWN   0x00      // default
  65          
  66          #define LCD_MOVE   0x01      // 画面可平移
  67          #define LCD_NO_MOVE   0x00      //default
  68          
  69          void LCD_SetInput(unsigned char InputMode)
  70          {
  71   1       LCD_Write(LCD_COMMAND, 0x04|InputMode);
  72   1      }
  73          
  74          //移动光标或屏幕************************************************************
  75          #define LCD_CURSOR  0x02      
  76          #define LCD_SCREEN  0x08
  77          #define LCD_LEFT  0x00
  78          #define LCD_RIGHT  0x04
  79          void LCD_Move(unsigned char object, unsigned char direction)
  80          {
  81   1       if(object==LCD_CURSOR)
  82   1        LCD_Write(LCD_COMMAND,0x10|direction);
  83   1       if(object==LCD_SCREEN)
  84   1        LCD_Write(LCD_COMMAND,0x18|direction);
  85   1      }
  86          
  87          //初始化LCD************************************************************
  88          void LCD_Initial()
  89          {
  90   1       LcdEn=0;
  91   1       Delay1ms(80);
  92   1       LCD_Write(LCD_COMMAND,0x38);           //8位数据端口,2行显示,5*7点阵
  93   1       Delay1ms(10);
  94   1       LCD_Write(LCD_COMMAND,0x38);
  95   1       Delay1ms(10);
  96   1       LCD_SetDisplay(LCD_SHOW|LCD_CURSOR);    //开启显示, 无光标
  97   1       //LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);    //开启显示, 无光标
  98   1       LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);          //清屏
  99   1       LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);       //AC递增, 画面不动
 100   1      }
 101          
 102          //************************************************************************
 103          void GotoXY(unsigned char x, unsigned char y)//y是行 ,x是列
 104          {
 105   1       if(y==0)
 106   1        LCD_Write(LCD_COMMAND,0x80|x);
 107   1       if(y==1)
 108   1        LCD_Write(LCD_COMMAND,0x80|(x-0x40));
 109   1      }
 110          void Print(unsigned char *str)
 111          {
 112   1       while(*str!='\0')
 113   1       {
 114   2        LCD_Write(LCD_DATA,*str);
 115   2        str++;
 116   2       }
 117   1      }
C51 COMPILER V7.06   LCDSHOW                                                               12/01/2006 20:21:45 PAGE 3   

 118          void LCD_LoadChar(unsigned char user[8], unsigned char place)
 119          {
 120   1       unsigned char i;
 121   1       LCD_Write(LCD_COMMAND,0x40|(place*8));
 122   1       for(i=0; i<8; i++)
 123   1         LCD_Write(LCD_DATA,user[i]);
 124   1      }
 125          //************************************************************************
 126          main()
 127          {  
 128   1         //unsigned char str1[17];
 129   1         unsigned char str[]=" Six Boys ";
 130   1         unsigned char strlc[]="  Good Luck!  ";
 131   1         LCD_Initial();
 132   1         while(1)
 133   1         {
 134   2           GotoXY(0, 0);
 135   2           Print(str);
 136   2           if(strlen(str)>16) 
 137   2           Print(str+16);
 138   2      
 139   2               GotoXY(0, 1);
 140   2           Print(strlc);
 141   2           if(strlen(strlc)>16) 
 142   2           Print(strlc+16);
 143   2      
 144   2           //LCD_LoadChar(str, 0);
 145   2         }
 146   1      
 147   1      }
 148          
 149          
 150          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    420    ----
   CONSTANT SIZE    =     26    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      35
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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