ADC模数转换实验
时间:2023-01-17 17:00:00
一﹑实验目的
1))了解AD转换器的基本工作原理和结构。
2)掌握大规模集成AD转换器的功能及其典型应用。
二﹑实验原理
XPT2046是一款4线电阻触摸屏控制器,分辨率12位KHz转换速率逐渐接近型A/D转换器。XPT2046支持从1.5V到5.25V的低电压I/O接
口。XPT2046 可以执行两次A/D此外,还可以测量触摸屏上添加的压力·内部自带2.5V参考电压可作为辅助输入﹑使用温度测量和电池监测,电池监测的电压范围可以从 0V到 6V 。XPT有一个温度传感器集成在2046片。
三﹑仪器设备
微机系统1套
普中A单片机开发系统1套4套﹑实验内容
分别对机械部件﹑执行元件﹑控制器微机﹑传感器﹑解释几个部分,如动力。本实验使用的硬件资源如下:
(1)动态数码管(2)ADC模块
从上图中可以看出,该电路是独立的,XPT2046芯片芯片的控制管脚J33端子上,XPT2046芯片的ADC输入转换通道分别接入AD1电位器·NTC1热敏传感
器﹑GR1光敏传感器和外部通道AIN3接在DAC模块的J52端子供外部模拟信号检测。
因为模块电路是独立的,所以XPT2046芯片控制管脚接J33端子可以用任何单片机管脚连接。为了支持我们的例程,这里使用单片机 P3.4管脚和芯片DIN管脚连接,使用单片机P3.5管脚和芯片CS 管脚连接,使用单片机 P3.6管脚和芯片CLK管脚连接,使用单片机P3.7管脚和芯片DOUT管脚连接。
开发板上的动态数码管模块电路如下图所示:
从上图可以看出,电路是独立的,动态数字管的控制管脚没有直接连接到51台单片机IO相反,段选端连接到J位选端连接到6端J1端子上。段选端通过
74HC245芯片驱动这两个共阴数码管a-dp段。
要想控制51单片机的动态数码管,必须通过导线将单片机管脚连接到J6端子和J1端子上·所以需要一个8Pin单片机的管脚和排线J6端子顺序连接,使用8端子Pin排线将 输出38译码器 J10端子与J1端子顺序连接,使用3根杜邦线将单片机的管脚与J9端子连接·由于动态数码管模块电路是独立的,因此,可以使用任何单片机管脚。为了配合我们的例程序,可以在这里使用PO选择口控数码管段,使用P2.2·P2.3·P2.4管脚控制74HC输入138译码器控制数码管位选择。
注:保证PO口的 PO0与A段到PO口的 PO7与DP段依次连接,单片机P22·P23·P24口和38译码器A·B﹑C连接,输出38译码器 J10端子的Y0-Y7与位选端子J1的 W1-W8连接,不能交叉,否则使用例程序会出错,默认情况下,我们已经使用了8个黄色短片 输出38译码器 J10选择数码管位」J1短接好。
实验内容完成:
调节电位器AD1.通过改变其电压值AD转换器转换成数字量,并根据转换的数字量和实际电压值分别显示。
main函数:
#include "pwm.h" u8 gtim_h=0; u8 gtim_l=0; u8 gduty=0; u8 gtim_scale=0; void pwm_init(u8 tim_h,u8 tim_l,u16 tim_scale,u8 duty) { gtim_h=tim_h; gtim_l=tim_l; gduty=duty; gtim_scale=tim_scale; TMOD|=0X01; TH0 = gtim_h; TL0 = gtim_l; ET0=1; EA=1; TR0=1; } void pwm_set_duty_cycle(u8 duty) { gduty=duty; } void pwm(void) interrupt 1 { static u16 time=0; TH0 = gtim_h; TL0 = gtim_l; time ; if(time>=gtim_scale) time=0; if(time<=gduty)//?????±è PWM=1; else PWM=0; }
#include "public.h" #include "pwm.h" void main() u8 dir=0;// u8 duty=0; pwm_init(0XFF,0XF6,100,0); while(1) { if(dir==0) duty ; if(duty==70)dir=1; } else { duty--; if(duty==0) pwm_set_duty_cycle(duty); delay_ms(1); } }