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

📄 mcu_test.lst

📁 c /c++的智能VGA控制资料。值得大家一看!!
💻 LST
📖 第 1 页 / 共 3 页
字号:
 196          */
 197          void  MCU_Draw_LineWith(uint16 x0,uint16 y0,uint16 x1,uint16 y1,uint8 width)
 198          {
 199   1              write_byte(0x81);  //指令开始 
 200   1              write_byte(0x30);  //指令代码(画直线) 
 201   1              write_byte(Fcolor.B);  //前景色3个字节
 202   1              write_byte(Fcolor.G);  //绿
 203   1              write_byte(Fcolor.R);  //红
 204   1              write_byte(x0/100);  //直线起点位置x轴坐标(取整运算-x为两字节变量,高低两字节100进1) 
 205   1              write_byte(x0%100); //直线起点位置x轴坐标(取模运算) 
 206   1              write_byte(y0/100);  //直线起点位置y轴坐标
 207   1              write_byte(y0%100); //直线起点位置y轴坐标
 208   1              write_byte(x1/100);  //直线终点位置x轴坐标(取整运算-x为两字节变量,高低两字节100进1) 
 209   1              write_byte(x1%100); //直线终点位置x轴坐标(取模运算) 
 210   1              write_byte(y1/100);  //直线终点位置y轴坐标
 211   1              write_byte(y1%100); //直线终点位置y轴坐标
 212   1              write_byte(width);   //直线宽度(宽度不得大于30)
 213   1              write_byte(0x84);   //指令结束 
 214   1      }
 215          /*
 216          ******************************************************************
 217          *
 218          * 名称:MCU_Draw_Rectangle()
 219          * 功能:画矩形。
 220          * 入口参数:x0 矩形起点所在列的位置
 221          *                       y0 矩形起点所在行的位置
 222          *                       width 矩形宽
 223          *                       high 矩形高
 224          ******************************************************************
 225          */
 226          void  MCU_Draw_Rectangle(uint16 x0, uint16 y0,uint16 width,uint16 high)
 227          {
 228   1              write_byte(0x81);  //指令开始 
 229   1              write_byte(0x31);  //指令代码(画直线) 
 230   1              write_byte(Fcolor.B);  //前景色3个字节
 231   1              write_byte(Fcolor.G);  //绿
 232   1              write_byte(Fcolor.R);  //红
 233   1              write_byte(x0/100);  //矩形起点位置x轴坐标(取整运算-x为两字节变量,高低两字节100进1) 
 234   1              write_byte(x0%100); // 
 235   1              write_byte(y0/100);  //矩形起点位置y轴坐标
 236   1              write_byte(y0%100); //
 237   1              write_byte(width/100);  //矩形宽度(取整运算-width为两字节变量,高低两字节100进1) 
 238   1              write_byte(width%100); //(取模运算) 
 239   1              write_byte(high/100);  //矩形高度
 240   1              write_byte(high%100); //(取模运算) 
 241   1              write_byte(0x84);   //指令结束 
C51 COMPILER V8.02   MCU_TEST                                                              03/31/2009 13:10:27 PAGE 5   

 242   1      }  
 243          /*
 244          ******************************************************************
 245          *
 246          * 名称:MCU_Draw_RectangleFill()
 247          * 功能:清除矩形。
 248          * 入口参数:x0 矩形起点所在列的位置
 249          *                       y0 矩形起点所在行的位置
 250          *                       width 矩形宽
 251          *                       high 矩形高
 252          * 说明: 
 253          ******************************************************************
 254          */
 255          void  MCU_Draw_RectangleFill(uint16 x0, uint16 y0,uint16 width,uint16 high)
 256          {
 257   1              write_byte(0x81);  //指令开始 
 258   1              write_byte(0x32);  //指令代码(清除矩形) 
 259   1              write_byte(Fcolor.B);  //前景色3个字节
 260   1              write_byte(Fcolor.G);  //绿
 261   1              write_byte(Fcolor.R);  //红
 262   1              write_byte(x0/100);  //矩形起点位置x轴坐标(取整运算-x为两字节变量,高低两字节100进1) 
 263   1              write_byte(x0%100); // 
 264   1              write_byte(y0/100);  //矩形起点位置y轴坐标
 265   1              write_byte(y0%100); //
 266   1              write_byte(width/100);  //矩形宽度(取整运算-width为两字节变量,高低两字节100进1) 
 267   1              write_byte(width%100); //(取模运算) 
 268   1              write_byte(high/100);  //矩形高度
 269   1              write_byte(high%100); //(取模运算)
 270   1              write_byte(0x84);   //指令结束 
 271   1      } 
 272          /****************************************************************************
 273          * 名称:MCU_Draw_Circle()
 274          * 功能:指定圆心位置及半径,画圆。
 275          * 入口参数:x0          圆心的x坐标值
 276          *           y0          圆心的y坐标值
 277          *           r       圆的半径
 278          ****************************************************************************/
 279          void  MCU_Draw_Circle(uint16 x0, uint16 y0, uint16 r)
 280          {
 281   1              write_byte(0x81);  //指令开始 
 282   1              write_byte(0x33);  //指令代码(画圆) 
 283   1              write_byte(Fcolor.B);  //前景色3个字节
 284   1              write_byte(Fcolor.G);  //绿
 285   1              write_byte(Fcolor.R);  //红
 286   1              write_byte(x0/100);  //圆心位置x轴坐标(取整运算-x0为两字节变量,高低两字节100进1) 
 287   1              write_byte(x0%100);  // 
 288   1              write_byte(y0/100);  //圆心位置y轴坐标
 289   1              write_byte(y0%100);  //
 290   1              write_byte(r/100);   //圆的X轴半径(取整运算-r为两字节变量,高低两字节100进1) 
 291   1              write_byte(r%100);   // 
 292   1              write_byte(r/100);   //圆的Y轴半径
 293   1              write_byte(r%100);   //
 294   1              write_byte(0x84);    //指令结束 
 295   1      } 
 296          /****************************************************************************
 297          * 名称:MCU_Draw_CircleFill()
 298          * 功能:指定圆心位置及半径,画圆并填充,填充色与边框色一样。
 299          * 入口参数:x0          圆心的x坐标值
 300          *           y0          圆心的y坐标值
 301          *           xr      圆的X轴半径
 302          *           yr      圆的Y轴半径
 303          ****************************************************************************/
