说明
MB90092是日本FUJITSU公司推出的一款用CMOS工艺制成的专用视频字符叠加芯片。MB90092内部集成了显示内存(VRAM)、外挂字库接口和视频信号发生器,外部只需连接少量的元件就可以显示汉字和图形。 MB90092的配置接口是spi,下面是stm32配置mb90092的方式 包括mb90092的基础配置和后面可以实时切换显示的字符的代码 在叠加字符的时候,相应的字符存储在rom中,指定字符地址就可读取
90092的上电初始配置
void init_ic(unsigned char bc)
{
unsigned char i,j;
MB90092_SPI_SendData(0x98); /*--------command 3----------*/ //没填充FIL位 复制代码
MB90092_SPI_SendData(0); /*FIL 位,此命令可以不动 */
// MB90092_SPI_SendData(0xaa); //--------command 5----------/
//--------- MB90092_SPI_SendData(0xad);//--------- //ac 10101100 ,ad:10101101 复制代码
MB90092_SPI_SendData(0x11); //*;1 0 1 0 1 KID APC GYZ
//45度的颜色相位偏移,BH2/BH1/BH0,主屏线空间控制:W3/W2/W1/W0
MB90092_SPI_SendData(0xbd); //*-command 7 ---1011 1101-*/ 复制代码
MB90092_SPI_SendData(0x1c); //垂直位置设定 14 /24
MB90092_SPI_SendData(0xc4); /*0xc4--------command 8-----11000100-------*/ 复制代码
MB90092_SPI_SendData(0x22); //水平位置设定 0x0a
MB90092_SPI_SendData(0xc8); /--------command 9---------/
MB90092_SPI_SendData(0x00); //*水平位置设定
MB90092_SPI_SendData(0xd0); //*-0xd1字体有背景#######-------command10---------- 复制代码
MB90092_SPI_SendData(0x58+bc); //0x58#####1 1 0 1 0 0 0 RB
//MB90092_SPI_SendData(0x38+bc); // 0 BK CC BC UC UG UR UB
signal=0; MB90092_SPI_SendData(0xa2+signal);//*-------command4---------- 复制代码
// MB90092_SPI_SendData(0x2b);
MB90092_SPI_SendData(0x39);//--------- 复制代码
//command6
//MB90092_SPI_SendData(0xb2);
for(i=0;i<12;i++) { disp_color(i); } for(j=0;j<13;j++) { for(i=0;i<24;i++) { disp_num(j,i,0x00,1,bc,0,0); } } }
不同形式的字符显示
//白边测试
//原,字体正常,没有白边
// MB90092_SPI_SendData(0xa6); //signal=4;外同步;signal=0,内同步,IE设置
// MB90092_SPI_SendData(0x0B); //P制式
//字体放大,有白边。
MB90092_SPI_SendData(0xa4); //1010 0100
MB90092_SPI_SendData(0x39); //0011 1001 ZM=1 缩放到主屏
//有白边,字体正常。
// MB90092_SPI_SendData(0xa4);//1010 0100
// MB90092_SPI_SendData(0x29); //0010 1001 ZM=0 正常显示
显示相应的字符
在特定的行和列显示指定的字符,以指定的格式显示
//************************************************************************************* /* row:行, col:列, addr:地址, flag:尺寸, bc:背景颜色, cc:前景颜色, at:特殊显示标记*/ //************************************************************************************* void disp_num(unsigned char row, unsigned char col,unsigned short addr,unsigned char flag,unsigned char bc,unsigned char cc, unsigned char ff) {
unsigned char temp1,temp2,color; unsigned char ma,mb,mc; temp1=row; temp1=((temp1>>2)&0x3)+0x80; //行位置设定命令转换 temp2=row; temp2=((temp2<<5)&0x60)+col; //列位置设定命令转换 MB90092_SPI_SendData(temp1); //行位置 MB90092_SPI_SendData(temp2); //列位置 MB90092_SPI_SendData(0xb0+flag); //字体尺寸 MB90092_SPI_SendData(0x20+row); //字体尺寸 //Command 1-1 // 1 0 0 0 1 MA MB AT //AT:0 -- Specify normal display // 1 -- Specify attribute display //Solid-fill background (when command 10: RB = 1) //Blinking (when command 10: BK = 1) //Shaded background (when command 1: BS = 1) color=((cc<<4)&0x70)+bc; //0 CG CR CB NC BG BR BB // GR BS MD MB90092_SPI_SendData(0x88|ff); MB90092_SPI_SendData(color); mc=((addr/4096)<<3)&0x08; mb=(((addr%4096)/2048)<<1)&0x02; ma=(((addr%2048)/1024)<<2)&0x04; //Command 1-1 MB90092_SPI_SendData(0x88|ff|ma|mb); //command1-1 MB90092_SPI_SendData(color|mc); //command2-1 MB90092_SPI_SendData(0x90+(addr%1024)/128); //command2-1 MB90092_SPI_SendData(addr%128); }