基于单片机的转速测量系统设计 介绍了一种基于AT89C51单片机平台,采用光电传感器实施电机转速测量的方法,硬件系统包括脉冲信号产生、脉冲信号处理和显示模块,并采用C语言编程,结果表明该方法具有简单、精度高、稳定性好的优点。介绍了该测速法的基本原理、实现步骤和软硬件设计。
原代码: - #include
- #define uchar unsigned char
- #define uint unsigned int
- uint mm=1234;
- uchar code table[]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,};
- delay(uint m)
- { uint i,j;
- for(i=m;i>0;i--)
- for(j=60;j>0;j--);
- }
- xian_shi()
- { uchar qian,bei,shi,ge;
- uint jj;
- jj=mm;
- jj*=20;
- //jj+=1;
- qian=jj/1000;
- bei=jj%1000/100;
- shi=jj%100/10;
- ge=jj%10;
- P2=0x10;
- P0=table[qian];
- delay(1);
- //P2=0;
- P2=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;
- ET0=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=0; //开始数码管不显示
- while(1)
- {
- xian_shi();
- delay(2); //数码管刷新时间单位毫秒
- }
- }
- void timer0() interrupt 1
- { TR0=0;
- TR1=0;
- TH0=(65535-50000)/256;
- TL0=(65535-50000)%256;
- mm=0;
- mm|=TH1;
- mm=(mm<<8)|TL1;
- // mm-=55536;
- TH1=0;
- TL1=0;
- TR0=1;
- TR1=1;
- }
- void timer1() interrupt 3 //显示0000说明出错
- { TR1=0;
- TR0=0;
- mm=0;
- // TH1=0;
- // TL1=0;
- // TR1=1;
- }
全部资料(压缩包)下载: 测速.rar
|