高级会员 
  
	- 积分
 - 717
 
        - 金钱
 - 717 
 
       - 注册时间
 - 2016-6-10
 
      - 在线时间
 - 191 小时
 
 
 
 | 
 
20金钱 
源代码 
void DrawPoint(unsigned char x,unsigned char y) 
{ 
    unsigned int bt=0,read=0; 
    unsigned char x_adr,y_adr,high_bit,low_bit; 
        Write_Cmd(0x34); 
        Write_Cmd(0x34); 
        Delay1ms(1); 
    y_adr=0x80+y%32;            //计算Y轴的地址,当Y大于31时,Y的坐标是下半屏,当Y小于等于31为上半屏。 
    if(y>31)                    //从0X88开始,小于31时X的地址是在上半屏,从0X80开始 
          x_adr=0x88+x/16;         
    else  x_adr=0x80+x/16; 
    bt=0x8000>>(x%16); //求这个点到底是在哪个点 
      Write_Cmd(y_adr);        //读取数据的时候要先写入所取数据的地址 
          Write_Cmd(x_adr); 
    Read_Data();         //读取的第一个字节不要, 
    read=Read_Data();     //从第二个字节开始接收。 
    read<<=8; 
    read|=Read_Data(); 
    bt=bt|read; 
    high_bit=bt>>8; 
    low_bit=bt%256; 
    Write_Cmd(y_adr);     //写入点的时候,重新写入地址,因为地址已经改变。 
    Write_Cmd(x_adr); 
    Write_Data(high_bit); 
    Write_Data(low_bit); 
    Write_Cmd(0x36); //开显示,转回基本指令集 */        
} 
 
显示普通字符是没有问题的,(说明我的电路和基本的读写函数是没有问题的)但是只要一开启绘图显示就会显示乱码? 
有没有可以帮忙看看是我的程序哪里写错了吗? 
 
拜托!!! 
 |   
 
 
最佳答案
查看完整内容[请看2#楼] 
已经解决了,是因为用ST7920控制器画点之前需要把DGRAM全部清零,因为12864的清屏函数并不是清除DGRAM的,所以需要写一个函数就是把所有DGRAM赋零的函数,在做课程设计贪吃蛇,快完成了。等做完就分享 
 
 
 
 
 
 
 |