- DAC0832的介绍
- DAC0832与51单片机使用实例
- 实例proteus仿真
- 实例代码
1.DAC0832的介绍:
主要特性:(1) 分辨率:8位
(2) 电流稳定时间1us
芯片引脚:
: 片选
ILE:输入寄存器允许,高电平有效
:写信号,当,,ILE同时有效时,D0~D7 >>> 输入寄存器
: 传送控制
Rfb:反馈电阻
Vref: 基准电压
2.DAC0832与51单片机使用实例
实例分析:片选连接到P27 所以DAC0832的端口地址为 0x7FFF;(P27为0,其它P20~P26,P00~P07为1) ,通过给端口地址不同的值,控制U0输出不同的电压值,通过51单片机自带的定时器达到周期性的电压输出;
3.实例proteus仿真:
仿真中遇到困难:(1)LM324有些型号不能进行仿真
(2)示波器关闭之后不知道打开
解决方法:(1)使用SPICE Library 为“NATOA”的LM324
(2)
仿真运行时点击解决;
4.实例代码
#include "reg51.h"
#include <absacc.h>void T1_50ms_Init(void);
unsigned char N50ms=0,N=0; //N50ms多少个50ms, N多少个0.5s 范围(0-4)void main()
{T1_50ms_Init();while(1){;//等待中断函数执行}
}//定时器1 50ms定时初始化
void T1_50ms_Init(void)//晶振12MHZ
{TMOD = 0x10;//方式选择定时器1 16位定时器TH1 = 0x3C; //65536-50000 = 15536 转化为16进制 3CB0TL1 = 0xB0;EA = 1; //开启总中断ET1 = 1;//开启定时器1中断TR1 = 1;//开启定时器1计数
}
//定时器1 中断函数
void T1_50ms(void) interrupt 3
{N50ms++;if(N50ms==10)//0.5s{N++;N50ms = 0;if(N==1){XBYTE[0x7fff]=0x66;//输出2V 102/256 * 5V = 2V}else {XBYTE[0x7fff]=0x00;//输出0V 0/256 * 5V = 2Vif(N==4)//2s到 一个周期结束 N清零{N=0;}}}
}
运行结果:
代码百度网盘下载 提取码:0411
仿真百度网盘下载 提取码:0411