关于模数转换的
时间:10-02
整理:3721RD
点击:
我这个程序要给一个数值 然后经过转换显示到数码管上 定义SB1按键在P3^0 每按一次减一
比如 开始给0xff 数码管显示5 然后每按一次按键 数值减一后显示在数码管 0xfd就是要显示4.9
可是无论怎么改都不行 大神们帮看看 谢谢了 自学实在很难
#include "reg52.h"
#include "absacc.h"
#define uchar unsigned char
#define uint unsigned int
#define weix wr=0;cs2=0;wr=1;cs2=1
#define duanx wr=0;cs1=0;wr=1;cs1=1
#define qu cs=0;wr1=0;cs=1;wr=1
#define DAC_DATA P0
#define AD XBYTE[0xefff]
uchar count;
sbit cs1=P2^5;
sbit cs2=P2^6;
sbit wr=P2^7;
sbit cs=P2^1;
sbit wr1=P2^0;
sbit sb1=P3^0;
uchar idata shu[8];
uchar code seg[]=
{
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
};
uchar code swg[]=
{
0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10
};
void delay(uint s)
{
uint j,z;
for(j=s;j>0;j--)
for(z=120;z>0;z--);
}
void display()
{
P1=seg[shu[7]];
duanx;
P1=0xfe;
weix;
delay(1);
P1=swg[shu[6]];
duanx;
P1=0xfd;
weix;
delay(1);
}
void DAC()
{
DAC_DATA=0xfe;
qu;
delay(1);
}//DAC_DATA=0xff;
//qu;
//delay(1);
void jianpan()
{
if(sb1==1)
{
delay(5);
count=DAC_DATA;
if(sb1==0)count++;
while(sb1==0);
}
}
void ADC()
{
uint w;
AD=0;
delay(1);
w=AD;
w=w*10/51;
shu[7]=w%10;
shu[6]=w/10;
}
void main()
{
while(1)
{
DAC();
jianpan();
ADC();
display();
}
}
比如 开始给0xff 数码管显示5 然后每按一次按键 数值减一后显示在数码管 0xfd就是要显示4.9
可是无论怎么改都不行 大神们帮看看 谢谢了 自学实在很难
#include "reg52.h"
#include "absacc.h"
#define uchar unsigned char
#define uint unsigned int
#define weix wr=0;cs2=0;wr=1;cs2=1
#define duanx wr=0;cs1=0;wr=1;cs1=1
#define qu cs=0;wr1=0;cs=1;wr=1
#define DAC_DATA P0
#define AD XBYTE[0xefff]
uchar count;
sbit cs1=P2^5;
sbit cs2=P2^6;
sbit wr=P2^7;
sbit cs=P2^1;
sbit wr1=P2^0;
sbit sb1=P3^0;
uchar idata shu[8];
uchar code seg[]=
{
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
};
uchar code swg[]=
{
0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10
};
void delay(uint s)
{
uint j,z;
for(j=s;j>0;j--)
for(z=120;z>0;z--);
}
void display()
{
P1=seg[shu[7]];
duanx;
P1=0xfe;
weix;
delay(1);
P1=swg[shu[6]];
duanx;
P1=0xfd;
weix;
delay(1);
}
void DAC()
{
DAC_DATA=0xfe;
qu;
delay(1);
}//DAC_DATA=0xff;
//qu;
//delay(1);
void jianpan()
{
if(sb1==1)
{
delay(5);
count=DAC_DATA;
if(sb1==0)count++;
while(sb1==0);
}
}
void ADC()
{
uint w;
AD=0;
delay(1);
w=AD;
w=w*10/51;
shu[7]=w%10;
shu[6]=w/10;
}
void main()
{
while(1)
{
DAC();
jianpan();
ADC();
display();
}
}