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

📄 m12864.lst

📁 12864 proteus c 菜单仿真 89C51
💻 LST
字号:
C51 COMPILER V8.08   M12864                                                                12/04/2000 09:48:14 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE M12864
OBJECT MODULE PLACED IN M12864.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE M12864.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*
   2          **长沙太阳人电子有限公司SMG12864模拟接口参考程序(KS0108)
   3          **电话:  0731-4167806,4167808
   4          **E-mail: www@sunman.cn
   5          **Create by :谭超  E-mail: tanchao_1@126.com
   6          **最后修改 :  2005年3月17日
   7          **版本说明: 带显示矩形框、线、点子程序。
   8          */
   9          
  10          //[字符图象输出文件=hzk.c]
  11          //[字体名称=宋体]
  12          //[字体大小=16]
  13          //[字节方向=垂直]
  14          //[字位顺序=从低到高]
  15          
  16          #include <reg51.h>
  17          #include <math.h>
  18          #include <intrins.h>
  19          #include <hzk.c>
  20          
  21          unsigned char data Lcd_CurrentX,Lcd_CurrentY,Lcd_Mask;
  22          unsigned char code LeftMask[]={0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80};
  23          unsigned char code RightMask[]={0xff,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f};
  24          unsigned char code Mask1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  25          unsigned char code Mask2[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
  26          
  27          sbit RSPIN = P3^0;
  28          sbit RWPIN = P3^3;
  29          sbit EPIN = P3^4;
  30          sbit CS1PIN = P3^1;
  31          sbit CS2PIN = P3^2;
  32          
  33          #define LCD_CMD_COL  0X40
  34          #define LCD_CMD_PAGE 0XB8
  35          #define LCD_CMD_ON   0X3F
  36          #define LCD_CMD_OFF  0X3E
  37          #define LCD_CMD_STARTLINE 0XC0
  38          #define LCD_LEFT 0
  39          #define LCD_TOP  0
  40          #define LCD_RIGHT 127
  41          #define LCD_BOTTOM 63
  42          
  43          //延时子程序
  44          void delay(unsigned int t)
  45          {  unsigned int i,j;
  46   1         for(i=0;i<t;i++)
  47   1            for(j=0;j<10;j++)
  48   1               ;
  49   1      }
  50          
  51          //片1测忙
  52          void lcdwaitidle1(void)
  53          {  P1=0xff;
  54   1         RSPIN=0;
  55   1         RWPIN=1;
C51 COMPILER V8.08   M12864                                                                12/04/2000 09:48:14 PAGE 2   

  56   1         CS1PIN=1;
  57   1         EPIN=1;
  58   1         while((P1&0x80)==0x80);
  59   1         EPIN=0;
  60   1         CS1PIN=0;
  61   1      }
  62          
  63          //片2测忙
  64          void lcdwaitidle2(void)
  65          {  P1=0xff;
  66   1         RSPIN=0;
  67   1         RWPIN=1;
  68   1         CS2PIN=1;
  69   1         EPIN=1;
  70   1         while((P1&0x80)==0x80);
  71   1         EPIN=0;
  72   1         CS2PIN=0;
  73   1      }
  74          
  75          //写指令代码到片1
  76          void lcdwc1(unsigned char cmdcode)
  77          {  lcdwaitidle1();
  78   1         P1=cmdcode;
  79   1         RSPIN=0;
  80   1         RWPIN=0;
  81   1         CS1PIN=1;
  82   1         EPIN=1;
  83   1         _nop_();
  84   1         EPIN=0;
  85   1         CS1PIN=0;
  86   1      }
  87          
  88          //写指令代码到片2
  89          void lcdwc2(unsigned char cmdcode)
  90          {  lcdwaitidle2();
  91   1         P1=cmdcode;
  92   1         RSPIN=0;
  93   1         RWPIN=0;
  94   1         CS2PIN=1;
  95   1         EPIN=1;
  96   1         _nop_();
  97   1         EPIN=0;
  98   1         CS2PIN=0;
  99   1      }
 100          
 101          //写数据到片1
 102          void lcdwd1(unsigned char dispdata)
 103          {  lcdwaitidle1();
 104   1         P1=dispdata;
 105   1         RSPIN=1;
 106   1         RWPIN=0;
 107   1         CS1PIN=1;
 108   1         EPIN=1;
 109   1         _nop_();
 110   1         EPIN=0;
 111   1         CS1PIN=0;
 112   1      }
 113          
 114          //写数据到片2
 115          void lcdwd2(unsigned char dispdata)
 116          {  lcdwaitidle2();
 117   1         P1=dispdata;
C51 COMPILER V8.08   M12864                                                                12/04/2000 09:48:14 PAGE 3   

 118   1         RSPIN=1;
 119   1         RWPIN=0;
 120   1         CS2PIN=1;
 121   1         EPIN=1;
 122   1         _nop_();
 123   1         EPIN=0;
 124   1         CS2PIN=0;
 125   1      }
 126          
 127          //读片1数据
 128          unsigned char lcdrd1(void)
 129          {  unsigned char i;
 130   1         lcdwaitidle1();
 131   1         P1=0xff;
 132   1         RSPIN=1;
 133   1         RWPIN=1;
 134   1         CS1PIN=1;
 135   1         EPIN=1;
 136   1         _nop_();
 137   1         i=P1;
 138   1         EPIN=0;
 139   1         CS1PIN=0;
 140   1         return i;
 141   1      }
 142          
 143          //读片2数据
 144          unsigned char lcdrd2(void)
 145          {  unsigned char i;
 146   1         lcdwaitidle2();
 147   1         P1=0xff;
 148   1         RSPIN=1;
 149   1         RWPIN=1;
 150   1         CS2PIN=1;
 151   1         EPIN=1;
 152   1         _nop_();
 153   1         i=P1;
 154   1         EPIN=0;
 155   1         CS2PIN=0;
 156   1         return i;
 157   1      }
 158          
 159          //写指令代码
 160          void lcdwc(unsigned char cmdcode)
 161          {  if((Lcd_CurrentX)<0x40)
 162   1            lcdwc1(cmdcode);
 163   1         else
 164   1            lcdwc2(cmdcode);
 165   1      }
 166          
 167          //写数据
 168          void lcdwd(unsigned char dispdata)
 169          {  if(Lcd_CurrentX<64)
 170   1            lcdwd1(dispdata);
 171   1         else
 172   1            lcdwd2(dispdata);
 173   1      }
 174          
 175          //内部数据地址指针定位
 176          void lcdpos(void)
 177          {  lcdwc(LCD_CMD_COL|(Lcd_CurrentX&0x3f));      //设置地址列指针
 178   1         lcdwc(LCD_CMD_PAGE|((Lcd_CurrentY/8)&0x7));  //设置地址页指针
 179   1      }
C51 COMPILER V8.08   M12864                                                                12/04/2000 09:48:14 PAGE 4   

 180          
 181          //读数据
 182          unsigned char lcdrd(void)
 183          {  unsigned char i;
 184   1         if(Lcd_CurrentX<64)
 185   1         {  i=lcdrd1();
 186   2            i=lcdrd1();        //读两次
 187   2         }
 188   1         else
 189   1         {  i=lcdrd2();
 190   2            i=lcdrd2();
 191   2         }
 192   1         lcdpos();
 193   1         return i;
 194   1      }
 195          
 196          //当前坐标移动到下一个点
 197          void lcdcursornext(void)
 198          {  Lcd_CurrentX++;
 199   1         if(Lcd_CurrentX>LCD_RIGHT)
 200   1         {  Lcd_CurrentX=LCD_LEFT;
 201   2            Lcd_CurrentY+=8;
 202   2            if(Lcd_CurrentY>LCD_BOTTOM)
 203   2               Lcd_CurrentY=LCD_TOP;
 204   2         }
 205   1      }
 206          
 207          void displaybyte(unsigned char dispdata)
 208          {  lcdpos();         //内部数据地址指针定位
 209   1         lcdwd(dispdata);  //写数据
 210   1         lcdcursornext();  //当前坐标移动到下一个点
 211   1      }
 212          
 213          //整屏显示
 214          void lcdfill(unsigned char FillData)
 215          {  Lcd_Mask=0xff;
 216   1         for(Lcd_CurrentX=LCD_LEFT,Lcd_CurrentY=LCD_TOP;1;)
 217   1         {  displaybyte(FillData);
 218   2            if((Lcd_CurrentX==LCD_LEFT)&&(Lcd_CurrentY==LCD_TOP))
 219   2               break;
 220   2         }
 221   1      }
 222          
 223          //初始化
 224          void lcdreset()
 225          {  lcdwc1(LCD_CMD_ON);          //开显示
 226   1         lcdwc2(LCD_CMD_ON);
 227   1         lcdwc1(LCD_CMD_STARTLINE);   //设置显示初始行
 228   1         lcdwc2(LCD_CMD_STARTLINE);
 229   1      }
 230          
 231          #include <display.c>
 232          #include <point.c>
 233          
 234          
 235          main()
 236          {  while(1)
 237   1         {  lcdreset();      //初始化
 238   2            lcdfill(0xff);   //整屏显示
 239   2            delay(5000);
 240   2            lcdfill(0);    //清屏
 241   2            delay(5000);
C51 COMPILER V8.08   M12864                                                                12/04/2000 09:48:14 PAGE 5   

 242   2            put_str_xy(0,0,"长沙太阳人电子有限公司");
 243   2            delay(5000);
 244   2         }
 245   1      }
 246          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1796    ----
   CONSTANT SIZE    =   2223    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      3      27
   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 + -