51单片机AD和DA转换汇编程序(共5页).doc
精选优质文档-倾情为你奉上四、实验说明1、D/A转换是把数字量转换成模拟量的变换,实验台上D/A电路输出的是模拟电压信号。要实现实验要求,比较简单的方法是产生三个波形的表格,然后通过查表来实现波形显示。2、产生锯齿波和三角波的表格只需由数字量的增减来控制,同时要注意三角波要分段来产生。要产生正弦波,较简单的方法是造一张正弦数字量表。即查函数表得到的值转换成十六进制数填表。D/A转换取值范围为一个周期,采样点越多,精度越高些。本例采用的采样点为256点/周期。3、8位D/A转换器的输入数据与输出电压的关系为U(0-5V)=Uref/256×NU(-5V+5V)=2·Uref/256×N-5V (这里 Uref为+5V)五、实验框图开始置计数器初值查表读波形数据启动D/A改变计数器及表指针否转换完毕是六、参考程序xdata unsigned char CS0832 _at_ 0xa000;void Write0832(unsigned char b) CS0832 = b;void main() Write0832(0); Write0832(0x80); Write0832(0xff); while(1);/*=*/CS0832 equ 0a000h mov dptr, #CS0832 mov a, #00h movx dptr, a mov a, #40h movx dptr, a mov a, #80h movx dptr, a mov a, #0c0h movx dptr, a mov a, #0ffh movx dptr, a ljmp $ end硬件实验十三 A/D模数转换实验 一、实验要求利用实验板上的ADC0809做A/D转换器,实验板上的电位器提供模拟量输入,编制程序,将模拟量转换成二进制数字量,用8255的PA口输出到发光二极管显示。二、实验目的1、掌握A/D转换与单片机的接口方法。2、了解A/D芯片ADC0809转换性能及编程。3、通过实验了解单片机如何进行数据采集。三、实验电路及连线CS0电位器连线连接孔1连接孔21IN0电位器输出2AD_CSCS03EOCINT048255_CSCS15PA0L06PA1L17PA2L28PA3L39PA4L410PA5L511PA6L612PA7L7四、实验说明A/D转换器大致有三类:一是双积分A/D转换器,优点是精度高,抗干扰性好;价格便宜,但速度慢;二是逐次逼近A/D转换器,精度,速度,价格适中;三是并行A/D转换器,速度快,价格也昂贵。实验用的ADC0809属第二类,是八位A/D转换器。每采集一次一般需100us。本程序是用延时查询方式读入A/D转换结果,也可以用中断方式读入结果,在中断方式下,A/D转换结束后会自动产生EOC信号,将其与CPU的外部中断相接,有兴趣的同学可以试试编程用中断方式读回A/D结果.主程序框图五、实验框图六、参考程序#define mode 0x82xdata unsigned char CTL _at_ 0x9003;控制字xdata unsigned char PA _at_ 0x9000;8255的A口xdata unsigned char CS0809 _at_ 0x8000;unsigned char Read0809() unsigned char i; CS0809 = 0; / 起动 A/D for (i=0; i<0x20; i+) ; / 延时 > 100us return(CS0809); / 读入结果main() unsigned char b; CTL = mode; while(1) b = Read0809(); PA = b; /*=*/mode equ 082h ; 方式0,PA,PC输出,PB输入CS0809 equ 8000hPortA equ 9000h ; Port APortB equ 9001h ; Port BPortC equ 9002h ; Port CCAddr equ 9003h ; 控制字地址 org 0 mov dptr,#CAddr mov a,#mode movx dptr,a mov dptr, #CS0809 mov a, #0 movx dptr, a ; 起动 A/D mov a, #40h djnz ACC, $ ; 延时 > 100us movx a, dptr ; 读入结果 mov r7,#100 dly: mov dptr,#PortA movx dptr,a djnz r7,dly ;延时 ljmp 0 end专心-专注-专业