• 大小: 88KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-02
  • 语言: 其他
  • 标签: 可调电源  

资源简介

基于51单片机的0·5V可调直流电源Proteus仿真,欢迎大家下载

资源截图

代码片段和文件信息

#include 
#include 
#include “timer.h“
#include “global.h“
#define delay4us() {_nop_();_nop_();_nop_();_nop_();}
#define vout 1
#define vset 0
#define vmode
sbit RS = P2^0;
sbit RW = P2^1;
sbit EN  = P2^2;

sbit DACSCLK = P2^3;
sbit DACCS = P2^4;
sbit DACDIN  = P2^5;

sbit CS  = P1^0;
sbit CLK = P1^1;
sbit DIO = P1^2;
sbit KEY1 = P3^6;
sbit KEY2 = P3^7;
#ifdef vmode
uchar Display_Buffer[] = “00.00V           “;
uchar code Line1[] = “Current Voltage:“;
#else
uchar Display_Buffer[] = “                “;
uchar code Line1[]     = “Current Speed:  “;
#endif
extern uint speed;
void Delayms(uint ms)
{
  uchar i;
while(ms--)
{
  for(i=0;i<120;i++);
}
}

uchar Busy_Check()
{
  uchar LCD_Status;
RS = 0;
RW = 1;
EN = 1;
Delayms(1);
    LCD_Status = P0;
EN = 0;
return LCD_Status;
}

void Write_LCD_Command(uchar cmd)
{
  while((Busy_Check()&0x80)==0x80);
RS = 0;
RW = 0;
EN = 0;
P0 = cmd;
EN = 1;
Delayms(1);
EN = 0;
}

void Write_LCD_Data(uchar dat)
{
  while((Busy_Check()&0x80)==0x80);
RS = 1;
RW = 0;
EN = 0;
P0 = dat;
EN = 1;
Delayms(1);
EN = 0;
}

void Initialize_LCD()
{
  Write_LCD_Command(0x38);
Delayms(1);
Write_LCD_Command(0x01);
Delayms(1);
Write_LCD_Command(0x06);
Delayms(1);
Write_LCD_Command(0x0c);
Delayms(1);
}

void ShowString(uchar xuchar yuchar *str)
{
  uchar i = 0;
if(y == 0)
Write_LCD_Command(0x80 | x);
if(y == 1)
Write_LCD_Command(0xc0 | x);
for(i=0;i<16;i++)
{
  Write_LCD_Data(str[i]);
}
}

uchar Get_AD_Result(uchar ch)
{
  uchar idat1=0dat2=0;
CS  = 0;
CLK = 0;
DIO = 1; _nop_(); _nop_();
CLK = 1; _nop_(); _nop_();
CLK = 0;

DIO = 1; _nop_(); _nop_();
CLK = 1; _nop_(); _nop_();
CLK = 0;
if(ch)
DIO = 1;
else
DIO = 0;
 _nop_(); _nop_();
CLK = 1; _nop_(); _nop_();
CLK = 0;

DIO = 1; _nop_(); _nop_();
for(i=0;i<8;i++)
{
  CLK = 1; _nop_(); _nop_();
CLK = 0; _nop_(); _nop_();
if(DIO) dat1 |=0x80>>i;
}
for(i=0;i<8;i++)
{
if(DIO) dat2 |=0x01< CLK = 1; _nop_(); _nop_();
CLK = 0; _nop_(); _nop_();
}  
CS = 1;
if (dat1 == dat2)
return dat1;
else
return 0x00;
}

void Set_DAC(uint dacvalue)
{
  uchar i;
uint dat;
dat = dacvalue;
dat &= 0x03ff;
DACCS  = 0;
DACSCLK = 0;

for(i=0;i<12;i++)
{
  if(dat & 0x0200)
DACDIN = 1;
else
DACDIN = 0;
DACSCLK = 1;
dat <<= 1;
DACSCLK = 0;
}
DACCS = 1;
}

void main()
{
  uchar B;
uint dv;
Initialize_LCD();
InitTimer();
Delayms(10);
v = 0x0100;
StartTimer(0);
B = 0;
while(1)
{
  d = Get_AD_Result(vset);
d &=0x00FF;  
Set_DAC(d*4);
d = Get_AD_Result(vout);
d &=0x00FF;
d = d*1000.0/255;
#ifdef vmode
if(d/1000)
Display_Buffer[0]=d/1000+‘0‘;
else
Display_Buffer[0]=‘ ‘;
Display_Buffer[1]=d/100%10+‘0‘;
Display_Buffer[3]=d/10%10+‘0‘;
Display_Buffer[4]=d%10+‘0‘;  
#else

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2015-04-18 20:24  可调直流电源Proteus仿真\
     目录           0  2015-04-18 20:24  可调直流电源Proteus仿真\code\
     文件       14563  2015-04-18 20:20  可调直流电源Proteus仿真\code\18
     文件        3295  2015-04-18 20:20  可调直流电源Proteus仿真\code\18.c
     文件        4846  2015-04-18 20:20  可调直流电源Proteus仿真\code\18.hex
     文件          50  2015-04-18 20:20  可调直流电源Proteus仿真\code\18.lnp
     文件        8529  2015-04-18 20:20  可调直流电源Proteus仿真\code\18.LST
     文件       17340  2015-04-18 20:20  可调直流电源Proteus仿真\code\18.M51
     文件       11714  2015-04-18 20:20  可调直流电源Proteus仿真\code\18.OBJ
     文件         982  2009-08-12 17:07  可调直流电源Proteus仿真\code\18.opt.bak
     文件         380  2015-04-18 20:24  可调直流电源Proteus仿真\code\18.plg
     文件        2134  2009-08-12 17:07  可调直流电源Proteus仿真\code\18.Uv2.bak
     文件       57720  2015-04-18 20:24  可调直流电源Proteus仿真\code\18.uvopt
     文件       13554  2014-03-31 21:35  可调直流电源Proteus仿真\code\18.uvproj
     文件       57724  2014-05-12 21:23  可调直流电源Proteus仿真\code\18_uvopt.bak
     文件       13226  2014-03-30 21:48  可调直流电源Proteus仿真\code\18_uvproj.bak
     文件          54  2013-11-27 18:41  可调直流电源Proteus仿真\code\global.h
     文件         785  2014-03-31 21:21  可调直流电源Proteus仿真\code\timer.c
     文件         108  2014-03-31 20:49  可调直流电源Proteus仿真\code\timer.h
     文件        2918  2014-04-04 16:51  可调直流电源Proteus仿真\code\timer.LST
     文件        3560  2014-04-04 16:51  可调直流电源Proteus仿真\code\timer.OBJ
     文件      125126  2014-04-18 17:45  可调直流电源Proteus仿真\Last Loaded 直流电源.DBK
     文件      123438  2015-04-18 20:23  可调直流电源Proteus仿真\直流电源.DSN
     文件         768  2015-04-18 20:24  可调直流电源Proteus仿真\直流电源.PWI

评论

共有 条评论

相关资源