打印

急求助 关于频率计检测的问题

[复制链接]
1657|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bhcokman|  楼主 | 2008-3-14 20:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用at89c51做的频率计 
但是检测的结果和实际的相差太大 2倍还多呢
程序如下  有人帮我看看怎么回事 
 #include <reg51.h> 
unsigned char code dispbit[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; 
unsigned char code dispcode[]={0xc0,0xf9,0xa4,0xb0,0x99, 
0x92,0x82,0xf8,0x80,0x90,0xff,}; 
unsigned char dispbuf[6]={0,0,0,0,10,10}; 
unsigned char temp[6]; 
unsigned char dispcount; 
unsigned char t0count; 
unsigned char timecount; 
bit flag; 
unsigned long x; 
void main(void) 
 { 
   unsigned char i; 
   TMOD=0x15; 
   TH0=0; 
   TL0=0; 
   TH1=(65536-4000)/256; 
   TL1=(65536-4000)%256; 
   TR1=1; 
   TR0=1; 
   ET0=1; 
   ET1=1; 
   EA=1; 
     while(1) 
      { 
         if(flag==1) 
           { 
             flag=0; 
             x=t0count*65536+TH0*256+TL0; 
             for(i=0;i<6;i++) 
              { 
                temp=0; 
              } 
             i=0; 
             while(x/10) 
              { 
                temp=x%10; 
                x=x/10; 
                i++; 
              } 
             temp=x; 
             for(i=0;i<6;i++) 
              { 
                dispbuf=temp
              } 
             timecount=0; 
             t0count=0; 
             TH0=0; 
             TL0=0; 
             TR0=1; 
           } 
      } 
 } 
void t0(void) interrupt 1 using 0 
   { 
      t0count++; 
   } 
void t1(void) interrupt 3 using 0 
   { 
     TH1=(65536-4000)/256; 
     TL1=(65536-4000)%256; 
     timecount++; 
     if(timecount==250) 
      { 
         TR0=0; 
         timecount=0; 
         flag=1; 
      } 
     P0=dispcode[dispbuf][dispcount]]; 
     P2=dispbit[dispcount]; 
     dispcount++; 
     if(dispcount==6) 
      { 
        dispcount=0; 
      } 
   }  
实验板上的频率发生装置用的是74HC4060

相关帖子

沙发
mohanwei| | 2008-3-14 20:45 | 只看该作者

在你的代码每一行都加上注释,加啊加,没加完你就明白了


信我的没错!

使用特权

评论回复
板凳
平常人| | 2008-3-14 21:08 | 只看该作者

又是一个典型的“只低头拉车,不抬头看路”

从软件工程的角度看,最忌讳的事情是不做规划直接写代码。

2楼的办法不错,矫枉必须过正,赞!
 
 

使用特权

评论回复
地板
bhcokman|  楼主 | 2008-3-15 09:39 | 只看该作者

多谢

多谢各位老师的指点
  但是我这种算法有问题么???

使用特权

评论回复
5
dld2| | 2008-3-15 09:43 | 只看该作者

算法先用文字描述出来,再编程实现

使用特权

评论回复
6
huangqi412| | 2008-3-15 18:00 | 只看该作者

先构思框架,再填代码。先要保证框架准确

使用特权

评论回复
7
平常人| | 2008-3-15 18:11 | 只看该作者

代码是实现算法的,代码不是算法

使用特权

评论回复
8
gyt| | 2008-3-16 13:58 | 只看该作者

硬件也要保证没有错误

使用特权

评论回复
9
huangqi412| | 2008-3-16 14:11 | 只看该作者

lz,要学会自己处理问题,

1,先确定输入弹片机引脚的频率,用示波器
2  程序请按流程,在适当地方添加串口输出语句,进行观察。按流程,一路debug下来。
我的毕业设计也是弹片机智能频率计,我就做了个串口上位机,把数据输出了,自动在电脑上计算出来,并做分析,在做完了整个东西后才添加频率计算和显示代码。
一路靠串口调试,3天就整个做好了。稍微调整下补偿值就成了。

使用特权

评论回复
10
huangqi412| | 2008-3-16 14:17 | 只看该作者

用20mhz温补晶震超频,avr,测0.5hz-6mhz。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