zxhcdm

  • 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         } }    

最近访客

< 1/4 >

统计信息

已有36人来访过

  • 芯积分:65
  • 好友:--
  • 主题:4
  • 回复:20

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言