本帖最后由 Moonlight 于 2023-7-16 14:20 编辑
开发平台:EKT043开发板
编码器与PWM 一、作品功能介绍 基于迪文显示屏的C51内核单片机的开发,采用PWM输出频率和幅值都可调的正弦波,并使用编码器开关调节正弦波的频率和幅值。
二、工作原理 本实验需要用编码器调节正弦波的频率和幅值,编码开关的输出信号有三相,分别是A、B、Z,A相和B相是正交信号,相位相差90度,Z是归零信号。当编码开关正时,A相超前,B相比A相滞后90度;当编码开关反转时,B相超前,A相滞后。要判断编码开关是正传还是反转,需要将其输出信号接入输入中,不断的读。当单片机输出没有模拟量时,我们需要用PWM接口产生模拟信号,PWM的脉冲宽度调制,其原理是利用8位计数器将其周期分成几千或几万份,设置高低电平的数值即设置其平均电压来调节脉冲宽度,信号输出后再经过一个电阻电容滤波,就可以产生一个正弦波信号。 三、设计思路 1、硬件设计 本实验所需模块主要有三部分:计算机、开发板、通讯板,需要将各个模块连接成系统。开发板引出了5路串口,所有IO口,IO口连接编码器开关。本实验需要外接编码器开关和阻容滤波,并使用示波器察看信号。 2、软件设计 当编码信号与单片机相连时,需要将其端口设置为输入方式,P2.0接B,P2.1接A,然后用1ms的周期去读它的数,两次变之间读的数一样的话则不考虑,变化了才要考虑判断是正传还是反转,正传时读出的数为0231,反转时是2013,我们要根据这两组数据来判断它是正传还是反转,需要记住当前时刻的值和前一时刻的值,例如当前时刻是2,那么如果前一时刻是0则是正传,前一时刻是3则是反转。所以我们要做一个正转表和一个反转表,通过不断的去查这两个表就可以判断编码开关的正反。PWM的程序设计大致为首先要初始化其工作模式,然后设定初始值,使ET1=1,打开中断,TR1=1定时器开始工作,之后进入中断服务程序,通过进入中断的次数判断其是奇数次还是偶数次来设置高低电平,设置完之后使定时器工作,循环往复,每次进入中断的次数不同,设置的高低电平的值也不同,这样就可以输出一个正弦波信号。 3、GUI设计 采用DGUS软件对界面进行了简单的设计,使界面简洁美观。 四、工程代码及演示视频 工程文件、工程代码、演示视频打包见附件。
|