标题: 速度加里程的表 单片机程序大至有形了,其中还有错误请帮忙 [打印本页]

作者: 老来所学    时间: 2017-4-30 19:57
标题: 速度加里程的表 单片机程序大至有形了,其中还有错误请帮忙
51单片机程序做一个速度加里程的表,里程用1602速度用7段数码管显示,程序大至有形了,其中还有错误请帮忙发上外部中断和定时器部分程序,显示部分就不发了.
void extern_int0() interrupt 0
{        
cnt1++; //外部0中断接收脉冲数
}
void time0(void) interrupt 1
{
TH0=0xf2;        //8M晶振 5ms
TL0=0xfa;
cnt++;
if(cnt==20) //100毫秒中断
{
cnt=0;
//        TR0=0;
//        EX1=0;        
zhs=cnt2*600/144;        //每分钟转速
ZHS2=zhs*60/1000;        //ZHS2显示每小时公里数
//        EX1=1;
cnt2=0;        
//        TR0=1;        
}
void extern_int1() interrupt 2
{
cnt2++; //外部中断1接收的脉冲数
}
void main()
{        
init();
while(1)
{
if(cnt1==50) //50个脉冲为1米
{
cnt1=0;
jishu2++; //这里液晶显示的数据,这里显示的单位是米
write_sfm2(11,jishu2);        
}
display();        
}
}
用proteus仿真,外部中断0和1同时输入500HZ脉冲,程序显示是对的.里程从0米开始加起
当脉冲高于500以上,速度显示也是对的,就是里程不对没显示了或显示几十就卡住了.
51C语言自学的,有什么写的不对或逻辑上的错误请指正.
最好是用一个外部中断累加计数,并计算出速度和里程,里程是从0开始加起来
请朋友帮个忙这程序怎么改或者这样的程序要怎么样写,最好帮我写一段计算部分的.谢谢了


作者: dzbj    时间: 2017-4-30 20:29
一圈几个采集点 就是多少次触发是一圈 最大转速是多少 现用晶振是多少的
作者: 老来所学    时间: 2017-4-30 23:32
现在晶振用8M的,采集点可以设置多少个都可以
根据采集点并计算出转速和公里数都是正常的.
就是里程数出现问题,不会累加或累加几十就卡住不动了.
作者: 老来所学    时间: 2017-5-1 16:16
都没人来帮一下吗?

作者: 老来所学    时间: 2017-5-1 20:40
求大神帮忙

作者: minikuba    时间: 2017-5-1 21:36
本帖最后由 minikuba 于 2017-5-1 21:58 编辑

整个程序都给出来呗。。。也学习一下。
作者: 老来所学    时间: 2017-5-2 20:08
其它程序都是次要的,1602和数码管的程序就不用看了,都简单的啊.
发出来的是主要计算部分
作者: 老来所学    时间: 2017-5-4 21:07
自己顶起来

作者: 老来所学    时间: 2017-5-5 21:49
自己顶起来
作者: 老来所学    时间: 2017-5-6 21:36
自己顶起来





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1