⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 text.c

📁 基于数字电位器做的DC/DC电压转换器
💻 C
字号:
// DC/DC
// 输入电压为9V
// R2=3k,当R1为5k时 电压输出2V
//		 当R1为1k时 电压输出5V

#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char

sbit CS=P1^0;
sbit UD=P1^1;
sbit INC=P1^2;

uchar count;

void delay(uint a)			//延时1ms
{
	uint x,y;
	for(x=a;x>0;x--)
		for(y=113;y>0;y--);
}

void store_positon()			//存储当前位置
{
	INC=1;
	delay(1);
	CS=0;
	CS=1;
	delay(1);
}

void x9c103_up(uchar num)		//增大电阻
{
	uchar i;
	for(i=0;i<num;num++)
	{
		UD=1;
		delay(1);
		INC=1;
                delay(1);
		INC=0;
		delay(1);
		count--;
	}
	store_positon();
}

void x9c103_down(uchar num1)		//减小电阻
{
	uchar j;
	for(j=0;j<num1;num1++)
	{
		UD=0;
		delay(1);
		INC=1;
                delay(1);
		INC=0;
		delay(1);
		count++;
	}
	store_positon();
}

void x9c103_init()				//初始化x9c103,使输出2V电压	R2=3K
{
	CS=0;
	x9c103_down(99);
	x9c103_up(50);
	count=0;
}

uchar keyscan()					//按键扫描
{
	uchar hang,lie;
	P0=0x0f;
	lie=P0&0x0f;
	if(lie!=0x0f)
	{
		delay(5);
		if(lie!=0x0f)
		{
			lie=P0&0x0f;
			P0=lie|0xf0;
			hang=P0&0xf0;	
			return(hang+lie);
		}
	}
	return(0xff);
}

void keychar(uint num)				//0,1,4,5分别为电压加减 1V  0.075V 无按键按下时保存位置
{
   switch(num)
	{		
		case 0xee: x9c103_down(13);break;
		case 0xed: x9c103_down(1);break;
	
		case 0xde: x9c103_up(13);break;
		case 0xdd: x9c103_up(1);break;
		case 0xff: ;break;
	}
}

	
void init()
{
 	x9c103_init();
}

void main()
{
	init();
	while(1)
	{		
		keychar(keyscan());
		if((count>=40)|(count<0))					//R1为1K即电压为5V时复位
		 	x9c103_init();
		delay(1000);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -