搜索
bottom↓
回复: 9

9454的IO口对LED分时扫描的问题

[复制链接]

出0入0汤圆

发表于 2012-11-13 11:29:33 | 显示全部楼层 |阅读模式
本帖最后由 hejiancheng 于 2012-11-13 11:33 编辑

hi:


               我使用如下电路,对LED进行分时扫描,但在不亮的情况下,总会有余光出现,

   使用如下程序:在每次切换LED灯组的时候,先把LED_COM设为输入口,然后改变LED的的状态,再把LED_COM设为输出口
  我用示波器看了COM口的电平,发现当它设为输入的时候,会有2.5V的电平出现。

   switch(g_LED_state_num)
  {
  case 0:
   LED_COM 设为输入口
   LED_2 = 1;
   LED_1  = 1
  LED_COM 设为输出口
   LED_COM = 0;
   
  break;
   

  
  case 1:
  LED_COM 设为输入口
   LED_2 = 0;
   LED_1  = 0
  LED_COM 设为输出口
  LED_COM = 1;
  break;
  
  }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2012-11-13 11:39:17 | 显示全部楼层
灭灯时应该将3个I/O都置为高,或都置为低!

置为输入时,可能是LED_1为高,LED_2为低,量取LED_COM电压差不多在2.5V!

出0入0汤圆

 楼主| 发表于 2012-11-13 14:32:52 | 显示全部楼层
我尝试过:不设置LED_COM的为输入口,我就让全部灯为灭,但是还是有余光
switch(g_LED_state_num)
  {
  case 0:
  LED_COM = 1;
   LED_2 = 0;
   LED_1  = 0
   
   
  break;
   

  
  case 1:
   LED_COM =0;
   LED_2 = 1;
   LED_1  =1

  break;
  
  }

出0入0汤圆

 楼主| 发表于 2012-11-13 14:33:12 | 显示全部楼层
本帖最后由 hejiancheng 于 2012-11-13 14:45 编辑
zhikunWang 发表于 2012-11-13 11:39
灭灯时应该将3个I/O都置为高,或都置为低!

置为输入时,可能是LED_1为高,LED_2为低,量取LED_COM电压差 ...


但在台系IC是不会出现这种情况的。

我尝试过:不设置LED_COM的为输入口,我就让全部灯为灭,但是还是有余光
无论改成这样,
switch(g_LED_state_num)
  {
  case 0:

   LED_2 = 0;
   LED_1  = 0       ;第一组灯灭
    LED_COM =0;
   g_LED_state_num =1;
  break;
   

  
  case 1:
   LED_2 = 1;
   LED_1  =1      
   LED_COM =1;;第二组灯灭

g_LED_state_num =0;
  break;
  
  }

还是改成这样
switch(g_LED_state_num)
  {
  case 0:
   LED_COM =0;
   LED_2 = 0;
   LED_1  = 0       ;第一组灯灭
  
   g_LED_state_num =1;
  break;
   

  
  case 1:
  LED_COM =1;;第二组灯灭
   LED_2 = 1;
   LED_1  =1      
   

g_LED_state_num =0;
  break;
  
  }

因此应该必须让LED_COM设为输入,才能让所有灯灭,但9454却出现2.5V的电平。

出0入0汤圆

发表于 2012-11-13 15:50:28 | 显示全部楼层
用的哪个口,输入带上拉吗

出0入0汤圆

 楼主| 发表于 2012-11-21 10:14:03 | 显示全部楼层
sf49ers 发表于 2012-11-13 15:50
用的哪个口,输入带上拉吗

好像9454的IO口都是带上拉电阻的

出0入0汤圆

发表于 2012-11-21 10:32:24 | 显示全部楼层
hejiancheng 发表于 2012-11-21 10:14
好像9454的IO口都是带上拉电阻的

没有啊,大部分都可以配置成输入不带上拉

出0入0汤圆

发表于 2012-11-21 10:51:58 | 显示全部楼层
如果是我的程序,会这样写:
switch(g_LED_state_num)
   {
   case 0:
    LED_2、LED_1设为输入口
   LED_COM = 0;
   LED_2 = DATA;
    LED_1  = DATA;
   LED_2、LED_1设为输出口
    g_LED_state_num = 1;  
  break;
     

  
   case 1:
    LED_2、LED_1设为输入口
   LED_COM = 1;
   LED_2 = DATA;
    LED_1  = DATA;
   LED_2、LED_1设为输出口
    g_LED_state_num = 0;  
   }

出0入0汤圆

 楼主| 发表于 2012-11-23 17:49:41 | 显示全部楼层
Castle 发表于 2012-11-21 10:51
如果是我的程序,会这样写:
switch(g_LED_state_num)
   {

如果我有10多个LED灯的话,我就需要把所有的SEG设为输入了

出0入0汤圆

发表于 2013-3-21 15:08:24 | 显示全部楼层
我也是碰到同样的问题,请问高手有找到什么好方法解决吗?
谢谢!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-3 12:53

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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