当前位置:首页 > 用ADC0832设计的两路电压表protues仿真
} {
P0=dat; delay(2); en=0; delay(2);
void LCD_display(uchar add,uchar s[])
uchar i;
LCD_write_cmd(0x80+add); for(i=0;i<16;i++)
LCD_write_data(s[i]); }
void LCD_init() {
LCD_write_cmd(0x38); delay(1);
LCD_write_cmd(0x0c); delay(1);
LCD_write_cmd(0x06); delay(1);
LCD_write_cmd(0x01);
delay(1); }
#endif
#ifndef _ADC0832_H_ #define _ADC0832_H_
uchar ADC_read_data(uchar ch) {
uchar i,dat0=0,dat1=0; cs=0; clk=0;
dio=1; delay_us(); clk=1; delay_us(); clk=0; dio=1; delay_us(); clk=1; delay_us();
//第二次下降沿输入dio=1
//第一次下降沿之前DIO置高,起始信号
clk=0;
dio=ch; //第三个下降沿,设DIO=0; delay_us(); clk=1; delay_us();
/*********二,三个下降沿选择通道1************************/ }
void ADC_change(uchar ch) {
dat=ADC_read_data(ch)*500.0/255;//dat变量要全局变量,重要 LCD_buffer[ch][8]=dat/100+'0'; LCD_buffer[ch][10]=dat/10+'0'; LCD_buffer[ch][11]=dat+'0';
clk=0;
dio=1; //第四个下降沿之前,设DIO=1 delay_us();
for(i=0;i<8;i++)//第4~11共8个下降沿读数据(MSB->LSB) {
clk=1; delay_us(); clk=0; delay_us(); dat0=dat0<<1|dio;
}
for(i=0;i<8;i++) //第11~18共8个下降沿读数据(LSB->MSB) {
dat1=dat1|((uchar)(dio)<
clk=0; delay_us(); } cs=1;
//判断dat0与dat1是否相等
return (dat0==dat1)?dat0:0;
}
#endif
共分享92篇相关文档