找回密码
 立即注册
查看: 515|回复: 11

pwm输出调试完成,上机给NMOS管给到LED .反了!!!

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:353
  • 最近打卡:2025-05-04 01:05:06
已绑定手机

130

主题

1522

回帖

1871

积分

金牌会员

积分
1871
发表于 2024-7-2 15:38:49 | 显示全部楼层 |阅读模式
pwm输出调试完成,上机给NMOS管给到LED .反了!!!

用单独的led输出测试好好的.
但是上了NMOS AO3400,结果反了.本来是12340档.现在变成 4321 没有0了
是MOS管问题还是???
单独LED 用的共阳.
NMOS 也是用的 截图202407021538443147.jpg
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:294
  • 最近打卡:2025-03-06 09:25:41

8

主题

318

回帖

1835

积分

金牌会员

积分
1835
发表于 2024-7-2 15:51:24 | 显示全部楼层
上示波器看看IN1波形
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:365
  • 最近打卡:2025-05-02 00:20:03

6

主题

319

回帖

2206

积分

金牌会员

积分
2206
发表于 2024-7-2 16:10:41 | 显示全部楼层
都是小问题,学好基础再做应用.搞技术忌浮躁
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:353
  • 最近打卡:2025-05-04 01:05:06
已绑定手机

130

主题

1522

回帖

1871

积分

金牌会员

积分
1871
发表于 2024-7-2 16:12:47 | 显示全部楼层
Lkck*** 发表于 2024-7-2 15:51
上示波器看看IN1波形

没有示波器
我看手册上面有提到什么D版,什么翻转之类的
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:353
  • 最近打卡:2025-05-04 01:05:06
已绑定手机

130

主题

1522

回帖

1871

积分

金牌会员

积分
1871
发表于 2024-7-2 16:14:14 | 显示全部楼层
wnag*** 发表于 2024-7-2 15:55
如果LED正极接电源,负极接NMOS,那么输出1LED灭,输出0LED亮

这个怎么处理哦?
我用8G1K的SOP8上手电驱动的,没办法用8H
就不能用16位的pwm
只能用8位,也够我用了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:353
  • 最近打卡:2025-05-04 01:05:06
已绑定手机

130

主题

1522

回帖

1871

积分

金牌会员

积分
1871
发表于 2024-7-2 16:15:06 | 显示全部楼层
网*** 发表于 2024-7-2 16:10
都是小问题,学好基础再做应用.搞技术忌浮躁

没有人指点,学起来真真有点难
C语言,单片机.手册和视频加百度
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:353
  • 最近打卡:2025-05-04 01:05:06
已绑定手机

130

主题

1522

回帖

1871

积分

金牌会员

积分
1871
发表于 2024-7-2 16:18:05 | 显示全部楼层
wnag*** 发表于 2024-7-2 15:55
如果LED正极接电源,负极接NMOS,那么输出1LED灭,输出0LED亮

我用开发板, 正极电源,负极接IO口并没有问题
换成mos管就不行了
正极接LED ,负极接NMOS 的漏极D ,,G级接IO口,S接地
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:365
  • 最近打卡:2025-05-02 00:20:03

6

主题

319

回帖

2206

积分

金牌会员

积分
2206
发表于 2024-7-2 16:23:06 | 显示全部楼层
vb2*** 发表于 2024-7-2 16:15
没有人指点,学起来真真有点难
C语言,单片机.手册和视频加百度

你测试LED灯时候,有没有接NMOS?
加了NMOS电路后,相当于多加了个反相器,
如果是这个原因,只能说明你对基础硬件电路太不了解了.
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:353
  • 最近打卡:2025-05-04 01:05:06
已绑定手机

130

主题

1522

回帖

1871

积分

金牌会员

积分
1871
发表于 2024-7-2 16:39:50 | 显示全部楼层
网*** 发表于 2024-7-2 16:23
你测试LED灯时候,有没有接NMOS?
加了NMOS电路后,相当于多加了个反相器,
如果是这个原因,只能说明你对基础 ...

