[求助]CH454怎么不好用呢?

CH454D的DIG0-DIG5分別連接指示燈的負極,SEG4-SEG6分別連接指示燈的正極 現(xiàn)在想讓所有的指示燈全部點亮,可指示燈卻沒反應,請工程師幫我看看我哪里做的不對?,單片機是lpc1768,程序是照你們的例程改的,程序如下: int main(void) { SystemInit(); //系統(tǒng)初始化函數(shù) ----20110626 LPC_GPIO0->FIODIR |= (1<<28); //24腳P0.28用作io,輸出K_CLK LPC_GPIO0->FIOSET |= (1<<28); LPC_PINCON->PINSEL1 &= ~(3<<24);

//LPC_PINCON->PINSEL1 |= ((uint32_t)1<<23); //25腳用作USB_SDA LPC_GPIO0->FIODIR |= (1<<27); //25腳P0.27用作io,輸出K_DIO LPC_GPIO0->FIOSET |= (1<<27); LPC_PINCON->PINSEL1 &= ~(3<<22);

ch454_write(0x443);//開顯示鍵盤 ch454_write(0x500);//直接譯碼

while(1) { ch454_write(0x06ff);//指示燈全閃爍 } }

void Start_I2c() { LPC_GPIO0->FIOSET |= 1<<27; //SDA=1; //發(fā)送起始條件的數(shù)據(jù)信號 LPC_GPIO0->FIODIR |= 1<<27; //設(shè)置P0.27為輸出 //KEY_DIO Zlg7290Delay(20); LPC_GPIO0->FIOSET |= 1<<28; //SCL=1; LPC_GPIO0->FIODIR |= 1<<28; //設(shè)置P0.28為輸出 //KEY_CLK Zlg7290Delay(20);//Zlg7290Delay(10);//_Nop(); 500ns LPC_GPIO0->FIOCLR |= 1<<27; //SDA=0; //發(fā)送起始信號 Zlg7290Delay(20);//Zlg7290Delay(10); LPC_GPIO0->FIOCLR |= 1<<28; //SCL=0; ///鉗住I2C總線,準備發(fā)送或接收數(shù)據(jù) Zlg7290Delay(20);// Zlg7290Delay(10); }

void Stop_I2c() { LPC_GPIO0->FIOCLR |= 1<<27; //SDA=SDA_CLR; //發(fā)送結(jié)束條件的數(shù)據(jù)信號 LPC_GPIO0->FIODIR |= 1<<27; //設(shè)置P0.27為輸出 //KEY_DIO Zlg7290Delay(20);//Zlg7290Delay(10); LPC_GPIO0->FIOSET |= 1<<28; //SCL=SCL_SET; //結(jié)束條件建立時間大于4μs Zlg7290Delay(20);//Zlg7290Delay(10); LPC_GPIO0->FIOSET |= 1<<27; //SDA=SDA_SET; //發(fā)送I2C總線結(jié)束信號 Zlg7290Delay(20);//Zlg7290Delay(10);

LPC_GPIO0->FIODIR &= ~(1<<27); //設(shè)置為P0.27 DIO 數(shù)據(jù)口為輸入

}

void SendByte(uchar c) { uchar BitCnt,i;

LPC_GPIO0->FIODIR |= 1<<27; //設(shè)置P0.27為輸出 //KEY_DIO Zlg7290Delay(20); //i=1; while(i--); //Zlg7290Delay(1); for(BitCnt=0;BitCnt!=8;BitCnt++) //輸出8位數(shù)據(jù) { if(c&0x80) {LPC_GPIO0->FIOSET |= 1<<27;} else {LPC_GPIO0->FIOCLR |= 1<<27;} Zlg7290Delay(20);//i=1; while(i--); //Zlg7290Delay(1);

LPC_GPIO0->FIOSET |= 1<<28; //SCL=1 c<<=1; Zlg7290Delay(20);//i=1; while(i--); //Zlg7290Delay(1);

LPC_GPIO0->FIOCLR |= 1<<28; //SCL=0; Zlg7290Delay(20);//i=1; while(i--); //Zlg7290Delay(1); } LPC_GPIO0->FIODIR &= ~(1<<27); //設(shè)置為P0.27 DIO 數(shù)據(jù)口為輸入 //設(shè)置SDA為輸入方向 LPC_GPIO0->FIOSET |= 1<<27; //SDA=1; //8位發(fā)送完后釋放數(shù)據(jù)線,準備接收應答位; Zlg7290Delay(20);//i=1; while(i--); //Zlg7290Delay(1);

LPC_GPIO0->FIOSET |= 1<<28; //SCL=1; //接收應答 Zlg7290Delay(20);//i=1; while(i--); //Zlg7290Delay(1);

LPC_GPIO0->FIOCLR |= (1<<28); //SCL=0; Zlg7290Delay(20);//i=1; while(i--); //Zlg7290Delay(1); }

uchar RcvByte() { uchar retc,i; uchar BitCnt; retc=0; LPC_GPIO0->FIOSET |= 1<<27; //SDA=1; LPC_GPIO0->FIODIR &= ~(1<<27); /*置數(shù)據(jù)線為輸入方式*/ Zlg7290Delay(20);//i=1; while(i--); //Zlg7290Delay(1); for(BitCnt=0;BitCnt<8;BitCnt++) { LPC_GPIO0->FIOSET |= 1<<28; //SCL=1; /*置時鐘線為高使數(shù)據(jù)線上數(shù)據(jù)有效*/ Zlg7290Delay(50);//_Nop(); retc=retc<<1; //LPC_GPIO1->FIODIR &= ~(1<<4); //設(shè)置為P1.4 DIO數(shù)據(jù)口為輸入 if((LPC_GPIO0->FIOPIN & 0x08000000) == 0x08000000)retc=retc+1; /*讀數(shù)據(jù)位,接收的數(shù)據(jù)位放入retc中 */

LPC_GPIO0->FIOCLR |= 1<<28; //SCL=0; Zlg7290Delay(50);//_Nop(); } LPC_GPIO0->FIODIR |= 1<<27; //設(shè)置為P0.27 DIO數(shù)據(jù)口為輸出 //20110801 LPC_GPIO0->FIOSET |= 1<<27; //SDA=1; Zlg7290Delay(20);//i=1; while(i--); //Zlg7290Delay(1); LPC_GPIO0->FIOSET |= 1<<28; //SCL=1; /*置時鐘線為高使數(shù)據(jù)線上數(shù)據(jù)有效*/ Zlg7290Delay(20);//i=1; while(i--); //Zlg7290Delay(1);//_Nop(); LPC_GPIO0->FIOCLR |= 1<<28; //SCL=0; Zlg7290Delay(20);//i=1; while(i--); //Zlg7290Delay(1);//_Nop();

return(retc); }

void ch454_write(unsigned short cmd) //寫命令 { uchar i;

Start_I2c(); //啟動總線

SendByte((unsigned char)(cmd>>7)&CH454_I2C_MASK|CH454_I2C_ADDR0); //(suba);

SendByte((unsigned char)cmd); //發(fā)送數(shù)據(jù) //(Data);

Stop_I2c(); //結(jié)束總線

}

unsigned char CH454_Read(void) //讀取按鍵 BYTE IRcvStr() { uchar i;

Start_I2c(); //啟動總線 SendByte((unsigned char)(0x0700>>7)&CH454_I2C_MASK|CH454_I2C_ADDR0|0x01);//(0x4f); //發(fā)送器件地址 i=RcvByte();

Stop_I2c(); //結(jié)束總線 return i; }

您好,開顯示,初始化完成后 ch454_write(0x443);//開顯示鍵盤 ch454_write(0x500);//直接譯碼 使用加載在數(shù)據(jù)的命令(參見手冊),數(shù)碼管才會亮起來。 如果還是沒有亮起來,按如下步驟檢查。 首先確認一下你的CH454是否初始化成功,這個可以用示波器器看一下你的CH454的DIG腳是否有掃描信號。如果沒有則初始化失敗 第二,閃爍的命令不需要循環(huán)發(fā),發(fā)送一次即可。


只有登錄才能回復,可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频