OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5182|回复: 10

这个频率计怎么不显示啊,求教

[复制链接]

18

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2013-11-5
在线时间
0 小时
发表于 2013-12-2 15:07:26 | 显示全部楼层 |阅读模式
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int 

uint time_count,count,sum;
sbit duan=P2^6;     //74HC573的LE端  U5  LED的段选端
sbit wei=P2^7;      //74HC573的LE端  U4  LED的位选端
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};//共阴极数码表
unsigned int dis[6];                
uchar con[5]={0xfe,0xfd,0xfb,0xf7,0xef}; //共阴型数码管控制端  

void initial(void);
void delay(uint z);
void display();

main()
{
        initial();
        while(1)
        {
        display();        
        }
}

void initial()
{
        count=0;
        time_count=0;
           sum=0;

        TMOD=0x02; //定时器0工作方式2,8位自动装入计数
        TH0=0x06;
        TL0=0x06; //定时器赋初值 计时0.25ms,1000次为0.25s,4000次为一秒

        IT0=1;//  外部中断0工作方式(下降沿有效)

        EA=1;
        ET0=1;
        EX0=1;
        TR0=1; //开中断
}

void delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=20;y>0;y--);        
}

void exter0() interrupt 0
{
        count++;
}

void timer0() interrupt 1
{
        time_count++;
        if(time_count==4000)
        {
                sum=count;
                time_count=0;
                count=0;
        }        
}

void display()
{
        uchar i;
    dis[0]=sum/10000; //获取计数值的万位
        dis[5]=sum%10000;
        dis[1]=dis[5]/1000;     // 获取计数值的千位
        dis[5]=dis[5]%1000;
        dis[2]=dis[5]/100;    // 获取计数值的百位
        dis[5]=dis[5]%100;
        dis[3]=dis[5]/10;    // 获取计数值的十位
        dis[4]=dis[5]%10;    // 获取计数值的个位
        for(i=0;i<5;i++)  //依次显示万、千、百、十、个位,动态显示
          {
     // P0=0xff;
           0=con[5];
           wei=1;
           wei=0;
           0=table[dis[6]];
           duan=1;
           duan=0;
           delay(1);
           0=0;
           duan=1;
           duan=0;
    }  
}

程序应该没错吧,就是仿真不了,我设定的频率为5

pinglvjiji.DSN

101.45 KB, 下载次数: 260

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

18

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2013-11-5
在线时间
0 小时
 楼主| 发表于 2013-12-2 15:20:21 | 显示全部楼层
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-12-2 19:44:07 | 显示全部楼层
帮顶
回复 支持 反对

使用道具 举报

6

主题

153

帖子

0

精华

初级会员

Rank: 2

积分
197
金钱
197
注册时间
2013-4-4
在线时间
0 小时
发表于 2013-12-2 21:13:19 | 显示全部楼层
你的dis是到不了6的  
P0=table[dis[6]];
           duan=1;
           duan=0;
           delay(1);
           0=0;
           duan=1;
           duan=0;
~~~~ 欢迎讨论,拒绝谩骂 ~~~~
回复 支持 反对

使用道具 举报

18

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2013-11-5
在线时间
0 小时
 楼主| 发表于 2013-12-3 08:49:21 | 显示全部楼层
回复【4楼】兰斯洛:
---------------------------------
那到2了也是不行啊,该怎么办?
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2013-12-3 13:10:14 | 显示全部楼层
回复【楼主位】我的世界123:
---------------------------------
这里是不是有问题啊


 for(i=0;i<5;i++)  //依次显示万、千、百、十、个位,动态显示
          {
     // 0=0xff;
           0=con[5];
           wei=1;
           wei=0;
           0=table[dis[6]];
           duan=1;
           duan=0;
           delay(1);
           0=0;
           duan=1;
           duan=0;
    } 

应该改为这样吧


 for(i=0;i<5;i++)  //依次显示万、千、百、十、个位,动态显示
          {
     // 0=0xff;
           0=con;
           wei=1;
           wei=0;
           0=table[dis];
           duan=1;
           duan=0;
           delay(1);
           0=0;
           duan=1;
           duan=0;
    }
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

18

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2013-11-5
在线时间
0 小时
 楼主| 发表于 2013-12-3 14:35:20 | 显示全部楼层
回复【6楼】Badu_Space:
---------------------------------
原来的程序是这样的:
 for(i=0;i<5;i++)  //依次显示万、千、百、十、个位,动态显示 
          { 
     // 0=0xff; 
           0=con; 
           wei=1; 
           wei=0; 
           0=table[];
           duan=1; 
           duan=0; 
           delay(1); 
           0=0; 
           duan=1; 
           duan=0; 
    }
可是这样编译提示错误,我按你的做了还是不行,帮忙再看看
回复 支持 反对

使用道具 举报

18

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2013-11-5
在线时间
0 小时
 楼主| 发表于 2013-12-3 15:59:51 | 显示全部楼层
谁会啊,给指点一下
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2013-12-3 16:22:46 | 显示全部楼层
回复【7楼】我的世界123:
---------------------------------
你改成这样试下
for(i=0;i<5;i++)  //依次显示万、千、百、十、个位,动态显示 
          { 
     // 0=0xff; 
           0=con
           wei=1; 
           _nop_();_nop_();
           wei=0; 
           0=table[dis]; 
           duan=1; 
           _nop_();_nop_();
           duan=0; 
           delay(1); 
           0=0; 
           duan=1;
           _nop_();_nop_(); 
           duan=0; 
    }
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

18

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2013-11-5
在线时间
0 小时
 楼主| 发表于 2013-12-3 16:29:50 | 显示全部楼层
回复【9楼】Badu_Space:
---------------------------------
还是不行啊
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2013-12-3 17:34:35 | 显示全部楼层
回复【10楼】我的世界123:
---------------------------------
那你好好看下datasheet上给的时序图或者其他的说明
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 17:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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