直流稳压源 的程序及仿真图
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
#include
#define dac0832 XBYTE[0X7fff] //DAC位置定义,跟据实际原理图而定unsigned char code shu[]=; //数码管码值表
float s;
/*******************DAC0832控制位的定义,视实际原理图而定*************/ sbit ALE=P3^0; //DAC0832 ALE脚工作脉冲位定义
sbit START=P3^1; //DAC0832 START位定义
sbit EOC=P3^2; //转换结束标志位
sbit OE=P3^3; //输出允许位
sbit SHCP=P2^0; //数码管驱动芯片(如595)位定义
sbit DS=P2^1; //同上
sbit STCP=P2^2; //同上
sbit P11=P3^5;
sbit P12=P3^7;
sbit clk=P2^6; //DAC0832 工作脉冲
/************************************************/
unsigned char j,k,m,n,i,a;
unsigned int b;
void delay(unsigned char t)
{ while(t--);
}
void display() //静态数码管的显示
{
j=0x01;
for(i=0;i<8;i++)
{ if((shu[m]&j)==0)
else
SHCP=1;
SHCP=0;
j<<=1;
}
P12=0;
P11=1;
STCP=0;
STCP=1;
delay(200);
j=0x01;
for(i=0;i<8;i++)
{ if((shu[n]&j)==0)
else
SHCP=1;
SHCP=0;
j<<=1;
}
P11=0;
P12=1;
STCP=0;
STCP=1;
delay(200);
}
void main()
{
P2=0X87;
/////////定时器1初始化//////////////// TMOD=0X20;
TH1=0X06;
TL1=0X06;
EA=1;
ET1=1;
TR1=1;
while(1)
{
//DAC0832地址锁存脉冲
ALE=1;
ALE=0;
//DAC0832 开始转换脉冲
START=1;
START=0;
while(EOC==0); //等待转换完毕
OE=1; //开始读
k=P1; //读数据
a=P1; //读数据
b=a*6;
m=b/1000; //取千位数
n=b%1000/100; //取百位数
dac0832=k;
display(); //数码管显示
}
}
void time() interrupt 3 //DAC0932脉冲{
clk=!clk; //位取反