📄 ad.c
字号:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#define _rrca_() CY = ACC & 0x01 //产生RRC A指令
#define _rlca_() CY = ACC & 0x80 //产生RLC A指令
sbit bADcs=P1^4;
sbit bADcl=P1^5;
sbit bADda=P1^6;
sbit flag=P1^7;
sbit str=P2^7;
sbit d=P2^6;
sbit clk=P2^5;
bit choose=0;
unsigned char data1;
unsigned char count;
unsigned char cycle;
uint ge,xiao1,xiao2;
unsigned long data2;
//无小数点
const uchar table1[17]={0x81,0xed,0x43,0x49,0x2d,0x19,0x11,0xcd,0x01,0x09,0x71,0x31,0x93,0x61,0x13,0x17,0xff};
//有小数点
const uchar table2[17]={0x80,0xec,0x42,0x48,0x2c,0x18,0x10,0xcc,0x00,0x08,0x70,0x30,0x92,0x60,0x12,0x16,0xff};
uchar buffer[4]={0x00,0x00,0x00,0x00};
void Delayus(uchar i)
{
while(--i);
}
void display(void)
{
uchar bit_count=0;
uchar table_counter=0;
uchar byte_counter=0;
uchar temp_i=0;
buffer[0]=xiao2;
buffer[1]=xiao1;
buffer[2]=ge;
buffer[3]=0x00;
//led_str_off;//先清零
str=0;
//led_clk_off;
clk=0;
for(byte_counter=0;byte_counter<4;byte_counter++)
{
bit_count=8;
if(byte_counter==2)temp_i=table2[buffer[byte_counter]];
else
temp_i=table1[buffer[byte_counter]];
// nop;
while(bit_count>0)
{
if((temp_i&0x80)==0)
{
//led_d_off;
d=0;
}
else
{
//led_d_on;
d=1;
}
temp_i=(temp_i<<1);
// nop;
//led_clk_on;
clk=1;
// nop;
//led_clk_off;
clk=0;
// nop;
bit_count--;
}
}
//led_str_on;
str=1;
}
/*
void ad()
{
choose=0;
count = 0;
bADcs = 0;//当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用.
bADcl = 0;
bADda = 1;//在第1 个时钟脉冲的下沉之前DI端必须是高电平.
bADcl = 1;
bADcl = 0;//pulse 1 down
bADda = 1;
bADcl = 1; bADcl = 0;//pulse 2 down
if(choose == 0)
bADda = 0;
else
bADda = 1;
bADcl = 1; bADcl = 0;//pulse 3 down
bADcl = 1; bADcl = 0;//pulse 4 down
//bADcl = 1;
for(cycle = 8; cycle > 0; cycle-- )
{
bADda = 1;
//bADcl = 0;//pulse
bADcl = 1;
CY = bADda;
_rlca_(); //RRC A
bADcl = 0;//pulse
}
data1= ACC;
for(cycle = 8; cycle > 0; cycle-- )
{
bADda = 1;
bADcl = 1;
CY = bADda;
_rrca_(); //RLC A
bADcl = 0;//pulse
}
//bADcl = 0;//pulse
} */
void ad(void)
{ uchar i;
//data1=0;
bADcs = 0;//当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用.
bADcl=0;
bADda=1;
bADcl=1;
bADcl=0;//i down
bADda=1;
bADcl=1;
bADcl=0; // 2 down
bADda=0;
bADcl=1;
bADcl=0; // 3 down
bADda=1;
bADcl=1;
bADcl=0; // 4 down
for(i=8;i>0;i--)
{
data1<<=1;
bADcl=0;
bADcl=1;
if(bADda==1) data1|=0x01;
bADda=1;
}
/* for(i=8;i>0;i--)
{
bADcl=0;
bADcl=1;
} */
bADcs=1;
}
void cal()
{
data2=((ulong)data1*493)/256;
ge=data2/100;
xiao1=(data2%100)/10;
xiao2=data2%10;
}
main()
{
flag=1;
while(1){
ad();
cal();
display();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -