找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1385|回復(fù): 3
收起左側(cè)

做微風(fēng)扇,為什么程序燒錄到51單片機(jī)里,電機(jī)不運(yùn)轉(zhuǎn)啊

[復(fù)制鏈接]
ID:1084376 發(fā)表于 2023-6-15 20:33 | 顯示全部樓層 |閱讀模式
#include<reg52.h> //此文件中定義了單片機(jī)的一些特殊功能寄存器
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int//對(duì)數(shù)據(jù)類型進(jìn)行聲明定義
bit  qtflag=1;
sbit D1=P1^0;
sbit D2=P1^1;
sbit D3=P1^2;
sbit D4=P1^3;
sbit DIO_595=P1^4;
sbit RCK_595=P1^5;
sbit SCLK_595=P1^6;
sbit led=P1^7;
sbit k1=P3^0;
sbit k2=P3^1;
sbit k3=P3^2;
sbit k4=P3^3;
sbit ENA=P0^2;
sbit IN1=P0^0;
sbit IN2=P0^1;
void pwm();

uchar msflag,sdh,sdl,sdflag=7;
uint miao,shi,fen;
unsigned char code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

void delayms(uint xms)
{
uint i,j;
for (i=xms;i>0;i--)
for (j=110;j>0;j--);
}
void delay(uint i)
{
while(i--);
}
void Hc595SendByte(uchar dat)
{
uchar a;
SCLK_595=0;
RCK_595=0;
for(a=0;a<8;a++)
{
DIO_595=dat>>7;
dat<<=1;

SCLK_595=1;
delay(1);
SCLK_595=0;
}

RCK_595=1;
delay(1);
RCK_595=0;
}
void display()
{
uchar i;
if(msflag==0)
{
for(i=0;i<4;i++)
{
switch(i) //位選,選擇點(diǎn)亮的數(shù)碼管,
{
case(0):
D1=1;D2=0;D3=0;D4=0; Hc595SendByte(smgduan[fen/10]); break;//顯示第1位
case(1):
D1=0;D2=1;D3=0;D4=0; Hc595SendByte(smgduan[fen%10]); break;//顯示第2位
case(2):
D1=0;D2=0;D3=1;D4=0; Hc595SendByte(smgduan[miao/10]); break;//顯示第3位
case(3):
D1=0;D2=0;D3=0;D4=1; Hc595SendByte(smgduan[miao%10]); break;//顯示第4位
}
delay(50);//間隔一段時(shí)間掃描
Hc595SendByte(0x00);//消隱
}
}
if(msflag==1)
{
for(i=0;i<4;i++)
{
switch(i) //位選,選擇點(diǎn)亮的數(shù)碼管,
{
case(0):
D1=1;D2=0;D3=0;D4=0; Hc595SendByte(0x00); break;//顯示第1位
case(1):
D1=0;D2=1;D3=0;D4=0; Hc595SendByte(0x00); break;//顯示第2位
case(2):
D1=0;D2=0;D3=1;D4=0; Hc595SendByte(0x00); break;//顯示第3位
case(3):
D1=0;D2=0;D3=0;D4=1; Hc595SendByte(smgduan[sdflag]); break;//顯示第4位
}
delay(50);//間隔一段時(shí)間掃描
Hc595SendByte(0x00);//消隱
}
}
if(msflag==2)
{
for(i=0;i<4;i++)
{
switch(i) //位選,選擇點(diǎn)亮的數(shù)碼管,
{
case(0):
D1=1;D2=0;D3=0;D4=0; Hc595SendByte(0x00); break;//顯示第1位
case(1):
D1=0;D2=1;D3=0;D4=0; Hc595SendByte(0x00); break;//顯示第2位
case(2):
D1=0;D2=0;D3=1;D4=0; Hc595SendByte(0x00); break;//顯示第3位
case(3):
D1=0;D2=0;D3=0;D4=1; Hc595SendByte(0x00); break;//顯示第4位
}
delay(500);//間隔一段時(shí)間掃描
Hc595SendByte(0x00);//消隱
}
}
}
void key()
{
if(k1==0) //檢測(cè)K1鍵是否按下
{
delay(100);//按鍵消抖
if(k1==0)
{
msflag++;
if(msflag==3)
msflag=0;
}
while(!k1); //檢測(cè)K1鍵是否松開
}
if(k2==0)
{
delay(100);
if(k2==0)
{
qtflag=~qtflag;
}
while(!k2);
}
if(k3==0)
{
delay(100);
if(k3==0)
{
if(sdflag<7)
sdflag++;
}
while(!k3);
}
if(k4==0)
{
delay(100);
if(k4==0)
{
if(sdflag>1)
sdflag--;
}
while(!k4);
}
}
void pwm()
{
switch(sdflag)
{
case 7:
sdh=10;sdl=0;break;
case 6:
sdh=9;sdl=1;break;
case 5:
sdh=8;sdl=2;break;
case 4:
sdh=7;sdl=3;break;
case 3:
sdh=6;sdl=4;break;
case 2:
sdh=5;sdl=5;break;
case 1:
sdh=4;sdl=6;break;
}
}
void qd()
{
if(qtflag)
{
uchar i;
for(i=0;i<sdl;i++)
{
ENA=0;
display();
}
for(i=0;i<sdh;i++)
{
ENA=1;
display();
}
}
else
ENA=0;
}
void Timer0Init()
{
TMOD|=0X01;//選擇為定時(shí)器0模式,工作方式1,僅用TR0打開啟動(dòng)。

TH0=0XFC; //給定時(shí)器賦初值,定時(shí)1ms
TL0=0X18;
ET0=1;//打開定時(shí)器0中斷允許
EA=1;//打開總中斷
}


void main()
{
Timer0Init();//定時(shí)器0初始化
TR0=1;
IN1=1;
IN2=0;
while(1)
{
display();
key();
pwm();
qd();
}
}


void Timer0()interrupt 1
{
static uint i;
TH0=0XFC; //給定時(shí)器賦初值,定時(shí)1ms
TL0=0X18;
i++;
if(i==1000)
{
miao++;
i=0;
led=~led;
if(miao==60)
{
fen++;
miao=0;
if(fen==60)
{
shi++;
fen=0;
if(shi==24)
{
shi=0;
}
}
}
}
}

回復(fù)

使用道具 舉報(bào)

ID:161164 發(fā)表于 2023-6-15 22:11 | 顯示全部樓層
電路圖?
回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2023-6-16 11:24 | 顯示全部樓層
因?yàn)槟悴欢姍C(jī)旋轉(zhuǎn)的原理。補(bǔ)一下吧。
回復(fù)

使用道具 舉報(bào)

ID:883242 發(fā)表于 2023-6-20 11:05 | 顯示全部樓層
先用萬用表檢查電機(jī)兩端電壓。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表