No.64059 作者:mmppll 邮件:huaimingwang@163.com ID:26499 登陆:2次 文章数:4篇 最后登陆IP:221.204.49.100 最后登陆:2004/12/27 12:08:26 注册:2004/10/9 17:52:19 财富:118 发帖时间:2004/10/10 9:09:00 发贴者IP:221.204.46.12 标题:mmppll:max6959是如何驱动4位半LED的源码,请高手指点一下,为何led不亮 摘要:No.64059max6959是如何驱动4位半LED的源码,请高手指点一下,为何led不亮
此主题相关图片如下:
 源码: / #include <AT892051.h> ............. extern WrToConfig(); extern WrToDisplay_test(); extern WrToDigit0(); extern void WrToLight(); extern void WrToDecode0_3(); void main() { ............... WrToConfig(); //WrToDisplay_test(); WrToLight(); WrToDecode0_3(); Loop: WrToDigit0(); ...... goto Loop; } #define uchar unsigned char #define uint unsigned int #define Byte unsigned char #define Word unsigned int #define bool bit #define true 1 #define false 0 //内存数据定义 #define BR_1K2L 0XE8 #define SlvAdr_W 0X38 //被控器地址+写命令,SLA+W max6959AAPE #define SlvAdr_R 0XB8 //被控器地址+读命令,SLA+R max6959AAPE uchar ByteCnt; //I2C 数据字节计数器 uchar SubAdr; //被控器单元地址 uchar XmtDat[5]; //发送数据缓冲区 uchar Digit[10]; extern void I2CStart(void); extern void I2CStop(void); extern bool WaitAck(void); extern void SendAck(void); extern void SendNotAck(void); extern void I2CSendByte(Byte ch); extern Byte I2CReceiveByte(void); void WrToConfig() { I2CStart();//发送启动信号,启动I2C 总线 I2CSendByte(SlvAdr_W);//送器件地址 WaitAck(); I2CSendByte(0x04);//发送单元地址=config寄存器地址 WaitAck(); I2CSendByte(0x21);//发送config命令not shutdown*/ WaitAck(); I2CStop(); } void WrToDisplay_test() { I2CStart();//发送启动信号,启动I2C 总线 I2CSendByte(SlvAdr_W);//送器件地址 WaitAck(); I2CSendByte(0x07);//发送单元地址=display test 寄存器地謈 WaitAck(); I2CSendByte(0x00);//发送显示测试命令 WaitAck(); I2CStop(); } void WrToDigit0() { I2CStart();//发送启动信号,启动I2C 总线 I2CSendByte(SlvAdr_W);//送器件地址 WaitAck(); I2CSendByte(0x20);//发送单元地址=dig0寄存器地址 WaitAck(); I2CSendByte(0x0F);//发送显示的数据 WaitAck(); I2CStop(); } void WrToLight() { I2CStart();//发送启动信号,启动I2C 总线 I2CSendByte(SlvAdr_W);//送器件地址 WaitAck(); I2CSendByte(0x02);//发送单元地址=亮度寄存器地址 WaitAck(); I2CSendByte(0x3e);//发送亮度数据=22。64mA WaitAck(); } void WrToDecode0_3() { I2CStart();//发送启动信号,启动I2C 总线 I2CSendByte(SlvAdr_W);//送器件地址 WaitAck(); I2CSendByte(0x01);//发送单元地址=亮度寄存器地址 WaitAck(); I2CSendByte(0x0f);//发送亮度数据=22。64mA WaitAck(); } /*———————————————————— 〖说明〗I2C总线驱动程序(用两个普通IO模拟I2C总线) 默认11.0592Mhz的晶振。 〖版本〗V1.00A Build 0803 —————————————————————*/ /*whm*/ /******* MAX6959接口与AT89C2051接口地址****/ #include <AT892051.H> #ifndef SDA #define SDA P1_6 #define SCL P1_5 #endif #define uchar unsigned char #define uint unsigned int #define Byte unsigned char #define Word unsigned int #define bool bit #define true 1 #define false 0 extern uchar SystemError; extern void _nop_(void); //_nop_()为等待一个时钟周期 #define SomeNOP(); _nop_();_nop_();_nop_( ......
>>返回讨论的主题
|