|
一直对小功放机的蓝牙音频模块只能用按键控制,不能用单片机控制感到不方便。最近终于看到一款不到10元钱的,支持串口控制的蓝牙音频模块,买回来后,看说明知道支持串口输出播放U盘或TF卡的歌曲名,但输出编码格式是UNICODE的,找了很久,网上的字库都是GB2312的,需要转码,有的还是横向取模的,不适合用于LCD12864液晶屏。经过多方查找,找到一个支持输出UNICODE格式的字库生成软件,当然,它输出汉字的多少取决于字模点阵有多大,是不是常用字,像我取16x16的,感觉也就是GB2312中有的字。但字库占用的空间不大,用个EN25T80就装得下。
这个是取模软件(这个是别人注册后分享出来的,下载地址为:http://crxza.198424.com/charactermatrix.zip),在16x16点阵下是这个样子的,空白的位置是用0表示的,也就是读这个位置会显示空白。取模方式纵向取模,高位在下,纵向排列。和NOKIA5110屏,主控是st7567的各类点阵屏(如12864屏)是相同的。
这个是读取以EN25T80作为字库时的读取程序,用的是STC单片机的硬件SPI。中断方式读数据,输入24位地址,读出32个数据- void en25t80_reak(DWORD adds)
- {
- BYTE enn;
- en25t80_cs=0;
- //SPCTL=0xd0;//spi工作
- spi_ok=0;
- SPDAT=0x03;//读数据
- //spi_ok=0;
- while(!spi_ok);
- spi_ok=0;
- SPDAT=adds/65536;//地址d23-d16
- while(!spi_ok);
- spi_ok=0;
- SPDAT=adds%65536/256;//地址d15-d8
- while(!spi_ok);
- spi_ok=0;
- SPDAT=adds%256;//地址d7-d0
- while(!spi_ok);
- for(enn=0;enn<32;enn++)
- {
- spi_ok=0;
- SPDAT=0xff;//数值随意,用于产生时钟信号
- //spi_data[0]=SPDAT;
- while(!spi_ok);//等待接收完成
- spi_data[enn]=SPDAT;//接收数据
- }
- en25t80_cs=1;
- }
复制代码
这个是字库,里面只有中文字,英文字没有,地址从0开始。要知道一个汉字的开始 地址,代码是这样的
- chinese_spi_code=(chinese_spi_code-0x4e00)*32;
- en25t80_reak(chinese_spi_code);
复制代码
这里的0x4e00是汉字“一”的UNICODE码,chinese_spi_code是对应汉字的UNICODE码,再读字库得到32个数据,组成一个汉字的16x16点阵字符。
查询汉字的UNICOED可以用微软的Word,输入汉字后选中,再按Alt+X,如果知道编码,不知道汉字,用”插入“菜单中的“符号“,里面支持BGK和UNICODE编码汉字的查找,用;也可以用网页https://bianma.supfree.net/chaye.asp?id=6570或http://www.dwenzhao.cn/cal/php/gbkunicode.php
要在点阵屏上显示这个汉字的代码是这样的
- void LCD_write_chinese_spi_string(unsigned char X, unsigned char Y)//, // 12,4
- {
- unsigned char n;
-
- LCD_set_XY(X,Y); //设置初始位置
-
- for (n=0; n<32; n++) //写一个汉字
- {
- if (n==16) //写汉字的下半部分地址
- {
- LCD_set_XY(X,Y+1);
- }
- LcdDataWrite(spi_data[n]);
- }
- }
-
复制代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
打赏
-
查看全部打赏
|