微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 单片机可控0-30V可调电源

单片机可控0-30V可调电源

时间:11-30 来源:互联网 点击:
CPU电路图



显示电路


控制板电路图


程序
#include // 包含型号头文件

//#include

#include // 包含"位"操作头文件

#include

#include

#include

#include

#include

#include

#define uchar unsigned char

#define uint unsigned int

#define TRUE 1

#define FALSE 0

#define ad_Temp_flag 0x03 // 温度转换通道

#define ad_Vout_flag 0x04 // 电压转换通道

#define ad_Iout_flag 0x05 // 电流转换检测

#define FAN_ON (PORTB_Bit3 = 1) // FAN 开

#define FAN_OFF (PORTB_Bit3 = 0) // FAN 关

#define D1_ON (PORTA_Bit0 = 0) // D1 开

#define D1_OFF (PORTA_Bit0 = 1) // D1 关

#define D2_ON (PORTA_Bit1 = 0) // D2 开

#define D2_OFF (PORTA_Bit1 = 1) // D2 关

#define D3_ON (PORTA_Bit2 = 0) // D3 开

#define D3_OFF (PORTA_Bit2 = 1) // D3 关

#define D4_ON (PORTB_Bit2 = 0) // D4 开

#define D4_OFF (PORTB_Bit2 = 1) // D4 关

#define D5_ON (PORTA_Bit6 = 0) // D5 开

#define D5_OFF (PORTA_Bit6 = 1) // D5 关

#define D6_ON (PORTA_Bit7 = 0) // D6 开

#define D6_OFF (PORTA_Bit7 = 1) // D6 关

#define DATA164_ON (PORTB_Bit1 = 1) // 74HC164 DATA=1

#define DATA164_OFF (PORTB_Bit1 = 0) // 74HC164 DATA=0

#define CLK164_ON (PORTB_Bit0 = 1) //

#define CLK164_OFF (PORTB_Bit0 = 0) //

#define Temp_out_lo 0x339 // -5℃ 41.56K

#define Temp_out_hi 0x10e // 50℃ 3.588K

uint ad_Temp_result; // 温度转换结果

uint ad_Vout_result; // 电压转换结果

uint ad_Iout_result; // 电流转换结果

uint Vout_disp;

uint Iout_disp;

uint Iout_adj;

uchar time_cnt1;

uchar adc_get_flag;

//#pragma vector=0x10;

//__interrupt void TIMER2_OVF_Server(void);

void mcu_init(void); // I/O初始化,PWM初始化

void adc_init(void); // ADC初始化

uint adc_get(uchar adc_ch); // 启动AD转换,并返回转换值

void Vout_adc_get(void); // 电压检测

void Temp_adc_get(void); // 温度检测

void Iout_adc_get(void); // 电流检测

//数码管显示代码定义

__flash uchar disp_led[10] @0x0040 =

{

0x0a, // 0

0x7b, // 1

0x4c, // 2

0x58, // 3

0x39, // 4

0x98, // 5

0x88, // 6

0x5b, // 7

0x08, // 8

0x18, // 9

};

/******************************************************************************/

//延时函数

void delay_1us(void) // 1us延时函数

{

asm("nop");

}

void delay_nus(uchar n) // N us延时函数

{

for(;n>0;n--)

{

delay_1us();

}

}

// 内部晶振频率为8MHz

void delay_1ms(void) // 1ms延时函数

{

uint i;

for(i=1142;i>0;i--); // 8*143-2

}

void delay_nms(uchar n) // N ms延时函数

{

for(;n>0;n--)

{

asm("wdr"); // 喂狗

delay_1ms();

}

}

/*******************************************************************************

函数名:mcu_init()

作用:I/O初始化,PWM初始化

输入:无

返回值:无

*******************************************************************************/

void mcu_init(void)

{

SREG |= 0x80; // 全局中断使能

DDRB = 0x0f; // PB口全部为输出

PORTB = 0x04; // 初始化PB口

DDRA = 0xc7; // PA3,PA4,PA5为输入

PORTA = 0xc7; // 初始化PA口

CLKPR = 0x80; // CLKPCE=1 修改系统时钟分频使能

CLKPR = 0x00; // 1分频

TCCR1B = 0x00; // TIMER1停止计数

TCNT1H = 0x40; // 初值高8位

TCNT1L = 0x00; // 初值低8位

TIMSK1_Bit0 = 1; // TIMER1使能

D1_OFF;

D2_OFF;

D3_OFF;

D4_OFF;

D5_OFF;

D6_OFF;

TCCR1B = 0x01; // TIMER1开始计数,1分频

}

/*******************************************************************************

函数名:adc_init()

作用:adc初始化

输入:无

返回值:无

*******************************************************

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top