ch452键盘扫描问题???、

各位大虾,我使用的是ch452来做键盘扫描和数码管驱动,数码管驱动现在正常,但是键盘扫描确没法正常工作,当按下按键后数码管上显示的东西全部熄灭,也产生不了中断信号,请问这是什么原因?是芯片问题还是电路的问题,我将SEG引脚上的电阻使用的是270的电阻,DIG引脚上的二极管没有连接,不知道有没有影响?? 恳请各位大侠指点一下。

我使用的系统设置,数码管上显示21 Send_Command(0x201); Send_Command(0x423); Send_Command(0x582); Send_Command(0x801); Send_Command(0x902);


建议你发 Send_Command(0x403); Send_Command(0x580); Send_Command(0x801); Send_Command(0x902); 实验一下

建议你用我们的CH452例子程序运行试一下。 建议参照我们的CH452PDF上的完整应用例子接线图接上防漏电二极管。 如果还有问题的话,就请把你的电路连线图发给我们看一下。


重新发送还是不行~每次进入键盘中断后,ch452芯片的DOUT脚还一直是低电平,一直到发送最后一个时钟后DOUT脚才重新的升为高电平,我用的是4*5的键盘,我的单片机用的是8051F040,驱动6个数码管,请指教问题出在什么地方了??


请确定CH452的VCC和GND间接200uF的滤波电容。 每个数码管上都需要接一个防漏电二极管。 有按键产生后,CH452的DOUT脚会输出低电平,读取按键操作成功后,DOUT脚才会恢复高电平。


楼主,你的问题其实很好处理,首先电路上就象我们同事AShin所说的那样,在我们芯片的VCC引脚与GND之间一定要接一个不小于200UF的电解电容以及104,具体您可以参考CH452的手册.为什么要让你这样接,这样接可以防止电路中电压突变的时候不会影响CH452的显示,否则有可能造成您前面说的黑屏的现象. 现在的问题首先您要告诉我们按照我们给您提供的建议以后现象是什么 (1)会不会再黑屏? (2)DOUT引脚低是很正常的,因为表示有按键需要处理,不管您是中断还是查询,没有任何关系,进入中断,您将中断关闭就是了,不会影响什么,即使您不关闭中断,也没有关系,DOUT引脚的状态取决于您是否发了读键盘的命令,它会一直等您的命令,如果发了命令以后,DOUT会变成高电平,然后开始输出键值,否则一直是低电平,也就是说一直会触发中断.


我在ATMEL的51单片机上测试时芯片工作正常,能够实现按键以及数码管的显示,但是在51F系列单片机上却实现不了预定的功能,51F系列单片机是3.3V供电的,请问各位大侠是不是供电的电压的问题啊!多谢了!!!


我发现一个很奇怪的现象,当直接运行你们给出的测试程序时能够正常运行,但是当进行调试运行时却发现读到的数据居然都是0,难道芯片的高低电平还有最大值不成?


V1版的CH452只可以在5V供电下工作,V2版的CH452在5V和3.3V下都可以工作。 CH452的批号最后3位除070,071,085以外的都是V1版。 建议你不要用仿真器来调试运行,用单片机直接运行。 51F的速度比普通51快,程序里面的延时时间可以加长一些。


多谢指教,确实是和延时的时间有关系,在改变延时的时间后运行你们给的测试程序时能够实现预定的功能,但是我想把程序改成中断方式来读取键盘的代码,在中断程序中关闭中断,但是不知道为什么单片机读到的全是0,我用示波器看到中断程序中芯片也确实是发出了高电平的脉冲,难道单片机把端口配置成中断后就不能实现数据的读取了?还望能不吝赐教!!!


中断里面最好不要调用外部函数,可能会出问题。直接写操作时序就可以了。

我们的451例子是这样写的。 //中断子程序 使用中断2,寄存器组1

void ch451_inter() interrupt 2 using 1 { unsigned char i; //定义循环变量 unsigned char command,keycode; //定义控制字寄存器,和中间变量定时器 command=0x07; //读取键值命令的高4位0111B ch451_load=0; //命令开始 for(i=0;i<4;i++){ ch451_din=command&1; //低位在前,高位在后 ch451_dclk=0; command>>=1; //右移一位 ch451_dclk=1; //产生时钟上升沿锁通知CH451输入位数据 } ch451_load=1; //产生加载上升沿通知CH451处理命令数据 keycode=0; //清除keycode for(i=0;i<7;i++){ keycode<<=1; //数据作移一位,高位在前,低位在后 keycode|=ch451_dout; //从高到低读入451的数据 ch451_dclk=0; //产生时钟下升沿通知CH451输出下一位 ch451_dclk=1; } ch451_key=keycode; //保存上次的键值 IE1=0; //清中断标志 }


郁闷的是按照你们给的程序重新修改程序后,读到的数据依然是0,我还以为是单片机的问题,在实验室里又借了一块ATMEL的51单片机还是不行,读到的依然是0,都弄了一个星期了,郁闷!!


UploadImages/20094817225870.rar 这个程序在我板子上可以用,你试一下。


现在终于可以实现了功能了,我还有点疑问的是你们给的单片机的中断程序没有在程序中将中断关闭,这样的话为什么在数据的传输期间肯定有高低电平的变化,但是为什么没有再次的触发中断呢?但是若是将中断关闭的话程序读到的又都是0,望指教,,,


UploadImages/20094913171375.rar 我在程序里面关中断也是一样可以读到按键的。 可能你那边读不出的现象不是由关中断引起的。


哦!可能是程序中出现了问题,多谢各位大侠的指教,在此谢过了。。。CH452的功能的确比较好用,就是芯片价格太贵了,我们这里一片要15块,比普通的51单片机都要贵。。。。


只有登录才能回复,可以选择微信账号登录