【新版CH554评测】CH554开发板实现OLED屏显示
<div class='showpostmsg'> 本帖最后由 jinglixixi 于 2018-4-23 15:16 编辑在步进电机的控制中,离不开人机交互,以OLED屏为显示器件可以满足此类需求。这里选用I2C接口双色屏,它可以比SPI接口的OLED屏更节省I/O引脚,且在显示时可以色彩来区分功能标识和工作参数。由于CH554的程序存储空间并不是很大,因此不便在程序中来存放中文字库,所以其提示信息宜采用英文提示或汉语拼音。该制作中,其工作界面如下图所示。在界面中看设置电机转动的方向及转动圈数。
为避开引脚的重叠,这里为OLED屏分配的引脚是P1.0和P1.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的点阵,相应的字符显示函数如下:void OLED_ShowChar(unsigned char x,unsigned char y,unsigned char chr,unsigned char Char_Size)
{
unsigned char c=0,i=0;
c=chr-' ';
if(x>Max_Column-1){x=0;y=y+2;}
if(Char_Size ==6)
{
OLED_Set_Pos(x,y);
for(i=0;i<6;i++)
OLED_WR_Byte(F6x8,OLED_DATA);
}
}
对应的数值显示函数为:void OLED_ShowNum(unsigned char x,unsigned char y,unsigned int num,unsigned char len,unsigned char size2)
{
unsigned char t,temp;
unsigned char enshow=0;
for(t=0;t<len;t++)
{
temp=(num/oled_pow(10,len-t-1))%10;
if(enshow==0&&t<(len-1))
{
if(temp==0)
{
OLED_ShowChar(x+6*t,y,' ',size2);
continue;
}else enshow=1;
}
OLED_ShowChar(x+6*t,y,temp+'0',size2);
}
}
对应的字符串显示函数为:void OLED_ShowString(unsigned char x,unsigned char y,unsigned char *chr,unsigned char Char_Size)
{
unsigned char j=0;
while (chr!='\0')
{ OLED_ShowChar(x,y,chr,Char_Size);
x+=8;
if(x>120){x=0;y+=2;}
j++;
}
}
对应的界面显示程序如下:OLED_Init();
OLED_Clear();
OLED_ShowString(0,0,"MOTOR CONTROL",6);
OLED_ShowString(0,2,"Direction: +",6);
OLED_ShowString(0,4,"Number of turns:",6);
k=0;
// 模拟转动圈数显示
while(k<100)
{
k=k+1;
OLED_ShowNum(0,10,k,3,6);
mDelaymS(200);
}
当然为了进行参数的设置,还需配置对应的触摸键处理程序。
此内容由EEWORLD论坛网友jinglixixi原创,如需转载或用于商业用途需征得作者同意并注明出处
</div><script> var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
(function($){
var postHeight = getTextHeight(400);
$(".showpostmsg").html($(".showpostmsg").html());
$(".showpostmsg").after(loginstr);
$(".showpostmsg").css({height:postHeight,overflow:"hidden"});
})(jQuery);
} </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> ch554带哪些外设? 顶一下,你这个oled接口挺简单,不知道您是如何避免5V和3.3V,是不是传程序的时候把连线都拔下来 :handshake xy598646744 发表于 2018-4-23 09:51
ch554带哪些外设?
几乎就是LED、触摸键了、串行通讯、USB通讯功能了,其它需要自行配置和扩展。 我爱下载 发表于 2018-4-23 11:11
顶一下,你这个oled接口挺简单,不知道您是如何避免5V和3.3V,是不是传程序的时候把连线都拔下来
我是自己将电源接到3.3V上,传程序时也没太在意,一直就连着没拔下来。
页:
[1]