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

📄 main.lst

📁 t6963驱动,keilc51编译
💻 LST
📖 第 1 页 / 共 2 页
字号:
 205   2            //图形函数,用于描点画图
 206   2            //---------------------------------------------------------------------------
 207   2            //在指定位置显示一个点
 208   2            //如果显示屏超过了256*256,请修改这个函数 PointX,PointY的类型
 209   2            //Mode 1:显示 0:清除该点
 210   2            Pixel(unsigned char PointX,unsigned char PointY, bit Mode)
 211   2            {
 212   2            unsigned int StartAddr=0;
C51 COMPILER V7.50   MAIN                                                                  12/30/2008 11:47:53 PAGE 5   

 213   2            unsigned char dat;
 214   2            StartAddr=PointX*LineChar + PointY/8;
 215   2            dat=0xf0+7-PointY%8;
 216   2            if(Mode) dat=dat|0x08;
 217   2            OutPortCom3( (unsigned char)(StartAddr),(unsigned char)(StartAddr>>8),0x24 
 218   2            ); //设置该点所在单元地址
 219   2            OutPortCom1(dat);
 220   2            }
 221   2            //-------------------------------------------------------------------------------
 222   2            //划线函数
 223   2            void Line( unsigned char x1, unsigned char y1, unsigned char x2, unsigned 
 224   2            char y2, bit Mode)
 225   2            {
 226   2            unsigned char x,y;
 227   2            double k,b;
 228   2            if( abs(y1-y2) <= abs(x1-x2) ) // |k|<=1
 229   2            {
 230   2            k=(float)(y2-y1) / (float)(x2-x1) ;
 231   2            b=y1-k*x1;
 232   2            if( x1 <= x2 )
 233   2            {
 234   2            for(x=x1;x<=x2;x++)
 235   2            {
 236   2            y=k*x+b;
 237   2            Pixel(x, y, Mode);
 238   2            }
 239   2            }
 240   2            else
 241   2            {
 242   2            for(x=x2;x<=x1;x++)
 243   2            { y=k*x+b;
 244   2            Pixel(x, y, Mode);
 245   2            }
 246   2            }
 247   2            }
 248   2            else // abs(y1-y2) > abs(x1-x2) |K|>1
 249   2            {
 250   2            k=(float)(x2-x1) / (float)(y2-y1) ;
 251   2            b=x1-k*y1;
 252   2            if( y1 <= y2 )
 253   2            {
 254   2            for(y=y1;y<=y2;y++)
 255   2            { x=k*y+b;
 256   2            Pixel( x , y,Mode );
 257   2            }
 258   2            }
 259   2            else
 260   2            {
 261   2            for(y=y2;y<=y1;y++)
 262   2            { x=k*y+b;
 263   2            Pixel( x , y,Mode );
 264   2            }
 265   2            }
 266   2            }
 267   2            }
 268   2      
 269   2            /*--------------------------------------------------------------------------------------------------
             --
 270   2            void ClearScreen()
 271   2            {
 272   2            unsigned int i;
 273   2            ///////// 清显示 RAM 区 0000h--2000h (8k)
C51 COMPILER V7.50   MAIN                                                                  12/30/2008 11:47:53 PAGE 6   

 274   2            OutPortCom3(0x00,0x00,0x24); //设置指针地址0000H
 275   2            OutPortCom1(0xb0); //设置自动写状态
 276   2            for(i=0x00;i<0x2000;i++) OutPortData(0x00); // data=0;
 277   2            OutPortCom1(0xb2); // 自动写结束
 278   2            }
 279   2            //初始化LCD
 280   2            //需要手动设置
 281   2            void InitLCD()
 282   2            {
 283   2            OutPortCom3( 0x00,0x00,0x42 ); //设置图形显示区域首地址GraphAddr
 284   2            OutPortCom3( 30,0x00,0x43 ); //设置图形显示区域宽度 : LineChar
 285   2            // OutPortCom3( 0x00,0x00,0x42 ); //设置图形显示区域首地址GraphAddr
 286   2            // OutPortCom3( 0x10,0x00,0x43); //设置图形显示区域宽度:10H
 287   2            OutPortCom1(0xa7); //设置光标形状 cursor size 8x8
 288   2            OutPortCom1(0x80); //设置显示方式: CGROM方式 文本\图形 "或"
 289   2            OutPortCom1(0x98); //设置显示开关: 1001 1100 图形
 290   2            ClearScreen();
 291   2            }
 292   2      /*128x64液晶KS0108驱动程序(C51)-P4
 293   2            128x64液晶KS0108驱动程序(C51)-P4
 294   2            作者:佚名    51单片机来源:不详    点击数:464    更新时间:2007-8-4   
 295   2      
 296   2            //显示一屏汉字
 297   2            //pageheadaddr:此屏汉字代码地址区首地址
 298   2            void ShowPage(unsigned char pagehead[][16])
 299   2            { unsigned char i;
 300   2            for(i=0;i<4;i++) ShowLine(i,pagehead[i]); //1行8个汉字,16字节
 301   2            }
 302   2            /*--------------------------------------------------------------------------------------------------
             ---
 303   2            //读显示数据
 304   2            unsigned char ReadByte()
 305   2            {
 306   2            unsigned char dat;
 307   2            CheckState();
 308   2            di=1; rw=1;
 309   2            LCD12864DataPort=0xff;
 310   2            en=1; dat=LCD12864DataPort; en=0;
 311   2            return(dat);
 312   2            } 
 313   2            /*--------------------------------------------------------------------------------------------------
             ---
 314   2            //反显一个8*8字块
 315   2            //lin:行(0-3), column: 列(0-7)
 316   2            void ReverseShow88(unsigned char lin,unsigned char column)
 317   2            { unsigned char i;
 318   2            unsigned char tab[8];
 319   2            if(column<8) SelectScreen(1); //如果列数<4(0,1,2,3),则写在第一屏上
 320   2            else SelectScreen(2); //否则 (4,5,6,7), 写在第二屏上
 321   2            //读上部8列
 322   2            column=column<<3; //每个方块8*8大小
 323   2            SetLine(lin);
 324   2            SetColumn(column);
 325   2            tab[0]=ReadByte(); //空读!!!!! //?
 326   2            for(i=0;i<8;i++) tab[i]=~ReadByte();
 327   2            //写回
 328   2            SetLine(lin);
 329   2            SetColumn(column);
 330   2            for(i=0;i<8;i++) WriteByte(tab[i]);
 331   2            }
 332   2            /*--------------------------------------------------------------------------------------------------
             ---*/
