模块是ST7565R。<br />因为显示字母用16(行)×8(列)的格式,字库这样做的。连续字符本应各占用连续的8个column吧,可函数disps运行后第0、2、4个字符分别被第1、3、5个覆盖。disp1能把所有字符都连续显示出来,各自16列,很难看。<br />是否该芯片能把column自动按16取整,还是我哪里设置不对?<br />弄了整半天了唉,多谢!<br /><br />void disp_16by8(uchar page,uchar column,uchar *str){<br /> uchar i;<br /> EA=0;WFEED1=0xA5;WFEED2=0x5A;EA=1; <br /> page=page+0xb0;<br /> column=column&0x7f; // column<128.<br /> write_LCD_command(page);<br /> write_LCD_command(0x0f&column); //set start column adress <br /> write_LCD_command(0x10|(0x0f&(column>>4)));<br /> for(i=0;i<8;i++)<br /> write_LCD_data(*(str+i));<br /><br /> page++;<br /> write_LCD_command(page);<br /> write_LCD_command(0x0f&column); //set start column adress<br /> write_LCD_command(0x10|(0x0f&(column>>4)));<br /> for(i=8;i<16;i++)<br /> write_LCD_data(*(str+i));<br /><br />void disps(uchar page,uchar column,uchar *str,uchar length){<br /> uchar i;<br /> for(i=0;i<length;i++){<br /> disp_16by8(page,column+8*i,asc_to_disp(*str));<br /> str=str+1;//<br /> delay_ms(100);<br /> }<br />}<br /><br />void disps1(uchar page,uchar column,uchar *str,uchar length){<br /> uchar i;<br /> for(i=0;i<length;i++){<br /> disp_16by8(page,column+16*i,asc_to_disp(*str));<br /> str=str+1;//<br /> delay_ms(100);<br /> }<br />}<br /> |
|