标题:
单片机TLC5615可调直流电源仿真及源程序
[打印本页]
作者:
51黑ff
时间:
2016-9-26 13:37
标题:
单片机TLC5615可调直流电源仿真及源程序
给51黑电子论坛的朋友分享一个51单片机+TLC5615数模转换器实现的可调直流稳压电源.
键盘使用说明:
1:按下 MODE 键,在键盘和旋钮之间切换
键盘模式
1:按下 SET 键
2:按下 0--9.99之间的电压值
3:按下 ENTER 键
旋钮模式
1:调节可调电阻,电压随之改变
下面是TLC5615可调直流稳压电源的仿真原理图:
0.png
(41.81 KB, 下载次数: 72)
下载附件
2016-9-26 13:32 上传
0.png
(55.13 KB, 下载次数: 60)
下载附件
2016-9-26 13:31 上传
所有资料包含仿真工程文件和源码下载:
可调直流电源键盘输入.zip
(141.99 KB, 下载次数: 144)
2016-9-26 13:36 上传
点击文件名下载附件
下载积分: 黑币 -5
部分源程序预览:
#include <reg52.h>
#include <intrins.h>
#include "timer.h"
#include "key.h"
#include "lcd.h"
#include "global.h"
#include "adcdac.h"
#define delay4us() {_nop_();_nop_();_nop_();_nop_();}
#define vout 1
#define vset 0
#define vmode
#define MODE_B 1
#define MODE_A 0
bit workmode;
//sbit KEY1 = P3^6;
//sbit KEY2 = P3^7;
/*
typedef struct
{
union {uint I; uchar C[2];}tempval1;
union {uint I; uchar C[2];}tempval2;
}sData;
sData D; */
void Delayms(uint ms)
{
uchar i;
while(ms--)
{
for(i=0;i<120;i++);
}
}
void main()
{
uchar B;
uchar temp;
uint d,v;
Initialize_LCD();
InitTimer();
Delayms(10);
v = 0x0100;
StartTimer(0);
B = 0;
workmode = MODE_A;
while(1)
{
KEYPORT = 0xf0;
if(KEYPORT != 0xf0)
{
temp = Keys_Scan();
keyhandle(temp);
}
if(workmode==MODE_A)
{
d = Get_AD_Result(vset);
d &=0x00FF;
Set_DAC(d*4);
d = d*1000.0/255;
strcpy(Display_Buffer1 , "SetVoltage:");
if(d/1000)
{
Display_Buffer1[11]=d/1000+'0';
Display_Buffer1[12]=d/100%10+'0';
Display_Buffer1[13]='.';
Display_Buffer1[14]=d/10%10+'0';
Display_Buffer1[15]=d%10+'0';
}
else
{
Display_Buffer1[11]=d/100%10+'0';
Display_Buffer1[12]='.';
Display_Buffer1[13]=d/10%10+'0';
Display_Buffer1[14]=d%10+'0';
Display_Buffer1[15]=' ';
}
d = Get_AD_Result(vout);
d &=0x00FF;
d = d*1000.0/255;
strcpy(Display_Buffer0 , "OutVoltage:");
if(d/1000)
{
Display_Buffer0[11]=d/1000+'0';
Display_Buffer0[12]=d/100%10+'0';
Display_Buffer0[13]='.';
Display_Buffer0[14]=d/10%10+'0';
Display_Buffer0[15]=d%10+'0';
}
else
{
Display_Buffer0[11]=d/100%10+'0';
Display_Buffer0[12]='.';
Display_Buffer0[13]=d/10%10+'0';
Display_Buffer0[14]=d%10+'0';
Display_Buffer0[15]=' ';
}
DisplayUpdate();
}
else
{
if((updateflag)&&(!setenable))
{
d = Get_AD_Result(vout);
d &=0x00FF;
d = d*1000.0/255;
if(d/1000)
{
Display_Buffer0[11]=d/1000+'0';
Display_Buffer0[12]=d/100%10+'0';
Display_Buffer0[13]='.';
Display_Buffer0[14]=d/10%10+'0';
Display_Buffer0[15]=d%10+'0';
}
else
{
Display_Buffer0[11]=d/100%10+'0';
Display_Buffer0[12]='.';
Display_Buffer0[13]=d/10%10+'0';
Display_Buffer0[14]=d%10+'0';
Display_Buffer0[15]=' ';
}
DisplayUpdate();
}
}
}
}
复制代码
作者:
重中之重2
时间:
2020-4-13 00:20
运行很成功
作者:
hmgqljz111
时间:
2020-4-13 11:10
谢谢楼主分享
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1