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

📄 12232.lst

📁 刚通过的JHD12232液晶显示器资料 JHD资料不好找啊
💻 LST
📖 第 1 页 / 共 3 页
字号:
 433          ////////////////////////////////////////////////////////////////////////////////
 434          //调用方式:void set_page(uchar page)
 435          //函数说明:同时设置主(右)从(左)显示页为0-3页
 436          ////////////////////////////////////////////////////////////////////////////////
 437          void set_page(uchar page)
 438          {
 439   1          send_mi(page_addr_set|page);
 440   1          send_si(page_addr_set|page);
 441   1      }
 442          
 443          ////////////////////////////////////////////////////////////////////////////////
 444          //调用方式:void SetAddress(uchar address)
 445          //函数说明:同时设置主(右)从(左)列地址为0-61列
 446          ////////////////////////////////////////////////////////////////////////////////
 447          void set_address(uchar address)
 448          {
 449   1          send_mi(address&0x7F);  //&0x7F,考虑到防止越限
 450   1          send_si(address&0x7F);
 451   1      }
 452          
 453          ////////////////////////////////////////////////////////////////////////////////
 454          //调用方式:void putchar_l(uchar c)
 455          //函数说明:在右页(从窗口)当前地址画一个字节(8点)
 456          ////////////////////////////////////////////////////////////////////////////////
 457          void putchar_l(uchar c)
 458          {
 459   1          send_md(c);
 460   1      }
 461          
 462          ////////////////////////////////////////////////////////////////////////////////
 463          //调用方式:void putchar_r(uchar c)
 464          //函数说明:在左页(主窗口)当前地址画一个字节(8点)
 465          ////////////////////////////////////////////////////////////////////////////////
 466          void putchar_r(uchar c)
 467          {
 468   1          send_sd(c);
 469   1      }    
 470          
 471          ////////////////////////////////////////////////////////////////////////////////
 472          //调用方式:void draw_bmp(uchar col,uchar layer,uchar width,uchar *bmp)
 473          //函数说明:画一个图,横坐标是col,layer表示上下层,width是图形的宽,高固定16
 474          //          bmp是图形指针
 475          //          使用zimo21软件,采用纵向取模下高位得到bmp数据。
 476          //  col     图型的起始位置0~121
 477          // layer    图形的位置(Y坐标)0-下半部分 非0-上半部分
 478          // width    图形宽度8,16可选
 479          //  bmp     图形数据指针
 480          ////////////////////////////////////////////////////////////////////////////////
 481          void draw_bmp(uchar col,uchar layer,uchar width,uchar *bmp)
 482          {
 483   1          uchar x;        
 484   1      	uchar address;                  //address表示显存的物理地址
 485   1      	uchar p=0;     	   
 486   1          uchar page=0;
 487   1      	uchar window=0;  			    //page表示上下两页,window表示左右窗口(0左,1右)
 488   1          if (layer) page=2;              //左-主窗口,右-从窗口
C51 COMPILER V6.12  12232                                                                  04/20/2008 14:20:41 PAGE 9   

 489   1          
 490   1          for (x=col; x<col+width; x++)
 491   1          {   
 492   2      	    if (x>121)return;           //防止显示乱码
 493   2              if (x>60)					//左右窗口定位
 494   2      		{
 495   3      			window=1;               //右-从窗口
 496   3      			address=x%61;
 497   3      		}
 498   2              else
 499   2      		    address=x;              //主窗口输出  
 500   2      
 501   2              set_page(page);             //上层数据输出
 502   2              set_address(address);
 503   2              
 504   2              if (window) 				
 505   2                putchar_r(bmp[p]);        
 506   2              else 
 507   2                putchar_l(bmp[p]);        
 508   2      
 509   2              set_page(page+1);           //下层数据输出
 510   2              set_address(address);       //列保持不变 
 511   2              
 512   2              if (window) 				
 513   2                 putchar_r(bmp[p+width]);     
 514   2      		else 
 515   2                 putchar_l(bmp[p+width]);       
 516   2      
 517   2              p++;
 518   2          }
 519   1      }
 520          
 521          ////////////////////////////////////////////////////////////////////////////////
 522          //函数:void disp_one_ascii(uchar col,uchar layer,uchar ascii_code)
 523          //说明:显示单个ASCII码col-列;layer-上下行:1-上,0-下;ascii_code:所要显示德ASCCII码
 524          ////////////////////////////////////////////////////////////////////////////////
 525          void disp_one_ascii(uchar col,uchar layer,uchar ascii_code,uchar mode)
 526          {
 527   1      	uchar i;
 528   1      	for(i=0;i<16;i++)                //ASCII码显示占用16个字节
 529   1      	{   
 530   2      		if(mode)dot_buffer[i]=~ascii[(ascii_code-0x20)*16 + i];
 531   2      	    else    dot_buffer[i]= ascii[(ascii_code-0x20)*16 + i]; 
 532   2      	}  
 533   1      	draw_bmp(col,layer,8,dot_buffer);
 534   1      }
 535          
 536          ////////////////////////////////////////////////////////////////////////////////
 537          //函数:void disp_ram_data(uchar col,uchar layer,uchar n,uchar mode)
 538          //说明:显示小于4个的十进制数字//修改缓冲区的大小可以扩展显示
 539          ////////////////////////////////////////////////////////////////////////////////
 540          void disp_ram_data(uchar col,uchar layer,uchar n,uchar mode)
 541          {
 542   1           while(n--)
 543   1      	 {
 544   2      		if(mode)disp_one_ascii(col,layer,disp_buffer[n]+0x30,1);
 545   2      		else    disp_one_ascii(col,layer,disp_buffer[n]+0x30,0);
 546   2      		col += 8;
 547   2      	 }
 548   1      }
 549          
 550          ////////////////////////////////////////////////////////////////////////////////
