DIY单片机学习板
直播中

潘观学

13年用户 239经验值
擅长:电源/新能源 基础元器件 模拟与电源 射频微波与天线 数字及可编程逻辑 网络与通信 微处理器/微控制 EDA/IC/.
私信 关注
[参考资料]

帮同学做的一个自行车码表

` 本帖最后由 123478288 于 2012-9-19 13:13 编辑

这个是我帮同学做的一个码表。码表这东西现在市场上卖的很多,虽然没有必要自己做,但亲手做一个总能学到点东西,或者编程思想,或者焊接技巧。看着自己做的东西能实现功能,多少还是有点成就感的。
手机拍的渣画质,看个大概就行。

QQ截图20120917081227.png
用的AT89S52,程序就四五百条,总感觉大材小用了,不过手头上只有这种,就屈才一下吧。
用1602做显示,能显示行驶时间,总路程,瞬时速度和平均速度。
用霍尔A3144做传感器,这个东西要磁铁靠的很近(大概1CM)才有反应,如果装上自行车得把握好距离。
本来想加24C02芯片记录数据的,但是仿真时数据记录总是出问题,用的都是同一个函数,总时间能记录,总路程就是记不住,
我都烦了,索性就没加芯片上去,程序也把那段屏蔽了,以后再改进吧。


QQ截图20120917081252.png
背面连线图。白色一点的是细线。


QQ截图20120917081304.png
电路比较简单,一个最小系统,一个液晶,一个霍尔传感器和一个24C02。
一个复位按键,一个24C02清零按键和一个电源开关。电位器用来调液晶亮度。
要注意的是A3144输出端最好接一个10K的上拉电阻。
供电是4个5号电池,其实3个电池也能工作,但是用一段时间电压下降很厉害,还是用了4个,6V也是可以直接供给单片机


QQ截图20120917081315.png
元器件就这些。


QQ截图20120917081328.png
晶振,瓷片电容和复位电容放在单片机座里面,器件越少看着越舒服。

电路确实简单,从拿到器件到焊接调试完成大概用了5个小时,花时间比较多的是编程,
边用protues仿真边改,为了更精确的计算,不断的改变算法。陆陆续续用了大概一个星期。

虽然电路不是很复杂,但是因为是手工焊接的,还是要认真的,我的经验是每焊完一条线就检查这根线是否达到焊接要求,有没有出现错误,有怀疑就用用万用表测,没问题了接着焊下面的。是有点啰嗦,但是如果把全部器件焊完再检查,这样太乱,不容易发现错误,而且通电后如果板子出问题,检查时要从头查到尾,不划算。

程序是C语言编的,我大学单片机课程教的是汇编,我没学会,一直用C来编。这里再感慨一下初学者真的不要用汇编,很难入门的。源程序我直接放上来,不是什么秘密。编程这个东西重要的是思想,大家一起交流才能进步。

大家看看交流一下经验。

程序
自行车码表C程序.rar (4.31 KB)
(下载次数: 1169, 2012-9-17 09:05 上传)


2楼更新程序思路。。。`

回帖(389)

潘观学

2012-9-17 09:13:28
本帖最后由 123478288 于 2012-9-20 20:01 编辑

一楼我自己占了    更新编程思路、仿真图。

更新程序思路,给一个变量设定一个固定值,这个值是自行车轮子的周长。为了精确我用CM为单位。

磁铁安装在轮子的钢线条上,轮子没转一圈,霍尔感应器感应有一个下降沿跳变,用这个跳变使单片机进入外部中断0。

中断里面开定时器T0,定时器T0设定1ms,设定一个变量t记录时间。当下一次感应的时候,把t的值拿出来赋给t1,并把t清零。t1就是上一圈的时间。

然后以这个时间为依据,算出速度不变时每秒钟走的路程,作为瞬时速度。如果速度一直在变的话,瞬时速度也是一直变的。

平均速度就是总路程除以总时间,这个就不必那么精确了。

这是我主要的编程思路,给大家分享一下。

回答55楼 3htech
“LZ,您说的“这里再感慨一下初学者真的不要用汇编”这句话,我不是很赞同啊,毕竟用C编程之后,编译器编译成汇编代码。
很多的Bug都是在这个转换中出现的。如果不了解汇编,您可能都不能定位这些Bug。
一个我个人认为比较经典的Bug就是(使用C编写):
uint16型变量i,即i是16位的
定时中断中,对i进行++或--操作;
在main函数中中对i和某个立即数进行比较,成立则做一些事情。
这里面就隐藏了一个Bug。”

“你说的这个问题我倒是没有遇到过,不过感谢你提出来,如果以后遇到的话能有个处理思路。
我的意思并不是说C语言一定比汇编好,我知道汇编的执行效率比C高很多。不过,问题在于,我刚开始学单片机的时候,老师教的是汇编,看着那一行行的指令,头都大,很难看得懂。对于初学者来说汇编的可读性太差。而C语言在这个方面就强很多。当然,学精以后用什么编当然是因人而异。”

有一些同学问原理图,这个我一开始就没画,只有protues仿真图,焊板子的时候我就一边想一边画的。。。。截个图给大家看看吧。



有同学问有没有流程图,这个真帮不上忙了,我自己是从来不画的,有心的人还是自己读下程序吧,我编程的时候写了很多注释语句,还是比较好读的。
2 举报

swustlx86

2012-9-17 09:47:15
学习一下  谢谢分享
举报

zhihuizhou

2012-9-17 09:51:55
感觉很不错哈 表示很喜欢
举报

longzaijianghu

2012-9-17 13:33:49
不错
举报

更多回帖

发帖
×
20
完善资料,
赚取积分