- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
北京信息科技大学
自动化学院
(计算机控制技术)实验报告
专业:自动化班级:自控0803班学号:2008010868姓名:朱星烨
实验名称
A/D、D/A转换实验
实验地点
实验楼706
实验时间
2011-3-8
实验目的:1、学习A/D转换器原理及接口方法,并掌握ADC0809芯片的使用
2、学习D/A转换器原理及接口方法,并掌握TLC7528芯片的使用
实验设备:PC机一台,TD-ACC+实验系统一套,SST51系统板一块
实验原理及内容:
一实验内容
(1)编写实验程序,将-5V~+5V的电压作为ADC0809的模拟量输入,将转换所得的8位数字量保存到变量中。
(2)编写实验程序,实现D/A转换产生周期性三角波,并用示波器观察波形。
二实验原理
1.A/D转换实验
ADC0809芯片主要包括多路模拟开关和A/D转换器两部分,其主要特点是:单电源供电、工作时钟CLOCK最高可达到1200KHz、8位分辨率,8个单端模拟输入端,TTL电平兼容等,可以很方便地和微处理器接口。TD-ACC+教学系统中的ADC0809芯片,其输出八位数据线以及CLOCK线已连接到计算机的数据线及系统应用时钟1MCLK(1MHz)上。其他控制线根据实验要求可另外连接(A、B、C、STR、/OE、EOC、IN0~IN7)。根据实验内容的第一项要求,可以设计出如图所示实验线路图。
上图中,AD0809的启动信号“STR”是有控制计算机定时输出方波来实现的。这里用P1.7来模拟1#定时器的输出,通过“OUT1”
图中ADC0809芯片输入选通地址码A、B、C为“1”状态,选通输入通道IN7;通过单次阶跃单元的电位器可以给A/D转换器输入-5V~+5V的模拟电压;系统定时器定时1ms输出方波信号启动A/D转换器,并将A/D转换完后的数据量读入到控制计算机中,最后保存到变量中。参考流程如下:
2.D/A转换实验
本实验采用TLC7528芯片,它是8位、并行、两路、电压型输出数模转换器。其主要参数如下:转换时间100ns,满量程误差1/2LSB,参考电压-10V~+10V,供电电压+5V~+15V,输入逻辑电平与TTL兼容。实验平台中的TLC7528的八位数据线、写线和通道选择控制线已接至控制计算机的总线上。片选线预留出待试验中连接到相应的I/O片选上,具体如下图:
以上电路是TLC7528双极性输出电路,输出范围-5V~+5V。“W101”和“W102”分别为A路和B路的调零电位器,实验前先调零,往TLC7528的A口和B口中送入数字量80H,分别调节“W101”和“W102”电位器,用万用表分别测“OUT1”和
实验步骤:
一A/D转换实验
(1)建立一个工程文件。将晶振等值设定好
(2)编写程序代码,然后将编好的C文件添加到工程中去,检查程序无误后编译连接。程序代码如下:
#includereg51.h
#includeabsacc.h
/********宏定义*************/
#defineucharunsignedchar
#defineuintunsignedint
#defineADC_7XBYTE[Ox7ff0]//定义模数转换IO地址
/*******函数声明***********/
Voidtddelay(inttime)
/*******全局变量定义********/
Sbitstr=P1^7;
uchardataad[10]; //声明变量,用于存储转换结果
uintdatatime; //声明变量,用于定时
uchardatat0_h,t0_l; //用于存储定时器0的初值
/********主函数***********/
voidmain(void)
{
uchari;
TMOD=0x01;
time=1; //定时1ms
t0_h=(65536-500*time)/256; //计算定时器0初值
t0_l=(65536-500*time)%256;
TH0=t0_h;
TL0=t0_l;
ET0=1; //开定时中断0
TR0=1; //启动定时器
EA =1; //开总中断
while(1)
{
for(i=0;i10;i++) //读取转换结果,并保存
{
ad[i]=ADC_7;
td_delay(500); //延时
}
td_delay(100)
文档评论(0)