欢迎来到天天文库
浏览记录
ID:51745697
大小:31.50 KB
页数:6页
时间:2020-03-15
《编码器单片机编程.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、#include#defineucharunsignedchar#defineuintunsignedintuintmm=0;m=0;n=0;ucharkk;k=0;ucharcodetable[]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,};//共阳极七段码表delay(uintm)//延时函数{uinti,j;for(i=m;i>0;i--)for(j=60;j>0;j--);}xian_shi()//显示函数{ucharqian,bei,shi,ge;//千,百,
2、十,个uintjj;jj=mm;qian=jj/1000;bei=jj%1000/100;shi=jj%100/10;ge=jj%10;P2=0x10;//显示千位P0=table[qian];delay(1);P2=0;P1=0x20;//显示百位P0=table[bei];delay(1);P2=0;P2=0x40;//显示十位P0=table[shi];delay(1);P2=0;P2=0x80;//显示个位P0=table[ge];delay(1);P2=0;}timer_init()//定时器计数器初始化函数{EA=1;//开启总中断ET
3、0=1;//开启定时器中断ET1=1;//开启计数器中断TMOD=0X51;//设置定时和计数器的工作方式TH0=(65535-50000)/256;//设置定时时间TL0=(65535-50000)%256;TH1=0;//计数器清零TL1=0;TR0=1;//启动定时器TR1=1;//启动计数器}main()//主函数{timer_init();P0=0xff;//开始数码管不显示while(1)//设置为按键按下开启数码管{if(P1==0xfe){m=1;n=0;}if(P1==0xff){n=1;}if(m==1&&n==1){k+=1;
4、m=0;n=0;}if(k%2==1)//当按键按下数码管开始显示{if(mm>=3000)//判断转速是否大于3000转{P2=0x01;//大于3000转报警,数码管不显示delay(10);}else//小于3000转数码管显示xian_shi();}if(kk==20)//判断是否定时1s钟{mm=0;mm
5、=TH1;//将计数器值赋给mmmm=(mm<<8)
6、TL1;TH1=0;TL1=0;kk=0;}delay(1);//数码管刷新时间单位毫秒}}voidtimer0()interrupt1//中断服务函数{TR0=0;//关闭定时器T
7、R1=0;//关闭计数器TH0=(65535-50000)/256;//设置定时器初值TL0=(65535-50000)%256;kk++;TR0=1;//启动定时器TR1=1;//启动计数器}voidtimer1()interrupt3//显示0000说明出错{TR0=0;//关闭定时器TR1=0;//关闭计数器mm=0;//TH1=0;//TL1=0;//TR1=1;}
此文档下载收益归作者所有