STM32
登录
直播中
shawon
12年用户
622经验值
私信
关注
[问答]
怎样去设计一种基于stm32f1的数字式相位测量仪
开启该帖子的消息推送
stm32f1
相位测量仪
软件
基于
STM32
f1的数字式相位测量仪有何功能?
怎样去设计一种基于stm32f1的数字式相位测量仪?
回帖
(1)
姬房有
2021-10-9 17:50:31
最近在准备做电子设计大赛本校的校赛题目 数字式相位测量仪,便开始用4.3寸的TFT LCD液晶屏开始显示所测量的相位差,周期,频率数据。然后便开始自己设计界面UI来了。之前一直想写此博客了,但是一直没时间然后拖到了现在。正点原子的视频教程上通过TFT液晶屏显示汉字是通过建立字库进行显示,个人感觉比较繁琐,况且在做比赛或者其它的显示的时候都只需要几个汉字就差不多了,所以不需要这么麻烦去建立字库,只需通过取模软件取出自己所需的汉字,简单明了。
一、汉字字模的数据结构定义(32x32字模)
1、// 汉字内码索引
2、 // 点阵码数据
二、建立汉字字模表
取模软件的设置如下:
可以看到我们上面的图片中写字体点阵为:宽x高=32x33,但是应该是32x32,也就是我们取模时会多出32个字节,那四位16进制一般都是0,所以我们直接把他给删掉。如下图红色圈出的部分:
三、汉字显示函数编写
//32X32汉字
void PutHZ3232(unsigned short x, unsigned short y, unsigned char c[2], unsigned int dcolor,unsigned int bgcolor){
unsigned int i,j,k;
//TFT_SetWindow(x,y,x+32-1, y+32-1); //选择坐标位置
LCD_Set_Window(x,y,32,32);
LCD_SetCursor(x,y);
LCD_WriteRAM_Prepare();
for (k=0;k《40;k++) { //15标示自建汉字库中的个数,循环查询内码
if ((codeHZ_32[k].Index[0]==c[0])&&(codeHZ_32[k].Index[1]==c[1])){
for(i=0;i《128;i++) {
unsigned short m=codeHZ_32[k].Msk[i];
for(j=0;j《8;j++) {
if((m&0x80)==0x80) {
LCD_WR_DATA(dcolor);
}
else {
LCD_WR_DATA(bgcolor);
}
m《《=1;
}
}
}
}
}
void showhz32str(unsigned int x1,unsigned int y1,unsigned char *str,unsigned int dcolor,unsigned int bgcolor)
{ unsigned char l=0;
while(*str)
{
PutHZ3232(x1+l*16,y1,(unsigned char*)str,dcolor, bgcolor);
str+=2;l+=2;
}
}
定义好了接着就可以在main函数里面使用了
最近在准备做电子设计大赛本校的校赛题目 数字式相位测量仪,便开始用4.3寸的TFT LCD液晶屏开始显示所测量的相位差,周期,频率数据。然后便开始自己设计界面UI来了。之前一直想写此博客了,但是一直没时间然后拖到了现在。正点原子的视频教程上通过TFT液晶屏显示汉字是通过建立字库进行显示,个人感觉比较繁琐,况且在做比赛或者其它的显示的时候都只需要几个汉字就差不多了,所以不需要这么麻烦去建立字库,只需通过取模软件取出自己所需的汉字,简单明了。
一、汉字字模的数据结构定义(32x32字模)
1、// 汉字内码索引
2、 // 点阵码数据
二、建立汉字字模表
取模软件的设置如下:
可以看到我们上面的图片中写字体点阵为:宽x高=32x33,但是应该是32x32,也就是我们取模时会多出32个字节,那四位16进制一般都是0,所以我们直接把他给删掉。如下图红色圈出的部分:
三、汉字显示函数编写
//32X32汉字
void PutHZ3232(unsigned short x, unsigned short y, unsigned char c[2], unsigned int dcolor,unsigned int bgcolor){
unsigned int i,j,k;
//TFT_SetWindow(x,y,x+32-1, y+32-1); //选择坐标位置
LCD_Set_Window(x,y,32,32);
LCD_SetCursor(x,y);
LCD_WriteRAM_Prepare();
for (k=0;k《40;k++) { //15标示自建汉字库中的个数,循环查询内码
if ((codeHZ_32[k].Index[0]==c[0])&&(codeHZ_32[k].Index[1]==c[1])){
for(i=0;i《128;i++) {
unsigned short m=codeHZ_32[k].Msk[i];
for(j=0;j《8;j++) {
if((m&0x80)==0x80) {
LCD_WR_DATA(dcolor);
}
else {
LCD_WR_DATA(bgcolor);
}
m《《=1;
}
}
}
}
}
void showhz32str(unsigned int x1,unsigned int y1,unsigned char *str,unsigned int dcolor,unsigned int bgcolor)
{ unsigned char l=0;
while(*str)
{
PutHZ3232(x1+l*16,y1,(unsigned char*)str,dcolor, bgcolor);
str+=2;l+=2;
}
}
定义好了接着就可以在main函数里面使用了
举报
更多回帖
rotate(-90deg);
回复
相关问答
stm32f1
相位测量仪
软件
数字式
大量程电阻
测量仪
2016-04-23
2827
怎样
去
设计
一种
基于51单片机的脉搏
测量仪
呢
2021-10-19
1663
数字式
电阻
测量仪
有什么优点?
2019-09-27
1537
求关于低频
数字式
相位
测量仪
的仿真
2016-11-25
2718
请问
怎样
去
设计
一种数字
倾角
测量仪
?
2021-05-19
1395
简易的
测量仪
2014-08-09
2916
求
一种
高精度
相位
测量仪
的设计方案
2021-04-28
1193
如何利用单片机
去
制作
一种
电容电阻
测量仪
呢
2022-01-20
1977
怎样
去
设计
一种
基于FPGA的
数字式
光端机?
2021-06-01
1570
求
一种
便携
式
RC
测量仪
的设计方案
2021-05-11
1119
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
英国威廉希尔公司网站
william hill官网 版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分