单片机DA转换实验程序实例
单片机源程序如下:
- //硬件:J2的3、4短接(左端为1),为DA提供基准电压,芯片TLC5615的6脚为基准输入;
- // TLC5615 7脚为数据输出端;
- //注:1.硬件TL431的输出电压用两个电阻就可以任意地设置到从Vref(2.5V)到36V范围内的任何值;
- // 因此TLC5615的基准电压硬件上最低只能调至2.5V。
- // 2.TLC5615为10位DA转换,的实际输出电压是理论电压的两倍;
- // 例如:当基准为2.5V,输入为256时,输出电压为1.25V。
- // 当基准为2.5V,输入为511时,输出电压为2.5V。
- // 当基准为2.5V,输入为1023时,输出电压为5.0V。
- #include <at89x52.h>
- #include <absacc.h>
- #include <lcd.h>
- #include <DA.h>
- unsigned char bbb[]={" D/A TEST(2.5V) "};
- unsigned char da_V[16]={'2','5','6',' ',' ',' ',' ',' ',' '};
- unsigned int DA_Data=256; //DA输入值(0--1023)
- //float DA_value=0.0;
- unsigned int DA_value;
- unsigned char temp[4]={0};
- void shuzhichuli(void);
- void main(void)
- {
- PORT=0x03; //BA口输出
- lcd_init(); //液晶初始化
- while(1)
- {
- da5615(DA_Data); //DA转换
- DA_value=(2.50*DA_Data/1024*1000)*2.00+0.005;
- shuzhichuli();
- da_V[14]='V';
- lcd_string(bbb,1);
- lcd_string_change(0xc0,da_V);
- }
- }
- void shuzhichuli(void)
- {
- unsigned int temp0,temp1;
- unsigned int i;
- unsigned int w;
- temp1=DA_value;
- for( i=0;i<4;i++)
- {
- temp0=temp1%10;
- temp1=temp1/10;
- temp[i]=temp0;
- }
- for( w=0;w<5;w++)
- {
- if(w==0)
- {
- da_V[w+9]=temp[3]+48;
- }
- else if(w==1)
- {
- da_V[w+9]='.';
- }
- else
- {
- da_V[w+9]=temp[4-w]+48;
- }
-
- }
- }
复制代码
所有资料51hei提供下载:
DA转换.zip
(31.67 KB, 下载次数: 27)
|