找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5527|回复: 1
收起左侧

LM393霍尔测速模块(原理图+PCB+51单片机例程)

[复制链接]
ID:471680 发表于 2019-12-1 18:45 | 显示全部楼层 |阅读模式
Altium Designer画的原理图和PCB图如下:(51hei附件中可下载工程文件)
51hei.png 51hei.png

单片机源程序如下:
  1. #include<reg52.h>   
  2. #define   uchar unsigned char
  3. #define   uint unsigned int   
  4. sbit lcdrs=P3^5;  
  5. sbit lcden=P3^4;
  6. sbit ENA=P2^3;
  7. sbit ENB=P2^2;
  8. sbit IN1=P2^1;
  9. sbit IN2=P2^0;
  10. sbit IN3=P2^5;
  11. sbit IN4=P2^4;
  12. uchar code digit[ ]={"0123456789"}; //定义字符数组显示数字
  13. uchar code table1[ ]={"speed :"};
  14. uchar code table2[ ]={" "};
  15. uint v;   //储存电机转速
  16. uchar count;  //储存定时器T0中断次数
  17. bit flag;      //计满1秒钟标志位
  18.    
  19. void delay_1ms(uint x)
  20. {
  21.      uint i,j;
  22.      for(j=0;j<x;j++)
  23.          for(i=0;i<110;i++);
  24. }                           

  25. void write_com(uchar com)
  26. {
  27.         lcdrs=0;
  28.         P0=com;
  29.         delay_1ms(5);
  30.         lcden=1;
  31.         delay_1ms(5);
  32.         lcden=0;
  33. }

  34. void write_data(uchar date)
  35. {
  36.         lcdrs=1;
  37.         P0=date;
  38.         delay_1ms(5);
  39.         lcden=1;
  40.         delay_1ms(5);
  41.         lcden=0;
  42. }


  43. void lcd_init()
  44. {
  45.         lcden=0;
  46.         write_com(0x38);
  47.         write_com(0x0c);
  48.         write_com(0x06);
  49.         write_com(0x01);
  50. }

  51. void display_val(unsigned int x)
  52. {  
  53.    uchar i,j,k,l;     //j,k,l分别储存速度的百位、十位和个位
  54.    uint num1;
  55.    i=x/1000;         //取千位
  56.    j=(x%1000)/100;   //取百位
  57.    k=(x%100)/10;     //取十位
  58.    l=x%10;           //取个位
  59.           write_com(0x80);
  60.           for(num1=0;num1<7;num1++)
  61.           {
  62.                   write_data(table1[num1]);
  63.                 delay_1ms(5);
  64.           }
  65.           write_com(0x80+0x40);
  66.           write_data(digit[i]);         
  67.       write_data(digit[j]);
  68.       write_data(digit[k]);
  69.       write_data(digit[l]);
  70.       write_data(' ');
  71.       write_data('r');
  72.       write_data('/');
  73.       write_data('m');
  74.       write_data('i');
  75.       write_data('n');
  76. }
  77.   

  78. uint read()
  79. {
  80.         uchar a,b,c;
  81.         uint v;
  82.         a=TH2;
  83.         b=TL2;
  84.         c=TH2;
  85.         v=a*256+b;
  86.         return v;
  87. }

  88. void main(void)

  89. {  
  90.         uint a;
  91.         ENA=1;
  92.         IN1=0;
  93.         IN2=1;
  94.     lcd_init();               //调用LCD初始化函数   
  95.         T2CON=0x02;
  96.         TR2=1;                    //定时器T2启动
  97.     while(1)                 //无限循环
  98.       {
  99.          TH2=0;            //定时器T2高8位赋初值0
  100.          TL2=0;            //定时器T2低8位赋初值0
  101.                  delay_1ms(1000);
  102.                  a=read();
  103.                  v=60*a;
  104.                  write_com(0x01);
  105.                  display_val(v);                  
  106.       }            

  107. }
复制代码

所有资料51hei提供下载:
测速模块(原理图 PCB).7z (7.07 MB, 下载次数: 131)
霍尔测速模块(程序STC89C52RC).zip (30.99 KB, 下载次数: 74)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:583728 发表于 2020-4-16 22:02 | 显示全部楼层
好东西啊真的好东西
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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