|
基于GD32F450的图标式多功能应用系统设计(1)
[复制链接]
1.开发背景 随着显示器件的多样化,人机交互界面也在不断地进行着变更,使用TFT显示屏以图标化的方式进行管理和使用已成为一种趋势,这里就以GD32F450为硬件平台来构建一个以图标来实现功能管理的应用系统,该系统的主要功能如图1所示,整体构成如图2所示。
图1 功能结构图
图2 整体构成图
功能规划: 根据功能规划,它共含有乐曲播放、PWM调节、RTC计时、波形绘制、环境温湿度检测、照明控制、时段设置、图像显示等。 在功能实现方面,所采用的技术如下。 乐曲播放 利用MCU内部的串行通讯功能向MP3语音模块发送指令,进而控制该模块实现乐曲欣赏。借助菜单,可通过按键向上或向下来选择乐曲。在播放过程中,还可通过按键来调节音量。 PWM调节 利用MCU内部的定时器实现PWM调节控制,可通过板载的LED来观察效果,同时在TFT屏上显示出LED的亮度等级。 RTC计时 利用MCU内部的RTC实现电子时钟计时功能,并可依照生肖纪年的方式来显示,因而可以提供2种不同的显示效果。 波形绘制 利用MCU内部的A/D,可实时读取A/D采样值并绘制出波形图。在与外部心率检测传感器的配合下,则可观察心率波形的变化情况。 环境温湿度检测 利用MCU所提供的GPIO口,可与单总线器件DHT11相配合,进而对周围环境的温、湿度进行测控。 照明控制 通过按键来控制光隔继电器的状态变化进而控制照明设备或其他小功率电器,也可与RTC计时器相配合来实现定时控制照明。 多时段设置 在RTC的配合下,通过多时段的时间设置,可实现智能语音药盒的提示功能,其语音播放部分则以依靠MP3语音模块的配合。 图像显示 可实现图像显示功能,受Flash大小的制约,在程序达到一定规模时,需将512K的Flash更换为3M的Flash芯片。而最好的方案是配SD卡及文件系统来支持数码相框功能,也为后续的配备OV7670摄像模块提供较好的支持。
图3 原理构成图
1)显示部分 显示部分是通过SPI接口的TFT屏来实现的,这样比较节省GPIO资源。若将NC空脚接3.3V电源,则可直接将TFT屏插入Arduino接口来使用,从而省去连线的问题,其连接关系如图4所示。
图4 显示电路原理图
2)语音播放部分 语音播放部分主要是通过MP3播放模块来实现,这样有利于节省MCU资源并可形成并行处理关系。为节省连线,这里采用通讯方式来控制MP3播放模块。MP3播放模块的引脚功能如图5所示,其与MCU的连接关系为: RX-PD5 TX-PD6 BUSY-PD3
图5 MP3播放模块引脚图
3)控制部分 为进行电器的控制,可采用带光隔的继电器模块,以利于防止继电器对MCU的干扰。 4)传感器部分 为进行物理信号向模拟信号的转换,可视需要来选取不同的传感器,如火焰传感器、气体传感器、心率传感器等。此外,采用单总线的温湿度传感器DHT11也是很好的选择。
3.软件设计 1)界面设计 界面是人机交互的窗口,系统的主界面如图6所示,主要以图标的形式来进行功能调用,并通过反显的文字提示来指示当前的功能。 主菜单下的部分界面如图7~图13所示。 具体的做法是: (1)准备好相同规格的功能图标,并转化为二进制数据存放到相应的文件中以备调用。 (2)构建相应的图标显示函数,以便快速地在界面上实现刷新显示。 (3)构建相应键控函数,以实现功能的选择及反显提示功能。最终在确认的情况下,再根据选取的功能调用相关的函数进行服务。 相关的程序如下: - i=0;
- while(SET == gpio_input_bit_get(GPIOA,GPIO_PIN_0))
- {
- if(RESET ==gpio_input_bit_get(GPIOE,GPIO_PIN_0))
- {
- if(i<7)
- {
- i++;
- if(i==1)
- {
- BACK_COLOR=RED;
- POINT_COLOR=WHITE;
- LCD_ShowCharh(80,220,'P',0);
- LCD_ShowCharh(80,212,'W',0);
- LCD_ShowCharh(80,204,'M',0);
- showhanzi16h(80,280,3,1);
- showhanzi16h(80,264,4,1);
- }
- if(i==2)
- {
- BACK_COLOR=RED;
- POINT_COLOR=WHITE;
- LCD_ShowCharh(80,160,'R',0);
- LCD_ShowCharh(80,152,'T',0);
- LCD_ShowCharh(80,144,'C',0);
- BACK_COLOR=WHITE;
- POINT_COLOR=RED;
- LCD_ShowCharh(80,220,'P',0);
- LCD_ShowCharh(80,212,'W',0);
- LCD_ShowCharh(80,204,'M',0);
- }
- if(i==3)
- {
- showhanzi16h(80,100,5,0);
- showhanzi16h(80,84,6,0);
- BACK_COLOR=WHITE;
- POINT_COLOR=RED;
- LCD_ShowCharh(80,160,'R',0);
- LCD_ShowCharh(80,152,'T',0);
- LCD_ShowCharh(80,144,'C',0);
- }
- if(i==4)
- {
- showhanzi16h(80,100,5,1);
- showhanzi16h(80,84,6,1);
- showhanzi16h(180,280,13,0);
- showhanzi16h(180,264,14,0);
- }
- if(i==5)
- {
- showhanzi16h(180,280,13,1);
- showhanzi16h(180,264,14,1);
- showhanzi16h(180,220,11,0);
- showhanzi16h(180,204,12,0);
- }
- if(i==6)
- {
- showhanzi16h(180,220,11,1);
- showhanzi16h(180,204,12,1);
- showhanzi16h(180,160,9,0);
- showhanzi16h(180,144,10,0);
- }
- if(i==7)
- {
- showhanzi16h(180,160,9,1);
- showhanzi16h(180,144,10,1);
- showhanzi16h(180,100,7,0);
- showhanzi16h(180,84,8,0);
- }
- }
- else
- {
- showhanzi16h(180,100,7,1);
- showhanzi16h(180,84,8,1);
- showhanzi16h(80,280,3,0);
- showhanzi16h(80,264,4,0);
- i=0;
- }
-
- }
- if(RESET ==gpio_input_bit_get(GPIOE,GPIO_PIN_1))
- {
- if(i>0)
- {
- i--;
- if(i==0)
- {
- BACK_COLOR=WHITE;
- POINT_COLOR=RED;
- LCD_ShowCharh(80,220,'P',0);
- LCD_ShowCharh(80,212,'W',0);
- LCD_ShowCharh(80,204,'M',0);
- showhanzi16h(80,280,3,0);
- showhanzi16h(80,264,4,0);
- }
- if(i==1)
- {
- BACK_COLOR=RED;
- POINT_COLOR=WHITE;
- LCD_ShowCharh(80,220,'P',0);
- LCD_ShowCharh(80,212,'W',0);
- LCD_ShowCharh(80,204,'M',0);
- BACK_COLOR=WHITE;
- POINT_COLOR=RED;
- LCD_ShowCharh(80,160,'R',0);
- LCD_ShowCharh(80,152,'T',0);
- LCD_ShowCharh(80,144,'C',0);
- }
- if(i==2)
- {
- BACK_COLOR=RED;
- POINT_COLOR=WHITE;
- LCD_ShowCharh(80,160,'R',0);
- LCD_ShowCharh(80,152,'T',0);
- LCD_ShowCharh(80,144,'C',0);
- showhanzi16h(80,100,5,1);
- showhanzi16h(80,84,6,1);
- }
- if(i==3)
- {
- showhanzi16h(80,100,5,0);
- showhanzi16h(80,84,6,0);
- showhanzi16h(180,280,13,1);
- showhanzi16h(180,264,14,1);
- }
- if(i==4)
- {
- showhanzi16h(180,280,13,0);
- showhanzi16h(180,264,14,0);
- showhanzi16h(180,220,11,1);
- showhanzi16h(180,204,12,1);
- }
- if(i==5)
- {
- showhanzi16h(180,220,11,0);
- showhanzi16h(180,204,12,0);
- showhanzi16h(180,160,9,1);
- showhanzi16h(180,144,10,1);
- }
- if(i==6)
- {
- showhanzi16h(180,160,9,0);
- showhanzi16h(180,144,10,0);
- showhanzi16h(180,100,7,1);
- showhanzi16h(180,84,8,1);
- }
- if(i==7)
- {
- showhanzi16h(180,100,7,0);
- showhanzi16h(180,84,8,0);
- showhanzi16h(80,280,3,1);
- showhanzi16h(80,264,4,1);
- }
- }
- else
- {
- showhanzi16h(80,280,3,1);
- showhanzi16h(80,264,4,1);
- showhanzi16h(180,100,7,0);
- showhanzi16h(180,84,8,0);
- i=7;
- }
- }
- delay_1ms(200);
- }
复制代码
图6 主界面
未完待续!!!!
此内容由EEWORLD论坛网友jinglixixi原创,如需转载或用于商业用途需征得作者同意并注明出处
|
-
B.jpg
(18.41 KB, 下载次数: 0)
|