📄 ziku.h
字号:
/*********************************************************************/
// ============================================================= */
// */
// LM4229(240138)屏电子书阅览器 V1.0 */
// */
// 湘潭大学信息工程学院 */
// 06级自动化 */
// 瑜人码头 */
/*********************************************************************/
uchar xdata *addx; //地址指针
void write_hz1(uchar x,uchar y,uchar *tab_hz,uchar flag);
//=================================================
//
// 从ROM中找到中文字模数据表
// 并将其显示出来
//
//==================================================
void disp_zkhz(uchar x,uchar y,uchar flag)
{
uchar hz_buffer[32]; //存储字模表的数
uint j;
ulong k,l;
ulong cn_1,cn_2;
ulong addf;
ulong *addd; //中间变量
cn_1=5; ///////////////5片ROM
P1=cn_1|0xf8;
k=*addx;
addx++;
l=*addx;
addx++;
addf=((k-161)*94+(l-161))*32; //由内码计算汉字点阵首地址
if(k==0x0d)
{
if(l==0x0a)
addf=0;
} //文本中有大量回车符,其内码为0d0a,按上式计算在lcd上显示为“光”此处使其显示为“空格”
cn_2=(addf/0x10000);
P1=cn_2|0xf8; ///cn_2|0xf8是为了不干预P1口的高五位 //计算汉字点阵所在的rom,片选
for(j=0;j<32;j++) //得到字模数据表
{ addd=addf+j;
hz_buffer[j]=*(addd-1); //读取一字节的数据
}
write_hz1(x,y,hz_buffer,flag);
}
//======================================================
//======================================================
// 自动显示一页函数
//
//
//======================================================
Disp_one_page()
{
uchar i,j;
for(j=0;j<5;j++)
{
for(i=0;i<14;i++)
disp_zkhz(16*j+24,2*i+1,1);
}
}
//======================================================
// 将得到的字模表在本LCD中显示出来
//
//
// flag;0-反白显示 1-正常显示
//======================================================
void write_hz1(uchar x,uchar y,uchar *tab_hz,uchar flag)
{
uint place;
uchar k,temp,temp1;
place=30*x+y;
if(flag)
temp=tab_hz[1];
if(!flag)
temp=~tab_hz[1];
for(k=0;k<16;k++) //字符设置为16*8
{
write_data(place&0xff); //写入地址高位
write_data(place/256); //写入地址低位
write_com(0x24); //地址设置
write_com(0xb0); //设置数据自动写
if(flag)
{
if(k==15)
{temp1=tab_hz[31];
tab_hz[31]=temp;}
write_data(tab_hz[k*2+1]);
delay_lcd(2);
if(k==15)
tab_hz[31]=temp1;
tab_hz[2*k]=tab_hz[2*(k+1)];
write_data(tab_hz[k*2]);} //16*16,每行2字节
else
{
if(k==15)
{temp1=tab_hz[31];
tab_hz[31]=temp;}
write_data(~tab_hz[k*2+1]);
delay_lcd(2);
if(k==15)
tab_hz[31]=temp1;
tab_hz[2*k]=tab_hz[2*(k+1)];
write_data(~tab_hz[k*2]);
} //16*16,每行2字节
write_com(0xb2); //自动复位
place=place+30; //下一行
}
}
//===========================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -