at89s52单片机电源设计。
一:设计要求。
1)输出电压:范围0~+9.9v,精度0.01v;
2)输出电流:0~1a;精度1ma;
3)输出电压、电流值及设置的输出电压、电流。
值可视;4)输出电压、电流的增减可通过面板进行。
设置;(5)过流过压保护作用。
二:系统设计。
采用at89s52单片机作为整机的控制单元,经过整流滤波后,一路电压经过7805稳压得到一个+5v电压,该电压作为单片机的工作电源,另外一路电压直接作为开关变换电路的输入电压。单片机根据键盘输入值和取样值之间的差值,修改脉冲占空比,并输出控制功率开关管,以便得到期望的输出电压值,并根据模/数转换器所采样的电压和键盘输入比较,根据差值调用pid算法再次修改脉宽使输出电压稳定。通过adc0832进行模数转换,间接用单片机实时对电压进行采样,然后进行数据处理及显示。
此系统比较灵活,采用软件方法来解决数据的预置以及电压的步进控制,使系统硬件更加简洁,各类功能易于实现,能很好地满足题目的要求。
三:单元电路的设计。
1. 稳压直流。
基于lm7805ct三端稳压器,输出直流+5v给单片机、a/d转换提供工作电压。
2. 采样电路。
电流采样:靠近接地端为1k欧姆。
电压采样。3. a/d转换电路。
4. 显示电路。
四:原理图。
五:程序设计。
1. 软件流程。
#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit cs=p3^0;//对adc0832进行位定义
sbit di=p3^2;
sbit do=p3^2;
sbit clk=p3^1;
uchar readad[2];
void adc0832(unsigned char channel);
void adc0832(uchar channel)//对0832的操作:首先进行传输数据前的定义,严格按照时序,
//其次开始传数据,如果达到了8位,从新开始传
uchar i=0; /最后开始收数据 ,不管是传数据还是收数据,都要有一个完整的时钟脉冲
uchar j;//对数据值的定义 //数据每次只能传输一位
uint dat=0传数据是从最高位开始将寄存器的数据发送完,接着从低位开始发,比较2次发送的数据是否一样
uchar ndat=0; /如果一样则接收如果不一样则淘汰
if(channel==0)channel=2; if(channel==1)channel=3;
di=1;
nop_()
nop_()
cs=0; /拉低cs端
nop_()
nop_()
clk=1; /拉高clk
nop_()
nop_()
clk=0; /拉低clk形成下降沿1
nop_()
_nop_()
clk=1;
di=channel&0x1;
nop_()
nop_()
clk=0; /形成下降沿2
nop_()
_nop_()
clk=1;
di=(channel>>1)&0x1;
nop_()
nop_()
clk=0; /形成下降沿3
di=1; /控制指令结束
nop_()
nop_()
dat=0; /将dat初始化
for(i=0;i<8;i++)从高位开始发数据
dat|=do;//接收数据
clk=1;
nopnop_()
clk=0;
_nopnop_()形成一次时钟脉冲,数据传一位
dat<<=1;//将所收到的数据进行左移一位
if(dat==7) /如果所收到的数据达到了8位。
dat|=do;//接着收数据
for(i=0;i<8;i++)从低位开始发数据
j=0; j=j|do;//或者是j|=do...开始收数据
clk=1;
nop_()
nop_()
clk=0; /形成一次时钟脉冲
nop_()
nop_()
j=j<<7;
ndat=ndat|j;
if(j<7)
ndat>>=1;//得到的这位数据向左移7位
cs=1;
clk=0;
do=1; /回到初始状态
readad[0]=dat;
readad[1]=ndat;
#include #define reg0 xbyte[0x0000]//通过宏定义将液晶的初始化设置,写指令,写数据
#define reg1 xbyte[0x0001]//读指令,读数据代替,可以直接调用
#define reg2 xbyte[0x0002]
#define reg3 xbyte[0x0003] uchar bdata busyflag;
uchar dat,datn,count;
uchar word1[16]=;
code uchar word2[16]=;
code uchar word3[16]=;
sbit busyflag_7=busyflag^7; /液晶的初始化//
void busy() do
busyflag=reg1;
while(busyflag_7);
void wrc( uchar wcon)
busy();检测液晶是否处于工作状态
reg0=wcon; /写指令
void wrd(uchar wdat)
busy();
reg2=wdat;//写数据
void rdd()/读数据
busy();
dat=reg3;
void lcdint() 液晶的初始化指令。
电子实训作业文件
目录。实训安排。电子产品装配实训安排表1 基础技能。基本技能焊接工艺作业文件2 综合技能。项目组装任务分配表。任务一电子产品组装认识6 任务二元器件检测8 任务三元器件插装与焊接13 任务四调试与故障排除17 任务五整机调试报告20 任务六实训总结与体会23 实训评分24 实训规章制度。1 不迟到 ...
电子实训心得体会
电子实训是我进入大学以来的第二次实训,对于实训的大体框架有一定的了解和认知。但电子实训对我来说可谓是一个全新的领域,从来没有过这么近距离接触它的机会。因此,对于这次实训我充满了向往。带着无限的遐想和十足的激情,我开始走进了它。实训开始了,没有想象中那样紧锣密鼓,第一个整天全部用来查资料。这下使同学们...
电子实训心得体会
学院 机电工程学院。班级 机械116 学号 2011090304 姓名 王小文。一 光阴荏苒,岁月如梭,一个月的时光就这样匆匆从指间流逝。从开始接触电工电子实习,到自己制作网球状音响,一个月来受益匪浅 收获颇丰。电工电子实习的主要目的是培养学生的动手能力。对一些常用的电子设备有一个初步的了解,能够自...