智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1264|回复: 2
打印 上一主题 下一主题

求助,关于数码管显示的!!

[复制链接]

2

主题

5

帖子

0

精华

注册会员

Rank: 2

积分
74
威望
52
贡献
16
兑换币
15
注册时间
2013-12-21
在线时间
3 小时
毕业学校
保密
跳转到指定楼层
1#
发表于 2014-3-8 13:45:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用74hc164芯片扩展IO口,通过滑阻改变输入电压送至AD转换,经单片机处理后显示。但是问题是改变滑阻的值后,有几位数码管就不亮了,在改变下滑阻的值,又亮了几位,反正就是不能全部同时亮,这是什么原因呢?求大神帮助!
下附源程序和电路

#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint  unsigned int
sbit  BIT0=P2^0;
sbit  BIT1=P2^1;
回复

使用道具 举报

2

主题

5

帖子

0

精华

注册会员

Rank: 2

积分
74
威望
52
贡献
16
兑换币
15
注册时间
2013-12-21
在线时间
3 小时
毕业学校
保密
2#
 楼主| 发表于 2014-3-8 13:46:01 | 只看该作者
本帖最后由 青菜汤 于 2014-3-8 13:48 编辑

#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint  unsigned int
sbit  BIT0=P2^0;
sbit  BIT1=P2^1;                                                          //定义数码管位码端口
sbit  BIT2=P2^2;
sbit  BIT3=P2^3;
sbit  BIT4=P2^4;
sbit  BIT5=P2^5;

sbit SDA=P2^7;
sbit SCK=P2^6;

sbit  OE=P3^0;                                                          //定义ADC0808端口
sbit  EOC=P3^1;
sbit  ST=P3^2;
uchar code table1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};//带小数点的0~5六个
uchar code tab[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};//共阳极0~9十个段码/段码
uchar volt_data;
void init();
uchar i;                                                                                
//*********************************
//延时子程序
//*********************************
void delay(uchar z)
{
        uchar x,y;
        for(x=z;x>0;x--)
                for(y=100;y>0;y--);
}
//*********************************
//将AD转换输出的数据转换成相应的
//电压值并且显示出来
//*********************************

/*8位数据从74HC164的串行输入端输入,从输出端并行输出*/   
/*************************************************************************************************/   
void senddata(uchar dd) {           
uchar j;   
for (j=0;j<8;j++) {
                   SCK=0;   
                   SDA=(bit)(dd&0x01);   
                   SCK=1;   
                   dd=dd>>1;   
                   }   
                         }   
/****************************************************************************************************/

void convert(uchar volt_data)
{

  
  float h,j;
  uint i,k,l;
   h=volt_data*31.368;
   k=volt_data*31.368;
   i=k/1000;
   i=i*1000;
   j=h-i;
   l=j*10;

   senddata(tab[k/1000]);
   BIT0=1;   
   delay(1);   
   BIT0=0;

  senddata(tab[k/100&10]);
   BIT1=1;   
   delay(1);   
   BIT1=0;
   
  senddata(tab[k/10%10]);
   BIT2=1;   
   delay(1);   
   BIT2=0;
   
   
        senddata(tab[k%10]);
   BIT3=1;   
   delay(1);   
   BIT3=0;
   
         senddata(tab[l/1000]);
   BIT4=1;   
   delay(1);   
   BIT4=0;
}

void main()
{
  uchar volt_data;
  init();//初始化子程序
  while(1)
        {
                        if(i==7)
                                {
                                i=0;
                            ST=0;
                            _nop_();
                            ST=1;
                            _nop_();
                            ST=0;                                                                  //启动AD转换
                                 if(EOC==0)                                                  //等待转换结束
                                    delay(5);
                                    while(EOC==0);
                                   OE=1;                                                                //允许输出
                                   volt_data=P1;        
                                  convert(volt_data);     //调用数据处理子程序
                  delay(5);                                        //暂存转换结果
                                   OE=0;                                                                //关闭输出
                                                                           
         
                                  }
        }
}
void time0_int(void) interrupt 1
{
        TH0=(65536-1000)/256;  
    TL0=(65536-1000)%256;
    i++;
}
  
void init()
{        
  TMOD=0x01;
  TH0=(65536-1000)/256;  
  TL0=(65536-1000)%256;
  EA=1;ET0=1;
  i=0;
  TR0=1;
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

2

主题

5

帖子

0

精华

注册会员

Rank: 2

积分
74
威望
52
贡献
16
兑换币
15
注册时间
2013-12-21
在线时间
3 小时
毕业学校
保密
3#
 楼主| 发表于 2014-3-9 15:25:54 | 只看该作者
有人吗
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|亿加合和智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-5-6 01:58 , Processed in 0.059340 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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