微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 12864串口不能读的导致不能能画任意点的解决方法

12864串口不能读的导致不能能画任意点的解决方法

时间:10-02 整理:3721RD 点击:
12864串口可以节约IO口 但大多数12864都不支持串口读导致不能完成任意点的描绘。通过一个小技巧可以解决这个问题
以下是解决代码:
void DrawDots(uint8 x,uint8 y,uint8  color)//打点函数
  {
     uint8 row,xlabel,xlabel_bit;
     uint8 Read_H=0,Read_L=0;
     write_com(0x34);      //扩充指令
     xlabel=x>>4;         //去16*16首地址
     xlabel_bit=x&0x0F;
     if(y<32) row=y;
     else
     {
       row=y-32;
       xlabel+=8;
     }
     write_com(row+0x80);
     write_com(xlabel+0x80);
    Read_H=huancun[row][xlabel][1];
   Read_L=huancun[row][xlabel][2];

     if(xlabel_bit<8)
     {
      switch(color)
       {
         case 0:Read_H&=(~(0x01<<(7-xlabel_bit)));huancun[row][xlabel][1]=Read_H; break; //变暗,看不见
         case 1:Read_H|=(0x01<<(7-xlabel_bit));huancun[row][xlabel][1]=Read_H;break; //变亮  ,看得见
         case 2:Read_H^=(0x01<<(7-xlabel_bit));huancun[row][xlabel][1]=Read_H;break; //反转
         default:break;
       }
      write_data(Read_H);
       write_data(Read_L);  
     }
     else
     {
      switch(color)
       {
         case 0:Read_L&=(~(0x01<<(15-xlabel_bit)));huancun[row][xlabel][2]=Read_L; break; //变暗   ,看不见
         case 1:Read_L|=(0x01<<(15-xlabel_bit));huancun[row][xlabel][2]=Read_L;break; //变亮  ,看得见
         case 2:Read_L^=(0x01<<(15-xlabel_bit));huancun[row][xlabel][2]=Read_L;break; //反转
         default:break;
       }  
      write_data(Read_H);
       write_data(Read_L);  
     }
write_com(0x36);      //绘图指令
     write_com(0x30);//恢复正常模式
  }

通过建立一个三位数组 huancun【32】【16】【2】来保存写入的数据

有不足之处欢迎指正

这是效果图


上一篇:Jackson奉上
下一篇:程序设计

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top