📄 text.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 + -