為了學習單片機,不知不覺來論壇好幾個月。一直都是伸手黨。今天特將自己的資料分享給大家。順便展示一下DIY成果。霍爾測速,按鍵清零,usb充電。因為電壓高達65v。所以采用HRD05003,修改了電壓為13V。LM2596s降壓5v充電充電,采用二級降壓手機充電更安全
只要修改一下distance=distance+0.0010100;后面的數字就可以校準速度和里程。這個是我的車輪12寸周長101厘米
不過也有很多不足之處,斷電不能保存里程。速度顯示不完美,一個脈沖3.56KM/H。如果要想精度更高必須修改刷新時間。歡迎單片機大神來指正。
IMG_20180116_093923.jpg (590.12 KB, 下載次數: 83)
下載附件
2018-1-16 09:49 上傳
降壓模塊,日本拆機。某寶7塊左右,默認電壓5v。可以通過修改電阻修改電壓,現在已經被我改為13v電壓。
官方標稱耐壓高達50v。因為采用的是同步整流,所以效率高達3a左右。完爆國產。還有很多不錯的模塊,現在都漲價了。
IMG_20180116_093934.jpg (521.08 KB, 下載次數: 103)
下載附件
2018-1-16 09:45 上傳
IMG_20180116_090642.jpg (529.43 KB, 下載次數: 90)
下載附件
上面一排顯示速度,下面顯示總里程
2018-1-16 09:22 上傳
IMG_20180116_090711.jpg (667.17 KB, 下載次數: 74)
下載附件
強磁固定在車輪上,霍爾檢查脈沖
2018-1-16 09:23 上傳
單片機源程序如下:
- #########################################################################
- #include"lcd.h"
- #include <intrins.h>
-
- #define uchar unsigned char
- #define uint unsigned int
- sbit K1 = P3^0;
- uchar Time=0;
- uchar count=0;
- float speed=0;
- float distance=0;
- void IntConfiguration()
- {
- //設置INT0
- IT0=1;//跳變沿出發方式(下降沿)
- EX0=1;//打開INT0的中斷允許。
-
- EA=1;//打開總中斷
- }
- void TimerConfiguration()
- {
- TMOD = 0x01; //選擇工作方式1
- TH0 = 0x3C; //設置初始值,定時50MS
- TL0 = 0xB0;
- EA = 1; //打開總中斷
- ET0 = 1;TR0 = 1; //打開定時器0中斷//啟動定時器0
- }
- main()
- {
- // uchar i;
- IntConfiguration();
- TimerConfiguration();
- LcdInit();
- LCDWrite_String(0, 0, 16, "Sudu: Km/h");
- LCDWrite_String(0, 1, 16, "Licheng: Km");
- while(1)
- {
- if(K1==0)
- {
- distance=0;
- }
- LcdWriteCom(0x80+6);
- LcdWriteData('0'+(int)speed/100%10);
- LcdWriteData('0'+(int)speed/10%10);
- LcdWriteData('0'+(int)speed%10);
- LcdWriteData('.');
- LcdWriteData('0'+(int)(speed*10)%10);
- LcdWriteData('0'+(int)(speed*100)%10);
- LcdWriteCom(0xc0+9);
- LcdWriteData('0'+(int)distance/10%10);
- LcdWriteData('0'+(int)distance%10);
- LcdWriteData('.');
- LcdWriteData('0'+(int)(distance*10)%10);
- LcdWriteData('0'+(int)(distance*100)%10);
-
- }
- }
- void Int0() interrupt 0 //外部中斷0的中斷函數
- {
- count++;
- distance=distance+0.0010100;
- }
- void Timer0() interrupt 1
- {
- TH0 = 0x3C; //設置初始值
- TL0 = 0xB0;
- Time++;
- if(Time>=20) //每1s計算一次
- {
- speed=count*4.9455*0.72; //KM/H
- count=0;
- Time=0;
- }
- }
復制代碼
0.jpg (14.93 KB, 下載次數: 95)
下載附件
2018-1-16 16:37 上傳
所有資料51hei提供下載:
電動車里程表.zip
(39.98 KB, 下載次數: 72)
2018-1-16 09:34 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|