3631|3

3

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

关于stm32驱动7279键盘的问题 [复制链接]

#include
#include "sys.h"
#include "delay.h"
#include "7279.h"
unsigned char Keynum;
/******************************************************************************
函数名:7279_WriteByte
输  入:dat:一个字节的数据
输  出:void
功  能:7279写入一个字节的数据
******************************************************************************/
static void HD7279_WriteByte(unsigned char dat)
{
unsigned char i;

HD7279_CS=0;   //7279片选开
HD7279_DAT_OUT;   //数据口设置为输出模式
delay_us(10);

for(i=0;i<8;i++)
{
  if(dat&0x80)
  {
   HD7279_DAT=1;
  }
  else
  {
   HD7279_DAT=0;
  }
  HD7279_CLK=1;
  dat = dat<<1;
  delay_us(10);
  HD7279_CLK=0;
  delay_us(10);
}
HD7279_DAT=0;
}

/******************************************************************************
函数名:7279_ReadByte
输  入:void
输  出:dat:读出的一个字节数据
功  能:从7279读出一个字节数据
******************************************************************************/
static unsigned char HD7279_ReadByte(void)
{
unsigned char dat=0,i;

HD7279_WriteByte(HD7279_CMD_READKEY);
HD7279_DAT=1;
HD7279_DAT_IN;   //数据口改为输入模式
HD7279_CLK=0;
delay_us(10);
for(i=0;i<8;i++)
{
  HD7279_CLK=1;
  delay_us(10);
  dat = dat << 1;
  if(HD7279_DAT_R)
  {
   dat = dat + 1;
  }
  HD7279_CLK=0;
  delay_us(10);
}
return dat;
}

/******************************************************************************
函数名:7279_Reset
输  入:void
输  出:void
功  能:复位7279
******************************************************************************/
void HD7279_Reset(void)
{
HD7279_WriteByte(HD7279_CMD_RESET);//复位指令
HD7279_CS=1;        
}
/******************************************************************************
函数名:7279_Init
输  入:void
输  出:void
功  能:7279初始化
******************************************************************************/
void HD7279_Init(void)
{
RCC->APB2ENR=1<<4;//使能时钟PORTC
GPIOC->CRH&=0XFF0000FF; //推挽输出PC10,11,12
GPIOC->CRH|=0X00433300; //PC13浮空输入
GPIOC->ODR=0X3C00;
Ex_NVIC_Config(GPIO_C,13,FTIR);//下降沿触发
MY_NVIC_Init(2,2,EXTI15_10_IRQChannel,2);//抢占2,子优先级2,组2
HD7279_CS=0;//使能HD7279
}
/******************************************************************************
函数名:7279_GetKeyVal
输  入:void
输  出:KeyValue:读出的键盘编号
功  能:从7279读出按键值
******************************************************************************/
unsigned char HD7279_GetKeyVal(void)
{
    unsigned char KeyValue;
    KeyValue = HD7279_ReadByte();
    HD7279_CS=1;
    return KeyValue;
}

void EXTI15_10_IRQHandler(void)
{
Keynum = HD7279_GetKeyVal();
EXTI->PR = 1<<13;  //清除LINE13上的中断标志位
}

7279的点H文件
#ifndef __7279_H
#define __7279_H

//7279 控制命令字
#define HD7279_CMD_READKEY 0x15  //读取键值
#define HD7279_CMD_RESET   0xa4  //复位

#define HD7279_DAT   PCout(10)
#define HD7279_CS    PCout(11)
#define HD7279_CLK  PCout(12)

//7279的IO口配置
#define HD7279_DAT_R     GPIOC->IDR&=1<<10

#define HD7279_DAT_OUT {GPIOC->CRH&=0XFFFFF0FF;GPIOC->CRH|=0X00000300;} //推挽输出
#define HD7279_DAT_IN    {GPIOC->CRH&=0XFFFFF0FF;GPIOC->CRH|=0X00000400;} //浮空输入

u8 HD7279_GetKeyVal(void);
void HD7279_Init(void);

#endif
程序编译没问题,只是读不出按键值。希望大家帮我解决这个问题,是配置的问题?还是其他的问题
此帖出自stm32/stm8论坛

最新回复

看我最近的帖子吧 我重写了个7279的接口程序  详情 回复 发表于 2011-8-20 17:19
点赞 关注
 

回复
举报

1059

帖子

0

TA的资源

纯净的硅(高级)

沙发
 
NVIC正确设置了么?
此帖出自stm32/stm8论坛
 
 

回复

3

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
正确设置了,我用的是我买的开发板上带的中断函数配置的。。。。。
此帖出自stm32/stm8论坛
 
 

回复

1059

帖子

0

TA的资源

纯净的硅(高级)

4
 
看我最近的帖子吧 我重写了个7279的接口程序
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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