打印
[活动专区]

【赛元易码魔盒】基于SC95F8616的多功能扩展板驱动

[复制链接]
1505|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 jinglixixi 于 2020-7-16 16:05 编辑

基本功能:利用SC95F8616核心板,配以多功能扩展板,实现OLED显示屏显示、RGB_LED控制、IR与按键状态识别、小电机驱动及UART通讯等。
开发工具:赛元易码魔盒
开发步骤:
1.安装并启动易码魔盒
2.新建工程
1)点击“新建工程”按钮,新建一个工程。
2)选择芯片型号为“SC95F8616”,点击“开始项目”,则进入芯片配置视图。
3)在IC资源列表中,选取TIM0以供延时。
1选取TIM0计时

4)选取独立按键
在通用外设驱动列表中选取独立按键,以设置参数和校时。

2外设选择

5)相关设置


   

   

根据OLED屏的引脚它与MCU的连接关系为:
CLK  ---P27
DIN  ---P26
DC   ---P25
RST  ---P24  
CS   ---P23  

此外将P01P02P03,留给RGB_LED驱动;P04P05,则留给小电机驱动;P17P16 P15留给K1K2IR

10  IR与按键原理图

6)生成工程源代码
点击“生成工程源代码”图标,在弹出的对话框中点击“保存”按钮,以自生命名的文件夹加以保存。

7)添加变量
在工具栏中,右击“变量”列表,从中点击“添加变量”选项,分别增添变量。

8)自定义函数
右击“函数”列表,从中点击“添加函数”选项,以添加OLED屏的显示函数,如:
void OLED_WR_Byte(u8 dat,u8 cmd)
void OLED_Set_Pos(unsigned char x, unsignedchar y)
void OLED_Display_On(void)
void OLED_Display_Off(void)
void OLED_Clear(void)
void OLED_ShowChar(u8 x,u8 y,u8 chr)
u32 oled_pow(u8 m,u8 n)
void OLED_ShowNum(u8 x,u8 y,u32 num,u8len,u8 size)
void OLED_ShowString(u8 x,u8 y,u8 *chr)
void OLED_ShowCHinese(u8 x,u8 y,u8 no)
void OLED_DrawBMP(unsigned char x0,unsigned char y0,unsigned char x1, unsigned char y1,unsigned char BMP[])
void delay_ms(unsigned int z)
void OLED_Init(void)
void RGB_init(void)
void RGB_Write_Data(uint8_t R,uint8_tG,uint8_t B)

9)增添头文件
为了OLED的字符显示,需添加字库的头文件oledfont.h

10)添加宏
OLED的显示驱动中,要使用到一些宏定义,其内容如下:
#define OLED_CS_Clr()  GPIO_WriteLow(GPIO2, GPIO_PIN_3)     //CS
#define OLED_CS_Set()  GPIO_WriteHigh(GPIO2, GPIO_PIN_3)

#define OLED_RST_Clr() GPIO_WriteLow(GPIO2,GPIO_PIN_4)     //RES
#define OLED_RST_Set()GPIO_WriteHigh(GPIO2, GPIO_PIN_4)

#define OLED_DC_Clr() GPIO_WriteLow(GPIO2,GPIO_PIN_5)      //DC
#define OLED_DC_Set() GPIO_WriteHigh(GPIO2,GPIO_PIN_5)

#define OLED_SCLK_Clr()GPIO_WriteLow(GPIO2, GPIO_PIN_6)     //D0
#define OLED_SCLK_Set()GPIO_WriteHigh(GPIO2, GPIO_PIN_6)

#define OLED_SDIN_Clr()GPIO_WriteLow(GPIO2, GPIO_PIN_7)     //D1
#define OLED_SDIN_Set()GPIO_WriteHigh(GPIO2, GPIO_PIN_7)

为驱动RGB_LED所定义的宏为:
#define  SCL_0  GPIO_WriteLow(GPIO0,GPIO_PIN_1)   // SCL
#define  SCL_1  GPIO_WriteHigh(GPIO0,GPIO_PIN_1)
#define  SDA_0  GPIO_WriteLow(GPIO0,GPIO_PIN_2)   // SDA
#define    SDA_1 GPIO_WriteHigh(GPIO0, GPIO_PIN_2)

