1、实验五 单片机 AD 输入实验1、实验目的1、掌握 A/D 转换与单片机的接口方法。2、了解 A/D 芯片 ADC0809 转换性能及编程。3、通过实验了解单片机如何进行数据采集。2、实验说明利用实验板上的 ADC0809 做 A/D 转换器,实验板上的电位器提供模拟量输入,编制程序,将模拟量转换成二进制数字量,用 8255 的 PA 口输出到发光二极管显示。 3、实验仪器计算机伟福实验箱( lab2000P )4、实验内容1、 A/D 转换器大致有三类:一是双积分 A/D 转换器,优点是精度高,抗干扰性好;价格便宜,但速度慢;二是逐次逼近 A/D 转换器,精度,速度,价格适中;三是并行 A/
2、D 转换器,速度快,价格也昂贵。2、实验用的 ADC0809 属第二类,是八位 A/D 转换器。每采集一次一般需100us。本程序是用延时查询方式读入 A/D 转换结果,也可以用中断方式读入结果,在中断方式下,A/D 转换结束后会自动产生 EOC 信号,将其与 CPU 的外部中断相接,有兴趣的同学可以试试编程用中断方式读回 A/D 结果. 5、思考题1、修改延时时间,当时间很短,小于 100us 时,读数是否正确?2、改为中断方式实现 AD 输出采集数据,使用外部中断,如何改动硬件和软件 ;6、源程序修改原理及其仿真结果思考题一:修改延时时间,当时间很短,小于 100us 时,读数是否正确?m
3、ode equ 082h ; 方式 0,PA,PC 输出,PB 输入CS0809 equ 8000hPortA equ 9000h ; Port APortB equ 9001h ; Port BPortC equ 9002h ; Port CCAddr equ 9003h ; 控制字地址org 0mov dptr,#CAddr mov a,#modemovx dptr,amov dptr, #CS0809mov a, #0movx dptr, a ; 起动 A/Dmov a, #20hdjnz ACC, $ ; 延时 100usmovx a, dptr ; 读入结果mov r7,#100修改
4、延时时间100us 时可能出现AD 采集的数据还没有转换好就被输出的情况,不如中断方式可靠dly: mov dptr,#PortAmovx dptr,adjnz r7,dly ;延时ljmp 0end思考题二:改为中断方式实现 AD 输出采集数据,使用外部中断,如何改动硬件和软件 mode equ 082h ; 方式 0,PA,PC 输出,PB 输入CS0809 equ 8000hPortA equ 9000h ; Port APortB equ 9001h ; Port BPortC equ 9002h ; Port CCAddr equ 9003h ; 控制字地址Ljmp STARTorg
5、 3MOVX A,DPTR mov r7,#100dly: mov dptr,#PortAmovx dptr,adjnz r7,dly ;延时RETISTART:mov TCON, #01h ; 外部中断 0 下降沿触发mov IE, #81h ; 打开外部中断允许位(EX0) 及总中断允许位(EA) mov dptr,#CAddrmov a,#modemovx dptr,amov dptr, #CS0809mov a, #0movx dptr, a ; 起动 A/D DENG: SJMP DENG ;等待中断信号ljmp STARTEnd仿真结果说明:首先,改为中断方式需要改变的硬件连接是将 AD 的 EOC 口和单片机 P3.2口连接,由于程序编写的是下降沿触发方式,故不需要接反向器。接好硬件后旋转滑动变阻器旋钮可以观察到 L0L7 灯从全灭到全亮的全过程中各个灯是按照二进制的顺序逐次点亮的,说明本程序使用中断方式实现了 AD 的有效转换。INT0 外部中断程序,代替延时的方法是将源程序中延时后的部分,即从 AD 读取数据和将数据传送给 8055 的部分放置在中断程序中,这样保证了在 EOC 信号给出激励以后单片机才会响应,保证了读入数据的可靠性