编码器对应代码.docx

上传人:b****8 文档编号:27593433 上传时间:2023-07-03 格式:DOCX 页数:15 大小:16.14KB
下载 相关 举报
编码器对应代码.docx_第1页
第1页 / 共15页
编码器对应代码.docx_第2页
第2页 / 共15页
编码器对应代码.docx_第3页
第3页 / 共15页
编码器对应代码.docx_第4页
第4页 / 共15页
编码器对应代码.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

编码器对应代码.docx

《编码器对应代码.docx》由会员分享,可在线阅读,更多相关《编码器对应代码.docx(15页珍藏版)》请在冰豆网上搜索。

编码器对应代码.docx

编码器对应代码

#include

#include

typedefunsignedcharuchar;

typedefunsignedintuint;

typedefunsignedlongulong;

//数码管显示定义

#defineled_portP1

sbitdm=P2^0;//断码

sbitwm=P2^1;//位码

sbitpb=P3^3;//b相脉冲

sbitgn=P2^2;//功能

sbitqr=P2^3;//确认

sbitjia=P2^4;//加

sbitjian=P2^5;//减

sbitbdqr=P2^6;//标定确认

sbitamc=P3^7;//b相

sbitbmc=P3^6;//a相

bitmcbz,mcbz1;

ulonga,b,f;//a,b显示8位数码管,f脉冲个数

uinte;//e标定数值

ulongj;//j标定后的参数

ucharc,g,d;//c功能键对应数值,g确认按键第几次按下,d发出脉冲宽度调节

ucharbcd[8];

