找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6389|回复: 0
打印 上一主题 下一主题
收起左侧

单片机霍尔测速里程表源代码与实物DIY作品分享

[复制链接]
跳转到指定楼层
楼主
为了学习单片机,不知不觉来论坛好几个月。一直都是伸手党。今天特将自己的资料分享给大家。顺便展示一下DIY成果。霍尔测速,按键清零,usb充电。因为电压高达65v。所以采用HRD05003,修改了电压为13V。LM2596s降压5v充电充电,采用二级降压手机充电更安全
只要修改一下distance=distance+0.0010100;后面的数字就可以校准速度和里程。这个是我的车轮12寸周长101厘米
不过也有很多不足之处,断电不能保存里程。速度显示不完美,一个脉冲3.56KM/H。如果要想精度更高必须修改刷新时间。欢迎单片机大神来指正。


降压模块,日本拆机。某宝7块左右,默认电压5v。可以通过修改电阻修改电压,现在已经被我改为13v电压。
官方标称耐压高达50v。因为采用的是同步整流,所以效率高达3a左右。完爆国产。还有很多不错的模块,现在都涨价了。









单片机源程序如下:
  1. #########################################################################
  2. #include"lcd.h"
  3. #include <intrins.h>
  4.       
  5. #define uchar unsigned char
  6. #define uint  unsigned int

  7. sbit K1 =  P3^0;  

  8. uchar Time=0;
  9. uchar count=0;

  10. float speed=0;
  11. float distance=0;

  12. void IntConfiguration()
  13. {
  14.         //设置INT0
  15.         IT0=1;//跳变沿出发方式(下降沿)
  16.         EX0=1;//打开INT0的中断允许。
  17.       
  18.         EA=1;//打开总中断      
  19. }

  20. void TimerConfiguration()
  21. {
  22.     TMOD = 0x01; //选择工作方式1
  23.     TH0 = 0x3C;         //设置初始值,定时50MS
  24.     TL0 = 0xB0;
  25.     EA = 1;                         //打开总中断
  26.     ET0 = 1;TR0 = 1;                 //打开定时器0中断//启动定时器0                     
  27. }

  28. main()
  29. {
  30. //    uchar i;
  31.         IntConfiguration();
  32.         TimerConfiguration();
  33.         LcdInit();
  34.         LCDWrite_String(0, 0, 16, "Sudu:       Km/h");
  35.         LCDWrite_String(0, 1, 16, "Licheng:      Km");
  36.         while(1)
  37.         {
  38.                 if(K1==0)
  39.                 {
  40.                         distance=0;
  41.                 }               

  42.                 LcdWriteCom(0x80+6);
  43.                 LcdWriteData('0'+(int)speed/100%10);
  44.                 LcdWriteData('0'+(int)speed/10%10);
  45.                 LcdWriteData('0'+(int)speed%10);
  46.                 LcdWriteData('.');
  47.                 LcdWriteData('0'+(int)(speed*10)%10);
  48.                 LcdWriteData('0'+(int)(speed*100)%10);

  49.                 LcdWriteCom(0xc0+9);
  50.                 LcdWriteData('0'+(int)distance/10%10);
  51.                 LcdWriteData('0'+(int)distance%10);
  52.                 LcdWriteData('.');
  53.                 LcdWriteData('0'+(int)(distance*10)%10);
  54.                 LcdWriteData('0'+(int)(distance*100)%10);
  55.                
  56.         }

  57. }

  58. void Int0()        interrupt 0                //外部中断0的中断函数
  59. {
  60.         count++;
  61.         distance=distance+0.0010100;
  62. }

  63. void Timer0() interrupt 1
  64. {
  65.         TH0 = 0x3C;         //设置初始值
  66.     TL0 = 0xB0;
  67.         Time++;
  68.         if(Time>=20)                //每1s计算一次
  69.         {
  70.                 speed=count*4.9455*0.72;                 //KM/H
  71.                 count=0;
  72.                 Time=0;
  73.         }
  74. }
复制代码



所有资料51hei提供下载:
电动车里程表.zip (39.98 KB, 下载次数: 70)


评分

参与人数 2黑币 +105 收起 理由
Lieternal + 5 很给力!
admin + 100 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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