#include#define uchar unsigned char #define uint unsigned int uchar rem[8]={0,0,0,10,10,10,10,10};/////显存 uchar remx[3]={0,0,0};/////相对坐标存 uchar remj[3]={0,0,0};/////绝对坐标 uchar code bcd[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0x7f};/////LED0~9数码 uchar code jpsj[16]={0xee,0xde,0xbe,0x7e, 0xed,0xdd,0xbd,0x7d, 0xeb,0xdb,0xbb,0x7b, 0xe7,0xd7,0xb7,0x77};/////键盘值 uchar ajkz,ter; uint j,k,haomi,haomij; bit aj_1,RLTT,zy_1; sbit CS1=P2^5;/////位选 sbit CS2=P2^6;/////段选 sbit E=P2^7;/////使能 sbit CP=P1^0;/////脉冲口 sbit DIR=P1^1;/////正反转 sbit LL=P1^2;/////左限位 sbit RL=P1^3;/////右限位 //////////////////////////////////////////// yanshi(uint kk) {while(kk--);}/////延时 ////////////////////////显示 xianshi() {uchar i; for(i=0;i<8;i++) { P0=~(0x01<2)ter=0; } else ajkz=i; } } } ///////////////////////装相对坐标/////////////////////////////// zjd() { rem[0]=remj[0]; rem[1]=remj[1]; rem[2]=remj[2]; } zxd() { rem[0]=remx[0]; rem[1]=remx[1]; rem[2]=remx[2]; } //////////////////////取回////////////////////////////// quhui() { if(rem[7]==10)zjd(); else zxd(); } //////////////////电机跑时坐标值随动//////////////////////////// zuobiao(uint m) { if(m%34==0) { m=m/34; rem[2]=m/100; rem[1]=m%100/10; rem[0]=m%10; } } //////////////////////电机程序/////////////////////////////////// dianji(uint cdcd, bit FX) { DIR=FX; for(j=0;j haomij) { haomi=haomi-haomij; zy_1=0; } else { haomi=haomij-haomi; zy_1=1; } } } haomij=remj[0]*34+remj[1]*343+remj[2]*3432; } /////////////////////相对坐标绝对坐标切换//////////////////////////////////// xjqh() { if(rem[7]==10) { rem[7]=11; zxd(); } else { rem[7]=10; zjd(); } } /////////////////////////////////////////////////////////////// void main(void) {haomi=9000; dianji(60000,1); while(RLTT)/////初始归零 { RLTT=0; dianji(366,0); } haomi=0; while(1) { jianpan(); xianshi(); if(ajkz==10) { ajkz=0; aj_1=1; if(haomij>0)/////小于零时不左走 { haomij--; dianji(1,1); xianshi(); } } if(ajkz==11)/////大于15厘米时不右走 { ajkz=0; aj_1=1; if(haomij<5150) { haomij++; dianji(1,0); xianshi(); } } if(ajkz==13)/////切换相对绝对坐标 { ajkz=0; xjqh(); } if(ajkz==14)/////确认 { ajkz=0; if(ter==0) { jisuan(); dianji(haomi,zy_1); } } if(ajkz==15)/////取消 { ajkz=0; quhui(); ter=0; } } }
上一篇:数码管显示的电子时钟汇编程序
下一篇:数码管显示的电子时钟C51程序
推荐阅读最新更新时间:2024-03-16 14:26