ucharcodewxian[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

ucharcodedxian[]={

0x3f,//0

0x06,//1

0x5b,//2

0x4f,//3

0x66,//4

0x6d,//5显示s

0x7d,//6

0x07,//7

0x7f,//8

0x6f,//9

0x79,//E10

0x31,//T11

0x77,//R12

0x00,//不显示13

0x37,//n14

0x7c,//b15

0x5e//d16

};

voidbin_bcd(ulongf);//脉冲分离函数

voidbinjl(ulonga);//距离数分离函数

voidgnsd(void);//功能键

voidpjiajian(void);//加减

voidxset(void);//显示set

voidreset(void);//显示reset

voidxbd(void);//显示bd

voidbdjiajian(void);//标定按键设置

voidqrhs(void);//确认按键

voidsmxs();

voiddelay(uintt);

bitbz,bz1,bz2,bz3,bz4,bz5,qrbz,qrsd;

bitbz6;//确认跑完

bitqr2,qr3;//按下确认键标志

bitqrpw1;

ucharmcs;

voidmain()

{

a=0;//显示的路程

c=g=0;//设定标志位为1,2,3

d=0;//设定多少输出一个方波

bz=0;//功能键设定加1标志位

bz1=0;//功能键读出的状态

bz2=0;//功能1标志位

bz3=0;//设定2标志位

bz4=0;//标志3标志位

qrbz=0;//确认清零标志位

qrsd=0;//确认设定标志位

qr2=0;

qr3=0;

amc=bmc=0;

TMOD=0x09;

EA=1;

TH0=0;

TL0=0;

EX0=1;

TR0=1;

IT0=1;

while

(1)

{

gnsd();

qrhs();

smxs();

if(bz5==1)

{

bin_bcd(f);

bz2=0;

bz3=0;

bz4=0;

qr2=0;

}

if(bz6==1)

{

g=0;

bz5=0;

j=e*10000000/f;

a=j*b/100000;

binjl(a);

}

}

}

voidto(void)interrupt0

{

if(pb==0)

{

if(bz6==0)

f++;

if(bz6==1)

b++;

mcbz=~mcbz;

if(mcbz==0)

amc=~amc;

if(mcbz==1)

bmc=~bmc;

}

if(pb==1)

{

if(bz6==0)

f--;

if(bz6==1)

b--;

mcbz1=~mcbz1;

if(mcbz1==0)

bmc=~bmc;

if(mcbz1==1)

amc=~amc;

}

if(b==0xffffffff)

b=0;

if(f==0xffffffff)

f=0;

TH0=0;

TL0=0;

}

voidsmxs()

{

uchari;

for(i=0;i<8;i++)

{

led_port=0;

dm=0;

dm=1;

led_port=wxian[i];

wm=0;

wm=1;

led_port=dxian[bcd[i]];

if(i==2&&bz6==1)

led_port=led_port|0x80;

dm=0;

dm=1;

delay(100);

}

}

voiddelay(uintt)

{

while(--t);

}

voidbin_bcd(ulongf)

{

bcd[7]=f/10000000;

bcd[6]=f/1000000;

bcd[5]=f/100000;

bcd[4]=(f%100000)/10000;

bcd[3]=(f%10000)/1000;

bcd[2]=(f%1000)/100;

bcd[1]=(f%100)/10;

bcd[0]=(f%100)%10;

}

voidbinjl(ulonga)

{

bcd[7]=a/10000000;

bcd[6]=a/1000000;

bcd[5]=a/100000;

bcd[4]=(a%100000)/10000;

bcd[3]=(a%10000)/1000;

bcd[2]=(a%1000)/100;

bcd[1]=(a%100)/10;

bcd[0]=(a%100)%10;

}

voidgnsd(void)

{

gn=1;//置1

bz1=gn;//读状态

if(bz1!

=1)

if(bz!

=1)

{

bz=1;

c++;

}

if(bz1==1)

bz=0;

if(c==1)

{

bz2=1;

bz5=0;

}

if(bz2==1)

{

if(qr2==0)

{

xset();

pjiajian();

}

if(qr2==1)

bz5=1;

}

if(c==2)

{

bz2=0;

bz3=1;

}

if(bz3==1)

{

reset();

if(qr2==1)

{

b=0;

a=0;

bz5=1;

}

}

if(c==3)

{

bz3=0;

bz4=1;

}

if(bz4==1)

{

if(qr2==0)

{

xbd();

bdjiajian();

}

if(qr2==1)

{

bz5=1;

}

}

if(c==4)

{

bz4=0;

bz5=1;

c=0;

}

}

voidpjiajian(void)

{

bitbzjia,bzjian,djia,djian;

jia=1;

jian=1;//置1

djia=jia;//读状态

djian=jian;

if(djia!

=1)

if(bzjia!

=1)

{

bzjia=1;

d=d+5;

}

if(djia==1)

bzjia=0;

if(djian!

=1)

if(bzjian!

=1)

{

bzjian=1;

d=d-5;

}

if(djian==1)

bzjian=0;

if(d==0xfffb)

d=0;

}

voidbdjiajian(void)

{

bitbzjia,bzjian,djia,djian;

jia=1;

jian=1;//置1

djia=jia;//读状态

djian=jian;

if(djia!

=1)

if(bzjia!

=1)

{

bzjia=1;

e=e+10;

}

if(djia==1)

bzjia=0;

if(djian!

=1)

if(bzjian!

=1)

{

bzjian=1;

e=e-10;

}

if(djian==1)

bzjian=0;

if(d==0xfffb)

d=0;

}

voidxset(void)

{

bcd[7]=5;//s

bcd[6]=10;//e

bcd[5]=11;//t

bcd[4]=13;

bcd[3]=(d%10000)/1000;

bcd[2]=(d%1000)/100;

bcd[1]=(d%100)/10;

bcd[0]=(d%100)%10;

}

voidxbd(void)

{

bcd[7]=15;//b

bcd[6]=16;//d

bcd[5]=13;

bcd[4]=13;

bcd[3]=(e%10000)/1000;

bcd[2]=(e%1000)/100;

bcd[1]=(e%100)/10;

bcd[0]=(e%100)%10;

}

voidreset(void)

{

bcd[7]=12;//r

bcd[6]=5;//s

bcd[5]=10;//e

bcd[4]=11;//t

bcd[3]=13;

bcd[2]=13;

bcd[1]=13;

bcd[0]=13;

}

voidqrhs(void)

{

qr=1;

qr3=qr;

if(qr3!

=1)

if(qrbz!

=1)

{

qrbz=1;

g++;

}

if(qr3==1)

qrbz=0;

if(g==1)

{

qr2=1;

c=0;

}

if(g==2)

{

g=0;

bz5=0;

bz6=1;

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1