刚申请到样片!!焊好电路采用SPI四线方式接线,想先调一下显示,但是始终没反应,不知那里出错!!采用程序如下:请求帮忙!!如哪位大侠友好使程序,恳请赐教!!我邮箱个人信息保护,已隐藏,qq:29782548
#include #include //sbit CH452_INT=P3^3; // 标准的2线接口使用该引脚输出中断 /* 4线接口的连接,与实际电路有关 */ sbit CH452_DCLK=P2^3; // 串行数据时钟上升延激活 sbit CH452_DIN=P2^4; // 串行数据输出,接CH452的数据输入 sbit CH452_LOAD=P2^5; // 串行命令加载,上升延激活 sbit CH452_DOUT=P2^6; // INT1,键盘中断和键值数据输入,接CH452的数据输出 /* 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_LOAD_SET {CH452_LOAD=1;} #define CH452_LOAD_CLR {CH452_LOAD=0;} /* 与单片机有关,与中断连接方式有关 */ #define DISABLE_INTERRUPT {EX1=0;} #define ENABLE_INTERRUPT {EX1=1;} #define CLEAR_INTER_FLAG {IE1=0;} //#include // 修改该文件以适应硬件环境/单片机型号等 /* CH451和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显示 /*---------------------------------------*/ /*输出命令子程序定义一无符号整型变量存储12字节的命令字节*/ void CH452_Write(unsigned int cmd) { unsigned char i; CH452_LOAD_CLR; //命令开始,LOAD=0 for(i=0;i!=12;i++) //送入12位数据,低位在前 { if (cmd&1) {CH452_DIN_SET;}//写数 else {CH452_DIN_CLR;} // 输出位数据 CH452_DCLK_CLR; cmd>>=1; CH452_DCLK_SET; //上升沿有效 } CH452_LOAD_SET; for(i=2;i<=0;i++){} //加载数据,LOAD上升沿 } /*---------------主程序-------------------*/ main() { unsigned char cmd,dat; unsigned short command; CH452_Write(CH452_SYSON1); //两线制方式,如果SDA用做按键中断输出,那么命令应该为(0x04,0x23) CH452_Write(CH452_BCD); // BCD译码,8个数码管 while(1) { CH452_Write(CH452_DIG0 | 8); // 显示字符8 CH452_Write(CH452_DIG1 | 7); CH452_Write(CH452_DIG2 | 6); CH452_Write(CH452_DIG3 | 5); CH452_Write(CH452_DIG4 | 4); CH452_Write(CH452_DIG5 | 3); CH452_Write(CH452_DIG6 | 2); CH452_Write(CH452_DIG7 | 1); } }