OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6066|回复: 6

矩阵键盘求助!!!!

[复制链接]

6

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2012-11-24
在线时间
0 小时
发表于 2012-11-30 21:18:04 | 显示全部楼层 |阅读模式
#include"STC12C5A.h"

unsigned char reg[10]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};

sbit LED=P0^0;
sbit smg_sck = P0^4;
sbit smg_rck = P0^5;
sbit smg_rst = P0^6;
sbit smg_dat = P0^7;

void delay_ms(unsigned char time)
{
   unsigned char t;
   while(time--)
   {
      t=1500;
 while(t--);
   }
}

void sendbyte(unsigned char byte)
{
    unsigned char i;
for( i=0;i<8;i++)
{
   unsigned char temp;
   temp=byte&(1<<i);
if(temp)
  smg_dat=1;
else smg_dat=0;
smg_sck=0;
delay_ms(3);
smg_sck=1;
delay_ms(3);
}
smg_rck=0;
delay_ms(3);
smg_rck=1;
delay_ms(3);
}

void show(unsigned char num)
{
    sendbyte(reg[num]);
}

void display(unsigned char dat)
{
    
    show(dat/1000);
P0=(P0&0XF0)|1 ;
delay_ms(2);
    show(dat%1000/100);
P0=P0&0XF0|2 ;
delay_ms(2);

    show(dat%100/10);
P0=P0&0XF04|4 ;
delay_ms(2);

    show(dat%10);
P0=P0&0XF0|8 ;
delay_ms(2);
}

void key()
{
    LED=1;
    P2=0x0f;
if(P2!=0X0F)
{
  delay_ms(15);
  if(P2!=0X0F)
  {
     if (P2==0X7E)
 {
    while(1)
  show(1) ;
 }
  }
}
}

void main ()
{   
   LED=1;
   delay_ms(3000);
   LED=0;
   delay_ms(3000);
  
LED=1;
   delay_ms(3000);
   LED=0;
   delay_ms(3000);
    while(1)
{  
  display(234);
  key();
}
   
}


烧到单个片机上后,7个led灯全亮,数码管显示234,按键盘没有反应。  于是乎,想看看函数执行得怎么样,在main函数最开始先熄灭led0,三秒后点亮它。重复两次,结果烧到单片机后,数码管直接显示234,没有led0的变化过程,怎么回事?   它怎么直接就跳过去了???


  I CAN BE BETTER
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2012-11-30 21:29:41 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2012-11-24
在线时间
0 小时
 楼主| 发表于 2012-11-30 21:34:24 | 显示全部楼层
没有啊!!!
我是不是要怀疑一下我的单片机是不是坏了?
  I CAN BE BETTER
回复 支持 反对

使用道具 举报

6

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2012-11-24
在线时间
0 小时
 楼主| 发表于 2012-11-30 21:34:54 | 显示全部楼层
帮我看看代码吧,原子哥哥
  I CAN BE BETTER
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2012-11-30 23:13:06 | 显示全部楼层
把数码管显示部分注释掉!再试试看。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1863
金钱
1863
注册时间
2011-3-29
在线时间
139 小时
发表于 2012-12-1 11:01:28 | 显示全部楼层
回复【3楼】徐自清2012:

没有啊!!!
我是不是要怀疑一下我的单片机是不是坏了?

---------------------------------
一般都不要怀疑硬件,怀疑你自己。
你delay函数char 类型溢出了。
业余程序玩家。
回复 支持 反对

使用道具 举报

6

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2012-11-24
在线时间
0 小时
 楼主| 发表于 2012-12-1 19:00:11 | 显示全部楼层
今天找了个师兄看看,开发板上P2^0的I/O口没接,但确实有几个键盘按下去之后的结果不对。具体问题也没弄明白
  I CAN BE BETTER
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 17:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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