51单片机驱动ADC0832及数码管显示
/*********************************包含头文件********************************/#include <reg51.h>
/*********************************端口定义**********************************/
sbit CS= P3^4;
sbit Clk = P1^0;
sbit DIO = P1^1;
/*******************************定义全局变量********************************/
unsigned char adval;
/*******************************共阳LED段码表*******************************/
unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
/*******************************延时子函数*******************************/
void delay(void)
{
int i;
for(i=0;i<100;i++);
}
/*******************************ADC0832转换函数*******************************/
void adc0832()
{
unsigned char i;
adval=0;
CS = 0; //使能adc0832
DIO = 1;
Clk = 0; //产生第一个上升沿,启动adc0832
Clk = 1;
DIO = 1;
Clk = 0; //产生第二个上升沿,用于选择单通道输入方式
Clk = 1;
DIO = 0; //产生第三个上升沿,用于选择0通道输入
Clk = 0;
Clk = 1;
Clk = 0;
DIO = 1; //作为输入,先置1
for( i = 0;i < 8;i++ )
{
Clk = 1;
Clk = 0;
if (DIO)
adval=adval|(0x80>>i);
}
CS = 1;
}
/*******************************数码管显示函数*******************************/
void display(int k)
{
P2=0x00;
P0=tab;
P2=0x08;
delay();
P2=0x00;
P0=tab;
P2=0x04;
delay();
P2=0x00;
P0=tab;
P2=0x02;
delay();
P2=0x00;
P0=tab;
P2=0x01;
delay();
P2=0x00;
}
/*******************************主函数函数*******************************/
void main(void)
{
while(1)
{
adc0832();
display(adval);
}
} 点击此处下载 ourdev_679892O7BA6J.zip(文件大小:43K) (原文件名:ADC0832.zip) 自己写的程序,没有加延时。
请大家多多指教啊 http://cache.amobbs.com/bbs_upload782111/files_46/ourdev_679937JN9X75.gif
(原文件名:clip_image001.gif) 一直没有人ding,其实我想知道为什么只会显示255,而且也没有小数点,如果我想测试大于5V的电压,应该怎么修改程序。{:handshake:}{:handshake:}{:handshake:}{:handshake:}{:handshake:} 非常感谢,正需要{:handshake:}
页:
[1]