📄 lcm16.c
字号:
#include "chip.h"
#include "lcdm.h"
#include "st7565.h"
#include "hzk16dot.h"
#include "hzk16idx.h"
#include "hzk16def.h"
extern const unsigned char asc16dot[];
void WriteRAMColumn16(unsigned char nPage,unsigned char column,const unsigned char *pramdata)
{
unsigned char cnt;
SetPage(nPage);//设置页
SetColumn(column);//设置列数
for(cnt=0;cnt<8;cnt++)
{
WriteRAMOneColumn(column+cnt,*(pramdata+cnt));//写前8列数据
}
SetPage(nPage+1);//设置为下一页
SetColumn(column);//设置列数
for(cnt=0;cnt<8;cnt++)
{
WriteRAMOneColumn(column+cnt,*(pramdata+cnt+8));//写后8列数据
}
}
void LcdmDisplayChar16(unsigned char nPage,unsigned char column,unsigned char c)
{
unsigned int index;
index=c;//设置索引
index<<=4;//乘16
WriteRAMColumn16(nPage,column,(const unsigned char *)&asc16dot[index]);//写16列数据
}
void DisplayASC16(unsigned char nPage,unsigned char column,unsigned char *pstr)
{
unsigned char *ptrs;
ptrs=pstr;//复制指针
while(*ptrs)//有字符
{
LcdmDisplayChar16(nPage,column,*ptrs);//在nPage页,column列显示字符串*ptrs内容
column+=8;//column移过8列
ptrs++;//ptrs指向下一个字符
}
}
unsigned char GetHZKIndex(unsigned int chncode,unsigned int *indexno)
{
unsigned char fontcnt;
for(fontcnt=0;fontcnt<HZK_SIZE_LEN;fontcnt++)
{
if(chncode==hzk16index[fontcnt][0])//如果检索到相应汉码
{
*indexno=hzk16index[fontcnt][1];//通过*indexno返回索引号
return 0xff;//返回0xff
}
}
return 0x00;//返回0x00
}
void WriteRAMColumn16HZK(unsigned char nPage,unsigned char column,const unsigned char *pramdata)
{
unsigned char cnt;
SetPage(nPage);//设置nPage页
SetColumn(column);//设置column列
for(cnt=0;cnt<16;cnt++)
{
WriteRAMOneColumn(column+cnt,*(pramdata+cnt));//写16列数据
}
SetPage(nPage+1);//设置nPage+1页
SetColumn(column);//设置column列
for(cnt=0;cnt<16;cnt++)
{
WriteRAMOneColumn(column+cnt,*(pramdata+cnt+16));//写后16列数据
}
}
void LcdmDisplayHZK16(unsigned char nPage,unsigned char colum,unsigned int chn)
{
unsigned int index;
if(!GetHZKIndex(chn,&index)) return;//如果检索到相应的汉字,则返回
index<<=5;//乘32
WriteRAMColumn16HZK(nPage,colum,(const unsigned char *)&hzk16dot[index]);//写16列汉字
}
void LCMDisplay(unsigned char nPage,unsigned char colum,unsigned char *ptrs)
{
unsigned int chncode;
while(*ptrs)
{
if(*ptrs>=0xA1) //如果字符串是汉字
{
chncode=*ptrs;//将字符存入chncode
chncode<<=8;//将chncode左移8位
ptrs++;//ptrs指向下一个字符
chncode |=*ptrs;//下一个字符存入chncode的低8位
ptrs++;//ptrs指向下一个字符
LcdmDisplayHZK16(nPage,colum,chncode);//显示汉字
colum+=16;//右移16列
}
else
{
LcdmDisplayChar16(nPage,colum,*ptrs);//显示字符
ptrs++;//指针指向下一个字符
colum+=8;//右移8列
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -