/* 关闭开发板电源
单片机开发板上不要接插任何模块,如液晶点阵这些都不能接上,
把P10用杜邦线链接到电机驱动模块 J4的4IN上,然后把小电机
端子插到 J2的 + 和D 上,不分线序接上即可。
选择好程序,打开电源点下载,接着打开单片机电源。
按S2减速,按S3加速。
************************************************
"1"为加速
"2"为减速
"3"为开
"4"为关
*/
#include <reg52.h>
#include <stdio.h>
#define uchar unsigned char
#define uint unsigned int
uchar pwm_t;//调节值
uchar a,flag;
uchar bd = 50;//比对值
sbit _4IN = P1^7;//输出引脚
sbit led1 = P1^0;//初始化
sbit led2 = P1^1;//开关状态灯
sbit led3 = P1^2;//加速灯
sbit led4 = P1^3;//减速灯
//定时器0中断
void timer0() interrupt 1
{
TH0 = (65536-10)/256;//0.01ms
TL0 = (65536-10)%256;
pwm_t++;
if(pwm_t == 100)
pwm_t = 0;
}
//中断3
void timer3() interrupt 4
{
RI = 0;
a = SBUF;
}
//初始化
void Init()
{
TMOD = 0x21;
SCON = 0x50;
TH0 = (65536-10)/256;//0.01ms
TL0 = (65536-10)%256;
TH1 = 0xfd;
TL1 = 0xfd;
EA = 1;//总中断允许
ES = 1;//串口中断允许
TR1 = 1;//启动定时器1
TR0 = 1;//启动定时器0
ET0 = 1;//允许定时器0中断
_4IN = 0;
}
void main()
{
Init();
led1 = 0;
while(1)
{
if(a == "3")
{
flag = 1;//自锁
led2 = 0;
}
if((a == "1")&&(flag == 1))//加速
{
bd += 10;
led3=0;
if(bd > 100)
bd = 100;
while(pwm_t<bd)
_4IN = 1;
_4IN = 0;
}
if((a == "2")&&(flag == 1))//减速
{
bd -= 10;
led4=0;
if(bd > 0)
bd = 0;
while(pwm_t<bd)
_4IN = 1;
_4IN = 0;
}
if(a == "4")
{
led4 = 1;
led3 = 1;
led2 = 1;
flag = 0;
_4IN = 0;
}
}
}
|