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 ...
随机推荐
- apache快速配置简易网站
网站源文件目录 F:\01.prj\site\static_html F:\01.prj\site\static_html 打开apache_http.conf 1 .修改网站目录 错误1 Alias ...
- 《Linux命令、编辑器与shell编程》第三版 学习笔记---000
Linux概述 1.具有内核编程接口 2.支持多用户(同时) 3.支持多任务 4.支持安全的分层文件系统 a.标准 b.链接 c.权限 5.shell(命令解释器和编程语言) a.文件名生成(通配符和 ...
- C++ MFC std::string转为 std::wstring
std::string转为 std::wstring std::wstring UTF8_To_UTF16(const std::string& source) { unsigned long ...
- Mina框架的学习笔记——Android客户端的实现
Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络 ...
- 先刷一波简单的web前端面试题
1简述一下src与href的区别href 是指向网络资源所在位置,建立和当前元素(锚点)或当前文档(链接)之间的链接,用于超链接.src是指向外部资源的位置,指向的内容将会嵌入到文档中当前标签所在位置 ...
- 第十四届华中科技大学程序设计竞赛 K Walking in the Forest【二分答案/最小化最大值】
链接:https://www.nowcoder.com/acm/contest/106/K 来源:牛客网 题目描述 It's universally acknowledged that there'r ...
- 动态规划-最长上升子序列(LIS模板)多解+变形
问题描述 一个数的序列bi,当b1 < b2 < ... < bS的时候,我们称这个序列是上升的.对于给定的一个序列(a1, a2, ..., aN),我们可以得到一些上升的子序列( ...
- 几何【P2313】 [HNOI2005]汤姆的游戏
顾z 你没有发现两个字里的blog都不一样嘛 qwq 题目描述--->p2313 [HNOI]汤姆的游戏 分析 说不上是分析. 数据范围给出来,这题明显暴力啊emmm. 个人认为的坑点. 这题不 ...
- [入门OJ3876]怎样学习哲学
题目大意: 有一个$n\times m(n,m\leq 10^9)$的网格图,从一个点可以到下一行中列数比它大的点.有$k(k\leq 2000)$个点是不能走的,问从第$1$行到第$n$行共有几种方 ...
- nat的翻译类型(1)--静态nat
目的:在1.1 1.2 1.3 三台内网的服务器访问外网的服务器(202.1.1.2)时,将内网ip转换为外网ip. 1.设置内网三台服务器的Ip ,网关,以及外网服务器的ip网关 分别为:192.1 ...