欢迎来到天天文库
浏览记录
ID:40634048
大小:293.02 KB
页数:7页
时间:2019-08-05
《单片机学习项目 (13) AD DA转换器及其应用》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、单片机学习项目项目13-A/D、D/A转换器及其应用ADC0832(项目13.1)一:功能原理ADC0832 是美国国家半导体公司生产的一种8 位逐次比较型COMS双通道A/D转换器。该器件有8和14引脚两种封装,采用5V电源供电,模拟电压输入范围为0~5V,内部时钟250kHz时转换速度为32微秒。封装图见图5-4-1所示。二:ADC0832应用由于ADC0832操作简单,因此ADC0832驱动只需依照该器件的工作情况设计即可。在图5-4-2所示的仿真电路中,调节电位器PV1可以产生一个模拟的0~5V电压源,
2、输入ADC0832的CH0端口,ADC0832转换后的数据范围为0~255,由三位数码管输出。ADC0832的DI与DO线与后接单片机的P3.2口,CS接P3.0口,CLK接P3.1口。为了得到CH0通道转换得到的数据,程序中需要在CLK第2、3个下降沿来到时向DI发送1、0,然后才能接收ADC0832的转换数据,每次转换结束时让CS 无效。 主程序/*预处理*/#include#include#include"ADC0832.c"#defineucharunsigned
3、charcode ucharseven_seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};ucharcp1,cp2,dat_ad;/*T0初始化*/voidtimer0_init(void){ TMOD=0x01; TH0=0xec; TL0=0x78; TR0=1; EA =1; ET0=1;}/*T0中断服务*/voidtimer0_isr(void)interrupt1
4、//中断服务函数{ TH0=0xec; TL0=0x78; cp1++; if(cp1>=100) //0.5秒 { cp1=0; dat_ad=dac0832_ch0();//0.5秒让ADC0832转换一次 } P0=0xff; switch(
5、cp2) { case0:P0=seven_seg[dat_ad %10];P2=0x01;break; case1:P0=seven_seg[dat_ad%100/10];P2=0x02;break; case2:P0=seven_seg[dat_ad/100];P2=0x04;break; } cp2++; if(cp2>=3)
6、 cp2=0;}/*主函数*/voidmain(void){ timer0_init(); dac0832_init(); while(1);}/*结束*/ADC0832驱动程序/*预处理*/#include#include#defineucharunsignedchar#definenop_nop_()sbitCS=P3^0;sbitCLK=P3^1;sbitDIDO=P3^2;/*对ADC0832初始
7、化*/voiddac0832_init(void){ CS=1;nop; CLK=1; CS=0;}/*对转换CH0通道的模拟信号*/uchardac0832_ch0(void)//包含11个CLK下降沿{ uchari,dat1; dac0832_init(); DIDO=1;CLK=0;nop;CLK=1;nop;//SCK第1个下降沿来到时,DI=1启动DAC0832 DIDO=1;CLK=0;
8、nop;CLK=1;nop;//SCK第2个下降沿 DIDO=0;CLK=0;nop;CLK=1;nop;//SCK第3个下降沿,发送1、0选择通道ch0 DIDO=1;//释放总线 for(i=0;i<8;i++)//SCK第4个下降沿到第11个下降沿,{ CLK=0;nop; if(DI
此文档下载收益归作者所有