DAC0832波形发生器

  • DAC0832简介
  • 电路构建
  • 单片机代码
  • 效果截图

  使用51单片机和DAC0832构建按键波形发生器,按下不同的按键能够产生不同波形,可以产生波形为阶梯波、三角波、方波、正弦波。

DAC0832简介

  DAC0832是采样频率为八位的D/A转换器件,芯片内有两级输入寄存器,使DAC0832具备双缓冲、单缓冲和直通三种输入方式。

  1、单缓冲方式。单缓冲方式是控制输入寄存器和DAC寄存器同时接收资料,或者只用输入寄存器而把DAC寄存器接成直通方式。此方式适用只有一路模拟量输出或几路模拟量异步输出的情形。
  2、双缓冲方式。双缓冲方式是先使输入寄存器接收资料,再控制输入寄存器的输出资料到DAC寄存器,即分两次锁存输入资料。此方式适用于多个D/A转换同步输出的情节。
  3、直通方式。直通方式是资料不经两级锁存器锁存,即 CS*,XFER* ,WR1* ,WR2* 均接地,ILE接高电平。此方式适用于连续反馈控制线路和不带微机的控制系统,不过在使用时,必须通过另加I/O接口与CPU连接,以匹配CPU与D/A转换。

DAC0832的逻辑框图和引脚排列:

引脚简介:

D0~D7:数字信号输入端。ILE:输入寄存器允许,高电平有效。CS:片选信号,低电平有效。WR1:写信号1,低电平有效。XFER:传送控制信号,低电平有效。WR2:写信号2,低电平有效。IOUT1、IOUT2:DAC电流输出端。Rfb:是集成在片内的外接运放的反馈电阻。Vref:基准电压(-10~10V)。Vcc:是源电压(+5~+15V)。AGND:模拟地 NGND:数字地,可与AGND接在一起使用。

电路构建

单片机代码

