已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
此文档收集于网络,如有侵权,请联系网站删除实验项目 AD-DA转换实验【实验目的】1、 学习I2C串行总线的工作原理2、 学习A/D芯片PCF8591的工作原理3、 学习C51编写程序控制AD-DA转换【实验内容】1、 学习I2C总线的工作方式、寻址方式和数据传输过程;2、 学习A/D芯片PCF8591的引脚、电路图及其控制字节的使用;3、 实现给定的程序,学习AD-DA转换程序的编写。4、 完成实习报告【实验原理】1. 连线: JP10 (P0)与JP12 用8PIN排线连接。2. I2C串行总线的工作原理(参考教材第九章第一节)。3. PCF8591工作原理:PCF8591是具有I2C总线的接口的8位A/D及D/A转换器。有4路A/D转换输入,1路D/A模拟输出。也即既可以做A/D转换,也可以做D/A转换。A/D转换为逐次比较型。3.1 PCF8591电路图图5-1 PCF8591电路图3.2 引脚说明图5-2 PCF8591引脚图引脚说明:AIN0AIN3:模拟输入信号端A0A2:硬件地址端;Vss、VDD:输入电压端(2.56V);SDA:I2C总线输入/输出端;SCL:I2C总线时钟信号输入端;OSC:外部时钟输入/内部时钟输出端;EXT:内部/外部时钟选择输入端;AGND:模拟信号接地端;AOUT:模拟量输出端;VREF:电压参考输入端。3.3 器件总地址PCF8591采用典型的I2C总线接口器件寻址方式,即总线地址由器件地址、引脚地址和方向组成。飞利浦公司规定A/D器件的地址都是1001。引脚地址为A0、A2、A2,其值由用户选择。因此I2C总线最多可以连接222=8个具有I2C总线接口的A/D器件。地址的最后一位是方向位,当主控器对A/D器件进行读操作时为1,进行写操作时为0。总线操作时,由器件地址、引脚地址和方向位组成的从地址为主控器发送的第一个字节。3.4 控制字节图5-3 PCF8591控制字节说明控制字节用于实现器件的各种功能。控制字节存放在控制寄存器中。总线操作时,为主控器发出的第二个字节。在进行A/D转换数据操作时,首先是主控器发出起始信号,然后发出读寻址字节,被控器做出应答后,主控器从被控器读出第一个数据字节,主控器发出应答,主控器从被控器读出第二个数据字节,主控器发出应答;.,一直到主控器从被控器中读出第n个数据字节,主控器发出非应答信号,最后主控器发出停止信号。当进行D/A转换时,【实验步骤】1. 单片机开发板的电源与PC的USB口相连,且在PC机上安装必要的软件。具体步骤参见文件夹“软件及其安装说明”中的“单片机实验-软件安装说明书.doc”。2. 在KEIL环境中编写和调试程序,具体操作步骤,请参见附录“步骤一:在KEIL环境中编写和调试程序”;3. 用程序烧录软件,具体操作步骤,请参见附录“实验步骤二:烧录HEX程序到单片机开发板中”;4. 完成实习报告填写工作;【附录】实验步骤一:在KEIL环境中编写和调试程序1. 单击桌面上的图标,则显示如下的窗口:2. 单击菜单中的“Project”项,则显示如下的弹出菜单:3. 选择其中的“New Project”菜单项,则弹出如下的窗口:4. 在该窗口中,在“保存在(I):”中选择保存项目的文件夹,同时,在“文件名(N)”中键入项目名(注意:项目名最好是英文,而不是汉字;其次,项目名中不能加空格),键入项目名后,单击“保存(S)”按钮,则显示如下的窗口:5. 在“Data base”中选择“Atmel”项,单击其前面的“+”,显示如下的选择项,从中选择“AT89C51”,如下图所示:6. 单击上图中的“确定”按钮,显示如下的弹出窗口:7. 选择其中的“是(Y)”按钮。则新的项目创建成功,如下图显示:8. 单击菜单项中的“File-New”,如下图:9. 显示如下的文件编辑框,如下图所示:10. 点击菜单中的“File-Save”,如下图:11. 则显示如下的对话框:12. 在“文件名(N)”中键入文件名ADC.c,然后单击“保存”按钮,返回文件编辑界面,并编辑如下的AD转换程序:#include#include#define uint unsigned int#define uchar unsigned char#define Delay4us() _nop_();_nop_();_nop_();_nop_();sbit SCL=P21;sbit SDA=P20;sbit LS138A=P22; sbit LS138B=P23;sbit LS138C=P24;uchar code tab1=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;bit bdata IIc_ERROR;uchar temp;void iic_start()SDA=1;SCL=1;Delay4us();SDA=0;Delay4us();SCL=0;void iic_stop()SDA=0;SCL=1;Delay4us();SDA=1;Delay4us();SCL=0;void slave_ACK(void)SDA=0;SCL=1;Delay4us();SCL=0;SDA=1;void slave_NOACK(void)SDA=1;SCL=1;Delay4us();SDA=0;SCL=0;SDA=0;void check_ACK()SDA=1;SCL=1;IIc_ERROR=0;Delay4us();if(SDA=1)IIc_ERROR=1;SCL=0;void IICSendByte(unsigned char indata)unsigned char n=8;while(n-)SDA=(bit)(indata&0x80);SCL=1;Delay4us();SCL=0;indata=indata1;unsigned char IICreceiveByte(void)unsigned char n=8;unsigned char tdata=0;while(n-)SDA=1;SCL=1;tdata=tdata0;x-)for(y=110;y0;y-);void disply(uchar count)uchar bai,shi,ge;bai=count/100;shi=count%100/10;ge=count%10;P0=tab1bai;LS138A=1; LS138B=0; LS138C=1; delay(5);P0=tab1shi;LS138A=0; LS138B=1; LS138C=1; delay(5);P0=tab1ge;LS138A=1; LS138B=1; LS138C=1; delay(5);void main()P1=0x00;while(1)ADC_PCF8591(0x04);disply(temp);13. 程序输入完成后保存,选中左边窗口中的“Source Group 1”,然后单击鼠标右键,弹出如下的弹出菜单,然后单击其中的“Add Files to Group “Source Group 1 ”,如下图所示:14. 则显示如下的对话框:15. 选中刚才创建的ADC.c文件,然后单击“Add”按钮。则文件添加成功,显示如下图:16. 然后单击“Close”按钮,关闭添加文件窗口。然后,单击程序编译按钮,如下图显示:17. 编译结果显示在界面下方的子窗口中,如果程序有错误,则请修改程序直到无误,如下图:18. 选中左边“Project Workspace”窗口中的“Target 1”并单击右键,显示如下的弹出菜单:19. 选中其中的“Options for Target “Target 1”,在显示如下图窗口:20. 单击标签页“Output”,则显示如下:21. 其中,“Name of Excutable”中是可执行程序的名称;将“Create Hex File”项打勾,然后单击“确定”按钮,并单击图标重新编译文件:22. 则生成HEX文件,如下图所示: 实验步骤二:烧录HEX程序到单片机开发板中1. 单击文件“PZISP自动下载软件.exe”,则显示如下:2. 选择如图所示的芯片类型、波特率;并且单击“打开文件”按钮,选择生成的HEX文件,然后单击上图中的“下载程序”按钮,如下图所示:3. 则可执行程序烧录到单片机开发板中。注意:在程序下载前,必须将单片机的电源打开。步骤三,重复上面的步骤一和步骤二,编辑程序完成模数转换程序,C51源程序名为DAC.c,程序内容如下:#include#include#define uint unsigned int#define uchar unsigned char#define Delay4us() _nop_();_nop_();_nop_();_nop_();#define PCF8591 0x90 /PCF8591 地址sbit SCL=P21;sbit SDA=P20;sbit LS138A=P22; sbit LS138B=P23;sbit LS138C=P24;uchar code tab1=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;bit bdata IIc_ERROR;sbit beep=P15;void iic_start()SDA=1;SCL=1;Delay4us();SDA=0;Delay4us();SCL=0;void iic_stop()SDA=0;SCL=1;Delay4us();SDA=1;Delay4us();SCL=0;void slave_ACK(void)SDA=0;SCL=1;Delay4us();SCL=0;SDA=1;void slave_NOACK(void)SDA=1;SCL=1;Delay4us();SDA=0;SCL=0;SDA=0;void check_ACK()SDA=1;SCL=1;IIc_ERROR=0;Delay4us();if(SDA=1)IIc_ERROR=1;SCL=0;void IICSendByte(unsigned char indata)unsigned char n=8;while(n-)SDA=(bit)(indata&0x80);SCL=1;Delay4us();SCL=0;indata=indata0;x-)for(y=110;y0;y-);void disply(uchar count)uchar bai,shi,ge;bai=count/100;shi=count%100/10;ge=count%10;P0=tab1bai;LS138A=1; LS138B=0; LS138C=1; delay(50);P0=tab1shi;LS1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 交叉施工冲突协议书
- 楼层混凝土合同范本
- 文体供货合同协议书
- 旅游健康安会协议书
- 银行理财经理考试题库及答案
- 专科教师考试题库及答案
- 心电图室质控工作试题带答案
- 2026-2031年中国生活服务O2O行业全景调研及投资风险报告
- 平面设计技能试题及答案
- 基于样本几何估计值的支持向量机:理论、算法与实践探索
- 光伏运维安全培训
- 冲压调试管理办法
- 重症护理超声进修汇报
- 法院罚没管理办法
- 【2025年】云南省昆明市特种设备作业烟花爆竹从业人员模拟考试试题含答案
- 全国大学生职业规划大赛《机械工程》专业生涯发展展示
- 物业多种经营管理办法
- 航空业碳中和路线图-洞察及研究
- JJG 264-2025 谷物容重器检定规程
- DB32∕T 4577-2023 安宁疗护服务规范
- 三支一扶培训
评论
0/150
提交评论