- 2024-04-20
-
发表了主题帖:
用EG2153做的电子变压器
本帖最后由 zxhcdm 于 2024-4-20 18:31 编辑
[localvideo]68c5ac64dfb16573ed8af02915e9ba24[/localvideo]
小弟用EG2153做了一款电子变压器,DC24V带负载4A时输出电压降到了21.5V,用EFD25卧式磁芯绕制;相同的磁芯做反激式的到2A电源就打嗝保护了
’
- 2024-04-18
-
回复了主题帖:
一个i/o口驱动发光二极管并扫描按键
程序修改了2天,终于弄好了
[localvideo]2fff33b5611aac8f17fc62c40e48cefd[/localvideo]
- 2024-04-16
-
回复了主题帖:
一个i/o口驱动发光二极管并扫描按键
wangerxian 发表于 2024-4-16 19:56
头一次见这样的电路,按键没按下的时候发光二极管是亮的?
STC15 PDF资料有这种电路
-
发表了主题帖:
一个i/o口驱动发光二极管并扫描按键
小弟学习51,单片机,根据网上资料试验了用STC15W204S做 一个i/o口驱动发光二极管并扫描按键的电路,程序烧入后按键没反应,请各位大侠不吝赐教程序有何问题,谢谢。
#include <STC15.H>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit LED1 = P1^0; //LED端口声明
sbit LED2 = P1^1;
sbit LED3 = P1^2;
sbit LED4 = P1^3;
uchar KeySec=0;//键值变量
/**********************************
1ms延时程序(仅限于STC15W 1T MCU)
**********************************/
void Delay1ms() //@12.000MHz
{
unsigned char i, j;
i = 12;
j = 169;
do
{
while (--j);
} while (--i);
}
/**********************************
按键扫描程序
**********************************/
void key_scan()
{
static uchar count=0;//静态计数变量
static bit sign_key=0; //静态标志位
uchar time_key,time_LED;//临时变量
// P1M0=0x00;//P1.0~3设置弱上拉
// P1M1=0x00;//P1.0~3设置弱上拉
time_LED=P1&0x0f;//保存4个LED状态
P1M0=0x00;//P1.0~3设置弱上拉
P1M1=0x00;//P1.0~3设置弱上拉
P1|=0x0f; //P1.0~3置高电平
if(P1&0x0f!=0x0f)//有键按下
{
if(++count>=10 && sign_key==0)//消抖
{
sign_key=1;//自锁
time_key=P1&0x0f;//保存P1.0~3状态
switch(time_key)
{
case 0x0e: KeySec=1; break;//输出键值
case 0x0d: KeySec=2; break;
case 0x0b: KeySec=3; break;
case 0x07: KeySec=4; break;
}
}
}
else //抬起
{
count=0;//计数变量清0
sign_key=0;//键态标志清0
}
P1&=0xf0; //P1.0~3清0
P1|=time_LED;//还原4个LED状态
P1M0=0x0f; //还原P1.0~3推挽设置
P1M1=0x00; //还原P1.0~3推挽设置
}
/*********************************
按键服务程序
*********************************/
void key_service()
{
switch(KeySec)
{
case 1: LED1=~LED1;KeySec=0;break;
case 2: LED2=~LED2;KeySec=0;break;
case 3: LED3=~LED3;KeySec=0;break;
case 4: LED4=~LED4;KeySec=0;break;
}
}
/********************************
主程序
********************************/
void main()
{
P1M0=0x0f;//P1.0~3设置推挽
P1M1=0x00;//P1.0~0设置推挽
LED1=0;
LED2=0;
LED3=0;
LED4=0;
while(1)
{
key_scan();
key_service();
Delay1ms();//控制主循环周期约1ms
}
}