51单片机 | 使用D/A转换器实现三角波发生器
————————————————————————————————————————————
D/A转换器
- CS=0、ILE=1时,WR1信号有效时将数据总线上的信号写入8位输入锁存器
- XFER=0时,WR2信号有效时将输入寄存器的数据转移到8位DAC寄存器中,输出量随之改变
工作方式:
- 直通工作方式(如下实验)
- 当某一根地线或地址译码器的输出线使CS有效(低电平),ILE高电平,同时WR1/XFER/WR2为低电平时,单片机数据线上的数据字节直通D/A转换器,被转换并输出
- CS、WR1接引脚,通过软件置低电平
- VCC、VREF、ILE接POWER
- WR2、XFER、RFB、GND*2接GND
- 单缓冲方式
- 仅适用于只有一路模拟量输出或几路模拟量输出但并不要求同步的系统
- ILE、VCC接POWER
- CS、XFER接单片机引脚,输入寄存器和DAC寄存器地址都是7FFFH
- WR1、WR2接单片机WR引脚,单片机写信号
- 当单片机对DAC0832执行一次写操作,则把一个字节数据直接写入DAC寄存器中,输出的模拟量随之变化

- 双缓冲方式
- 当多路D/A转换接口要求同步进行D/A转换输出时必须采用双缓冲方式。DAC0832数字量的输入锁存和D/A转换输出时分两步完成的。即CPU的数据总线分时输出数字量并锁存在各D/A转换器的输入寄存器中;然后CPU对所有D/A转换器发出控制信号,各输入寄存器→DAC寄存器,实现同步转换输出。
- 每一路模拟输出量需要一片DAC0832
- DAC0832(1)的输出锁存器地址0DFFFH
DAC0832(2)的输出锁存器地址0BFFFH
两个DAC0832的DAC寄存器地址同为7FFFH

————————————————————————————————————————————
基于DAC0832的三角波发生器实验
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
实验说明:
- 用DAC0832芯片制作一个信号发生器,输出一个三角波信号
- 采用直通工作方式

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
接线说明:
|
DAC0832 |
DI0-DI7 |
89C51 |
P0.0-P0.7 |
8位数据输入输出 |
|
CS |
P3.7/RD |
输入寄存器选择信号 |
||
|
WR1 |
P3.6/WR |
输入寄存器写选通信号 |
||
|
WR2/XFER/GND*2/ |
其他 |
GND |
WR2和XFER始终低电平 |
|
|
VREF/VCC/ILE |
POWER |
ILE始终允许锁存 |
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
实现代码:
#include <reg52.h>
typedef unsigned char uchar;
typedef unsigned int uint;
sbit cs = P3 ^ ;
sbit wr = P3 ^ ;
void Delay(uchar m)
{
while(m--);
}
void main()
{
uchar k = ; //设置k的初始值为0
cs = ; //当CS与WR1端置低电平时做好写数据的准备,只要P0口有数据输出,DAC0832将会转换成模拟信号
wr = ;
while() //通过输出值在 0-255和255-0之间变化,通过示波器可以看到模拟信号的情况
{
while() //输出值在0-255之间变化
{
P0 = k++; //输出k且k+1
Delay();
if (k == 0xff) //到达255时结束循环
break;
}
while() //输出值在255-0之间变化
{
P0 = k--; //输出k且k-1
Delay();
if (k == 0x00) //到达0时结束循环
break;
}
}
}

