获取全套资源,请见后文说明…
设计要求
- 5V单电源工作;
- 电压输出范围为基准输入电压2倍,本设计调节范围为:0V~3.9V;
- 电压调整精度达0.02%;
- 两种调压方式:自动模式和手动模式;
- 3路电压输出通道,且可分别单独控制;
- 当电压超出设定范围时,自动报警;
TLC5615简介
TLC5615是带有缓冲基准输入(高阻抗)的10位电压输出数字-模拟转换器(DAC),DAC具有基准电压两倍的输出电压范围,且DAC是单调变化的。器件使用简单,用单5V电源工作。
系统概述
多路可调TLC5615数控直流电源由51单片机最小系统,3路TLC5615电压数模转换电路、数码管显示模块、4*4矩阵键盘和报警模块组成。
自动模式
单片机控制3路直流电压输出,数码管实时显示当前路数以及该路输出的电压值,按键控制路数的切换和电压大小的设定,报警模块则监测输出电压是否超出最高设定值(3.9V)。
数字量通过矩阵键盘输入后,经TLC5615数模芯片转换,输出模拟量直流电压,电压调整范围为0.1V。
当设定值大于3.9V时,报警模块LED灯点亮,同时数码管显示0.0,提示重新修改输入值。
手动模式
将某一路开关SW打至左边,则该路电压的输出由滑动变阻器控制。
手动模式下,电压输出不再受51单片机、数模转换芯片和矩阵键盘的控制。整个电压输出电路由滑动变阻器、运算放大器和PNP三极管组成。
系统仿真电路图
仿真结果分析
-
通过矩阵键盘,设置第2路通道的输出电压为2.8V,结果如下。
-
当键盘设定电压输出值为4.2V(大于3.9V)时,按下确认键后,数码管显示0.0,LED报警灯点亮,电压实际输出为0.02V≈0V。
-
点击SW2,将开关打至左边,此时电压的输出由滑动变阻器控制,不再由单片机控制,本例中输出电压为1.95V。
部分C代码
void main(void) //主程序
{
// timer0_init(); //初始化定时器0
while(1)
{
key_scan(); //调用键盘扫描函数
TLC5615_DA_1(val_1); //处理键盘发送过来的值
TLC5615_DA_2(val_2);
TLC5615_DA_3(val_3);
switch(choice_flag)
{
case 1 : display(Vol_1+num_1-1); break;
case 2 : display(Vol_2+num_2-1); break;
case 3 : display(Vol_3+num_3-1); break;
}
}
}
void timer0_isr(void) interrupt 1 // timer0中断服务函数
{
//数码管的位选变量
TR0 = 0; //停止计数
TL0 = (65536-5000)%256; //重新载入计数器初值
TH0 = (65536-5000)/256;
//位循环变量加1
if(cp >= 4)
cp = 0;
switch(choice_flag)
{
case 1: deal(val_1);break;
case 2 : deal(val_2);break;
case 3: deal(val_3);break;
}
// deal(5698); //循环显示1次,j清零
TR0 = 1;
// deal(val_1);
// delay(100);
P0=0xff; //与j对应,P2输出数码管的位选信号
switch(cp)
{
case 0: P0 = 0xc1;break;
case 1: P0 = LED[shi];break;
case 2: P0 = LED[bai]&0x7f;break;
// case 3: P0 = 0xbf;break;
case 3: P0 = LED[choice_flag];break;
}
P2 = Bit_sel[cp];
cp++;
}
分享的资源有
(1)C程序 ;
(2)Proteus仿真文件 ;
(3)TLC5615芯片手册 ;
(4)程序设计流程图;
全套资源如下
获取多路可调TLC5615数控直流稳压电源系统设计,Proteus仿真、C程序、Visio流程图、TLC5615等参考资料,请搜索关注我的公众号:交院小智