C51 COMPILER V7.50   MAIN                                                                  12/30/2008 11:47:53 PAGE 7   

 333   2            /*--------------------------------------------------------------------------------------------------
             ---
 334   2            //反显一个字符
 335   2            //lin:行(0-4), column: 列(0-15)
 336   2            void ReverseShowChar(unsigned char lin,unsigned char column)
 337   2            { lin=lin<<1;
 338   2            ReverseShow88(lin ,column);
 339   2            ReverseShow88(lin+1,column);
 340   2            }
 341   2            /*--------------------------------------------------------------------------------------------------
             ---
 342   2            //反显一个汉字
 343   2            //lin:行(0-3), column: 列(0-7)
 344   2            ReverseShowHZ(unsigned char lin,unsigned char column)
 345   2            {
 346   2            lin=lin<<1;
 347   2            column=column<<1;
 348   2            ReverseShow88(lin ,column );
 349   2            ReverseShow88(lin ,column+1);
 350   2            ReverseShow88(lin+1,column );
 351   2            ReverseShow88(lin+1,column+1);
 352   2            }
 353   2            /*--------------------------------------------------------------------------------------------------
             ---
 354   2            //反显一行汉字
 355   2            //lin:行
 356   2            ReverseShow(unsigned char lin)
 357   2            { unsigned char i;
 358   2            for(i=0;i<8;i++) ReverseShowHZ(lin,i);
 359   2            }
 360   2            /*--------------------------------------------------------------------------------------------------
             ---
 361   2            void InitLCD() //初始化LCD
 362   2            { unsigned char i=250; //延时
 363   2            while(i--);
 364   2            //reset=0;//复位
 365   2            //reset=1;
 366   2            SelectScreen(0);
 367   2            SetOnOff(0); //关显示
 368   2            ClearScreen(1);//清屏
 369   2            ClearScreen(2);
 370   2            SelectScreen(0);
 371   2            SetOnOff(1); //开显示
 372   2            SelectScreen(0);
 373   2            SetStartLine(0); //开始行:0
 374   2            }
 375   2            /*--------------------------------------------------------------------------------------------------
             ---
 376   2            void Reset() //液晶复位
 377   2            {
 378   2            //reset 低复位 _|-
 379   2            reset=0;
 380   2            _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); 
 381   2            _nop_(); _nop_(); _nop_();
 382   2            reset=1;
 383   2            //全屏
 384   2            cs1=0;
 385   2            _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); 
 386   2            _nop_(); _nop_(); _nop_();
 387   2            cs2=0; 
 388   2            _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); 
 389   2            _nop_(); _nop_(); _nop_();
C51 COMPILER V7.50   MAIN                                                                  12/30/2008 11:47:53 PAGE 8   

 390   2            SendCommandToLCD(0x3F);
 391   2            }
 392   2      
 393   2      
 394   2      
 395   2      
 396   2      
 397   2      
 398   2      
 399   2      
 400   2      
 401   2      
 402   2      
 403   2      
 404   2      
 405   2      
 406   2      
 407   2      
 408   2      
 409   2      
 410   2      
 411   2      
 412   2      
 413   2      
 414   2      
 415   2      
 416   2      
 417   2      
 418   2      
 419   2      
 420   2      
 421   2      
 422   2      
 423   2      
 424   2      
 425   2      
 426   2      
 427   2      
 428   2      
 429   2      
 430   2            //lin:行(0-7), column: 列(0-7)
*** ERROR C300 IN LINE 430 OF main.c: unterminated comment

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

⌨️ 快捷键说明

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