51单片机 | 使用D/A转换器实现三角波发生器的更多相关文章
- 基于51单片机+DAC0832的信号发生器
最近帮别人设计一个毕业设计,做一个多种信号发生器(四种波形:方波.三角波.锯齿波.梯形波),现在贴上来给大家参考,如果有错误的地方,望指出~ 下面先贴上仿真的电路图(仿真的软件是Protuse,上传一 ...
- 51单片机学习笔记(郭天祥版)(1)——单片机基础和点亮LED灯
关于单片机型号的介绍: STC89C52RC40C-PDIP 0721CV4336..... STC:STC公司 89:89系列 C:COMS 52(还有51,54,55,58,516,):2表示存储 ...
- 51单片机——My-Clock项目
技术:51单片机.光敏传感器.PCF8591.DHT11.DS1302.OLED显示屏 概述 项目My-Clock是一个环境监测时钟,接入光敏传感器和温湿度传感器监测环境信息,加入DS1302模块 ...
- Windows 通用应用尝试开发 “51单片机汇编”总结
一.前言 终于完成windows通用应用“51单片机汇编”,半年前开始玩WindowsPhone开发的第一个真正意义上的App(还很多缺点=_=).开发从1月中旬考完试到今天,期间实习了半个月,玩了几 ...
- 51单片机中断interrupt……using……
51单片机中断细节的一些问题. interrupt0:外部中断0interrupt1:定时器中断0interrupt2:外部中断interrupt3:定时器中断1interrupt4:串口 using ...
- Windows 通用应用尝试开发 “51单片机汇编”第二次更新总结
一.前言 昨天更新了10天前上架到windows8.1平台和windowsphone平台的通用应用“51单片机汇编”,总要是添加了动态磁贴以及ListView的Groupstyle应用.下面主要主要复 ...
- [新概念51单片机C语言教程·郭天祥] 1、 基础知识必备
目录: 单片机的大致介绍 1-1.通俗定义 1-2.51系列产品 1-3.标号意思 1-4.引脚介绍 1-5.用C语言开 ...
- [51单片机] HC-SR04超声波测距仪 基础代码
>_<:超声波测距仪模块: >_<:51单片机,11.0592MHz晶振,将采集数据发送到串口的基础例子: >_<:代码: /******************* ...
- 51单片机的堆栈指针(SP)
堆栈指针(SP,Stack Pointer),专门用于指出堆栈顶部数据的地址. 那么51单片机的堆栈在什么地方呢?由于单片机中存放数据的区域有限,我们不能够专门分配一块地方做堆栈,所以就在内存(RAM ...
随机推荐
- C语言中的“>>”和“<<”
http://baike.1688.com/doc/view-d1750791.html C语言中的“>>”和“<<” [标签:程序设计] 浏览次数:68937提问时间:200 ...
- 查看gcc/g++默认include路径
转自:http://gcc.gnu.org/ml/gcc-help/2007-09/msg00205.html `gcc -print-prog-name=cc1plus` -v `g++ -prin ...
- css伪类元素:after 的多功能用法——任意大小的底边框
需求用法出现的背景: 由于项目UI的优化,项目中所有tab导航选中的状态都是统一样式书写的,之前都是用的border-bottom,新的需求如果用以前的本办法就是定位一个选中边框在底部,但是涉及的模板 ...
- MSSQL取得或删除重复数据
1.取得不重复的数据 select * from Persons where Id in ( SELECT MAX(Id) AS Expr1 FROM Persons GROUP BY Name, G ...
- (3)新概念英语一(11-20)lessons
12 13 14 15 16 17 18无单词 19 20
- Python的程序结构[1] -> 方法/Method[4] -> 魔术方法 __call__ / __str__ / __repr__
__call__ 方法 __call__ 是当对象被调用时会调用的方法,允许一个对象(类的实例等)像函数一样被调用,也可以传入参数. 1 class Foo(): 2 def __init__(sel ...
- 洛谷 P4538 收集邮票
题目描述 有n种不同的邮票,皮皮想收集所有种类的邮票.唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且买到的邮票究竟是n种邮票中的哪一种是等概率的,概率均为1/n.但是由于凡凡也很喜欢邮票,所 ...
- 【bzoj1562】【[NOI2009]变换序列】匈牙利算法的性质利用
(上不了p站我要死了,侵权度娘背锅) Description Input Output Sample Input 5 1 1 2 2 1 Sample Output 1 2 4 0 3 HINT 30 ...
- Android Studio+WebApi(一)属于我们自己的App
AndroidStudio(以后都简称AS),作为google的亲儿子,终于出了个像样的android ide,再也不用在eclipse中又是Adt,又是这又是那的,一大堆的集成了.废话不多说,这个系 ...
- Microsoft Office Excel 2007 使用笔记
1.显示表格边框: 选择要显示边框的单元格,点击“开始”选项卡中的“边框”图标,选中下拉框中的“所有框线” 2.单元格内,文字自动换行: 点击“开始”选项卡中的“自动换行”按钮 3.单元格内,文字手动 ...