📄 复件 直流电机点滴.txt
字号:
#include "c8051f020.h"
#define constent 120 //定义一分钟的规定滴数
#define js 1 //定义一滴升降的高度
sbit a=P2^0;
sbit b=P2^1;
unsigned long int t=60000,p=10000;
int Count=0;
extern void init_led();
extern void senddata(unsigned char ad,unsigned char d);
extern void delay(long int t);
void main (void)
{
int m,i,n,s;
unsigned char j;
WDTCN = 0xde;
WDTCN = 0xad;
OSCXCN =0x67;
OSCICN = 0x88;
XBR0 = 0x00;
XBR1 = 0x04;
XBR2 = 0x40;
P74OUT = 0xFF;
CKCON=0x08;
TMOD=0x11;//定时器0和1为16位模式1
TH0=(-SYSCLK/1000)>>8;
TL0=(-SYSCLK/1000);
TR0=1;
ET0=1;//定时器0中断允许
P0MDOUT=0x00;//漏极开路
P0=0x0f;//输入方式
P2MDOUT=0xff;//推挽输出
P2=0x00;
TCON|=0x01;//边沿触发
IE|=0x01;//enable int0 interrup
init_led();
EA=1;
while(1)
{
for(i=1;i<11;i++)
{
if(t==6000*i)
{
m=constent/10*i;
n=Count-m;
if(n<0)
{
s=-n;
if(s>1)
{
a=1;
delay(s*10000);
a=0;
}
}
if(n>0)
{
s=n;
if(s>1)
{
b=1;
delay(s*10000);
b=0;
}
}
}
if(t==0)
{
EA=0;
for(j=4;j<7;j++)
{
m=Count%10;
Count=Count/10;
m=(unsigned char)m;
senddata(j,m);
}
Count=0;
t=60000;
EA=1;
}
}
}
}
void Int0_ISR (void) interrupt 0
{
Count++;
}
void time_int(void)interrupt 1
{
TH0=(-SYSCLK/1000)>>8;
TL0=(-SYSCLK/1000);
t--;
}
**************************************
void delay(long int t)
{
while(t--!=0);
}
#include <c8051f020.h>
sbit CLK=P1^3;
sbit DIN=P1^1;
sbit LOAD=P1^2;
void senddata(unsigned char ad,unsigned char d)
{
int i,j=50 ;
LOAD=0;
for(i=0;i<8;i++)
{
CLK=0;
if((ad&0x80))
DIN=1;
else DIN=0;
CLK=1;
ad=ad<<1;
}
for(i=0;i<8;i++)
{
CLK=0;
if((d&0x80))
DIN=1;
else DIN=0;
CLK=1;
d=d<<1;
}
LOAD=1;
while(j--);
}
void init_led()
{
senddata(0x09,0xff);//选择译码方式 BCD
senddata(0x0a,0x05);//亮度控制
senddata(0x0b,0x07);//扫描数量
senddata(0x0c,0x03);//停机控制
senddata(0x0f,0x00);//测试控制
}
*********************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -