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

📄 guibasic.lst

📁 SED1335驱动程序(LCD320*240)含GUI
💻 LST
📖 第 1 页 / 共 4 页
字号:
C51 COMPILER V8.09   GUIBASIC                                                              12/12/2007 14:46:39 PAGE 1   


C51 COMPILER V8.09, COMPILATION OF MODULE GUIBASIC
OBJECT MODULE PLACED IN GUIbasic.OBJ
COMPILER INVOKED BY: D:\电子软件\Keil\C51\BIN\C51.EXE GUIbasic.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include  "LCD_320240.h"
   2          //#include "uart_lib.h"
   3          //#include "44b.h"
   4          #include "LCDlib.h"
*** ERROR C141 IN LINE 13 OF LCDLIB.H: syntax error near 'row', expected ')'
*** ERROR C141 IN LINE 14 OF LCDLIB.H: syntax error near 'row', expected ')'
*** ERROR C141 IN LINE 15 OF LCDLIB.H: syntax error near 'rowfirst', expected ')'
   5          #include "GUIbasic.h"
*** ERROR C129 IN LINE 6 OF GUIBASIC.H: missing ';' before 'GUI_Point'
   6          
   7          
   8          /*
   9          ** 函数名称:LineX
  10          ** 功能描述: 画垂直线
  11          ** 输 入:x,开始点,结束点,颜色
  12          ** 输 出: 无
  13          ** 全局变量: 无
  14          ** 调用模块: 
  15          **************************
  16          */
  17          
  18          void GUI_RLine(uint16 X0,uint16 Y0,uint16 Y1,uint8 color)
  19          { 
  20           UINT8 bak;
  21           if(Y0>Y1)
  22                  {
  23                          bak=Y1;
  24                          Y1=Y0;
  25                          Y0=bak;
  26                  }
  27           do{
  28                  GUI_Point(X0, Y0, color);
  29                  Y0++;
  30                  }while(Y1>=Y0); 
  31          }
  32          /*
  33          ** 函数名称:GUI_HLine
  34          ** 功能描述: 画水平线
  35          ** 输 入:x,开始点,结束点,颜色
  36          ** 输 出: 无
  37          ** 全局变量: 无
  38          ** 调用模块: 
  39          **************************
  40          */
  41          
  42          void GUI_HLine(uint16 X0,uint16 Y0,uint16 X1,uint8 color)
  43          {
  44           UINT8 bak;
  45           if(X0>X1)
  46                  {
  47                          bak=X1;
  48                          X1=X0;
  49                          X0=bak;
  50                  }
  51           do{
C51 COMPILER V8.09   GUIBASIC                                                              12/12/2007 14:46:39 PAGE 2   

  52                  GUI_Point(X0, Y0, color);
  53                  X0++;
  54                  }while(X1>=X0);
  55          }
  56          /*
  57          ** 函数名称:GUI_Point
  58          ** 功能描述: 画水平线
  59          ** 输 入:x,开始点,结束点,颜色
  60          ** 输 出: 无
  61          ** 全局变量: 无
  62          ** 调用模块: 
  63          **************************
  64          */
  65          UINT8 GUI_Point(uint16 X,uint16 Y,uint8 color)
  66          {
  67                  uint16 addr,i;
  68                  UINT8 point_data,data;
  69                  /*参数过滤*/
  70                  if(X>=SCREEN_WIDTH)return(0);
  71                  if(Y>=SCREEN_HIGHT)return(0);
  72                  i=X%8;
  73                  X=X>>3;
  74                  addr=Y*40+X;
  75                  WLCDCmd( CSRW);               /*设定光标位置命令*/
  76              WLCDData( addr%256 );                            
  77              WLCDData( addr/256 ); 
  78              WLCDCmd(MREAD);  /* MREAD 代码 */ 
  79              data=RLCDData();
  80               if(i==0)point_data=0x80;
  81                  else 
  82                          {
  83                                  point_data=0x01;
  84                                  for(;i<7;i++)
  85                                          point_data=point_data<<1;
  86                          }
  87                  if(color)point_data=data|point_data;
  88                  else       point_data=(~(point_data))&data;
  89                  WLCDCmd( CSRW);               /*设定光标位置命令*/
  90              WLCDData( addr%256 );                            
  91              WLCDData( addr/256 );  
  92              WLCDCmd(MWRITE); //  MWRITE 代码 
  93               WLCDData( point_data );
  94                  return(1);
  95          }
  96          /*
  97          ** 函数名称:GUI_DrawRect
  98          ** 功能描述: 画矩形框
  99          ** 输 入:x,开始点,结束点,颜色
 100          ** 输 出: 无
 101          ** 全局变量: 无
 102          ** 调用模块: 
 103          **************************
 104          */
 105          void GUI_Rect(uint16 X0,uint16 Y0,uint16 X1,uint16 Y1,uint8 color)
 106          {
 107                  GUI_HLine(X0,Y0,X1,1);
 108                  GUI_HLine(X1,Y0,Y1,1);
 109                  GUI_HLine(X0,Y1,X1,1);
 110                  GUI_HLine(X0,Y0,Y1,1);  
 111          }
 112          
 113          /****************************************************************************
C51 COMPILER V8.09   GUIBASIC                                                              12/12/2007 14:46:39 PAGE 3   

 114          * 名称:GUI_DrawRectFill()
 115          * 功能:填充矩形。画一个填充的矩形,填充色与边框色一样。
 116          * 入口参数: x0         矩形左上角的x坐标值
 117          *           y0          矩形左上角的y坐标值
 118          *           x1      矩形右下角的x坐标值
 119          *           y1      矩形右下角的y坐标值
 120          *           color       填充颜色
 121          * 出口参数:无
 122          * 说明:操作失败原因是指定地址超出有效范围。
 123          ****************************************************************************/
 124          void  GUI_RectFill(uint32 x0, uint32 y0, uint32 x1, uint32 y1, uint8 color)
 125          {  uint32  i;
 126          
 127             /* 先找出矩形左上角与右下角的两个点,保存在(x0,y0),(x1,y1) */
 128             if(x0>x1)                                            // 若x0>x1,则x0与x1交换
 129             {  i = x0;
 130                x0 = x1;
 131                x1 = i;
 132             }
 133             if(y0>y1)                                            // 若y0>y1,则y0与y1交换
 134             {  i = y0;
 135                y0 = y1;
 136                y1 = i;
 137             }
 138             
 139             /* 判断是否只是直线 */
 140             if(y0==y1) 
 141             {  GUI_HLine(x0, y0, x1, color);
 142                return;
 143             }
 144             if(x0==x1) 
 145             {  GUI_RLine(x0, y0, y1, color);
 146                return;
 147             }
 148          
 149             while(y0<=y1)                                                
 150             {  GUI_HLine(x0, y0, x1, color);     // 当前画水平线
 151                y0++;                                                     // 下一行
 152             }
 153          }
 154          
 155          
 156          /****************************************************************************
 157          * 名称:GUI_Square()
 158          * 功能:画正方形。
 159          * 入口参数: x0         正方形左上角的x坐标值
 160          *           y0          正方形左上角的y坐标值
 161          *           with    正方形的边长
 162          *           color       显示颜色
 163          * 出口参数:无
 164          * 说明:操作失败原因是指定地址超出有效范围。
 165          ****************************************************************************/
 166          void  GUI_Square(uint32 x0, uint32 y0, uint32  with, uint8  color)
 167          {   if(with==0) return;
 168                  if( (x0+with) > SCREEN_WIDTH ) return;
 169                  if( (y0+with) > SCREEN_HIGHT) return;
 170                  GUI_Rect(x0, y0, x0+with, y0+with, color);
 171          }
 172          
 173          
 174          
 175          /****************************************************************************
C51 COMPILER V8.09   GUIBASIC                                                              12/12/2007 14:46:39 PAGE 4   

 176          * 名称:GUI_DrawLine()
 177          * 功能:画任意两点之间的直线。
 178          * 入口参数: x0         直线起点的x坐标值
 179          *           y0          直线起点的y坐标值
 180          *           x1      直线终点的x坐标值
 181          *           y1      直线终点的y坐标值
 182          *           color       显示颜色(对于黑白色LCM,为0时灭,为1时显示)
 183          * 出口参数:无
 184          * 说明:操作失败原因是指定地址超出有效范围。
 185          ****************************************************************************/
 186          void  GUI_Line(uint32 x0, uint32 y0, uint32 x1, uint32 y1, uint8 color)
 187          {  int32   dx;                                          // 直线x轴差值变量
 188             int32   dy;                                  // 直线y轴差值变量
 189             int8    dx_sym;                                      // x轴增长方向,为-1时减值方向,为1时增值方向
 190             int8    dy_sym;                                      // y轴增长方向,为-1时减值方向,为1时增值方向
 191             int32   dx_x2;                                       // dx*2值变量,用于加快运算速度
 192             int32   dy_x2;                                       // dy*2值变量,用于加快运算速度
 193             int32   di;                                          // 决策变量
 194             
 195             
 196             dx = x1-x0;                                          // 求取两点之间的差值
 197             dy = y1-y0;
 198             
 199             /* 判断增长方向,或是否为水平线、垂直线、点 */
 200             if(dx>0)                                                     // 判断x轴方向
 201             {  dx_sym = 1;                                       // dx>0,设置dx_sym=1
 202             }
 203             else
 204             {  if(dx<0)
 205                {  dx_sym = -1;                           // dx<0,设置dx_sym=-1
 206                }
 207                else
 208                {  // dx==0,画垂直线,或一点
 209                   GUI_RLine(x0, y0, y1, color);
 210                   return;
 211                }
 212             }
 213             
 214             if(dy>0)                                                     // 判断y轴方向
 215             {  dy_sym = 1;                                       // dy>0,设置dy_sym=1
 216             }
 217             else
 218             {  if(dy<0)
 219                {  dy_sym = -1;                           // dy<0,设置dy_sym=-1
 220                }
 221                else
 222                {  // dy==0,画水平线,或一点
 223                   GUI_HLine(x0, y0, x1, color);
 224                   return;
 225                }
 226             }
 227              
 228             /* 将dx、dy取绝对值 */
 229             dx = dx_sym * dx;
 230             dy = dy_sym * dy;
 231           
 232             /* 计算2倍的dx及dy值 */
 233             dx_x2 = dx*2;
 234             dy_x2 = dy*2;
 235             
 236             /* 使用Bresenham法进行画直线 */
 237             if(dx>=dy)                                           // 对于dx>=dy,则使用x轴为基准
C51 COMPILER V8.09   GUIBASIC                                                              12/12/2007 14:46:39 PAGE 5   

 238             {  di = dy_x2 - dx;
 239                while(x0!=x1)
 240                {  GUI_Point(x0, y0, color);
 241                   x0 += dx_sym;

⌨️ 快捷键说明

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