STM32
直播中

shawon

12年用户 622经验值
私信 关注
[问答]

怎样去设计一种基于stm32f1的数字式相位测量仪

基于STM32f1的数字式相位测量仪有何功能?
怎样去设计一种基于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函数里面使用了
  
举报

更多回帖

发帖
×
20
完善资料,
赚取积分