导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→关于CH452驱动键盘的问题[zkkov2000]

 *第7908篇: 关于CH452驱动键盘的问题

  
楼 主:zkkov2000 2009年3月1日11:11
 关于CH452驱动键盘的问题
求助:
小可现在用at89c51驱动CH452键盘功能,程序如下.问题是我按下键,没什么反应.用示波器测中断脚根本没有中断信号,不知道问题出在哪,希望老古的用过CH452的大虾给个指导,不胜感激!用的24M晶振,INT0,12时钟模式
void AT89C51_Init()
{
 TCON|=0x01;//中断0下降沿触发;
 IP|=0x01;
 EA=1;//全局中断允许;
 CH452_KEY_INT0_ON;//中断0允许;
}
/*******************************************
*******************************************/
void CH452_Init()
{
 Uint CH452_SYS_SET=0;
 CH452_KEY_DIN_CLR;
 CH452_KEY_DIN_SET;
 CH452_KEY_LOAD_SET;
 CH452_KEY_DCLK_SET;
 CH452_SYS_SET=(CH452_SYS_COM|CH452_KEY_KEYB_ON|CH452_KEY_INTM_ON|CH452_KEY_DISP_ON);//CH452系统参数设置:开显示\键盘功能\边沿中断
 WriteCH452(CH452_RESET);
 WriteCH452(CH452_SYS_SET);
}
/*******************************************
*******************************************/
void WriteCH452(Uint command)
{
 Uchar i;
 CH452_KEY_INT0_OFF;//51禁止452产生的中断
 CH452_KEY_LOAD_CLR;//LOAD低电平
 for(i=0;i  <12;i++)
 {
  if(command&0x0001)CH452_KEY_DIN_SET;
  else CH452_KEY_DIN_CLR;

  CH452_KEY_DCLK_CLR;
  command>  >  =1;
  CH452_KEY_DCLK_SET;
 }
 CH452_KEY_LOAD_SET;//LOAD上升沿加载命令
 NOP;NOP;NOP;NOP;NOP;NOP;NOP;
 CH452_KEY_INT0_ON;//51允许452产生的中断
}
/*******************************************
*******************************************/
Uchar ReadCH452()
{
 Uchar i,j;
 Uchar key=0;
 Uchar read;
 CH452_KEY_INT0_OFF;
 read=CH452_R_COM;//读取键盘命令0111
 CH452_KEY_LOAD_CLR;
 for(i=0;i  <4;i++)
 {
  if(read&0x01)CH452_KEY_DIN_SET;
  else CH452_KEY_DIN_CLR;
  CH452_KEY_DCLK_CLR;
  read>  >  =1;
  CH452_KEY_DCLK_SET;
 }
 CH452_KEY_LOAD_SET;//LOAD上升沿加载命令
 NOP;
 for(j=0;j  <7;j++)
 {
  key  <  <=1;
  key|=DOUT;
  NOP;
  CH452_KEY_DCLK_CLR;
  NOP;
  CH452_KEY_DCLK_SET;
 }
 CH452_KEY_INT0_ON;
 return(key);
}
/*******************************************
*******************************************/
void CH452_INT0() interrupt 0
{
 key_int_flag=1;
 keyboard=ReadCH452();
}
void main()
{
 LcdInit();
 AT89C51_Init();
 CH452_Init();
 DelayMs(100);
 while(1)
 {
  if(key_int_flag)//如果有键按下显示:北京欢迎您
  {
   LcdSendCom(0x01);
   Display(0,0,5,"北京欢迎您");
   key_int_flag=0;
  }
  else Display(1,0,4,"没键按下");//如果没键按下显示:没键按下
  DelayMs(10);

 }
}

  
2楼:zkkov2000 2009年3月1日11:16
 补充
补充一点:示波器测到CH452的DIG脚也没有扫描信号输出,但我写控制命令了,真奇怪!
  
3楼:coschang 2009年4月10日12:32
 关于CH452驱动键盘的问题
你好我也遇到了这个问题
如果解决望提示下原因 
谢谢

>>>>>>对该主题发表你的看法

本主题贴数3,分页: [第1页]


[上一篇主题]:陶瓷绝缘传热绝缘垫片---帮助管子散热,温差小,传热快,绝缘耐压高.[原创]

[下一篇主题]:求助ATmega16开发的时钟问题