ch452L怎么和单片机连接扫描电路啊

ch452L怎么和stc89c52连接啊?我做测试:用一个按键连1k电阻连seg,另一脚连dig。ch452L的dout接的单片机P3.2,din、load和dclk接的单片机三个引脚。然后vcc接正,GND接地,没有接电容。程序是这样的,具体按键值都没写,可是按键之后灯就是不变,希望有人能够帮助啊!#include #include #define uchar unsigned char #define uint unsigned char #define Light P0//sfr Light=0x80 void delay(uchar ms); /***********ch451接口和参数定义************/ sbit ch451_load = P2^6; //数据加载引脚 sbit ch451_din = P2^5; //数据输入引脚 sbit ch451_clk = P2^4; //时钟引脚 sbit ch451_dout = P3^2; //数据输输出引脚 uchar ch451_key_val=0xff; //按键初值设置(无效的按键值) void wr_ch451(uint com); void int_set(); void ch451_initial(); uchar a=0; void main() { Light=0x3c; int_set(); //设置中断相关的参数 ch451_initial(); //ch451初始化 wr_ch451(0x402); //设定ch451的系统参数(只使用按键扫描功能) while(1) { if(a!=0)//1011011 { Light++; } } } /********每次按键按下都会使ch451_dout引脚(P3.2)变为低电平,因此产生外中断*******/ void ch451_int() interrupt 0 using 1 { uchar i,com,key_val=0; EX0=0; //关中断0 com=0x07; //取按键值命令 ch451_load=0; //准备传送命令 for(i=0;i<4;i++) { ch451_din=com&0x01; ch451_clk=0; com>>=1; ch451_clk=1; //上升沿送入 } ch451_load=1; //加载命令 for(i=0;i<7;i++) { key_val<<=1; //先收到键值的高位 key_val|=ch451_dout; //读入键值 ch451_clk=0; //下降沿读入 ch451_clk=1; //为下一次做准备delayms(uint ms); //毫秒延时函数 } a=key_val; IE0=0; //清中断标志 EX0=1; //开中断 }

/***********中断设置函数***************/ void int_set() { TMOD=0x21; //0010 0001使用定时器T0的模式1(16位模式),定时器T1的模式2(8位模式) TH0=0; //设定初值 TL0=0; TR0=0; //暂时不启动定时器T0 /****************************************************/ TH1=256-13; //设定初值 TL1=256-13; PT1=1; //T1中断优先级设为高 TR1=0; //暂时不启动定时器T1 ET1=1; //开T1中断 /****************************************************/ IT0=1; //外中断0为负边沿触发方式 EX0=1; //开外中断INT0 /****************************************************/ IT1=1; //外中断1为负边沿触发方式 EX1=0; //暂时不使用外中断INT1(先关闭) EA=1; //开总中断 } /**********ch451初始化函数************/ void ch451_initial() { ch451_din = 0; //资料固定要求 ch451_din = 1; ch451_load = 1; ch451_clk = 1; } /********向ch451写入命令的函数********/ void wr_ch451(uint com) { uchar i; EX0=0; //关中断 ch451_load=0; //准备传送命令 for(i=0;i<12;i++) //向ch451送入命令(共12位,低位在前) { ch451_din=com&0x01; ch451_clk=0; com>>=1; ch451_clk=1; //上升沿送入 } ch451_load=1; //加载命令 EX0=1; //开中断 }

您好,按下按键的时候用示波器检查一下dout脚是否有低电平产生,在你读完键之后查看一下这个脚的电平是否恢复为高电平,还有你的light跟你的单片机是怎么连接的?请把你的问题都集中到这个帖子里面。


我这没有示波器,我用的单片机开发板做的测试,light流水灯都已经连接好了。我做测试就是想知道ch452L怎么和单片机连接才能扫描按键。我用一个按键连1k电阻连DIG,另一脚连SEG。ch452L的dout接的单片机P3.2,din、load和dclk接的单片机其他的三个引脚。然后vcc接正,GND接地,没有接电容。连接完成后,按键后就是没有变化。


您好,main函数开始,加50ms延时,留给我们芯片足够的上电复位时间。完整的连接方式见下图。如果还有问题的话请电话联系我。


单片机与CH452完整连接图


图没有传上来啊


2013211342689.jpg


谢谢


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