本文介绍了利用STM32F103ZE系列产生三种波形并在LCD上显示,并通过DA和AD转换重新显示转换后的波形。
思路
第一种思路是通过给出三种波形数据的数组,把数组的首地址传给DMA的基地址,DAC每个周期从DMA里读取数组的值来进行转换,然后ADC同时读值并进行转换,最后把转换好的结果存进一个数组里,LCD循环显示数组里的内容即可。
还有一种比较直接的思路就是找出三种波形坐标的规律,在定时器中断里计算各波形的坐标,主程序里循环画点即可,此方法虽能正常在LCD上显示波形,但因为定时器中断里边执行的东西太多,导致DA转换后的点不是连续的,在示波器上不能正常显示波形。
下面主要介绍第一种思路。
设计流程
程序的流程图如下:
![e96a107bee869378f88da7d3dbb12c42.png](https://img-blog.csdnimg.cn/img_convert/e96a107bee869378f88da7d3dbb12c42.png)
程序遵循模块化设计的思想,主程序里非常简单,只有DA和AD,串口等外设的初始化和波形发生函数,while循环里是按键切换波形和串口数据解析函数。
程序流程:
- 当按键按下之后,单片机自动扫描出是哪个按键并按了几次(加了一个计数变量),以此改变切换波形变量的值(例KEY0按一次波形数组即变为三角波),改变后若串口发送的有数据变重新改变TIM2的ARR值,若无数据则继续向下执行&#x