求助!我用P89LPC935一直点不亮CH452??

基本情况:935工作在6MHz下,指令执行时间2-4个时钟周期,6倍与标准80C51 CH452我选共阴接法,目前用3.3V 935与CH452的接口我用过准双向口,推挽输出,开漏输出(上拉1k电阻),都不行 程序我用的就是那个例子程序 如下: #include "Reg935.h" #include

#define uchar unsigned char #define uint unsigned int

//4线接口的连接,与实际电路有关 sbit CH452_DCLK = P1^7; //串行数据时钟上升延激活 sbit CH452_DIN = P1^6; //串行数据输出,接CH452的数据输入 sbit CH452_LOAD1 = P1^4; //串行命令1加载,上升延激活 //sbit CH452_LOAD2 = P1^3; //串行命令2加载,上升延激

//4线接口的位操作,与单片机有关 #define CH452_DCLK_SET {CH452_DCLK = 1;} #define CH452_DCLK_CLR {CH452_DCLK = 0;} #define CH452_DIN_SET {CH452_DIN = 1;} #define CH452_DIN_CLR {CH452_DIN = 0;} #define CH452_LOAD1_SET {CH452_LOAD1 = 1;} #define CH452_LOAD1_CLR {CH452_LOAD1 = 0;} //#define CH452_LOAD2_SET {CH452_LOAD2 = 1;} //#define CH452_LOAD2_CLR {CH452_LOAD2 = 0;}

//CH452的常用命令码 #define CH452_NOP 0x0000 //空操作 #define CH452_RESET 0x0201 //复位 #define CH452_LEVEL 0x0100 //加载光柱值 #define CH452_CLR_BIT 0x0180 //段位清0 #define CH452_SET_BIT 0x01C0 //段位置1 #define CH452_SLEEP 0x0202 //进入睡眠状态

#define CH452_LEFTMOV 0x0300 //设置移动方式-左移 #define CH452_LEFTCYC 0x0301 //设置移动方式-左循 #define CH452_RIGHTMOV 0x0302 //设置移动方式-右移 #define CH452_RIGHTCYC 0x0303 //设置移动方式-右循 #define CH452_SELF_BCD 0x0380 //自定义BCD码

#define CH452_SYSOFF 0x0400 //关显示、键盘 #define CH452_SYSON1 0x0401 //开显示 #define CH452_SYSON2 0x0403 //开显示、键盘 #define CH452_SYSON2W 0x0423 //开显示、键盘,真正2线接口

#define CH452_DSP 0x0500 //设置默认显示方式 #define CH452_BCD 0x0580 //设置BCD译码方式 #define CH452_TWINKLE 0x0600 //设置闪烁控制 #define CH452_GET_KEY 0x0700 //获取按键

#define CH452_DIG0 0x0800 //数码管位0显示 #define CH452_DIG1 0x0900 //数码管位1显示 #define CH452_DIG2 0x0a00 //数码管位2显示 #define CH452_DIG3 0x0b00 //数码管位3显示 #define CH452_DIG4 0x0c00 //数码管位4显示 #define CH452_DIG5 0x0d00 //数码管位5显示 #define CH452_DIG6 0x0e00 //数码管位6显示 #define CH452_DIG7 0x0f00 //数码管位7显示

/*********************************************************************************************/

void delaynus(uchar n) { uchar i; for(i=n; i>0; i--) { _nop_(); _nop_(); _nop_(); /* _nop_(); _nop_(); _nop_();*/ } }

void delayms(uchar n) { uchar i,j; for(i=n; i>0; i--) { for(j=0; j<720; j++) ; } }

//输出命令子程序1 void CH452_Write1(unsigned int cmd) { uchar i;

CH452_LOAD1_CLR; for(i=0; i<12; i++) { if(cmd & 1) { CH452_DIN_SET; } else { CH452_DIN_CLR; } CH452_DCLK_CLR; cmd >>= 1; CH452_DCLK_SET; } CH452_LOAD1_SET; delaynus(6); }

//输出命令子程序2 /*void CH452_Write2(unsigned int cmd) { uchar i;

CH452_LOAD2_CLR; for(i=0; i!=12; i++) { if(cmd & 1) { CH452_DIN_SET; } else { CH452_DIN_CLR; } CH452_DCLK_CLR; cmd >>= 1; CH452_DCLK_SET; } CH452_LOAD2_SET; delaynus(6); }*/

/*********************************************************************************************/ //主函数 void main(void) { delayms(10);

P1M1 |= 0xD0; P1M2 |= 0xD0;

CH452_Write1(CH452_SYSON1); CH452_Write1(CH452_BCD | 0x30);

while(1) {

CH452_Write1(CH452_DIG5 | 5); CH452_Write1(CH452_DIG6 | 6); CH452_Write1(CH452_DIG7 | 7); delayms(10); } }

我的系统要驱动两片CH452,试验我只用了一片。

基本情况如上,望高手指点!

上电后935的P17,P16,P14一直被CH452拉到3.3V左右,单片机没有任何动作 CH452的端口情况,我只接了dig5,6,7到数码管。dig01234悬空 seg0-7为0 RST悬空 dig567和H3L2为3.3V左右,LOAD,DIN,DCLK也为3.3V


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