×
单片机 > 单片机程序设计 > 详情

51单片机12864打点程序

发布时间:2020-05-27 发布时间:
|

void curve(unsigned char xlable,unsigned char ylable,bit dot)
{
 unsigned char H[1]={0};//读RAM寄存
 unsigned char L[1]={0};
 unsigned char xbuf;

 w_com(0x01); 
 w_com(0x34); 
 w_com(0x36); //功能设置:一次送8位数据,扩展指令集

 xlable=xlable+xoffset;//求相对零点
 ylable=ylable+yoffset;

 if(xlable<0)xlable=-1;//超出边界处理
 if(ylable<0)ylable=0;
 if(ylable>64)ylable=65;
 
 xbuf=xlable%16;
 xlable=xlable/16;
 if(ylable>32)//上半屏
 {
  ylable=64-ylable;//切换上下屏
  xbuf=15-xbuf;//x坐标归位
  w_com(0x80|ylable); //输入垂直地址
  w_com(0x80|xlable); //输入水平地址
  read_RAM();//屏蔽
  if(xbuf>7)
  {
   if(dot==0)
    H[0]=read_RAM()&(~(1<   else 
    H[0]=read_RAM()|1<    L[0]=read_RAM();
  }
  else
  {
   H[0]=read_RAM();//插点,需要打的点
   if(dot==0)
    L[0]=read_RAM()&(~(1<   else
    L[0]=read_RAM()|1<  }
  w_com(0x80|ylable); //输入垂直地址
  w_com(0x80|xlable); //输入水平地址
  w_byte(H[0]);
  w_byte(L[0]);
 }
 else //下半屏
 {
  ylable=32-ylable;
  xbuf=15-xbuf;//x坐标归位
  w_com(0x80|ylable); //输入垂直地址
  w_com(0x88|xlable); //输入水平地址
  read_RAM();//屏蔽
  if(xbuf>7)
  {
   if(dot==0)
    H[0]=read_RAM()&(~(1<   else
    H[0]=read_RAM()|1<   L[0]=read_RAM();
  }
  else
  {
   H[0]=read_RAM();//插点,需要打的点
   if(dot==0)
    L[0]=read_RAM()&(~(1<   else
   L[0]=read_RAM()|1<  }
  w_com(0x80|ylable); //输入垂直地址
  w_com(0x88|xlable); //输入水平地址
  w_byte(H[0]);
  w_byte(L[0]);
 }
}

//清除屏幕
void BMP_clear( void )
{
     unsigned char i,j;unsigned char L[1]={0};
     w_com(0x34);      //8Bit扩充指令集,即使是36H也要写两次
     w_com(0x36);      //绘图ON,基本指令集里面36H不能开绘图
     for(i=0;i<32;i++)            //12864实际为256x32
     {
   
           w_com(0x80|i);   //行位置
           w_com(0x80);      //列位置
           for(j=0;j<32;j++)            //256/8=32 byte
              w_byte(L[0]);
 }
}




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
单片机中高阻态的实质及意义