11)程序设计
在编程方面,易码魔盒提供了独特的流程式编程,只需将变量、函数及控制结构等编程元素,提供连线的方式串联起来。当然,中断处理和主程序是并行处理的。
主程序的代码内容如下:
int main(void)
{      
           uint8_t i=0;
           SC_Init();
           OLED_Init();         
           RGB_init();
           while(1)
           {
                    //OLED显示效果
                    OLED_Clear();
                    OLED_ShowString(22,0,"OLED TEST");
                    OLED_ShowString(8,2,"  Jinglixixi");
                    OLED_ShowString(20,4,"2020/07/01");
                    while(P15);
                    OLED_Clear();
                    OLED_ShowCHinese(0,0,0);
                    OLED_ShowCHinese(18,0,1);
                    OLED_ShowCHinese(36,0,2);
                    OLED_ShowCHinese(54,0,3);
                    OLED_ShowCHinese(72,0,4);
                    OLED_ShowCHinese(90,0,5);
                    OLED_ShowCHinese(108,0,6);
                    while(P17);
                   //呼吸灯效果
                   GPIO_WriteHigh(GPIO0, GPIO_PIN_3);
                   RGB_Write_Data(0x00,0x00,0x00);
                   for (i=0;i<125;i++)
                   {
                          RGB_Write_Data(0x00,0x00,i);
                          delay_ms(500);
                   }
                   for (i=125;i>0;i--)
                   {
                          RGB_Write_Data(0x00,0x00,i);
                          delay_ms(500);
                   }
                   for (i=0;i<125;i++)
                   {
                          RGB_Write_Data(0x00,0x00,i);
                          delay_ms(500);
                   }
                   for (i=125;i>0;i--)
                  {
                          RGB_Write_Data(0x00,0x00,i);
                          delay_ms(500);
                  }
                  while(P16);
                  //色彩环效果
                 RGB_Write_Data(120,0x00,0x00);
                 delay_ms(50000);
                 RGB_Write_Data(0x00,120,0x00);
                 delay_ms(50000);
                 RGB_Write_Data(0x00,0x00,120);
                 delay_ms(50000);
                 RGB_Write_Data(120,120,0x00);
                 delay_ms(50000);
                 RGB_Write_Data(0x00,120,120);
                 delay_ms(50000);
                 RGB_Write_Data(120,0x00,120);
                 delay_ms(50000);
                 RGB_Write_Data(255,255,255);   
                 delay_ms(50000);
                 RGB_Write_Data(0x00,0x00,0x00);
                 while(P15);
                 //小电机驱动
                 GPIO_WriteLow(GPIO0, GPIO_PIN_4);
                 GPIO_WriteHigh(GPIO0, GPIO_PIN_5);
                 delay_ms(50000);
                 GPIO_WriteLow(GPIO0, GPIO_PIN_4);
                 GPIO_WriteLow (GPIO0, GPIO_PIN_5);
          }
}

12)编译与下载
在程序编译无误的情况下,即可将程序下载到芯片内,如图11所示。
11程序下载

13)运行验证
在运行验证方面,主要测试的内容有OLED屏显示、RGB_LED驱动、KEY功能切换、IR感应控制小电机转动等。
该作品的使用流程为:
上电开机后,显示初始界面。若按K1键,则演示呼吸灯效果;若按K2键,则演示色彩环效果;若IR检测到变化,则小电机进行转动。
经实际验证,其运行效果能够达到设计要求。
12  OLED屏显示

13 色彩环效果

14 呼吸灯效果

开发体会:
易码魔盒是一款比较有意思的编程开发工具,通过一段时间的摸索和实践还是能够完成作品的制作,但也存在一些小问题需要进一步完善,以更加易于使用,特别是对于初学者。
对于SC95F8616核心板,由于它是为配合底板工作的,因此在使用时最好是与功能扩展板配合来工作。
希望通过大家的努力应向易码魔盒添加更多的外设支持,以利于快速地进行程序开发设计。

工程文件:


多功能板.rar

607.24 KB

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

455

主题

2756

帖子

38

粉丝