#include<reg52.h>
#include<absacc.h>
#define uchar unsigned char
#define uint unsigned int
#define DAC 0x7fff //定义DAC端口地址
uchar code SINTAB[]={0x7F, 0x89, 0x94, 0x9F, 0xAA, 0xB4, 0xBE, 0xC8,0xD1, 0xD9,0xE0, 0xE7, 0xED,0xF2, 0xF7,0xFA, 0xFC, 0xFE, 0xFF};
uchar bdata Tbase = 0x20;
sbit KST = Tbase^0; //阶梯波标志
sbit KTRI = Tbase^1; //三角波标志
sbit KSQ = Tbase^2;  //方波标志
sbit KSIN = Tbase^3;//正弦波标志
sbit K1=P1^0; //K1健
sbit K2=P1^2; //K2键
sbit K3=P1^4; //K3键
sbit K4=P1^6; //K4键
//延时函数
void delay()
{  uchar i;for(i = 0; i<0xff;i++);
}
//阶梯波函数
void st()
{uchar i = 0;while(KST){XBYTE[DAC] = i++;//启动DAC}
}
//三角波函数
void tri()
{uchar i = 0;XBYTE[DAC] = i; //启动DACdo{XBYTE[DAC] = i;  //上升沿i++;}while(i<0xff);do{XBYTE[DAC] = i;//下降沿i--;}while(i>0x00);
}
//方波
void sq()
{XBYTE[DAC] = 0x00;//启动DACdelay();XBYTE[DAC] = 0xff;delay();
}
//正弦波
void sin()
{uchar i;for(i=0;i<18;i++){XBYTE[DAC] = SINTAB[i];//第一个1/4周期}for(i=18;i>0;i--){XBYTE[DAC] = SINTAB[i];//第二个1/4周期}for(i=0;i<18;i++){XBYTE[DAC] = ~SINTAB[i];//第三个1/4周期}for(i=18;i>0;i--){XBYTE[DAC] = ~SINTAB[i];//第一个1/4周期}
}
//主函数
main()
{EX0=1;IT0=1;EA=1;while(1){if(KST==1){st();}if(KTRI==1){tri();}if(KSQ==1){sq();}if(KSIN==1){sin();}}
}
//中断服务
int0() interrupt 0 using 1
{if(K1==0)  //判阶梯波键是否按下{Tbase = 0;KST = 1;}if(K2==0)  //判三角波键是否按下{Tbase = 0;KTRI = 1;}if(K3==0)  //判方波键是否按下{Tbase = 0;KSQ = 1;}if(K4==0)  //判正弦波键是否按下{Tbase = 0;KSIN = 1;}
}

效果截图

AT89C51使用DAC0832数模转换,波形发生器相关推荐

  1. 33220a 编程C语言,基于AT89C51单片机的数字式波形发生器(非常完整).doc

    摘要 本系统是基于AT89C51单片机的数字式波形发生器.采用AT89C51单片机作为控制核心,外围采用数字/模拟转换电路(DAC0832).运放电路(LM324).按键和LCD(1602)等.通过按 ...

  2. dac单缓冲方式C语言设计,课程设计基于DAC0832单缓冲工作波形发生器.doc

    课程设计基于DAC0832单缓冲工作波形发生器.doc 成绩 课程论文 题 目:基于DAC0832单缓冲工作波形发生器 学生姓名: 学生学号: 系别:电子工程学院 专业:通信工程 年级:2014 任课 ...

  3. 51单片机c语言dac0832产生波形,基于51单片机的DAC0832波形发生器设计

    波形发生器是一种常用的信号源,广泛的应用于电子电路.自动控制系统和教学实验等领域,是现代测试领域内应用最为广泛的通用仪器之一.在研制.生产.测试和维修各种电子元件.部件以及整机设备时,都需要有信号源. ...

  4. 【Proteus仿真】51单片机+DAC0832+LM358放大电路波形发生器

    [Proteus仿真]51单片机+DAC0832+LM358放大电路波形发生器 Proteus仿真 主程序代码 #include<reg52.h> //包含头文件 #include< ...

  5. 基于单片机信号波形发生器系统设计-毕设课设

    [资源下载]下载地址如下1533: https://docs.qq.com/doc/DTlRSd01BZXNpRUxl 前  言 随着电子测量技术与计算机技术的紧密结合,一种新的信号发生器-----波 ...

  6. 波形发生器设计c语言文件,超低频波形发生器的设计论文(C语言编程) .doc

    超低频波形发生器的设计论文(C语言编程) .doc 摘 要 在科学研究.工程教育及生产实践中,常常需要用到低频信号发生器.本文主要介绍一种以单片机为核心超低频任意函信号发生器.该信号发生器...采用数 ...

  7. 基于单片机波形发生器PCB原理图报告设计资料-基于单片机比赛计时计分电路仿真设计-基于单片机报警器与旋转灯设计-基于单片机八路数据电压采集报警控制系统-基于单片机病房呼叫系统控制系统设计【毕设课设资】

    1302基于单片机波形发生器PCB原理图报告设计资料-毕设课设原理图程序资料 设计一个信号发生器,能在单片机的基础上控制并产生三角波.方波.正弦波和矩形波,且频率幅度和波形可以通过按键改变. #inc ...

  8. 单片机课设基于51单片机的波形发生器(公开资源)(四种波形)(同时输出两种波形)

    单片机课设-波形发生器 前言 一.课设任务是什么? 二.如何解决这几个任务? 三.仿真原理图 四.代码 4.1 LCD1602代码 4.2 波形输出以及8*8点阵显示代码 4.3 波形选择 五.仿真源 ...

  9. 【STM32入门】这个项目绝了,用手势来产生波形,基于手势控制的波形发生器

    大家好,我是张巧龙,之前有给实验室学生出了一道关于STM32的题:基于手势控制的波形产生题,题目简单,但综合性较强. 有些学生完成的还不错,个人觉得此题用来 入门 STM32再合适不过了. 展示视频: ...

  10. 两波形相位差的计算值_如何将您的计算机用作任意波形发生器

    了解您的计算机如何用作任意波形发生器.在本文中,我们将使用Scilab生成数字信号,这些信号可以通过计算机的音频硬件转换为模拟波形. 最近我一直在撰写文章,证明Scilab用于各种信号处理任务.在这种 ...

最新文章

  1. AI项目对接第二期——缺陷检测
  2. Selenium3+MySQL数据库进行数据驱动测试
  3. Ubuntu下命令行cd进不了/home/用户目录
  4. jenkins pipeline python_Jenkins Pipeline示例
  5. [Java基础]函数式接口
  6. 阿里集团业务驱动的升级 —— 聊一聊Dubbo 3.0 的演进思路
  7. 【UOJ348】【WC2018】州区划分 状压DP FWT
  8. ios10 safari浏览器 在touchmove 里面写e.preventDefault(); 不起作用 的解决方法
  9. 面向对象编程思想---OOP
  10. js播放Amr音频_Mp3转Amr
  11. android支付宝支付界面设计,支付宝移动端App ui界面设计规范
  12. 璞华hawkeye点巡检设备平台系统
  13. win7您无权关闭计算机,win7不能关机的解决方法
  14. Android 秒表
  15. 微信小程序识别ios平台的底部黑杠padding
  16. Gabor滤波器特征提取原理讲解及c++实现
  17. 网络数据采集分析工具tcpdump定义抓包过滤器
  18. 【爬虫】Python2爬虫代码之获取金融品种行情数据
  19. Jlink命令行烧录
  20. linux中文输入法 2017,ubuntu 16.04 下安装并切换搜狗中文输入法

热门文章

  1. 新手安装arch安装界面wifi-menu连接不了wifi
  2. scroll-view实现下拉刷新(避免onload进入页面初始refresher-triggered为true触发下拉问题)
  3. freenom 加 cloudflare免费域名申请
  4. asp.net identity 基础概念篇-理解什么是声明
  5. 小白初上手HTML+CSS 仿写小米官网logo动画
  6. 调度算法学习_MIN-MIN及MAX-MIN算法
  7. 全网最详细numpy的argmin与argmax解析(一次性理解np.argmin)
  8. 梦中情盘!基于NextCloud搭建个人私有云!
  9. 关于C语言中的int - float 计算的问题
  10. eclipse安装tomcat时只有locahost,不显示server name