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

📄 ctl_muen_240128.lst

📁 液晶MGLS2401128TA的控制程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.08   CTL_MUEN_240128                                                       08/31/2005 02:48:49 PAGE 1   


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

line level    source

   1          #include <AT89X51.H>
   2          #include <intrins.h>
   3          #include <math.h>
   4          
   5          extern unsigned char read_from(void);
   6          extern void write_2_code(unsigned char a,unsigned char b,unsigned char c);
   7          extern void write_1_code(unsigned char a,unsigned char c);
   8          extern void write_code(unsigned char c);
   9          extern void write_to(unsigned char a);
  10          extern void lcm_start(void);
  11          extern void cls_lcm(void);
  12          extern void delay(unsigned int a);
  13          enum KEY{key_start,key_up,key_down,key_left,key_right};
  14          struct MENU{
  15          unsigned char ID;
  16          unsigned char class_id;
  17          unsigned char up_id;
  18          unsigned char down_id;
  19          unsigned char chinese_id[2];
  20          unsigned char x1,y1,x2,y2;
  21          };
  22          
  23           code struct MENU  menu_lis[10]={
  24           0,0,255,1,2,3,1,2,3,2,
  25           1,1,0,2,8,9,1,24,3,24,
  26           2,1,0,255,8,9,1,44,3,44,
  27           3,1,0,2,8,9,1,65,3,65,
  28           4,2,1,255,8,9,7,23,9,23,
  29           5,2,1,3,8,9,7,45,9,45,
  30           6,2,1,255,8,9,7,67,9,67,
  31           7,3,2,255,8,9,14,45,16,45,
  32           8,0,255,1,4,5,7,2,9,2,
  33           9,1,0,255,6,7,7,24,9,24
  34          };
  35          
  36          unsigned char count_time=0,id=0,key=0,up_down_key=0;
  37          unsigned char code tab_ascii[][16]={0,0
  38          
  39          
  40          
  41          };
  42          
  43          
  44          
  45          unsigned char code tab_chinese[][32]={
  46          
  47          0x00,0x80,0x3E,0x90,0x02,0xA0,0x12,0x48,0x0C,0x50,0x08,0x20,0x1F,0xF0,0x20,0x2E,
  48          0xCF,0xF4,0x08,0x20,0x08,0x20,0x0F,0xE0,0x04,0x40,0x02,0x88,0x7F,0xFC,0x00,0x00,
  49          /**--0--*以上为"登"的点阵*/
  50          
  51          0x00,0x10,0x3F,0xF8,0x00,0x10,0x00,0x10,0x1F,0xF0,0x00,0x10,0x00,0x14,0xFF,0xFE,
  52          0x01,0x08,0x11,0x10,0x09,0xA0,0x05,0x40,0x09,0x20,0x11,0x1E,0x65,0x04,0x02,0x00,
  53          /**--1--*以上为"录"的点阵*/
  54          
  55          
C51 COMPILER V7.08   CTL_MUEN_240128                                                       08/31/2005 02:48:49 PAGE 2   

  56          0x10,0x40,0x10,0x20,0x13,0xFE,0x12,0x02,0xFC,0x54,0x10,0x88,0x15,0x04,0x18,0x00,
  57          0x30,0x08,0xD3,0xFC,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x24,0x57,0xFE,0x20,0x00,
  58          /**--2--*以上为"控"的点阵*/
  59          
  60          0x04,0x04,0x24,0x04,0x25,0x04,0x3F,0xA4,0x24,0x24,0x44,0xA4,0xFF,0xE4,0x04,0x24,
  61          0x3F,0xA4,0x24,0xA4,0x24,0xA4,0x24,0x84,0x26,0x84,0x25,0x04,0x04,0x14,0x04,0x08,
  62          /**--3--*以上为"制"的点阵*/
  63          
  64          0x08,0x00,0x0A,0x7C,0xFF,0x48,0x08,0x50,0x7E,0x58,0x08,0x44,0xFF,0x64,0x08,0x58,
  65          0x11,0x50,0x3F,0xF0,0xD1,0x10,0x11,0x10,0x11,0x10,0x11,0x50,0x11,0x20,0x01,0x00,
  66          /**--4--*以上为"帮"的点阵*/
  67          
  68          0x02,0x20,0x3F,0x20,0x22,0x20,0x22,0x24,0x23,0xFE,0x3E,0x24,0x22,0x24,0x22,0x24,
  69          0x3E,0x24,0x22,0x24,0x22,0x44,0x22,0x44,0x2F,0x44,0xF0,0x84,0x41,0x28,0x02,0x10,
  70          /**--5--*以上为"助"的点阵*/
  71          
  72          0x10,0x10,0x08,0x18,0x04,0x20,0x04,0x48,0x7F,0xFC,0x01,0x00,0x01,0x00,0x01,0x04,
  73          0xFF,0xFE,0x01,0x00,0x02,0x80,0x02,0x80,0x04,0x40,0x08,0x30,0x30,0x0E,0xC0,0x04,
  74          /**--6--*以上为"关"的点阵*/
  75          
  76          0x00,0x10,0x3F,0xF8,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x04,0xFF,0xFE,0x01,0x00,
  77          0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00,
  78          /**--7--*以上为"于"的点阵*/
  79          
  80          0x04,0x40,0x04,0x44,0xFF,0xFE,0x04,0x40,0x00,0x38,0x3F,0xC0,0x12,0x10,0x09,0x20,
  81          0x01,0x04,0xFF,0xFE,0x03,0x80,0x05,0x40,0x09,0x30,0x11,0x0E,0x61,0x04,0x01,0x00,
  82          /**--8--*以上为"菜"的点阵*/
  83          
  84          0x10,0x10,0x08,0x20,0x04,0x48,0x3F,0xFC,0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,
  85          0x21,0x08,0x3F,0xF8,0x21,0x00,0x01,0x04,0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,
  86          /**--9--*以上为"单"的点阵*/
  87          
  88          
  89          };
  90          
  91          
  92          void delay_1ms(unsigned int dd)
  93          {unsigned char ii;
  94   1      while(dd--)for(ii=0;ii<125;ii++);
  95   1      
  96   1      }
  97          
  98          
  99          void ascii_show(unsigned char x,unsigned char y,bit show_mode,unsigned char ascii)
 100          {
 101   1          unsigned char i ;
 102   1          unsigned int startaddr ;
 103   1          startaddr=(y)*30+x ;
 104   1          for(i=0;i<16;i++)
 105   1          {
 106   2              write_2_code((unsigned char)(startaddr),(unsigned char)(startaddr>>8),0x24);
 107   2              if(show_mode)
 108   2                      write_1_code(tab_ascii[ascii][i],0xc4);
 109   2                      else    write_1_code(~tab_ascii[ascii][i],0xc4);
 110   2              startaddr=startaddr+30 ;
 111   2          }
 112   1          
 113   1      }
 114          
 115          void chinese_show(unsigned char x,unsigned char y,bit show_mode,unsigned int hzcode)
 116          {
 117   1          unsigned char i ;
C51 COMPILER V7.08   CTL_MUEN_240128                                                       08/31/2005 02:48:49 PAGE 3   

 118   1          unsigned int startaddr ;
 119   1          startaddr=(y)*30+x ;
 120   1          for(i=0;i<16;i++)
 121   1          {
 122   2              write_2_code((unsigned char)(startaddr),(unsigned char)(startaddr>>8),0x24);
 123   2             if(show_mode)
 124   2                 { write_1_code(tab_chinese[hzcode][i*2],0xc0);
 125   3              write_1_code(tab_chinese[hzcode][i*2+1],0xc4);
 126   3                      }
 127   2                      else
 128   2                      {write_1_code(~tab_chinese[hzcode][i*2],0xc0);
 129   3              write_1_code(~tab_chinese[hzcode][i*2+1],0xc4);
 130   3                      }
 131   2      
 132   2              startaddr=startaddr+30 ;
 133   2          }
 134   1          
 135   1      }
 136          void show_pixel(unsigned int x,unsigned int y,bit mode)
 137          {
 138   1          unsigned int startaddr=0 ;
 139   1          unsigned char dat ;
 140   1          startaddr=y*30+x/8 ;
 141   1          dat=0xf0+7-x%8 ;
 142   1          if(mode)dat=dat|0x08 ;
 143   1          write_2_code((unsigned char)(startaddr),(unsigned char)(startaddr>>8),0x24);
 144   1          
 145   1          write_code(dat);
 146   1      }
 147          
 148          void show_line(unsigned char x1,unsigned char y1,unsigned char x2,unsigned char y2,bit mode)
 149          {
 150   1          unsigned char x,y ;
 151   1          double k,b ;
 152   1          if(abs(y1-y2)<=abs(x1-x2))
 153   1          {
 154   2              k=(float)(y2-y1)/(float)(x2-x1);
 155   2              b=y1-k*x1 ;
 156   2              if(x1<=x2)
 157   2              {
 158   3                  for(x=x1;x<=x2;x++)
 159   3                  {
 160   4                      y=k*x+b ;
 161   4                      show_pixel(x,y,mode);
 162   4                  }
 163   3              }
 164   2              else 
 165   2              {
 166   3                  
 167   3                  for(x=x2;x<=x1;x++)
 168   3                  {
 169   4                      y=k*x+b ;
 170   4                      show_pixel(x,y,mode);
 171   4                  }
 172   3              }
 173   2              
 174   2              
 175   2          }
 176   1          else 
 177   1          {
 178   2              
 179   2              k=(float)(x2-x1)/(float)(y2-y1);
C51 COMPILER V7.08   CTL_MUEN_240128                                                       08/31/2005 02:48:49 PAGE 4   

 180   2              b=x1-k*y1 ;
 181   2              if(y1<=y2)
 182   2              {
 183   3                  for(y=y1;y<=y2;y++)
 184   3                  {
 185   4                      x=k*y+b ;
 186   4                      show_pixel(x,y,mode);
 187   4                  }
 188   3              }
 189   2              else 
 190   2              {
 191   3                  
 192   3                  for(y=y2;y<=y1;y++)
 193   3                  {
 194   4                      x=k*y+b ;
 195   4                      show_pixel(x,y,mode);
 196   4                  }
 197   3              }
 198   2          }
 199   1      }
 200          
 201          void circle(unsigned char x0,unsigned char y0,unsigned char Rx, bit s)
 202          {
 203   1              unsigned int xx,rr,xt,yt,rs,row,col;
 204   1              yt=Rx;
 205   1              rr=Rx*Rx+1;                     //补偿 1 修正方形
 206   1              rs=(yt+(yt>>1))>>1;             //(*0.75)分开1/8圆弧来画
 207   1              for (xt=0;xt<=rs;xt++)
 208   1              {
 209   2                      xx=xt*xt;
 210   2                      while ((yt*yt)>(rr-xx))yt--;
 211   2                      row=x0+xt;              //第一象限
 212   2                      col=y0-yt;
 213   2                      show_pixel(row,col,s);
 214   2                      row=x0-xt;              //第二象限
 215   2                      show_pixel(row,col,s);
 216   2                      col=y0+yt;              //第三象限
 217   2                      show_pixel(row,col,s);
 218   2                      row=x0+xt;              //第四象限
 219   2                      show_pixel(row,col,s);
 220   2      
 221   2      /***************45度镜象画另一半***************/
 222   2      
 223   2                      row=x0+yt;              //第一象限
 224   2                      col=y0-xt;
 225   2                      show_pixel(row,col,s);
 226   2                      row=x0-yt;              //第二象限
 227   2                      show_pixel(row,col,s);
 228   2                      col=y0+xt;              //第三象限
 229   2                      show_pixel(row,col,s);
 230   2                      row=x0+yt;              //第四象限
 231   2                      show_pixel(row,col,s);
 232   2              }
 233   1      }
 234          
 235          //--------to draw the square in the lcm--------------//
 236          void draw_fill_Square(unsigned char x1,unsigned char y1,unsigned char x2,unsigned char y2,bit mode)
 237          {
 238   1      unsigned char ii,jj;
 239   1      
 240   1      for(ii=y1;ii<abs(y2);ii++)
 241   1      {
C51 COMPILER V7.08   CTL_MUEN_240128                                                       08/31/2005 02:48:49 PAGE 5   

 242   2      for(jj=x1;jj<abs(x2);jj++)

⌨️ 快捷键说明

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