想以16×8显示字母,可LCD列值似乎只能按16的倍数取整

[复制链接]
2723|0
 楼主| t-z-sh 发表于 2008-7-26 17:47 | 显示全部楼层 |阅读模式
模块是ST7565R。<br />因为显示字母用16(行)×8(列)的格式,字库这样做的。连续字符本应各占用连续的8个column吧,可函数disps运行后第0、2、4个字符分别被第1、3、5个覆盖。disp1能把所有字符都连续显示出来,各自16列,很难看。<br />是否该芯片能把column自动按16取整,还是我哪里设置不对?<br />弄了整半天了唉,多谢!<br /><br />void&nbsp;disp_16by8(uchar&nbsp;page,uchar&nbsp;column,uchar&nbsp;*str){<br />&nbsp;&nbsp;&nbsp;&nbsp;uchar&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;EA=0;WFEED1=0xA5;WFEED2=0x5A;EA=1;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;page=page+0xb0;<br />&nbsp;&nbsp;&nbsp;&nbsp;column=column&0x7f;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;column&lt128.<br />&nbsp;&nbsp;&nbsp;&nbsp;write_LCD_command(page);<br />&nbsp;&nbsp;&nbsp;&nbsp;write_LCD_command(0x0f&column);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//set&nbsp;start&nbsp;column&nbsp;adress&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;write_LCD_command(0x10|(0x0f&(column&gt&gt4)));<br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt8;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;write_LCD_data(*(str+i));<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;page++;<br />&nbsp;&nbsp;&nbsp;&nbsp;write_LCD_command(page);<br />&nbsp;&nbsp;&nbsp;&nbsp;write_LCD_command(0x0f&column);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//set&nbsp;start&nbsp;column&nbsp;adress<br />&nbsp;&nbsp;&nbsp;&nbsp;write_LCD_command(0x10|(0x0f&(column&gt&gt4)));<br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=8;i&lt16;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;write_LCD_data(*(str+i));<br /><br />void&nbsp;disps(uchar&nbsp;page,uchar&nbsp;column,uchar&nbsp;*str,uchar&nbsp;length){<br />&nbsp;&nbsp;&nbsp;&nbsp;uchar&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&ltlength;i++){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disp_16by8(page,column+8*i,asc_to_disp(*str));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str=str+1;//<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delay_ms(100);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br />void&nbsp;disps1(uchar&nbsp;page,uchar&nbsp;column,uchar&nbsp;*str,uchar&nbsp;length){<br />&nbsp;&nbsp;&nbsp;&nbsp;uchar&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&ltlength;i++){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disp_16by8(page,column+16*i,asc_to_disp(*str));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str=str+1;//<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delay_ms(100);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

48

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部