xieshuangok 发表于 2009-3-22 12:57:28

关于RA8835作图功能的问题!!

刚接触RA8835不久,发现其中的设置有许多搞不清,但现在想问下关于作图功能,以下程序调试时更改 @ 出就能在整屏上显示,不过我如果只在屏幕的某一个地方显示该这么写?例如我只在屏上显示 “大” 字???当我把 “大”的代码取出,然后写到ARM中,显示却不正确?
/* --- 清显示 32K RAM区(清屏)子程序 --- */
void Lcd_Clear(void)
{
    uint i = 32768;
    //uint i = 9600;
    uchar j=0;

   writecommand(SystemSet);   //System Set
   writedata(0x31);                      //不用内部字符发生器
   writecommand(HdotScr);                //写入点位移指令代码
   writedata(0x00);                      //写入P1参数
   writecommand(Ovlay);                  //显示合成方式设置
   writedata(0x0C);                      //0000 1100 显示一区三区图形属性
   delay_ms(100);
   writecommand(DispOn);               //写入指令代码
   writedata(0x54);                        //54

    writecommand(CsrDirR);               //光标移动方向定义:自动右移
    writecommand(CsrW);                  //光标Locate,定位
    writedata(0x00);                     //写入参数CSRL设置参数光标指针低8位
    writedata(0x00);                     //写入参数CSRH设置参数光标指针高8位
    writecommand(mWrite);                  //数据写入指令,代码0x42
    while(i--)         
    {
         writedata(0X00);                //注:程序不断更改此值,得到不同的显示图    @
                                       
    }
}
程序修改 @ 出时,若写0x00,能清屏,写0xff,整屏都写满,写0x80,整屏的竖线。这样证明我其他的设置都没有错,并且以上的作图程序也没问题,为什么在我只写一部分的时候就出现错误呢?(注:本人用ATmega16)

xieshuangok 发表于 2009-3-22 12:58:46

先自个顶下!!!

tigerwork 发表于 2009-3-22 14:34:39

上面程序是全屏写,你需要对指定位置写。写16*16的“大”字需要32字节,每写2个字节需要转一行。

xieshuangok 发表于 2009-3-22 15:56:33

谢谢楼上的解答,当我换行的时候,是不是需要重新定义光标地址?也就是需要把下一行的首地址写入?

xieshuangok 发表于 2009-3-22 18:08:13

问题已解决,修改程序如下:
/* --- 清显示 32K RAM区(清屏)子程序 --- */
void Lcd_Clear(void)
{
    uint i = 32768;
    //uint i = 9600;
    uchar j=0;
    writecommand(CsrDirR);               //光标移动方向定义:自动右移
    writecommand(CsrW);                  //光标Locate,定位
    writedata(0x00);                     //写入参数CSRL设置参数光标指针低8位
    writedata(0x00);                     //写入参数CSRH设置参数光标指针高8位
    writecommand(mWrite);                  //数据写入指令,代码0x42
    while(i--)         
    {
         writedata(0X00);                //清屏
    }
      
    writecommand(CsrW);                  //光标Locate,定位
    writedata(0x50);                     //写入参数CSRL设置参数光标指针低8位
    writedata(0x00);
    writecommand(mWrite);                  //数据写入指令,代码0x42
    while(a)         
    {
         writedata(a);                //a数组中存放要显示的代码
    }
}

但我又发现了新问题,我用320*240的液晶屏,设置一行显示40个字符,那么相应的第二行的首地址应该是0x28H(40),才对啊,为什么我设置成0X50它才从第二行显示?
希望也有困惑的奋斗者把你遇到的问题拿出来晒晒,希望用RA8835作图的前辈给点意见,鄙人先在此谢过!

xyz2008 发表于 2009-4-14 10:58:30

mark

zysun20010300 发表于 2011-6-23 09:10:32

应为你写的16X16的字,占用了两行。不知道这个解释对不对。

caaron168 发表于 2011-9-23 11:19:26

MARK

heart080811126 发表于 2011-11-21 09:22:48

mark

wei669 发表于 2013-8-12 15:34:11

取模方式和程序不对应
页: [1]
查看完整版本: 关于RA8835作图功能的问题!!