目前一直在学怎么做基于单片机的数控电源,仿真如下,本来想做一个2v-15v,但是怎么调,要么起始电压是2.5多伏,要么最大电压也是13.9而已,怎么让起始电压跟最大电压符合要求呢?,程序如下,自己没把显示部分做出来。 #include
#define uint unsigned int
#define uchar unsigned char
#define DAC0832_PORT P1
sbit duanxuan=P2^6;
sbit weixuan=P2^5;
sbit cs=P2^2;
sbit wr1=P2^3;
sbit S1=P2^0;//加
sbit S2=P2^1;//减
uchar num=20;
uchar code table={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};
void delay(uint z) //延时z ms子程序
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
init()//初始化子函数
{
P1=num;
}
uchar keyscan()//键盘扫描程序
{
if(S1==0)
{
delay(10); //键盘按键消抖
if(S1==0)
{
if(num==150)
{
num=20;
}
else
{
num++;
}
}
while(!S1); //松手检测
}
if(S2==0)
{
delay(10);
if(S2==0)
{
if(num==20)
{
num=150;
}
else
{
num--;
}
}
while(!S2); //松手检测
}
return(num);
}
void display()//显示程序
{
duanxuan=1;
P0=table;//十位
duanxuan=0;
weixuan=1;
P0=0x80;
weixuan=0;
delay(1);
duanxuan=1;
P0=((table)&0xfe);//个位
duanxuan=0;
weixuan=1;
P0=0x40;
weixuan=0;
delay(1);
duanxuan=1;
P0=table;//小数
duanxuan=0;
weixuan=1;
P0=0x20;
weixuan=0;
delay(1);
}
uchar dazh( uchar n)//D/A转换子程序
{ cs=0;选定芯片
wr1=0;允许写入
n=num-13;输出电压值
DAC0832_PORT=n; //把n送给給DA
}
// 主程序 //
void main()
{
init();
while(1)
{ keyscan();
display();
dazh();
}
}