|
pads画的数控开关电源原理图和PCB图如下:(51hei附件中可下载工程文件)
制作出来的实物图如下:
电压调节是小数点后两位。
/分255级控制
//3个按键:1.加键 长按连加 2.减键 长按连减 3.读出预存键 长按保存当前电压
单片机源程序如下:
#include "stc15w204s.h"
#include "flash.h"
#define MAIN_Fosc 12000000 //定义主时钟
typedef unsigned long u32; //32位无符号整型数
typedef unsigned int u16; //16位无符号整型数
typedef unsigned char u8; //8位无符号整型数
/************* 本地常量声明 **************/
#define Pin0 0x01 //IO引脚 Px.0
#define Pin1 0x02 //IO引脚 Px.1
#define Pin2 0x04 //IO引脚 Px.2
#define Pin3 0x08 //IO引脚 Px.3
#define Pin4 0x10 //IO引脚 Px.4
#define Pin5 0x20 //IO引脚 Px.5
#define Pin6 0x40 //IO引脚 Px.6
#define Pin7 0x80 //IO引脚 Px.7
#define PinAll 0xFF //IO所有引脚
/************* 本地变量声明 **************/
sbit r7 = P3^0;
sbit r6 = P3^1;
sbit r5 = P3^2;
sbit r4 = P3^3;
sbit r3 = P3^6;
sbit r2 = P3^7;
sbit r1 = P1^0;
sbit r0 = P1^1;
sbit Kai = P1^2;
sbit K1 = P1^4;
sbit K2 = P1^5;
sbit K3 = P5^4;
u8 KeySta[2] = {1, 1}; //矩阵按键的当前状态
u16 KeyDownTime[2]= {0, 0}; //矩阵按键按下时间
u8 Zi=0xff; //
/************* 本地函数声明 **************/
void ConfigTimer2(u8 ms);
void KeyDriver(); //按键状态处理
void KeyAction(u8 i);
void ShuChu(); //数值输出到管脚
void main(void)
{
//IO口初始化
P1M1 |= (Pin0+Pin1);
P1M0 |= (Pin0+Pin1); //P1.0-P1.1脚定义为开漏模式
P3M1 |= (Pin0+Pin1+Pin2+Pin3+Pin6+Pin7);
P3M0 |= (Pin0+Pin1+Pin2+Pin3+Pin6+Pin7); //P3.0-P3.7脚定义为开漏模式
ConfigTimer2(5); //初始化定时器ms
EA = 1; //允许全局中断
Zi=eeprom_read(0) ; // 读保存在Flash中的电压值
ShuChu(); //数值输出到管脚
_nop_ ();
_nop_ ();
_nop_ (); //等待3个指令周期
Kai=0; //开启LM2576控制端
while (1)
{
KeyDriver(); //按键处理
}
}
|
评分
-
查看全部评分
|