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

📄 z12232a.lst

📁 DS1302显示时钟
💻 LST
字号:
C51 COMPILER V7.10   Z12232A                                                               10/31/2007 09:58:23 PAGE 1   


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

line level    source

   1          /*
   2          **长沙太阳人电子有限公司SMG12232A总线接口参考程序
   3          **电话:  0731-4167806,4167808
   4          **E-mail: www@sunman.cn
   5          **Create by :谭超  E-mail: tanchao_1@126.com
   6          **最后修改 :  2005年4月22日
   7          **版本说明: 带显示矩形框、线、点子程序。
   8          */
   9          
  10          //[字符图象输出文件=hzk.c]
  11          //[字体名称=宋体]
  12          //[字体大小=16]
  13          //[字节方向=垂直]
  14          //[字位顺序=从低到高]
  15          
  16          #include <reg51.h>
  17          #include <math.h>
  18          #include <hzk.c>
  19          
  20          unsigned char data Lcd_CurrentX,Lcd_CurrentY,Lcd_Mask;
  21          unsigned char code LeftMask[]={0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80};
  22          unsigned char code RightMask[]={0xff,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f};
  23          unsigned char code Mask1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  24          unsigned char code Mask2[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
  25          
  26          //前两位由5个口线决定,见SMG12232A说明书 基本操作时序
  27          //cs1--p2.2      cs2--p2.1     A0--p2.0
  28          unsigned char xdata Lcd_Chip1_Cmd_W_Reg _at_ 0x02ff;
  29          unsigned char xdata Lcd_Chip2_Cmd_W_Reg _at_ 0x04ff;
  30          unsigned char xdata Lcd_Chip1_Data_W_Reg _at_ 0x03ff;
  31          unsigned char xdata Lcd_Chip2_Data_W_Reg _at_ 0x05ff;
  32          unsigned char xdata Lcd_Chip1_Data_R_Reg _at_ 0x03ff;
  33          unsigned char xdata Lcd_Chip2_Data_R_Reg _at_ 0x05ff;
  34          unsigned char xdata Lcd_Chip1_Sta_R_Reg _at_ 0x02ff;
  35          unsigned char xdata Lcd_Chip2_Sta_R_Reg _at_ 0x04ff;
  36          
  37          #define LCD_CMD_COL  0X00
  38          #define LCD_CMD_PAGE 0XB8
  39          #define LCD_LEFT 0
  40          #define LCD_TOP  0
  41          #define LCD_RIGHT 127
  42          #define LCD_BOTTOM 31
  43          
  44          //延时子程序
  45          void delay(unsigned int t)
  46          {  unsigned int i,j;
  47   1         for(i=0;i<t;i++)
  48   1            for(j=0;j<10;j++)
  49   1               ;
  50   1      }
  51          
  52          //片1测忙
  53          void lcdwaitidle1(void)
  54          {  while(((Lcd_Chip1_Sta_R_Reg)&0x80)==0x80);
  55   1      }
C51 COMPILER V7.10   Z12232A                                                               10/31/2007 09:58:23 PAGE 2   

  56          
  57          //片2测忙
  58          void lcdwaitidle2(void)
  59          {  while(((Lcd_Chip2_Sta_R_Reg)&0x80)==0x80);
  60   1      }
  61          
  62          //写指令代码到片1
  63          void lcdwc1(unsigned char cmdcode)
  64          {  lcdwaitidle1();
  65   1         Lcd_Chip1_Cmd_W_Reg=cmdcode;
  66   1      }
  67          
  68          //写指令代码到片2
  69          void lcdwc2(unsigned char cmdcode)
  70          {  lcdwaitidle2();
  71   1         Lcd_Chip2_Cmd_W_Reg=cmdcode;
  72   1      }
  73          
  74          //写数据到片1
  75          void lcdwd1(unsigned char dispdata)
  76          {  lcdwaitidle1();
  77   1         Lcd_Chip1_Data_W_Reg=dispdata;
  78   1      }
  79          
  80          //写数据到片2
  81          void lcdwd2(unsigned char dispdata)
  82          {  lcdwaitidle2();
  83   1         Lcd_Chip2_Data_W_Reg=dispdata;
  84   1      }
  85          
  86          //读片1数据
  87          unsigned char lcdrd1(void)
  88          {  lcdwaitidle1();
  89   1         return Lcd_Chip1_Data_R_Reg;
  90   1      }
  91          
  92          //读片2数据
  93          unsigned char lcdrd2(void)
  94          {  lcdwaitidle2();
  95   1         return Lcd_Chip2_Data_R_Reg;
  96   1      }
  97          
  98          //写指令代码
  99          void lcdwc(unsigned char cmdcode)
 100          {  if((Lcd_CurrentX)<61)
 101   1            lcdwc1(cmdcode);
 102   1         else
 103   1            lcdwc2(cmdcode);
 104   1      }
 105          
 106          //写数据
 107          void lcdwd(unsigned char dispdata)
 108          {  if(Lcd_CurrentX<61)
 109   1            lcdwd1(dispdata);
 110   1         else
 111   1            lcdwd2(dispdata);
 112   1      }
 113          
 114          //内部数据地址指针定位
 115          void lcdpos(void)
 116          {  if(Lcd_CurrentX<61)
 117   1            lcdwc(LCD_CMD_COL|(Lcd_CurrentX&0x3f));      //设置地址列指针
C51 COMPILER V7.10   Z12232A                                                               10/31/2007 09:58:23 PAGE 3   

 118   1         else
 119   1            lcdwc(LCD_CMD_COL|((Lcd_CurrentX-61)&0x7f));
 120   1         lcdwc(LCD_CMD_PAGE|((Lcd_CurrentY/8)&0x3));     //设置地址页指针
 121   1      }
 122          
 123          //读数据
 124          unsigned char lcdrd(void)
 125          {  unsigned char i;
 126   1         if(Lcd_CurrentX<61)
 127   1         {  i=lcdrd1();      //读两次
 128   2            i=lcdrd1();
 129   2         }
 130   1         else
 131   1         {  i=lcdrd2();
 132   2            i=lcdrd2();
 133   2         }
 134   1         lcdpos();
 135   1         return i;
 136   1      }
 137          
 138          //当前坐标移动到下一个点
 139          void lcdcursornext(void)
 140          {  Lcd_CurrentX++;
 141   1         if(Lcd_CurrentX>LCD_RIGHT)
 142   1         {  Lcd_CurrentX=LCD_LEFT;
 143   2            Lcd_CurrentY+=8;
 144   2            if(Lcd_CurrentY>LCD_BOTTOM)
 145   2               Lcd_CurrentY=LCD_TOP;
 146   2         }
 147   1      }
 148          
 149          void displaybyte(unsigned char dispdata)
 150          {  lcdpos();         //内部数据地址指针定位
 151   1         lcdwd(dispdata);  //写数据
 152   1         lcdcursornext();  //当前坐标移动到下一个点
 153   1      }
 154          
 155          //整屏显示
 156          void lcdfill(unsigned char FillData)
 157          {  for(Lcd_CurrentX=LCD_LEFT,Lcd_CurrentY=LCD_TOP;1;)
 158   1         {  displaybyte(FillData);
 159   2            if((Lcd_CurrentX==LCD_LEFT)&&(Lcd_CurrentY==LCD_TOP))
 160   2               break;
 161   2         }
 162   1      }
 163          
 164          //初始化
 165          void lcdreset()
 166          {  lcdwc1(0xe2); lcdwc2(0xe2);   //复位
 167   1         lcdwc1(0xc0); lcdwc2(0xc0);   //设置显示初始行
 168   1         lcdwc1(0xa0); lcdwc2(0xa0);   //设置列序方向为正向
 169   1         lcdwc1(0xa4); lcdwc2(0xa4);   //设置显示模式为正常显示
 170   1         lcdwc1(0xa9); lcdwc2(0xa9);   //设置占空比为1/32
 171   1         lcdwc1(0xaf); lcdwc2(0xaf);   //开显示
 172   1      }
 173          
 174          #include <display.c>
*** ERROR C279 IN LINE 11 OF BIANLIANG.H: 'LeftMask': multiple initialization
*** ERROR C279 IN LINE 12 OF BIANLIANG.H: 'RightMask': multiple initialization
*** ERROR C279 IN LINE 13 OF BIANLIANG.H: 'Mask1': multiple initialization
*** ERROR C279 IN LINE 14 OF BIANLIANG.H: 'Mask2': multiple initialization
 175          #include <point.c>
C51 COMPILER V7.10   Z12232A                                                               10/31/2007 09:58:23 PAGE 4   

 176          
 177          
 178          main()
 179          {  while(1)
 180   1         {  lcdreset();      //初始化
 181   2            lcdfill(0xff);   //整屏显示
 182   2            delay(5000);
 183   2            lcdfill(0);    //清屏
 184   2            delay(5000);
 185   2            put_str_xy(0,0,"长沙太阳人电子有限公司");
 186   2            delay(5000);
 187   2         }
 188   1      }
 189          

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

⌨️ 快捷键说明

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