C语言模拟数控机床圆形插补

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include
#include //内部包含延时函数 _nop_();
#define uchar unsigned char
#define uint unsigned int

sbit MOSIO=P2^2;
sbit R_CLKa=P2^3;
sbit S_CLKa=P2^4;
uchar code duan[]={~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F};//此表为LED共阳级数码管段选字模
uchar code wei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //此表为LED数码管位选字模

sbit a = P3^2;//启动-停止按钮,1---启动,0---停止
sbit b = P3^3;//正向-逆向按钮,1---正向,0---逆向
sbit c = P3^4;//加速按钮
sbit d = P3^5;//减速按钮

bit start = 0;//1 启动 ,0 停止
bit flag = 1;//1 正转 ,0 反转

uchar code t1[4] = {0x04,0x08,0x10,0x20};//正转脉冲
uchar code t2[4] = {0x20,0x10,0x08,0x04};//反转脉冲
uint n =5;//给电机初始转速
uint m;

void sdelay(uint m) //延时程序
{
uint i,k;
for(i=2*m;i>0;i--)
for(k=100;k>0;k--);
}

void move(void) //启动----停止判断程序
{
if(!a)
{
sdelay(10); //消除干扰
if(!a) start=~start;
while(!a); //键不释放不执行后面程序
}
}

void change(void) //正转----反转切换程序
{
if(!b)
{
sdelay(10);
if(!b) flag=~flag;
while(!b);
}
}

void velocity(void) //加减速程序
{
if(!c&&n>1) // 加速
{
sdelay(10);
if(!c) n--;
while(!c);
}
else if(!d&&n<10) //减速
{
sdelay(10);
if(!d) n++;
while(!d);
}
}

void send595(uchar dat) //数据输入
{
uchar i;
for(i=0;i<8;i++)
{
if((dat<MOSIO=1;
else MOSIO=0;

S_CLKa=0;
S_CLKa=1;
}
}

void out595(void) // 数据输出
{
R_CLKa=0;
R_CLKa=1; //上升沿
}

void disp(uchar w,uchar d) //数码管显示函数:w-位码,d-段码
{
send595(wei[w]); //发送位选
send595(wei[w]);
out595();
send595(duan[d]); //发送段选
out595();
}

void dispoff() //关闭共阳数码管
{
send595(0); //位选全为0,对共阳极而言即端开
send595(0);
out595();

send595(0xff); //段选全为1,对共阳极段为0时才有可能点亮,这样就被关闭
out595();
}


void main()
{
uint i;
dispoff(); //先关闭数码管
P0 = 0; //初始P0口
P3 = 0xff;//初始P3口
while(1)
{
move(); //启动判断
change(); // 停止状态下改变转向判断
velocity();//停止状态下加减速判断

while(start) //运转,送脉冲
{
for(i =0;i<4;i++)
{
if(flag) P0= t1[i]; //正转
else P0 =t2[i]; //反转
sdelay(n); //节拍延时
m=10-n;
disp(7,m); //数码管显示
}
move(); //停止判断
change(); //运转中是否变向
velocity();//运转中是否加减速
}
}
}


相关文档
最新文档