有点概念了
就是说我正常是 0亮  1灭
加了nmos管了.就边 0灭, 1亮
NMOS类似于取反了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:353
  • 最近打卡:2025-05-04 01:05:06
已绑定手机

130

主题

1522

回帖

1871

积分

金牌会员

积分
1871
发表于 2024-7-2 16:44:53 | 显示全部楼层
wnag*** 发表于 2024-7-2 16:22
IO输出的是高低电平,NMOS栅极输入高电平,CS两端电阻接近0,NMOS栅极输入低电平,CS两端电阻接近无穷大, ...
  1. #include <STC8G.H>
  2. #include "intrins.h"
  3.   
  4. #define MAIN_Fosc 11059200UL
  5. typedef unsigned char u8;
  6. typedef unsigned int u16;
  7. unsigned char PWM_SAVE;
  8. sbit KEY1 = P3^2;
  9. bit key_flag;
  10. unsigned char PWM_MODE;
  11. unsigned char time_out;
  12. unsigned char ld=0;
  13. unsigned char gear = 0;
  14. unsigned char noShiftTime = 0; // 自上次换挡以来的时间  
  15. void pwm_init(void);
  16. void delayms(u16 ms);       
  17. void pwm_init(void)
  18. {
  19.        
  20.     CCON = 0x00;
  21.     CMOD = 0x08;
  22.     CL = 0x00;
  23.     CH = 0x00;
  24.     CCAPM1 = 0x42;
  25.     PCA_PWM1 = 0x00;
  26.     CCAP1L = ld;                  
  27.     CCAP1H = ld;
  28.         CR=1;       
  29. //        while(1);
  30. }
  31. void Timer0_ISR() interrupt 1
  32.         {  
  33. if (noShiftTime < 3000 )   noShiftTime++;
  34. }  
  35. void timer0_init() {  
  36.    
  37.     TMOD &= 0xF0;
  38.     TMOD |= 0x01;
  39.     TH0 = (65536 - 50000) / 256;   
  40.     TL0 = (65536 - 50000) % 256;  
  41.     ET0 = 1; // 开启Timer0中断  
  42.     EA = 1;  // 开启全局中断  
  43.     TR0 = 1; // 启动Timer0  
  44. }  
  45.   
  46. void delayms(u16 ms)
  47. {
  48.         u16 i;
  49.         do{
  50.                 i = MAIN_Fosc /10000;
  51.                 while(--i);
  52.         }while(--ms);
  53. }
  54. void main()
  55. {
  56.         P3M0 = 0x00; P3M1 = 0x00;
  57.     timer0_init();
  58.        
  59. while(1)
  60. {            
  61.     pwm_init();
  62.                 
  63.       if (KEY1 == 0) {
  64.             delayms(10);
  65.             if (KEY1 == 0) {
  66.                       if (noShiftTime >= 3000 ) {
  67.                     ld = 0; // 关闭LED  
  68.                         }
  69.                        
  70.                 gear = (gear + 1) % 5; // 切换档位,循环回到0  
  71.                 while (!KEY1); // 等待按钮释放  
  72.                  noShiftTime = 0;        
  73.             }  
  74.         }  
  75.        
  76.                  // 检查是否长时间未换挡  
  77.         if (noShiftTime >= 3000) { // 如果3秒(或3000毫秒)未换挡  
  78.             gear = 0; // 可以选择将档位重置为0或其他默认档位  
  79.             ld = 0; // 关闭LED  
  80.             noShiftTime = 0; // 重置计时器  
  81.         }  
  82.           
  83.           
  84.          
  85.         switch (gear) {  
  86.             case 0:  
  87.                         ld=0;
  88.                 break;  
  89.             case 1:  
  90.                 ld=2;  
  91.                 break;  
  92.             case 2:  
  93.                 ld=15;  
  94.                 break;  
  95.             case 3:  
  96.    
  97.                 ld=30;  
  98.                 break;  
  99.                           case 4:  
  100.    
  101.                 ld=255;  
  102.                 break;  
  103.         }  
  104.   delayms(10);
  105.     }  
  106. }
复制代码
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-4 07:44 , Processed in 0.123727 second(s), 111 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表