一, 28BYJ-48电机原理
1.1 28BYJ-48是4相永磁试电机,详细信息大家查阅相关资料就可以了;电机的里面有6个齿(0-5),每一个齿上都有永久的磁性,它是电机的转子;电机的外壳有八个齿(A,B,C,D),每个齿上都有缠有一个线圈绕组,正对这的线圈绕组又是链接在一起的如图1.1(详细信息请查阅相关资料):
1.2 怎样让电机转动起来呢?首先,假设我们让B线导通,此时转子0和3都对应B有一个吸引力;可以看到的是,A和2之间有一个很小的夹角,当我们导通A时,转子就会顺时针转动对齐A,此时我们D和4之间的夹角也减到了最小(再小就是正对),为了让转子向一个方向旋转,我们可以先关闭A,导通D,此时4和D之间产生的吸引力,使电机又顺时针转动了一点。
步进电机一共有5根线,红色是公共端,接5v电源,橙,黄,粉,蓝,就对应A,B,C ,D ;根据电路的设置,我们可以把电机每转动一个小角度的值给他算出来,分别是:0xe,0xc,xd,0x9,0xb,0x3,0x7,0x6;
我们在开发过程中,可以直接按照顺序,依次给控制电机的IO口给这几个值就可以了。
1.3 示列代码:
#include
unsinged char code BeatCode[6] = {
0xE,0xc,0xd,0x9,0xb,0x3,0x7,0x6;
};
void main()
{
unsigned char tmp;//定义一个临时变量
unsigned char index = 0;
while(1)
{
tmp = P1;
tmp = tmp & 0xF0;
tmp = tmp | BeatCode[index];
P1 = tmp;
index++;
index= index & 0x07;
delay();//延时2ms
}
}
二 拓展蜂鸣器
2.1 蜂鸣器从结构可以分为电压试蜂鸣器和电磁试蜂鸣器。也可以分为有源和无源蜂鸣器。
2.2 有源蜂鸣器,一般给一个导通电频,它就可以直接发声了;而无源蜂鸣器内部是不带晶振的,不许给500~4.5khz才会发声。
2.3 给蜂鸣器的震动频率不一样,蜂鸣器发出的声音也会有差距。一下代码就是配置蜂鸣器发声的:
//示列音频
unsigned int code NoteFrequ[] = {
523,587,659,698,784,880,988,//低1--7
1047,1175,1319,1397,1568,1760,1976,//高1--7
void OpenBuzz(unsigned int frequ)
{
unsinged int reload;//计算所需要的定时器重载值
reload = 65536 - (11059200/12)/(frequ*2);//由给定的频率计算定时器的重载值
TH0 = (unsigned char)(reload>>8);//16位重载值,分解为高低俩个字节
TL0 = (unsigned char)reload;
ET0 = 1;//使能T0中断
TR0 = 1;//启动T0
}