📄 0809.c
字号:
#include<at89x52.h>
code unsigned char seg7code[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
///////////// //显示段码/////////0 1 2 3 4 5 6 7 8 9/////////
unsigned int datain;
unsigned int dataout,datac[4]={0};
float datamo;
sbit ST=P3^0; ////////////////////输入通道就用IN0 /// A B C口 都接地////////////////
sbit OE=P3^1;
sbit EOC=P3^2; //////////////////输入通道就用IN0 /// A B C口 都接地////////////////
void delayms(unsigned char x) //////延时x ms 误差16us
{ unsigned char y=123;
unsigned char j;
while(x--)
{
for(j=0;j<y;j++);
}
}
void ADC0809(void) //ADC0809转换函数
{
ST=0;
ST=1;
ST=0;
while(EOC==0);
OE=1;
datain=P1; /////单片机接收的数字数据
OE=0;
}
void Datapro(void) //ADC0809数据处理函数
{
datamo=(datain*5)/256.0;
dataout=(unsigned int)(datamo*1000); //////////强制转换
datac[3]=dataout%10;////////小数点后第三位/////四位数码管显示
datac[2]=dataout%100/10;/////////////第二位/////////
datac[1]=dataout/100%10;//////////////第一位//////////
datac[0]=dataout/1000;///////////////个位数/////
}
void Led(void)
{
P2_3=1; /////////////////P2低四位控制数码管位选
P2_0=0;
P0=seg7code[datac[0]]|0x80; //输出个位数和小数点
delayms(4);
P2_0=1;
P2_1=0;
P0=seg7code[datac[1]]; //输出小数点后第一位
delayms(4);
P2_1=1;
P2_2=0;
P0=seg7code[datac[2]]; //输出小数点后第二位
delayms(4);
P2_2=1;
P2_3=0;
P0=seg7code[datac[3]]; //输出小数点后第三位
delayms(4);
}
void main(void)
{
P2=0xff;
P0=seg7code[0];
datain=0;
dataout=0;
while(1)
{
ADC0809();
Datapro();
Led();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -