[原创] 【新版CH554评测】CH554开发板实现OLED屏显示

jinglixixi   2018-4-23 09:41 楼主
在步进电机的控制中,离不开人机交互,以OLED屏为显示器件可以满足此类需求。这里选用I2C接口双色屏,它可以比SPI接口的OLED屏更节省I/O引脚,且在显示时可以色彩来区分功能标识和工作参数。
由于CH554的程序存储空间并不是很大,因此不便在程序中来存放中文字库,所以其提示信息宜采用英文提示或汉语拼音。该制作中,其工作界面如下图所示。在界面中看设置电机转动的方向及转动圈数。
图片1.png
为避开引脚的重叠,这里为OLED屏分配的引脚是P1.0P1.1,其中P1.0与时钟引脚连接,P1.1与数据端连接。
对引脚的相关定义如下:
sbit scl = P1^0;
sbit sda = P1^1;
#define OLED_SCLK_Clr() scl =0
#define OLED_SCLK_Set() scl =1
#define OLED_SDIN_Clr() sda =0
#define OLED_SDIN_Set() sda =1
为节省存储空间,所用的显示字模为6*8的点阵,相应的字符显示函数如下:
  1. void OLED_ShowChar(unsigned char x,unsigned char y,unsigned char chr,unsigned char Char_Size)
  2. {
  3. unsigned char c=0,i=0;
  4. c=chr-' ';
  5. if(x>Max_Column-1){x=0;y=y+2;}
  6. if(Char_Size ==6)
  7. {
  8. OLED_Set_Pos(x,y);
  9. for(i=0;i<6;i++)
  10. OLED_WR_Byte(F6x8[c][i],OLED_DATA);
  11. }
  12. }
对应的数值显示函数为:
  1. void OLED_ShowNum(unsigned char x,unsigned char y,unsigned int num,unsigned char len,unsigned char size2)
  2. {
  3. unsigned char t,temp;
  4. unsigned char enshow=0;
  5. for(t=0;t<len;t++)
  6. {
  7. temp=(num/oled_pow(10,len-t-1))%10;
  8. if(enshow==0&&t<(len-1))
  9. {
  10. if(temp==0)
  11. {
  12. OLED_ShowChar(x+6*t,y,' ',size2);
  13. continue;
  14. }else enshow=1;
  15. }
  16. OLED_ShowChar(x+6*t,y,temp+'0',size2);
  17. }
  18. }
对应的字符串显示函数为:
  1. void OLED_ShowString(unsigned char x,unsigned char y,unsigned char *chr,unsigned char Char_Size)
  2. {
  3. unsigned char j=0;
  4. while (chr[j]!='\0')
  5. { OLED_ShowChar(x,y,chr[j],Char_Size);
  6. x+=8;
  7. if(x>120){x=0;y+=2;}
  8. j++;
  9. }
  10. }
对应的界面显示程序如下:
  1. [/i][i]OLED_Init();
  2. OLED_Clear();
  3. OLED_ShowString(0,0,"MOTOR CONTROL",6);
  4. OLED_ShowString(0,2,"Direction: +",6);
  5. OLED_ShowString(0,4,"Number of turns:",6);
  6. k=0;
  7. // 模拟转动圈数显示
  8. while(k<100)
  9. {
  10. k=k+1;
  11. OLED_ShowNum(0,10,k,3,6);
  12. mDelaymS(200);
  13. }
当然为了进行参数的设置,还需配置对应的触摸键处理程序。
此内容由EEWORLD论坛网友jinglixixi原创,如需转载或用于商业用途需征得作者同意并注明出处 本帖最后由 jinglixixi 于 2018-4-23 15:16 编辑

回复评论 (5)

ch554带哪些外设?
点赞  2018-4-23 09:51
顶一下,你这个oled接口挺简单,不知道您是如何避免5V和3.3V,是不是传程序的时候把连线都拔下来
点赞  2018-4-23 11:11
单价1元含税的USB和Touchkey单片机CH551G已大批量出货,试样QQ:1258305301
点赞  2018-4-23 13:15
引用: xy598646744 发表于 2018-4-23 09:51
ch554带哪些外设?

几乎就是LED、触摸键了、串行通讯、USB通讯功能了,其它需要自行配置和扩展。
点赞  2018-4-23 15:11
引用: 我爱下载 发表于 2018-4-23 11:11
顶一下,你这个oled接口挺简单,不知道您是如何避免5V和3.3V,是不是传程序的时候把连线都拔下来

我是自己将电源接到3.3V上,传程序时也没太在意,一直就连着没拔下来。
点赞  2018-4-23 15:14
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复