《微机原理与接口技术》
实验指导书
电气与自动化工程学院
常熟理工学院
二零一四年二月
实验一、AD转换实验
一、实验目的
1. 了解ADC0809的AD转换原理; 2. 了解ADC0809的硬件设计原理图;
3. 自主设计ADC0809的AD转换程序以及显示程序。
二、实验设备
单片机实验箱一台;PC机一台;USB下载线一根;ADC0809模块;LCD12864液晶模块。
三、实验内容
通过ADC0809的IN0端口采集模拟量信号,然后进行AD转换,转换完成后的数字量在LCD12864液晶屏上显示出来。模拟信号由0~5V的可调电位器提供,ADC0809的时钟频率由单片机定时器0提供。
四、实验原理
ADC0809是CMOS的8位A/D转换器,片内有8路模拟开关,可控制8个模拟量中的一个进入转换器中。转换时间约100μs,含锁存控制的8路多路开关,输出有三态缓冲器控制,单电源5V供电。主要时序信号如图2所示:START是转换启动信号,高电平有效;ALE是3位通道选择地址(ADDC、ADDB、ADDA)信号的锁存信号。当模拟量送至某一输入端(如IN1或IN2等),由3位地址信号选择,而地址信号由ALE锁存;EOC是转换情况状态信号,当启动转换约100μs后,EOC产生一个负脉冲,以示转换结束;在EOC的上升沿后,若使输出使能信号OE为高电平,则控制打开三态缓冲器,把转换好的8位数据结果输至数据总线,至此ADC0809的一次转换结束。
ADC0809通道的选择与工作时序图,如图1,2所示
图1:ADC0809通道的选择
图2:ADC0809工作时序图
五、 实验步骤
1、 连接硬件接线:将ADC0809模块和LCD12864模块分别通过牛角插头连接至单片
机对应接口,连接单片机电源。
2、 ADC0809模块实验板说明:该模块板自带电压表,显示IN0,IN1输入端电压,显
示可以通过S1与S2波动开关选择,一次只能允许有一个开关拨到ON位置,严禁两个开关同时为ON。模块实验板预留出IN2~IN7输入端口,可供扩展AD实验口使用。
3、 理解硬件原理图:理解ADC0809的硬件原理图,根据硬件原理图设计软件流程图。
ADC0809的硬件电路图如图3所示。 其中引脚分配为:
ADA = P1^0; // 地址选择位 ADB = P1^1; // 地址选择位 ADC = P1^2; // 地址选择位 ST = P1^3; // 转换启动信号 EOC = P1^4; // 转换情况状态信号 CLK = P1^6; // 转换时钟信号 EN = P1^5; // 转换使能控制 ALE = P1^7; // 转换地址锁存控制
ADC0809IN31IN42IN53IN64IN75START6EOC72-58OUT_EN9CLOCK101112132-714ADC0809IN3IN4IN5IN6IN7STARTEOC2-5OUT_ENCLOCKVCCVREF+GND2-7IN2IN1IN0ADD_AADD_BADD_CALE2-1MSB2-22-32-42-8LSBVREF-2-62827262524232221201918171615IN2IN1IN0ADD_AADD_BADD_CALE2-12-22-32-42-82-6AD内部输入模拟量显示模块S1GNDS1S2S3GNDSWS2GNDS1S2S3GNDSW12345IN0D11N4148VCC_5V321U15VGNDADDigital tube12345IN1D21N4148VCC_5VGNDGNDAD内部模拟输入端IN03R110KIN13R210KGNDGNDVCC_5V1电源指示与滤波VCC_5VR31KVCC_5VC110uF/16VLD1GNDGND22VCC_5V1C20.1uF模拟地数字地连接AGNDR40GNDAD与主板连接插针AD外部扩展输入端J1AD1AD2AD3AD4AD5AD6AGNDAGNDEX_ADAGND12345678IN2IN3IN4IN5IN6IN72-12-32-52-7ADD_BSTARTOUT_ENALEGNDH113579111315171924681012141618202-22-42-62-8ADD_AADD_CEOCCLOCKVCC_5VHADC0809
图3:ADC0809硬件电路图
4、 画出程序流程图:根据程序流程图,编写并调试软件程序。
开始 初始化和清屏 启动AD转换 延时等待AD转换结果 读取AD转换结果 将结果显示成代码 调用LCD12864程序显示结果 判断
图4:软件流程图
实验程序如下: /**
** @note:需要建立LCD12864_ADC0832.h文件和LCD12864_ADC0832.c文件 ** @note: LCD12864_ADC0832.h文件声明LCD12864_ADC0832.c函数与变量 **@note:以下为LCD12864_ADC0832.h文件程序 */
/************************************************/ #ifndef _LCD12864_ADC0832_h_ #define _LCD12864_ADC0832_h_
#include
#define uchar unsigned char #define uint unsigned int extern void sys_init(void); // 系统初始化 extern void display_ad(void); // 显示AD转换结果 #endif
/************************************************/
/**
** @note:需要建立LCD12864_ADC0832.h文件和LCD12864_ADC0832.c文件 ** @note: 以下为LCD12864_ADC0832.c函数与变量 */
/***************************************************/ #include \
sbit ADA = P1^0; //地址选择位 sbit ADB = P1^1; //地址选择位 sbit ADC = P1^2; //地址选择位 sbit ST = P1^3; //转换启动信号
sbit EOC = P1^4; //转换情况状态信号
sbit CLK = P1^6; //转换时钟信号 sbit EN = P1^5; //转换使能控制 sbit ALE = P1^7; //转换地址锁存控制 //引脚定义
sbit CS = P0^0; //片选 高电平有效 单片LCD使用时可固定高电平 sbit PSB = P0^1; //低电平时表示用串口驱动,可固定低电平 sbit SCLK = P0^2; //时钟 sbit SID = P0^3; //数据
相关推荐: