单片机画曲线
单片机画实时曲线的实现
如果我们要画实时曲线也就是随着时间的不同曲线的值就会有变化。
举例我们将ADC采集的0-5V电压值在320*240的屏幕上画曲线。
我们使用打点计数法实现。
我们可以开启一个定时器,如果要求500Ms画一个点,那么我们就将定时器设置为500ms中断产生此时在相应的位置画点。
如果不考虑其他文字说明,坐标系就是屏的横竖长度,我们可以模拟彩屏的320就是X轴也就是时间轴,定时器中断处理函数内会有一个U16的计数量加到320清零,从头开始画。屏的240就是电压值的转换体现,如果最大值239是5V,0是0V,如果我们采集到一个2V的电压值,那么他对应的位置是(240/5)*2=96,我们调用画点函数Draw_line(t,96,Black)就可以画出该点了,我们将96换成ADc_value的值,就可以简单的实现画曲线了。
复杂点我们可以建立坐标系指示,还可以添加文子说明,但是相应的320和240就会变小,就要重新里算了。
但是对于画幅頻特性曲线,就要要求幅度是跟随频率的不同而增大的,频率是时间的倒数,时间增大,频率反而减小。这种曲线的实现待研究。
如果我们要画实时曲线也就是随着时间的不同曲线的值就会有变化。
举例我们将ADC采集的0-5V电压值在320*240的屏幕上画曲线。
我们使用打点计数法实现。
我们可以开启一个定时器,如果要求500Ms画一个点,那么我们就将定时器设置为500ms中断产生此时在相应的位置画点。
如果不考虑其他文字说明,坐标系就是屏的横竖长度,我们可以模拟彩屏的320就是X轴也就是时间轴,定时器中断处理函数内会有一个U16的计数量加到320清零,从头开始画。屏的240就是电压值的转换体现,如果最大值239是5V,0是0V,如果我们采集到一个2V的电压值,那么他对应的位置是(240/5)*2=96,我们调用画点函数Draw_line(t,96,Black)就可以画出该点了,我们将96换成ADc_value的值,就可以简单的实现画曲线了。
复杂点我们可以建立坐标系指示,还可以添加文子说明,但是相应的320和240就会变小,就要重新里算了。
但是对于画幅頻特性曲线,就要要求幅度是跟随频率的不同而增大的,频率是时间的倒数,时间增大,频率反而减小。这种曲线的实现待研究。