迪文科技论坛

 找回密码
 立即注册
搜索
查看: 298|回复: 0

【开源】二次开发教学工程3_编码器与PWM

[复制链接]

9

主题

0

回帖

92

积分

注册会员

Rank: 2

积分
92
发表于 2023-6-1 21:30:23 | 显示全部楼层 |阅读模式
本帖最后由 Moonlight 于 2023-7-16 14:20 编辑

开发平台:EKT043开发板
编码器与PWM
一、作品功能介绍
  基于迪文显示屏的C51内核单片机的开发,采用PWM输出频率和幅值都可调的正弦波,并使用编码器开关调节正弦波的频率和幅值。


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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2024-11-23 06:34 , Processed in 0.111357 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表