標題: 數(shù)控可調(diào)直流穩(wěn)壓電源程序 [打印本頁]

作者: 大哥大雷神    時間: 2016-11-14 21:04
標題: 數(shù)控可調(diào)直流穩(wěn)壓電源程序
#include "reg52.h"

//宏定義
#define uchar unsigned char
#define uint  unsigned int

//按鍵定義
sbit KEY1= P2^0;
sbit KEY2= P2^1;
sbit KEY3= P2^2;
sbit KEY4= P2^3;

//數(shù)碼管定義
sbit W4= P2^4;
sbit W3= P2^5;
sbit W2= P2^6;
sbit W1= P2^7;

//DAC定義
sbit  CS_5615=P3^2;
sbit CLK_5615=P3^3;
sbit DAT_5615=P3^4;

//報警指示定義
sbit led = P3^6;
sbit Duan= P3^7;

uint  U;
uchar flag=0;
uint  a=0;

uchar code table[]=
{
        0xc0,/*0*/
        0xf9,/*1*/
        0xa4,/*2*/
        0xb0,/*3*/
        0x99,/*4*/
        0x92,/*5*/
        0x82,/*6*/
        0xf8,/*7*/
        0x80,/*8*/
        0x90,/*9*/
};        //共陽數(shù)碼管段碼表        沒有小數(shù)點 0~9
uchar code table1[]=
{

        0x40,/*0*/
        0x79,/*1*/
        0x24,/*2*/
        0x30,/*3*/
        0x19,/*4*/
        0x12,/*5*/
        0x02,/*6*/
        0x78,/*7*/
        0x00,/*8*/
        0x10,/*9*/
        0xe3 /*U*/
};//帶小數(shù)點的編碼            0~9


void delay_ms(uint z)                          //延時函數(shù)
{
  uint a,b;
  for(a=z;a>0;a--)
   for(b=5;b>0;b--);
}

void  shuma(uint buf)
{
        uchar a,b,c,d;
        a=buf/1000;
        b=buf%1000/100;
        c=buf%100/10;
        d=buf%10;

        W2=W3=W4=1;        W1=0;
        P0=table[a];
        delay_ms(60);

        W1=W3=W4=1; W2=0;
        P0=table1[b];
        delay_ms(60);

        W1=W2=W4=1; W3=0;
        P0=table[c];
        delay_ms(60);

        W1=W2=W3=1; W4=0;
        P0=table1[d];
        delay_ms(60);
}

void tlc_5615(uint buf)
{
        uint a,c;
        c=buf;   
    CS_5615=0;
        for(a=16;a>0;a--)
        {
         DAT_5615=c>>15;      
         c=c<<1;
         CLK_5615=1;
         CLK_5615=0;                
    }
        CLK_5615=1;
        CLK_5615=0;
        CLK_5615=1;
        CLK_5615=0;
        CS_5615=1;
}

//主函數(shù)
void main(void)
{
        uchar n,i;
        n=5;
        U=0;
        led=0;
        delay_ms(3000);
        led=1;
        while(1)
        {                
    tlc_5615(U);
                shuma(U/n*10);
                if(flag==0)
                {
                        if(KEY1==0)
                        {
                                shuma(U/n*10);
                                shuma(U/n*10);
                                shuma(U/n*10);
                                shuma(U/n*10);
                                shuma(U/n*10);
                                if(KEY1==0)
                                {
                                        if(U<120*n)                         //最大電壓
                                        U=U+n;
                                        else if(U>=120*n)
                                        {
                                                led=0;
                                                for(i=0;i<50;i++)
                                                shuma(U/n*10);
                                                led=1;
                                        }

                                }       
                        }
                        if(KEY2==0)
                        {
                                shuma(U/n*10);
                                shuma(U/n*10);
                                shuma(U/n*10);
                                shuma(U/n*10);
                                shuma(U/n*10);
                                if(KEY2==0)
                                {
                                        if(U>=n)
                                        U=U-n;
                                }       
                        }                       
                        if(KEY3==0)
                        {
                                shuma(U/n*10);
                                shuma(U/n*10);
                                shuma(U/n*10);
                                shuma(U/n*10);
                                shuma(U/n*10);
                                if(KEY3==0)
                                {
                                        U=50*n;       
                                }       
                        }       
                        if(KEY4==0)
                        {
                                shuma(U/n*10);
                                shuma(U/n*10);
                                shuma(U/n*10);
                                shuma(U/n*10);
                                shuma(U/n*10);
                                if(KEY4==0)
                                {
                                        U=0;
                                }       
                        }
                }
                if(Duan==0)
                {
                        delay_ms(10);
                        if(Duan==0)
                        {
                                flag=1; //過流標志置高
                                led=0;
                                U=0;
                                tlc_5615(0);       
                        }       
                }                       
        }
}


作者: admin    時間: 2016-11-14 21:23
有電路圖嗎?
作者: 大哥大雷神    時間: 2016-12-23 11:18
admin 發(fā)表于 2016-11-14 21:23
有電路圖嗎?

有原理圖呢
作者: cqhejian    時間: 2017-2-28 18:24
請問有沒有電原理圖呢?謝謝
作者: jamyg    時間: 2017-5-1 21:21
沒原理,沒電路圖,,
作者: gdlai    時間: 2017-9-12 13:52
,正在了解這方面的內(nèi)容,先給個記號。
作者: xymiss    時間: 2017-9-30 22:19
這東西。得留個印。期待圖紙
作者: GUOXUAN    時間: 2017-12-9 11:39
求老師給相應圖紙.求完整圖紙.謝謝!
作者: 大哥大雷神    時間: 2018-9-20 11:19
有啊
,等下我發(fā)上來




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1