《编码器单片机编程(共6页).doc》由会员分享,可在线阅读,更多相关《编码器单片机编程(共6页).doc(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上#include #define uchar unsigned char #define uint unsigned int uint mm=0;m=0;n=0; uchar kk;k=0; uchar code table=0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,; /共阳极七段码表 delay(uint m) /延时函数 uint i,j; for(i=m;i0;i-) for(j=60;j0;j-); xian_shi() / 显示函数 uchar qian,bei,shi,ge; /千,百,十,个ui
2、nt jj; jj=mm; qian=jj/1000; bei=jj%1000/100; shi=jj%100/10; ge=jj%10; P2=0x10; /显示千位 P0=tableqian; delay(1); P2=0; P1=0x20; /显示百位 P0=tablebei;delay(1); P2=0; P2=0x40; /显示十位 P0=tableshi; delay(1); P2=0; P2=0x80; /显示个位 P0=tablege; delay(1); P2=0; timer_init() /定时器计数器初始化函数 EA=1; /开启总中断 ET0=1; /开启定时器中断
3、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;m=0;n=0; if(k%2=1) /当按键按下数码管开始显示
4、if(mm=3000) /判断转速是否大于3000转 P2=0x01; /大于3000转报警,数码管不显示 delay(10); else /小于3000转数码管显示 xian_shi(); if(kk=20) /判断是否定时1s钟 mm=0; mm|=TH1; /将计数器值赋给mm mm=(mm8)|TL1; TH1=0; TL1=0; kk=0; delay(1); /数码管刷新时间单位毫秒 void timer0() interrupt 1 /中断服务函数 TR0=0; /关闭定时器 TR1=0; /关闭计数器 TH0=(65535-50000)/256; /设置定时器初值 TL0=(65535-50000)%256; kk+; TR0=1; /启动定时器 TR1=1; /启动计数器 void timer1() interrupt 3 /显示0000说明出错 TR0=0; /关闭定时器 TR1=0; /关闭计数器 mm=0; / TH1=0; / TL1=0; / TR1=1; 专心-专注-专业