找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4601|回复: 5
收起左侧

单片机数控电源1602

  [复制链接]
ID:198608 发表于 2019-5-10 10:17 | 显示全部楼层 |阅读模式
1、基本要求
1)输出电范围02000mA
2可按键设置输出电压值值,要求输出电压与给定值偏差的绝对值≤给定值的1+10 mA
3具有+”、“-”步进调整功能,步进0.1V;
4三极管作调整输出,实现最低电压输出0V
5)纹波电压≤10mV
本电源主要由数控部分和稳流输出部分组成
1.数控部分
数控部分主要有数字电路构成,它要完成键盘控制,LCD1602液晶显示输出的电压值,短路保护等功能。因此采用STC89C51单片机作为整机的控制单元,通过改变TLC5615的输入数字量来改变输出电压值,从而使输出功率管的基极电压发生变化,间接地改变输出电流的大小。采用软件方法来解决数据的预置以及电电压的步进控制,使系统硬件更加简洁,各类功能易于实现,能很好地满足题目的要求。
2. 稳流输出部分
    这部分是将控制部分送来的电流控制字数据转换成稳定电流输出。电压控制电路采用数控的方式,利用单片机送出数字量,经过D/A转换转变成模拟信号,再送到大功率三极管进行放大。单片机系统实时对输出电流进行监控,采用数字方式作为反馈调整环节,由程序控制调节功率管的输出电压恒定。
QQ截图20190510100203.png
QQ截图20190510100436.png
QQ截图20190510100517.png
QQ截图20190510100759.png QQ截图20190510100650.png
部分代码:
uchar code tab1[]={"Welcome to use  "};         //固定字符
uchar code tab2[]={"adj power supply"};                //固定字符
uchar code tab3[]={"Voltage:     . V"};                //固定字符
uchar code tab4[]={"                "};                //固定字符
uchar code tab5[]={"Short circuit!!!"};                //固定字符
uchar code tab6[]={"Please restart!!"};                //固定字符
//延时函数,后面经常调用
void delay(uint xms)//延时函数,有参函数
{
        uint x,y;
        for(x=xms;x>0;x--)
         for(y=121;y>0;y--);
}
/********液晶写入指令函数与写入数据函数,以后可调用**************/
/*在这个程序中,液晶写入有关函数会在DS1302的函数中调用,所以液晶程序要放在前面*/
void write_1602com(uchar com)//****液晶写入指令函数****
{
        RS=0;//数据/指令选择置为指令
        RW=0; //读写选择置为写
        P0=com;//送入数据
        delay(1);
        EN=1;//拉高使能端,为制造有效的下降沿做准备
        delay(1);
        EN=0;//en由高变低,产生下降沿,液晶执行命令
}
void write_1602dat(uchar dat)//***液晶写入数据函数****
{
        RS=1;//数据/指令选择置为数据
        RW=0; //读写选择置为写
        P0=dat;//送入数据
        delay(1);
        EN=1; //en置高电平,为制造下降沿做准备
        delay(1);
        EN=0; //en由高变低,产生下降沿,液晶执行命令
}
void lcd_init()//***液晶初始化函数****
{
        uchar p;
        write_1602com(0x38);//设置液晶工作模式,意思:16*2行显示,5*7点阵,8位数据
        write_1602com(0x0c);//开显示不显示光标
        write_1602com(0x06);//整屏不移动,光标自动右移
        write_1602com(0x01);//清显示
        write_1602com(0x80);//日历显示固定符号从第一行第1个位置之后开始显示
        for(p=0;p<16;p++)
        {
                write_1602dat(tab1[p]);//向液晶屏写日历显示的固定符号部分
        }
        write_1602com(0xc0);//时间显示固定符号写入位置,从第2个位置后开始显示
        for(p=0;p<16;p++)
        {
                write_1602dat(tab2[p]);//写显示时间固定符号,两个冒号
        }
        delay(1000);
        write_1602com(0x80);//日历显示固定符号从第一行第1个位置之后开始显示
        for(p=0;p<16;p++)
        {
                write_1602dat(tab3[p]);//向液晶屏写日历显示的固定符号部分
        }
        write_1602com(0xc0);//时间显示固定符号写入位置,从第2个位置后开始显示
        for(p=0;p<16;p++)
        {
                write_1602dat(tab4[p]);//写显示时间固定符号,两个冒号
        }

}


QQ截图20190510100419.png
QQ截图20190510100612.png

评分

参与人数 1黑币 +20 收起 理由
chenyj + 20 很给力!

查看全部评分

回复

使用道具 举报

ID:380985 发表于 2019-7-16 07:37 来自手机 | 显示全部楼层
很好,学习参考的好资料
回复

使用道具 举报

ID:380985 发表于 2019-7-16 07:39 来自手机 | 显示全部楼层
坑人,大家别下了
回复

使用道具 举报

ID:436177 发表于 2019-10-25 09:37 来自手机 | 显示全部楼层
楼主,有没有PCB啊?
回复

使用道具 举报

ID:436177 发表于 2019-10-25 09:37 来自手机 | 显示全部楼层
还有能发个仿真的压缩包吗?
回复

使用道具 举报

ID:816313 发表于 2020-9-12 16:10 | 显示全部楼层
能发下程序吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表