实验报告 课程名称 单片机原理与接口技术实验 实验名称D-A转换(PCF8591) 系别 电子信息科学学院 专业班级 15电子信息工程3班 指导教师 林* 学号1631*姓名_吴*_实验日期_ 12.22实验成绩_______
一,实验目的1、熟悉D/A转换的原理。 2、熟悉PCF8591芯片的工作特性,进一步熟悉I2C总线工作的原理。 3、掌握PCF8591芯片D/A转换的编程应用。 二,实验设备 计算机一台; 单片机实验仪一台; Keil C51和Proteus软件; 示波器。 三,实验内容 根据D/A转换、I2C总线工作的原理和PCF8591手册,从PCF8591的AOUT引脚输出一个如下图所示的三角波。提示:PCF8591芯片固定地址为1001。
四,实验源程序 七,实验总结及心得体会 通过本次实验增加了对软件的熟悉和使用,对电脑更加熟悉,加上了对课本上知识的了解和认识。
单片机源程序如下: - #include<reg52.h>
- #include<intrins.h>
- sbit SCL=P2^1; //I2C时钟线
- sbit SDA=P2^0; //I2C数据线
-
-
-
-
-
-
-
- void start() //定义起始信号函数
- {
- SDA=1;
- SCL=1;
- _nop_();
- _nop_();
- SDA=0;
- _nop_();
- _nop_();
- SCL=0;
- }
-
- void stop() //定义停止信号产生函数
- {
- SDA=0;
- SCL=0;
- _nop_();
- _nop_();
- SCL=1;
- _nop_();
- _nop_();
- SDA=1;
- }
-
- void rack() //定义应答检测函数
- {
- SCL=1;
- _nop_();
- _nop_();
- SCL=0;
- }
-
- void nack() //定义不应答信号产生函数
- {
- SDA=1;
- SCL=1;
- _nop_();
- _nop_();
- SCL=0;
- SDA=1;
- }
-
- void wbyte(unsigned char tmp) //写字节函数
- {
- unsigned char i;
- for(i=0;i<8;i++)
- {
- tmp=tmp<<1; //左移一位,移入CY
- SDA=CY; //移出位发送
- SCL=1;
- _nop_();
- _nop_();
- SCL=0;
- }
- rack();
- }
-
-
-
-
- void wdata(unsigned char dat)
- {
- unsigned char i;
- start();
- wbyte(0x90); //器件寻址
- wbyte(0x40);
- wbyte(dat); //写数据
- stop();
- for(i=0;i<255;i++); //每写一数据,
- for(i=0;i<255;i++); //都要延时
- }
-
- int main()
- {
- int i;
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
|