欢迎来到天天文库
浏览记录
ID:39554413
大小:141.00 KB
页数:6页
时间:2019-07-06
《单片机 DA AD转换》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、单片机作业姓名:余帅学号:2011128076专业:电子信息工程1.DAC0832进行DA转换DAC0832是8位分辨率的数模转换集成芯片,内部采用倒T形网络,电流型输出模式,电流输出稳定时间为1us,采用单电源供电,供电电压+5V--+15V,芯片功耗200mW。DAC0832引脚功能DAC0832芯片为20引脚,封装形式为DIP双列直插式,工作电压为+5V-+15V,D/A转换的参考电压为-10V---+10V#include#include#defineD
2、AC0832XBYTE[06000]#defineucharunsignedchar#defineuintunsignedintvoiddelay(uintz){uintx,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}voidmain(){uchari;while(1){for(i=0;i<=0xff;i++){DAC0832=i;delay(10);}for(i=0xff;i>=0;i--){DAC0832=i;delay(10);}}}#include3、.h>#include#include#defineDATAPORTP0#definePAXBYTE[0X4000]#definePBXBYTE[0X4001]#definePCXBYTE[0X4002]#defineADAXBYTE[0X8004]#defineContrlXBYTE[0X4003]#defineDTIME150sbitNEOC=P1^0;sbitckey=P1^1;typedefunsignedcharuchar;typedefunsig4、nedintuint;//数码管编码ucharcodeshow_table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};voiddelayus(uintnum){while(num--){_nop_;}}//延时MS*1msvoiddelayms(uintMS){uinti,j;for(i=MS;i>0;i--)for(j=110;j>0;j--);}//数据转换uintcon5、vert(ucharnum){uchary;uintvol,i;floatfv;for(i=0,y=0x00;i<8;i++){y=y<<1;num=num>>1;y=y6、CY;}fv=y*5/255;vol=fv*10;//10倍的电压值,保留一位小数returnvol;}//数码管显示voiddisplay(uintnum){uintbai,shi,ge;bai=num%1000/100;shi=num%100/10;ge=num%10;PB=show_table[bai];PA=0xf7;de7、layus(DTIME);PA=0xff;PB=show_table[shi]-0x80;//显示小数点PA=0xef;delayus(DTIME);PA=0xff;PB=show_table[ge];PA=0xdf;delayus(DTIME);PA=0xff;}ucharADC(){ucharcdata;//开始转换ADA=0x00;while(NEOC);//NEOC为0,表示转换完成cdata=ADA;returncdata;}voidkey_scan(){if(ckey==1){displ8、ay(convert(ADC()));}}voidmain(){Contrl=0x81;//初始化8255A,PA,PB口输出,PC口高四位输出,低四位输入PA=0xff;//起初关闭数码管的显示while(1){display(convert(ADC()));}}总结:感觉DA转换还很简单,AD转换我没做到,DA转换程序就是由一个死循环和一个延时函数构成,但是AD转换就做不到了,我觉得现在这个时代就不该用8255这块芯片了,添加到里面去好复杂。不过说来说去,还是得上课没认真听讲,平时也多动手操作练9、习,就导致做作业做不到
3、.h>#include#include#defineDATAPORTP0#definePAXBYTE[0X4000]#definePBXBYTE[0X4001]#definePCXBYTE[0X4002]#defineADAXBYTE[0X8004]#defineContrlXBYTE[0X4003]#defineDTIME150sbitNEOC=P1^0;sbitckey=P1^1;typedefunsignedcharuchar;typedefunsig
4、nedintuint;//数码管编码ucharcodeshow_table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};voiddelayus(uintnum){while(num--){_nop_;}}//延时MS*1msvoiddelayms(uintMS){uinti,j;for(i=MS;i>0;i--)for(j=110;j>0;j--);}//数据转换uintcon
5、vert(ucharnum){uchary;uintvol,i;floatfv;for(i=0,y=0x00;i<8;i++){y=y<<1;num=num>>1;y=y
6、CY;}fv=y*5/255;vol=fv*10;//10倍的电压值,保留一位小数returnvol;}//数码管显示voiddisplay(uintnum){uintbai,shi,ge;bai=num%1000/100;shi=num%100/10;ge=num%10;PB=show_table[bai];PA=0xf7;de
7、layus(DTIME);PA=0xff;PB=show_table[shi]-0x80;//显示小数点PA=0xef;delayus(DTIME);PA=0xff;PB=show_table[ge];PA=0xdf;delayus(DTIME);PA=0xff;}ucharADC(){ucharcdata;//开始转换ADA=0x00;while(NEOC);//NEOC为0,表示转换完成cdata=ADA;returncdata;}voidkey_scan(){if(ckey==1){displ
8、ay(convert(ADC()));}}voidmain(){Contrl=0x81;//初始化8255A,PA,PB口输出,PC口高四位输出,低四位输入PA=0xff;//起初关闭数码管的显示while(1){display(convert(ADC()));}}总结:感觉DA转换还很简单,AD转换我没做到,DA转换程序就是由一个死循环和一个延时函数构成,但是AD转换就做不到了,我觉得现在这个时代就不该用8255这块芯片了,添加到里面去好复杂。不过说来说去,还是得上课没认真听讲,平时也多动手操作练
9、习,就导致做作业做不到
此文档下载收益归作者所有