软件思路和具体实现
发布时间:2012/6/12 19:35:22 访问次数:1069
说起单片机测速,最简单也TMP68301AF16最容易实现的方法之一就是使用其内部的定时器:一个定时器作计数功能,用来对测速探头送来的脉>中信号计数,另一个定时器则作定时功能,定时时间为1秒,每次将用作图5里程表电路原理098无线电己Oll计数的定时器打开1秒,1秒到则关闭。但这种方式需要两个定时器,而前文已提到用于测速的定时器只剩一个,另一个已用作串口通信的波特率发生器,要测速就必须要给单片机提供一个秒信号,而这个矛盾刚好可由PCF8563来解决,其第7脚为可编程时钟输出,所输出的频率范围刚好就有秒信号,因此单片机复位后,程序开始运行时第一件事就是对PCF8563作相应设置,使其输出秒信号作为单片机的外中断1的中断信号,用来测量速度。而里程的计量则在外中断O中进行,这里将利用PCF8563的第3脚,输出1024kHz的脉>中,让2051的外中断o每秒中断1024次,用于计量行驶里程,这样一来就解决了里程表基本功能实观的问题,从而实现了对它的充分利用。至于额外的时间显示功能,PCF8563本身就是用作实时时钟的,所以问题自然也就迎刃而解了。
行驶里程数存储于AT24C01中,要注意一点的就是,AT24C01的读写次数一般是大干1万次,因而程序中就要注意向其写入数据的次数问题。假如我们每天上班骑行一个来回是40公里,每行驶一公里写一次里程数,则每天要写40次,一年下来就要擦写14600次,这个频率肯定会让AT24C01提早报废。解决办法是在按键程序中用按键来定义存储功能,到达目的地后,用按键来存储数据,这样一来,每天的擦写次数就变为两次了,AT24C01的使用年限将达十年的样子。
本文所提供的程序相对较大,有九百多行,全部使用汇编语言,采用模块化编程,因而源码虽然较多,但还是很容易理解,里面包括软件模拟I2C通信的子程序和双字节的乘法子程序,都很实用,大家可以将之移植到自己其他的程序中去。当然所提供的程序仍有很多能改进的地方,读者可以在源码基础上作更多的优化,使之更合理,效率更高。
行驶里程数存储于AT24C01中,要注意一点的就是,AT24C01的读写次数一般是大干1万次,因而程序中就要注意向其写入数据的次数问题。假如我们每天上班骑行一个来回是40公里,每行驶一公里写一次里程数,则每天要写40次,一年下来就要擦写14600次,这个频率肯定会让AT24C01提早报废。解决办法是在按键程序中用按键来定义存储功能,到达目的地后,用按键来存储数据,这样一来,每天的擦写次数就变为两次了,AT24C01的使用年限将达十年的样子。
本文所提供的程序相对较大,有九百多行,全部使用汇编语言,采用模块化编程,因而源码虽然较多,但还是很容易理解,里面包括软件模拟I2C通信的子程序和双字节的乘法子程序,都很实用,大家可以将之移植到自己其他的程序中去。当然所提供的程序仍有很多能改进的地方,读者可以在源码基础上作更多的优化,使之更合理,效率更高。
说起单片机测速,最简单也TMP68301AF16最容易实现的方法之一就是使用其内部的定时器:一个定时器作计数功能,用来对测速探头送来的脉>中信号计数,另一个定时器则作定时功能,定时时间为1秒,每次将用作图5里程表电路原理098无线电己Oll计数的定时器打开1秒,1秒到则关闭。但这种方式需要两个定时器,而前文已提到用于测速的定时器只剩一个,另一个已用作串口通信的波特率发生器,要测速就必须要给单片机提供一个秒信号,而这个矛盾刚好可由PCF8563来解决,其第7脚为可编程时钟输出,所输出的频率范围刚好就有秒信号,因此单片机复位后,程序开始运行时第一件事就是对PCF8563作相应设置,使其输出秒信号作为单片机的外中断1的中断信号,用来测量速度。而里程的计量则在外中断O中进行,这里将利用PCF8563的第3脚,输出1024kHz的脉>中,让2051的外中断o每秒中断1024次,用于计量行驶里程,这样一来就解决了里程表基本功能实观的问题,从而实现了对它的充分利用。至于额外的时间显示功能,PCF8563本身就是用作实时时钟的,所以问题自然也就迎刃而解了。
行驶里程数存储于AT24C01中,要注意一点的就是,AT24C01的读写次数一般是大干1万次,因而程序中就要注意向其写入数据的次数问题。假如我们每天上班骑行一个来回是40公里,每行驶一公里写一次里程数,则每天要写40次,一年下来就要擦写14600次,这个频率肯定会让AT24C01提早报废。解决办法是在按键程序中用按键来定义存储功能,到达目的地后,用按键来存储数据,这样一来,每天的擦写次数就变为两次了,AT24C01的使用年限将达十年的样子。
本文所提供的程序相对较大,有九百多行,全部使用汇编语言,采用模块化编程,因而源码虽然较多,但还是很容易理解,里面包括软件模拟I2C通信的子程序和双字节的乘法子程序,都很实用,大家可以将之移植到自己其他的程序中去。当然所提供的程序仍有很多能改进的地方,读者可以在源码基础上作更多的优化,使之更合理,效率更高。
行驶里程数存储于AT24C01中,要注意一点的就是,AT24C01的读写次数一般是大干1万次,因而程序中就要注意向其写入数据的次数问题。假如我们每天上班骑行一个来回是40公里,每行驶一公里写一次里程数,则每天要写40次,一年下来就要擦写14600次,这个频率肯定会让AT24C01提早报废。解决办法是在按键程序中用按键来定义存储功能,到达目的地后,用按键来存储数据,这样一来,每天的擦写次数就变为两次了,AT24C01的使用年限将达十年的样子。
本文所提供的程序相对较大,有九百多行,全部使用汇编语言,采用模块化编程,因而源码虽然较多,但还是很容易理解,里面包括软件模拟I2C通信的子程序和双字节的乘法子程序,都很实用,大家可以将之移植到自己其他的程序中去。当然所提供的程序仍有很多能改进的地方,读者可以在源码基础上作更多的优化,使之更合理,效率更高。
热门点击