智能车制作
标题:
求助,关于数码管显示的!!
[打印本页]
作者:
青菜汤
时间:
2014-3-8 13:45
标题:
求助,关于数码管显示的!!
我用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;
作者:
青菜汤
时间:
2014-3-8 13:46
本帖最后由 青菜汤 于 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;
}[attach]56601[/attach]
作者:
青菜汤
时间:
2014-3-9 15:25
有人吗
欢迎光临 智能车制作 (http://111.231.132.190/)
Powered by Discuz! X3.2