找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6203|回复: 1
打印 上一主题 下一主题
收起左侧

PCF8591输出三角波 单片机D/A转换实验报告

[复制链接]
跳转到指定楼层
楼主
ID:273662 发表于 2018-1-9 11:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
实验报告
课程名称 单片机原理与接口技术实验   实验名称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。

四,实验源程序
七,实验总结及心得体会
通过本次实验增加了对软件的熟悉和使用,对电脑更加熟悉,加上了对课本上知识的了解和认识。

单片机源程序如下:
  1. #include<reg52.h>
  2. #include<intrins.h>                                                      
  3. sbit SCL=P2^1;                                           //I2C时钟线
  4. sbit SDA=P2^0;                                           //I2C数据线







  5. void start()                                                         //定义起始信号函数
  6. {
  7.               SDA=1;
  8.               SCL=1;
  9.               _nop_();
  10.               _nop_();
  11.               SDA=0;
  12.               _nop_();
  13.               _nop_();
  14.               SCL=0;
  15. }

  16. void stop()                              //定义停止信号产生函数
  17. {
  18.               SDA=0;
  19.               SCL=0;
  20.               _nop_();
  21.               _nop_();
  22.               SCL=1;
  23.               _nop_();
  24.               _nop_();
  25.               SDA=1;
  26. }

  27. void rack()                                           //定义应答检测函数
  28. {                           
  29.               SCL=1;
  30.               _nop_();
  31.               _nop_();
  32.               SCL=0;
  33. }

  34. void nack()                             //定义不应答信号产生函数
  35. {                           
  36.               SDA=1;
  37.               SCL=1;
  38.               _nop_();
  39.               _nop_();
  40.               SCL=0;
  41.     SDA=1;
  42. }

  43. void wbyte(unsigned char tmp)              //写字节函数
  44. {
  45.               unsigned char i;
  46.               for(i=0;i<8;i++)
  47.               {            
  48.                             tmp=tmp<<1;                             //左移一位,移入CY
  49.                             SDA=CY;                                                          //移出位发送
  50.                             SCL=1;
  51.                             _nop_();
  52.                             _nop_();
  53.                             SCL=0;
  54.               }
  55.               rack();
  56. }




  57. void wdata(unsigned char dat)
  58. {                                                                     
  59.                             unsigned char i;
  60.                             start();                                                                                                  
  61.                             wbyte(0x90);                             //器件寻址
  62.                             wbyte(0x40);
  63.                             wbyte(dat);                             //写数据
  64.                             stop();
  65.                             for(i=0;i<255;i++);              //每写一数据,
  66.                             for(i=0;i<255;i++);               //都要延时
  67. }

  68. int main()
  69. {
  70.               int i;
  71. ……………………

  72. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码


所有资料51hei提供下载:
D-A转换(PCF8591).doc (672.02 KB, 下载次数: 96)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:1103233 发表于 2023-12-15 09:29 | 只看该作者
全部代码是在附件里面吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表