C51 COMPILER V6.12  12232                                                                  04/20/2008 14:20:41 PAGE 10  

 551          //函数:void dprintf(uchar col,uchar layer,uchar *ptr,uchar mode)
 552          //说明:ASCII(8*16) 和 汉字(16*16)显示函数
 553          ////////////////////////////////////////////////////////////////////////////////
 554          void dprintf(uchar col,uchar layer,uchar *ptr,uchar mode)
 555          {
 556   1      	uchar c1,c2;
 557   1      	uchar i,j,k;
 558   1      	uchar ulen;
 559   1      	//uchar ucol,ulayer,umode;
 560   1      	uchar ucol,ulayer;
 561   1          ulen = 0; 
 562   1      	ucol = col;   
 563   1      	ulayer = layer;
 564   1      	
 565   1      	while (ptr[ulen]!= 0)ulen++;		   //探测字串长度
 566   1          i=0;
 567   1      	while(i<ulen)
 568   1      	{
 569   2      		c1 = ptr[i];
 570   2      		c2 = ptr[i+1];
 571   2              //ASCII字符与汉字内码的区别在于128做分界;大于128的为汉字码
 572   2      		if(c1 <=128)					  //ASCII
 573   2      		{   
 574   3      		        if(mode)disp_one_ascii(ucol,ulayer,c1,1);
 575   3      				else    disp_one_ascii(ucol,ulayer,c1,0);
 576   3      				ucol+=8;
 577   3      				i++;                      //ASCII码的处理
 578   3      		}
 579   2      		else							  //中文
 580   2      		{
 581   3      			    for(j=0;j<sizeof(GB_16)/sizeof(GB_16[0]);j++)  				                        
 582   3      			    {                         //查找定位当前汉字的点阵区
 583   4      				    if((c1 == GB_16[j].Index[0]) && (c2 == GB_16[j].Index[1]))
 584   4      					break;
 585   4      			    }
 586   3      			    for(k=0;k<32;k++)
 587   3      				{   if(mode)dot_buffer[k]=~GB_16[j].Msk[k];
 588   4      				    else    dot_buffer[k]= GB_16[j].Msk[k];
 589   4      				}
 590   3      			    draw_bmp(ucol,ulayer,16,dot_buffer);
 591   3      			    ucol+=16;
 592   3      				i+=2;                     //中文的处理
 593   3      		}
 594   2      	}
 595   1      }	
 596          
 597          ////////////////////////////////////////////////////////////////////////////////
 598          ////////////////////////////////////////////////////////////////////////////////
 599          void main(void)
 600          {	
 601   1         char i;
 602   1         uint  j;
 603   1      //   DDRC=0xF0;                           //C口高四位为输出控制端口
 604   1      //   DDRA=0xFF;                           //A口为数据线(一般为输出,仅在读LCD状态时为输入)
 605   1         for(i=0;i<10;i++);
 606   1      	for(j=1;j<10;j++);       //开机延时
 607   1         lcd_init();
 608   1         lcd_clr();
 609   1         while(1) 
 610   1      	{
 611   2      		for(i=121;i>0;i--)        //往左滚动输出
 612   2      				{
C51 COMPILER V6.12  12232                                                                  04/20/2008 14:20:41 PAGE 11  

 613   3      			   lcd_clr();
 614   3      				dprintf((i+24),1,"太川单片机          欢迎光临",0);//第二步,调整数据使它达到要求10个空格刚刚好在中间
 615   3      			   dprintf((i-96),0,"HTTP://TCMCU.ICPCN.COM",0);
 616   3      			   //第一步,调整I-x使最后出现的达到要求,第一个字出现在后面也不要紧
 617   3      				delay_ms(200);
 618   3      				
 619   3      				}
 620   2          delay_ms(3000);
 621   2          lcd_clr();
 622   2          delay_ms(3000);
 623   2      	 for(i=121;i>0;i--)      //往左滚动输出
 624   2      				{
 625   3      			   lcd_clr();
 626   3      				dprintf((i+24),1,"太川单片机",0);
 627   3      			   dprintf(i,0,"电话:028-66021915",1); 
 628   3      			   delay_ms(200);
 629   3      					
 630   3      				}
 631   2      	  
 632   2      
 633   2      	
 634   2         
 635   2      	} 
 636   1      }
 637          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1123    ----
   CONSTANT SIZE    =   1653    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     36      40
   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 + -