这一节我们接着上节的内容,讲第二个层面:2、将处理好的数据显示在LCD上,并用曲线表示出P的变化。
这一节的功能实现可以说是整个代码编写中最难实现的部分了,如果我们要自己实现波形显示函数的画,涉及到的代码量就比较大了,幸运的是我们有GUI程序的帮助,哈哈,这就大大减少了我们的代码量,自己写波形函数真的能把人写死。
在我的程序中,我移植的是UCGUI的V3.90版本,版本有些低,这是因为我在网络上找到的只有这个版本的移植教程,所以就用这个了。在UCGUI里面,有现成的数值显示函数,函数曲线绘制函数(用这个来画波形),还有很多,由于我也是第一次使用这个,在找资料的过程中真的把人都给整傻了,所以,我会把我做这个题所用到的资料到放到网盘中,大家自取哈!
先贴一个大佬移植GUI的教程,比较详细,可以参考一下https://blog.csdn.net/qutiezhu/article/details/52373288?ops_request_misc=&request_id=&biz_id=102&utm_term=GUI%E7%A7%BB%E6%A4%8D&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-7-52373288这是链接,会有所帮助。
接下来我会贴出我实现波形显示和相关数据显示的代码。
#include "stm32f10x.h"
#include "led.h"
#include "delay.h"
#include "gui.h"
#include "sys.h"
#include "LCD_Driver.h"
#include "usart.h"
#include "adc_DMA.h"
#include "dealdata.h"
#include "led.h"
#include "WM.h"
#include "FRAMEWIN.h"
void DemoShowColorBar(void);
void DemoDispText(void);
//已知电阻
extern float R_know;
//转换后的模拟电压
extern float ADC_1_ConvertedValueLocal;//ADC1的模拟电压
extern float ADC_2_ConvertedValueLocal;//ADC2的模拟电压
signed short ADC1_Converlocal[240];
signed short ADC2_Converlocal[240];
float U=0,I=0,P=0;//都是负载的
//画方格子
void Draw_fanggezi(WM_MESSAGE* pMsg)
{
GUI_Clear();
GUI_SetColor(GUI_GREEN);//设置画笔的颜色
/*画水平线*/
GUI_DrawHLine(128,0,240);
GUI_DrawHLine(160,0,240);
GUI_DrawHLine(192,0,240);
GUI_DrawHLine(224,0,240);
GUI_DrawHLine(256,0,240);
GUI_DrawHLine(288,0,240);
GUI_DrawHLine(320,0