资源描述
1 ADC0832驱动子程序#include #include /常用汇编指令引用。unsigned char tab=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x83,0xf8,0x80,0x98; /共阳代码/接口电路sbit AD0832_CS = P35; /片选信号sbit AD0832_CLK = P36; /时钟接口sbit AD0832_DI = P37; /数据接口void main( void) unsigned char i=0 , x =0 , y = 0 ; unsigned int temp=0; while(1) /时钟12Mhz, 整个转换时间为224us /使用芯片准备(参考PDF时序图) AD0832_CLK = 0 ; /时钟置低平 AD0832_DI = 1 ; /开始信号为高电平 AD0832_CS = 0 ; /片选信号置低,启动AD转换芯片 /输入开始信号(构成一个正脉冲) _nop_(); AD0832_CLK = 1 ; /时钟上升沿,输入开始信号 _nop_(); AD0832_CLK = 0 ; /时钟下降沿 /模拟信号输入模式选择(1:单模信号,0:双模差分信号) AD0832_DI = 1 ; _nop_(); AD0832_CLK = 1 ; /时钟上升沿,输入开始信号 _nop_(); AD0832_CLK = 0 ; /时钟下降沿 /模拟信号输入通道选择(1:通道CH1,0:通道CH0) AD0832_DI = 0 ; /选择通道0 _nop_(); AD0832_CLK = 1 ; /时钟上升沿,输入开始信号 _nop_(); AD0832_CLK = 0 ; /时钟下降沿 / AD0832_DI = 1 ; /数据线置高,准备接收数据 for(i = 0 ; i8 ; i+) /从高位移入数据 AD0832_CLK = 1 ; _nop_(); AD0832_CLK = 0 ; /时钟下降沿,AD0832输出数据,高位(MSB)先 x = x1;/数据左移位,补0 if(AD0832_DI =1) x = x | 0x01; /如果数据为“1”,移入1, /如果数据为“0”,移入0, for(i = 0 ; i1;/数据左移位,补0 if(AD0832_DI =1) y = y | 0x80; /如果数据为“1”,移入1, /如果数据为“0”,移入0 AD0832_CLK = 1 ; _nop_(); AD0832_CLK = 0 ; /时钟下降沿,AD0832输出数据,高位(MSB)先 /数据线置高,释放总线,完成一次转换 AD0832_CLK = 1 ; AD0832_DI = 1 ; AD0832_CS = 1 ; if(x=y) /输出 temp = x *2 ; /(参考电压为5V,8位。5/255*100=1.96(取2)) P0 = tabtemp/100%10;/取最高位 P2 = tabtemp/10%10; /取最低位
展开阅读全文