2410|0

2

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

HJ-2G(AVR)矩阵键盘+数码管显示 [复制链接]

为什么(0,1,2,3)在数码管上不显示?
求高人指导
源程序(ICC-AVR)如下:
#include
#include
#define uchar unsigned char
#define uint unsigned int
uchar Key;
#pragma data:code  
flash table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,
0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0};
void delay(uint ms)
{
uint i,j;
for(i=0;i   for(j=0;j<1141;j++);
}
void number_show(uchar num)
{
PORTB=table[num];
PORTA|=BIT(3);
PORTA&=~BIT(3);

PORTB=0XFF;
PORTB=~BIT(0);
PORTA|=BIT(4);
PORTA&=~BIT(4);
delay(10);
}
void key_scan()
{
uchar key,i;   
DDRD=0xf0;  
PORTD=0x0f;
    key=PIND;
key&=0x0f;
if(key!=0x0f)  
{
   delay(10);  
   for(i=0;i<4;i++)
   {
    PORTD=~BIT(i);
    DDRD=0x0f;  
    key=PIND;  
    key_result(key&0xf0,i);
   }
   //while();
}
}
void key_result(uchar keyread,uchar i)
{
  if(i==0)  
  {
   switch(keyread)
   {
    case 0xe0:
             Key=0; break;     
     case 0xd0:
          Key=1; break;   
    case 0xb0:
          Key=2; break;     
    case 0x70:
          Key=3; break;     
   }
  }
  else if(i==1)   
  {
   switch(keyread)
   {
    case 0xe0:
          Key=4; break;   
     case 0xd0:
          Key=5; break;     
    case 0xb0:
          Key=6; break;     
    case 0x70:
          Key=7; break;   
   }
  }
  else if(i==2)  
  {
   switch(keyread)
   {
    case 0xe0:
          Key=8; break;     
     case 0xd0:
          Key=9; break;     
    case 0xb0:
          Key=10; break;   
    case 0x70:
          Key=11; break;     
   }
  }
  else if(i==3)
  {
   switch(keyread)
   {
    case 0xe0:
          Key=12; break;     
     case 0xd0:
          Key=13; break;     
    case 0xb0:
          Key=14; break;   
    case 0x70:
          Key=15; break;     
   }
  }
  else
   Key=16;
}
void main()
{
DDRA|=BIT(3);
DDRA|=BIT(4);
DDRB=0XFF;
while(1)
{
  key_scan();   
  number_show(Key);  
}
}HJ-2G原理图


[ 本帖最后由 cxchenxingcool 于 2012-11-13 20:42 编辑 ]

HJ-2G电路原理图.pdf

145.68 KB, 下载次数: 19

HJ-2G电路原理图

点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表