找回密码
 立即注册

QQ登录

只需一步,快速开始

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

速度加里程的表 单片机程序大至有形了,其中还有错误请帮忙

[复制链接]
跳转到指定楼层
楼主
ID:95922 发表于 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开始加起来
请朋友帮个忙这程序怎么改或者这样的程序要怎么样写,最好帮我写一段计算部分的.谢谢了

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

使用道具 举报

沙发
ID:47286 发表于 2017-4-30 20:29 | 只看该作者
一圈几个采集点 就是多少次触发是一圈 最大转速是多少 现用晶振是多少的
回复

使用道具 举报

板凳
ID:95922 发表于 2017-4-30 23:32 | 只看该作者
现在晶振用8M的,采集点可以设置多少个都可以
根据采集点并计算出转速和公里数都是正常的.
就是里程数出现问题,不会累加或累加几十就卡住不动了.
回复

使用道具 举报

地板
ID:95922 发表于 2017-5-1 16:16 | 只看该作者
都没人来帮一下吗?
回复

使用道具 举报

5#
ID:95922 发表于 2017-5-1 20:40 | 只看该作者
求大神帮忙
回复

使用道具 举报

6#
ID:103038 发表于 2017-5-1 21:36 | 只看该作者
本帖最后由 minikuba 于 2017-5-1 21:58 编辑

整个程序都给出来呗。。。也学习一下。
回复

使用道具 举报

7#
ID:95922 发表于 2017-5-2 20:08 | 只看该作者
其它程序都是次要的,1602和数码管的程序就不用看了,都简单的啊.
发出来的是主要计算部分
回复

使用道具 举报

8#
ID:95922 发表于 2017-5-4 21:07 | 只看该作者
自己顶起来
回复

使用道具 举报

9#
ID:95922 发表于 2017-5-5 21:49 | 只看该作者
自己顶起来
回复

使用道具 举报

10#
ID:95922 发表于 2017-5-6 21:36 | 只看该作者
自己顶起来
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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