找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6900|回复: 2
收起左侧

基于51单片机的DAC0832的D/A转换Proteus仿真实验

[复制链接]
ID:407638 发表于 2019-6-15 22:14 | 显示全部楼层 |阅读模式
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
B9}AX[WT)W[QT323AH1JAW8.png

实验要求
    单片机输出的数字量D0~D7加到DAC0832的输入端,用虚拟直流电压表测量DAC0832的电流输出经运放LM358N的IV转换后的电压值,并使用虚拟直流电压表查看输出电压的变化。仿真运行,可看到虚拟直流电压表测量的电压在-2.5V~0V范围内变化。如果由于电压表太小显示的电压值不清楚,可用鼠标滚轮放大电路原理图。
    实验目的
    掌握单片机与DAC0832的接口设计和软件编程。知识点
    DA转换器DAC0832的性能、内部结构以及工作原理。DAC0832是采用先进的CMOS工艺制成的单片机电流输出型8位DA转换器。它采用的是R-2R电阻梯型网络完成DA转换。电平
    接口与TTL兼容,具有两级输入数字量缓存。
源程序代码:
#include "reg52.h"    //此文件中定义了单片机的一些特殊功能寄存器
typedef unsigned int u16;   //对数据类型进行声明定义
typedef unsigned char u8;
//--定义使用的IO口--//
sbit PWM=P2^1;
bit DIR;
//--定义一个全局变量--//
u16 count,value,timer1;
/*******************************************************************************
* 函 数 名         : Timer1Init
* 函数功能     : 定时器1初始化
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void Timer1Init()
{
TMOD|=0X10;//选择为定时器1模式,工作方式1,仅用TR1打开启动。
TH1 = 0xFF;
TL1 = 0xff;   //1us
  
ET1=1;//打开定时器1中断允许
EA=1;//打开总中断
TR1=1;//打开定时器   
}

/*******************************************************************************
* 函 数 名       : main
* 函数功能   : 主函数
* 输    入       : 无
* 输    出      : 无
*******************************************************************************/
void main()
{
Timer1Init();  //定时器1初始化
while(1)
{
  if(count>100)      
  {  
   count=0;
   if(DIR==1)        //DIR控制增加或减小
   {
     value++;
   }   
   if(DIR==0)
   {
     value--;
   }
   
  }
  if(value==1000)
  {
    DIR=0;
  }
  if(value==0)
  {
    DIR=1;
  }
   
  if(timer1>1000)  //PWM周期为1000*1us
  {
   timer1=0;
  }
  if(timer1 <value)
  {
   PWM=1;
  }
  else
  {
   PWM=0;
  }  
}  
}
/*******************************************************************************
* 函 数 名       : Time1
* 函数功能   : 定时器1的中断函数
* 输    入       : 无
* 输    出       : 无
*******************************************************************************/
void Time1(void) interrupt 3    //3 为定时器1的中断号  1 定时器0的中断号 0 外部中断1 2 外部中断2  4 串口中断
{
TH1 = 0xFF;
TL1 = 0xff;   //1us
timer1++;
    count++;

}

0.png

全部资料51hei下载地址:
新建 WinRAR ZIP 压缩文件.zip (18.34 KB, 下载次数: 73)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:567677 发表于 2019-6-20 11:34 | 显示全部楼层
给的代码都不对应好不好
回复

使用道具 举报

ID:493455 发表于 2019-6-21 14:02 | 显示全部楼层
本帖最后由 捂耳听风 于 2019-6-22 09:12 编辑

大佬们,我刚用这个软件。那个总线怎么画的啊,我百度找了好久也不知道怎么画。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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