本文介绍的是内容是利用单片机作为硬件,采用c语言编程,实现功能详述如下:选择正转按钮,电机会顺时针持续转动8s;选择反转按钮,电机会逆时针持续转动10是s,每选择正转一次,显示正转次数会增加1,每选择反转一次,显示反转次数会减小1,初始时数码管显示次数为0。
电机档位显示设置:
uchar code LED[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x02,0xf8,0x00,0x10}; //数码管显示0~9档
/**********************************************************
数码管显示函数led
输入P0
**********************************************************/
void led(int k)
{
P0=LED[k];
}
延时设置:
/*****************延时函数,延时10ms*************************
***若想设置其他延时,可通过更改循环设置(搜索延时与循环的关系)即可****/
void Delay_10ms()
{
uchar a,b,c;
for(c=1;c>0;c--)
for(b=38;b>0;b--)
for(a=130;a>0;a--);
}
main函数通过不同的延时与数字的搭配,实现数码管对电机档位的显示
void main()
{
uint n=0;
led(0);
while(1)
{
if(k2!=1)
{
Delay_10ms();
if(k2!=1)
{
n=n+1;
led(n);
P2=0x7f;
Delay_8s();
}
if(k2!=1)
{
n=n+1;
led(n);
P2=0x7f;
Delay_8s();
}
while(k2!=1)
{
led(n);
P2=0x7f;
Delay_8s();
}
}
if(k2==1)
{
Delay_10ms();
if(k2==1)
{
P2=0xff;
}
}
if(k1!=1)
{
Delay_10ms();
if(k1!=1)
{
n=n-1;
led(n);
P2=0xfd;
Delay_10s();
}
if(k1!=1)
{
n=n-1;
led(n);
P2=0xfd;
Delay_10s();
}
while(k1!=1)
{
led(n);
P2=0xfd;
Delay_10s();
}
}
if(k1==1)
{
Delay_10ms();
if(k1==1)
{
P2=0xff;
}
}
}
}
完整代码如下:
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit k1=P1^2;
sbit k2=P3^5;
uchar code LED[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x02,0xf8,0x00,0x10}; //数码管显示0~9档
/**********************************************************
数码管显示函数led
输入P0
**********************************************************/
void led(int k)
{
P0=LED[k];
}
/**********************************************************
延时函数
延时10ms
**********************************************************/
void Delay_10ms()
{
uchar a,b,c;
for(c=1;c>0;c--)
for(b=38;b>0;b--)
for(a=130;a>0;a--);
}
/**********************************************************
延时函数
延时1s
**********************************************************/
void Delay_1s()
{
uchar a,b,c,d;
for(c=5;c>0;c--)
for(b=4;b>0;b--)
for(a=116;a>0;a--)
for(d=116;d>0;d--);
}
/**********************************************************
延时函数
延时8s
**********************************************************/
void Delay_10s()
{
uchar e;
for(e=20;e>0;e--)
{
Delay_1s();
}
}
/**********************************************************
延时函数
延时10s
**********************************************************/
void Delay_8s()
{
uchar e;
for(e=16;e>0;e--)
{
Delay_1s();
}
}
/******主函数*********************/
void main()
{
uint n=0;
led(0);
while(1)
{
if(k2!=1)
{
Delay_10ms();
if(k2!=1)
{
n=n+1;
led(n);
P2=0x7f;
Delay_8s();
}
if(k2!=1)
{
n=n+1;
led(n);
P2=0x7f;
Delay_8s();
}
while(k2!=1)
{
led(n);
P2=0x7f;
Delay_8s();
}
}
if(k2==1)
{
Delay_10ms();
if(k2==1)
{
P2=0xff;
}
}
if(k1!=1)
{
Delay_10ms();
if(k1!=1)
{
n=n-1;
led(n);
P2=0xfd;
Delay_10s();
}
if(k1!=1)
{
n=n-1;
led(n);
P2=0xfd;
Delay_10s();
}
while(k1!=1)
{
led(n);
P2=0xfd;
Delay_10s();
}
}
if(k1==1)
{
Delay_10ms();
if(k1==1)
{
P2=0xff;
}
}
}
}