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

📄 main.lst

📁 这个是我写的一个液晶显示器的驱动程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   MAIN                                                                  07/25/2008 12:17:39 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include"include.h"
   2          /*************************************************
   3            Function:       delay
   4            Description:    延时一段时间
   5            Calls:          无
   6            Input:          无
   7            Output:         无
   8            Return:         无
   9            Others:         
  10          *************************************************/
  11          void delay(void)
  12          {
  13   1              uchar i;
  14   1              for(i=0;i<10;i++);
  15   1      }
  16          /*************************************************
  17            Function:       LCDRESET
  18            Description:    LCD复位
  19            Calls:          无
  20            Input:          无
  21            Output:         无
  22            Return:         无
  23            Others:         
  24          *************************************************/
  25          void  LCDRESET()
  26          {
  27   1              LCD_Rest=0;
  28   1              delay();
  29   1              LCD_Rest=1;       
  30   1      }
  31          
  32          void Set_Init_L(uchar Control)
  33          {
  34   1              delay();
  35   1              Left_Instruction = Control;
  36   1              delay();
  37   1      }
  38          
  39          void Set_Init_R(uchar Control)
  40          {
  41   1          delay();
  42   1          Right_Instruction = Control;
  43   1          delay();
  44   1      }
  45          
  46          /*************************************************
  47            Function:       WR_Data_L
  48            Description:    向液晶屏的写地址写入要显示的内容
  49            Calls:          无
  50            Input:          L_R:左右屏的选择,data:要写入的内容
  51            Output:         无
  52            Return:         无
  53            Others:         
  54          *************************************************/
  55          void WR_Data_L(uchar d)
C51 COMPILER V8.02   MAIN                                                                  07/25/2008 12:17:39 PAGE 2   

  56          {
  57   1              delay();
  58   1              Left_Data =d;
  59   1              delay();
  60   1      }
  61          
  62          void WR_Data_R(uchar d)
  63          {
  64   1          delay();
  65   1          Right_Data = d;
  66   1          delay();
  67   1      }
  68          
  69          /*************************************************
  70            Function:       ShowHanzi_L
  71            Description:    在左屏输出一个汉字
  72            Calls:          无
  73            Input:          x,y在屏上输出的坐标,p输出内容的地址指针
  74            Output:         无
  75            Return:         无
  76            Others:         
  77          *************************************************/
  78          void Show_C_L(uchar x,uchar y,uchar *p)
  79          {
  80   1              uchar i;
  81   1              Set_Init_L(SetXadress(x));
  82   1              Set_Init_L(SetYadress(y));
  83   1              for(i=0;i<16;i++)
  84   1              {
  85   2              WR_Data_L(p[i]);
  86   2              }
  87   1              
  88   1              Set_Init_L(SetXadress(x+1));
  89   1              Set_Init_L(SetYadress(y));
  90   1              for(i=0;i<16;i++)
  91   1              {
  92   2                      WR_Data_L(p[i+16]);  
  93   2              }
  94   1      }
  95          
  96          void Show_C_R(uchar x,uchar y,uchar *p)
  97          {
  98   1              uchar i;
  99   1              Set_Init_R(SetXadress(x));
 100   1              Set_Init_R(SetYadress(y));
 101   1              for(i=0;i<16;i++)
 102   1              {
 103   2              WR_Data_R(p[i]);
 104   2              }
 105   1              
 106   1              Set_Init_R(SetXadress(x+1));
 107   1              Set_Init_R(SetYadress(y));
 108   1              for(i=0;i<16;i++)
 109   1              {
 110   2                      WR_Data_R(p[i+16]);  
 111   2              }
 112   1      }
 113          
 114          /*************************************************
 115            Function:       PrintHanzi
 116            Description:    输出N个汉字
 117            Calls:          无
C51 COMPILER V8.02   MAIN                                                                  07/25/2008 12:17:39 PAGE 3   

 118            Input:          x,y在屏上输出的坐标,p输出内容的地址指针
 119            Output:         无
 120            Return:         无
 121            Others:         
 122          *************************************************/
 123          void PrintHanzi(uchar x,uchar y,uchar *p)
 124          {
 125   1          uchar i,j;
 126   1          uchar num= 0;
 127   1          num = (uchar)strlen(p);
 128   1          for(j=0;j<num;j+=2)
 129   1          {           
 130   2                      if(y>63)
 131   2                      {
 132   3                          if(y>127)break;
 133   3                          
 134   3                      for(i = 0;i<22;i++)
 135   3                      {
 136   4                                  if((hanz[i].id[0]==p[j])&&(hanz[i].id[1]==p[j+1]))
 137   4                                  {
 138   5                                      Show_C_R(x,(y-64),hanz[i].font);
 139   5                                      y+=16;
 140   5                                  }
 141   4                      }
 142   3                      }
 143   2                      else
 144   2                      {
 145   3                          for(i = 0;i<22;i++)
 146   3                      {
 147   4                                  if((hanz[i].id[0]==p[j])&&(hanz[i].id[1]==p[j+1]))
 148   4                                  {
 149   5                                      Show_C_L(x,y,hanz[i].font);
 150   5                                      y+=16;
 151   5                                  }
 152   4                      }
 153   3                      }
 154   2                         
 155   2          }
 156   1      }
 157          /*************************************************
 158            Function:       ShowA_L
 159            Description:    在屏上输出任意字符
 160            Calls:          无
 161            Input:          x,y在屏上输出的坐标,p输出内容的地址指针
 162            Output:         无
 163            Return:         无
 164            Others:         
 165          *************************************************/
 166          void Lcd_Print(uchar x,uchar y,char *Str)
 167          {
 168   1          unsigned int Num = 0;//输入字符串的字节数
 169   1          uchar i;
 170   1          Num = (uchar)strlen(Str);
 171   1          for(i = 0;i<Num;)
 172   1          {   
 173   2              if(y>63)//右半屏显示
 174   2              {
 175   3                  if(y>127)break;
 176   3      
 177   3                  
 178   3                      if((Str[i]>=0x21)&&(Str[i]<=0x7f))//要显示的是英文字母或者是特殊符号
 179   3                          {
C51 COMPILER V8.02   MAIN                                                                  07/25/2008 12:17:39 PAGE 4   

 180   4                              Show_E_R(x,(y-64),(Str[i] - 0x21)*16+ASCIICD);
 181   4                              y+=8;
 182   4                              i++;

⌨️ 快捷键说明

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