C51 COMPILER V8.02   MCU_TEST                                                              03/31/2009 13:10:27 PAGE 6   

 304          void  MCU_Draw_CircleFill(uint16 x0, uint16 y0, uint16 xr,uint16 yr)
 305          {
 306   1              write_byte(0x81);  //指令开始 
 307   1              write_byte(0x34);  //指令代码(画填充圆) 
 308   1              write_byte(Fcolor.B);  //前景色3个字节
 309   1              write_byte(Fcolor.G);  //绿
 310   1              write_byte(Fcolor.R);  //红
 311   1              write_byte(x0/100);  //圆心位置x轴坐标(取整运算-x0为两字节变量,高低两字节100进1) 
 312   1              write_byte(x0%100);  // 
 313   1              write_byte(y0/100);  //圆心位置y轴坐标
 314   1              write_byte(y0%100);  //
 315   1              write_byte(xr/100);   //圆的X轴半径(取整运算-r为两字节变量,高低两字节100进1) 
 316   1              write_byte(xr%100);   // 
 317   1              write_byte(yr/100);   //圆的Y轴半径
 318   1              write_byte(yr%100);   //
 319   1              write_byte(0x84);    //指令结束 
 320   1      } 
 321          
 322          /*
 323          ******************************************************************
 324          *
 325          * 名称:    MCU_Draw_ClearScreen()
 326          * 功能:    用指定的颜色清屏。
 327          * 入口参数:清屏颜色
 328          ******************************************************************
 329          */
 330          void  MCU_Draw_ClearScreen()
 331          {
 332   1              write_byte(0x81);  //指令开始 
 333   1              write_byte(0x35);  //指令代码(画圆) 
 334   1              write_byte(Fcolor.B);  //前景色3个字节
 335   1              write_byte(Fcolor.G);  //绿
 336   1              write_byte(Fcolor.R);  //红
 337   1              write_byte(0x84);    //指令结束 
 338   1      } 
 339          /*
 340          ******************************************************************
 341          *
 342          * 名称:    MCU_Draw_Wave()
 343          * 功能:    用指定的颜色画波形或曲线。显示波形的原理是:
 344                                  x轴从坐标原点开始自动加一,y轴(幅度)是*p_data
 345          * 入口参数:x0          坐标原点位置x轴坐标
 346          *           y0          坐标原点位置y轴坐标
 347          *           con=1 y轴(幅度)的大小用一个字节表示。con = 2:y轴(幅度)的大小用二个字节表示
 348          ******************************************************************
 349          */
 350          void  MCU_Draw_Wave(uint16 x0,uint16 y0,uint8 con,uint16 *p_data)
 351          {
 352   1              write_byte(0x81);  //指令开始 
 353   1              write_byte(0x36);  //指令代码(画圆) 
 354   1              write_byte(Fcolor.B);  //前景色3个字节
 355   1              write_byte(Fcolor.G);  //绿
 356   1              write_byte(Fcolor.R);  //红
 357   1              write_byte(x0/100);  //坐标原点位置x轴坐标(取整运算-x0为两字节变量,高低两字节100进1) 
 358   1              write_byte(x0%100);  // 
 359   1              write_byte(y0/100);  //坐标原点位置y轴坐标
 360   1              write_byte(y0%100);  //
 361   1          write_byte(con);
 362   1              switch(con)
 363   1          {case 1:
 364   2                         do
 365   2                         {
C51 COMPILER V8.02   MCU_TEST                                                              03/31/2009 13:10:27 PAGE 7   

 366   3                  write_byte(*p_data%100); //因为*p_data定义为short类型指针,所以这里要先取模运算再发送
 367   3                              p_data++;
 368   3                         }
 369   2                         while(*p_data !=0x84);
 370   2                     break;
 371   2      
 372   2               case 2:
 373   2                          do
 374   2                              {
 375   3                               write_byte(*p_data/100);
 376   3                               write_byte(*p_data%100);
 377   3                               p_data++;
 378   3                              }
 379   2                              while(*p_data !=0xffff);   //这里不能定义为0x84,因为p_data[x]有可能是0x84
 380   2                          break;
 381   2      
 382   2               default: break;
 383   2               }
 384   1              write_byte(0x84);    //指令结束 
 385   1      }
 386          uint16 mouse_x,mouse_y;
 387          uint8  mouse_buf[5];
 388          uint8  cnt=0;
 389          void Wait_MouseKeyDown(void)
 390          {
 391   1         uint8 ch;
 392   1         while(1)
 393   1        {     if(RI==0)       continue;
 394   2          ch=SBUF;
 395   2              RI=0;
 396   2          if((cnt==0) && ((ch==0xf3)||(ch==0xf4)))   {cnt++;}
 397   2          else if((cnt==1)&& (ch<100)) {mouse_buf[cnt]=ch;cnt++;}
 398   2              else if((cnt==2)&& (ch<100)) {mouse_buf[cnt]=ch;cnt++;}
 399   2              else if((cnt==3)&& (ch<100)) {mouse_buf[cnt]=ch;cnt++;}

⌨️ 快捷键说明

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