1 / 15
文档名称:

编码器对应代码..doc

格式:doc   大小:41KB   页数:15页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

编码器对应代码..doc

上传人:q1188830 2019/7/9 文件大小:41 KB

下载得到文件列表

编码器对应代码..doc

相关文档

文档介绍

文档介绍:#include<>#include<>typedefunsignedcharuchar;typedefunsignedintuint;typedefunsignedlongulong;//数码管显示定义#defineled_portP1sbitdm=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); //显示setvoidreset(void); //显示resetvoidxbd(void); //显示bdvoidbdjiajian(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]=