本帖最后由 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
此外将P01、P02、P03,留给RGB_LED驱动;而P04、P05,则留给小电机驱动;P17、P16 P15留给K1、K2及IR。
图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核心板,由于它是为配合底板工作的,因此在使用时最好是与功能扩展板配合来工作。 希望通过大家的努力应向易码魔盒添加更多的外设支持,以利于快速地进行程序开发设计。
工程文件:
|