本文主要介绍数控直流稳压电源的设计,对其中涉及的D/A转换、单片机等也有详细介绍。将单片机数字控制技术, 有机地融入直流稳压电源的设计中, 就能设计出一款高性价比的多功能数字化通用直流稳压电源。
AD按键采集程序
/**************键值判断*******************************/
if (f>4.590&f<4.650)
{ printf("K1按下\n\n");}
else if (f>4.500&f<4.550)
{ printf("K2按下\n\n");}
else if (f>4.400&f<4.490)
{ printf("K3按下\n\n");}
else if (f>4.200&f<4.350)
{ printf("K4按下\n\n");}
else if (f>3.700&f<4.100)
{ printf("K5按下\n\n");}
else if (f>3.000&f<3.500)
{ printf("K6按下\n\n");}
else
Delay1ms(1000);
电路原理图如下:
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- #include"STC12C5A60S2.H"
- #include"12C5A60S2.H"
- #include "DA.h"
- #include "nokia_5110.h"
- #include "TLC24C02.H"
- void main()
- {
- unsigned int da,n;
- unsigned int ADV,V,ADA,A;
- unsigned int a;
- LCD_init();
- LCD_clear();
- x24c02_init(); //初始化
- LCD_write_chinese_string(0,0,12,2,2,0); // 电压
- LCD_write_chinese_string(0,2,12,2,0,0); // 电流
- da=x24c02_read(2); //读出保存的数据赋于XX
- while(1)
- {
- /******************************************************************************/
- da5615DA(da); //改变电压
- DELAY_MS(30); //按键延时
-
- /*******************************************************************************/
- Read_init1(0); //采集电压
- ADV=Read();
- ADV=ADV*1.96;
- V=((float)ADV*11.68);
- /**********************************************************************/
- if((V>220)&(V<560)) // 2.2V~5.6V电压调整
- {
- V=V-80; //80=-0.8V
- LCD_printc(26,0,V/1000+48);
- LCD_printc(34,0,V%1000/100+48);
- LCD_printc(42,0,'.');
- LCD_printc(50,0,V%100/10+48);
- LCD_printc(58,0,V%10+48);
- LCD_printc(67,0,'V');
- }
- /*************************************************************/
- if((V>570)&(V<800)) // 5.7V~8.0V电压调整
- {
- V=V-30; //30=-0.3V
- LCD_printc(26,0,V/1000+48);
- LCD_printc(34,0,V%1000/100+48);
- LCD_printc(42,0,'.');
- LCD_printc(50,0,V%100/10+48);
- LCD_printc(58,0,V%10+48);
- LCD_printc(67,0,'V');
- }
- /*************************************************************/
- if((V>850)&(V<1200)) // 8.5V~12.00V电压调整
- {
- V=V-10; //10=-0.1V
- LCD_printc(26,0,V/1000+48);
- LCD_printc(34,0,V%1000/100+48);
- LCD_printc(42,0,'.');
- LCD_printc(50,0,V%100/10+48);
- LCD_printc(58,0,V%10+48);
- LCD_printc(67,0,'V');
- }
- /*****************************************************************/
- else // 12V~15V电压调整
- { V=V+30; //30=+0.3V
- LCD_printc(26,0,V/1000+48);
- LCD_printc(34,0,V%1000/100+48);
- LCD_printc(42,0,'.');
- LCD_printc(50,0,V%100/10+48);
- LCD_printc(58,0,V%10+48);
- LCD_printc(67,0,'V');
-
- }
- /******************************************************************************/
- Read_init2(1); //采集电流
- ADA=Read();
- ADA=ADA*1.96;
- A=((float)ADA*3.1);
- A=A-10;
- LCD_printc(26,2,A/100+48);
- LCD_printc(34,2,A%100/10+48);
- LCD_printc(42,2,A%10+48);
- LCD_printc(50,2,'M');
- LCD_printc(58,2,'A');
-
- /******************************************************************************/
- Read_init(2); // AD按键扫描 P1.2口
- a=Read();
- n=a*1.96;
- DELAY_MS(10);
- /*****************************切换键*************************************/
- if((n>280)&(n<320))
- {
- da=da+2;
- DELAY_MS(30);
- if(da>=260)
- da=30;
-
- }
- /******************************按键加**************************************/
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
恒压源程序.rar
(62.83 KB, 下载次数: 226)
|