标题:
STC15F104W单片机实现编码器调节两路PWM输出程序
[打印本页]
作者:
yaojil
时间:
2020-2-2 14:42
标题:
STC15F104W单片机实现编码器调节两路PWM输出程序
#include <STC15F104E_PLUS.h>
#include <intrins.h>
#define uchar unsigned char
//#define uint unsigned int
sbit VD=P3^3; //红色LED 0.50v=10v ;1.00=27v ;3.85=73v;
sbit CD=P3^4; //绿色LED
sbit ZS=P3^5; //指示LED转换 0 - 红色LED调整;1 - 绿色LED调整
sbit BA=P3^0; //编码器的a脚接P3.0
sbit BB=P3^1; //编码器的b脚接P3.1
sbit QH=P3^2; //编码器的按键接P3.2 电压调整或电流调整249=5.00V
uchar v_temp = 128,c_temp = 109,XZ = 0,flag,a0,b0,c0;//占空比 189=3.70V;109=0.75V;128=1.00V
//延时函数,大约延时10ms.此处未用到
/*void Delay10ms() //@11.0592MHz
{
unsigned char i, j;
i = 108;
j = 145;
do
{
while (--j);
} while (--i);
}*/
void bianmaqi(void)//捕捉EC11按下和旋转信息
{
unsigned char a, b, c;
a = BA;
b = BB;
if (a != a0) // A changed
{
a0 = a;
if (b != b0) // B changed
{
b0 = b;
if (a == b)
{
if (XZ == 0)
{
if (v_temp < 249) v_temp++;
}
else if ( XZ == 1)
{
if (c_temp < 208)c_temp++;;
}
}
else if (a != b)
{
if ( XZ == 0)
{
if (v_temp > 85)v_temp--;
}
else if ( XZ == 1)
{
if (c_temp > 1)c_temp--;
}
}
}
}
c = QH;
if (!c && c0)
{
if (XZ == 0 )
{
XZ = 1;
ZS = 1;
}
else if(XZ == 1)//切换
{
XZ = 0;
ZS = 0;
}
}
c0 = c;
}
void InitTimer0() interrupt 1 // 0.5毫秒@11.0592MHz //定时器T0 16位自动模式定时1ms 控制灯灭时间 频率 2000HZ
{
IE2 = 0x00; //关闭定时器2中断
AUXR = 0XE4; //关闭定时器2计数
TL0 = 0xCD;
TH0 = 0xD4;
VD = 1;
CD = 1;
// blue=1;
flag = 1;
AUXR = 0xF4; //开启定时器2计数
IE2 = 0x04; //开启定时器2中断允许
}
void InitTimer2() interrupt 12 // 2.5微秒@11.0592MHz //定时器T2 16位自动模式定时4us 控制灯亮时间
{
flag++;
T2L = 0xD4; //设置定时初值
T2H = 0xFF; //设置定时初值
if(v_temp == flag) VD=0;
if(c_temp == flag) CD=0;
// if(b_temp == flag) blue=0;
}
void init()
{
AUXR = 0XE4; //设置定时器0和2为1T模式
TMOD = 0x00;
TL0 = 0xCD;
TH0 = 0xD4;
T2L = 0xD4; //设置定时初值
T2H = 0xFF; //设置定时初值
EA = 1;
ET0 = 1;
TR0 = 1;
P3M1 &= 0xF7;
P3M0 |= 0x08; //P3.3(推挽)
P3M1 &= 0xEF;
P3M0 |= 0x10; //P3.4(推挽)
P3M1 &= 0xDF;
P3M0 |= 0x20; //P3.5(推挽)
VD = 0;
CD = 0;
ZS = 0; // 0 - 电压调整状态;1 - 电流调整状态
a0 = BA;
b0 = BB;
c0 = QH;
}
void main()
{
init();
while(1)
{
bianmaqi();
}
}
复制代码
STC15F104W实现编码器调节两路PWM输出.rar
2020-2-2 14:40 上传
点击文件名下载附件
下载积分: 黑币 -5
33.85 KB, 下载次数: 129, 下载积分: 黑币 -5
作者:
molo
时间:
2020-2-3 16:40
没有工程文件;只有一个C文件,其中也没有头文件STC15F104E_PLUS.h
作者:
15250314250
时间:
2022-2-28 22:59
刚刚试了楼主的文件,好像没成功,调整频率和占空比无反应,不知道问题在那
作者:
youlinys
时间:
2022-3-1 11:07
楼主能不能介绍一下实现过程?
作者:
steary
时间:
2022-4-6 00:27
楼主能不能介绍一下实现过程?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1