本帖最后由 Moonlight 于 2023-7-18 10:48 编辑
开发平台:EKT043开发板
正弦波发生器 一、作品功能介绍 基于迪文显示屏的C51内核单片机的开发,使用1ms定时器中断,产生频率和幅值都可调的正弦波曲线。
二、工作原理 本实验使用1ms定时器中断,即每1ms内产生一个脉冲。要使它产生1ms的脉冲需要对定时器2进行配置,定时器2计数时采用16位计数器,首先需要设定一个初值,每来一个脉冲,数值加1,当值为FFFF时,产生一个中断标志,同时从初值开始重新计数,如此往复即可以产生连续的1ms脉冲。产生正弦波的方法可以用查表法,利用相位计数器对正弦波的相位进行查表,首先需要利用正弦波频率、采样频率与步长之间的关系求出步长的大小,再用相位计数器从0度开始累加一直加到360度,每1ms计算一次,这样就可以产生相应频率的正弦波;产生正弦波也可以采用递推公式的计算方法,用前两个正弦函数的大小计算出第三个正弦函数的大小。 三、设计思路 1、硬件设计 本实验所需模块主要有三部分:计算机、开发板、通讯板,需要将各个模块连接成系统。开发板引出了5路串口,所有IO口,IO口连接编码器开关。在没有外接编码器开关的情况下也可以正常运行本工程。 2、软件设计 配置定时器2时的代码大致为T2CON=0X71;设置脉冲数为TH2=0,TL2=0;设置计数初始值TRL2H=0XBC,TRL2C=0XCD;打开定时器2 ET2=1,TR2=1;打开总中断EA=1。然后进入中断服务程序。产生正弦波采用查表法,首先得出步长与频率的关系为步长是正弦波频率/65535*采样频率1000HZ,然后用相位计数器从0度开始累加一直加到360度,每1ms计算一次,这样就可以产生相应频率的正弦波。 3、GUI设计 采用DGUS软件对界面进行了简单的设计,使界面简洁美观。 四、工程代码及演示视频 工程文件、工程代码、演示视频打包见附件。
|