找回密码
 注册

QQ登录

只需一步,快速开始

搜索

51单片机电机测速程序(有霍尔+磁钢或红外反射对管+黑白码...

[复制链接]
eng 发表于 2021-7-6 16:08:02 | 显示全部楼层 |阅读模式
有霍尔+磁钢或红外反射对管+黑白码盘做该实验
  1. #include<reg52.h>
  2. unsigned int i=0;
  3. sbit P36=P3^6;
  4. unsigned char j;
  5. unsigned int kop;
  6. unsigned char a[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  7. unsigned char b[8]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
  8. void delaym(unsigned int t)
  9. { unsigned char p;              
  10. while(t--)
  11. {
  12. for(p=0; p<125; p++);               
  13. }
  14. }

  15. void main()
  16. {
  17.     EA = 1;
  18.     TH0=0x00;
  19.         TL0=0x00;
  20.         ET0=1;
  21.         ET1=1;               
  22.           TMOD = 0x15;// 打开定时器和计数器T0,因此矩形脉冲输入端接P3.4
  23.         TH1=0x3C; //50ms
  24.         TL1=0xB0;               
  25.     TR0 = 1;
  26.         TR1 = 1;
  27. while(1)
  28. {
  29.   for(j=0;j<3;j++) //显示个数
  30.   {
  31.   P0=b[j];
  32.   P2=j;
  33.   delaym(2);
  34.    }
  35.   }
  36. }
  37. timer3() interrupt 3  //定时器中断时间到,就读取计数器值
  38. { TH1=0X3C;
  39. TL1=0XB0;
  40. i++;
  41. if(i==20) //1s才进行技术脉冲值显示,即每秒更新一次速度
  42. {
  43.    kop=TH0;//计数器计入脉冲,每来一个矩形脉冲计数值加1
  44.    kop=kop<<8;
  45.    kop=kop+TL0;

  46. b[2]=a[kop/100];       //显示计数器的值即实际测得速度
  47. b[1]=a[kop%100/10];
  48. b[0]=a[kop%100%10];
  49. i=0;
  50. TH0=0;//计数器速度获取后清零,进行下次获取
  51. TL0=0;
  52. }
  53. }
复制代码


您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|ELEOK |网站地图

GMT+8, 2024-4-27 07:13

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表