版主請看,CH423顯示不正常

硬件:AVR162,14.7456MHz 代碼:網(wǎng)站提供的源代碼 CH423_SOFT.c //本例子程序提供操作方法,僅供參考 // ******************************************************************* // Website: http://wch.cn // Email: tech@wch.cn // Author: TECH 2008.11.25 // *******************************************************************

//ATMEGA16 PC0 ------- CH423 SCL //ATMEGA16 PC1 ------- CH423 SDA

我用這個代碼驅(qū)動一片CH423,帶動15個數(shù)碼管,顯示0-9的數(shù)字。其中會出現(xiàn)數(shù)字顯示不正常,主要出現(xiàn)在6-9之間的數(shù)字,請問這是怎么回事?

您好,發(fā)的代碼不全. 不太清楚您那邊現(xiàn)在的現(xiàn)象,不正常,也就是顯示6-9的時候,不正常的現(xiàn)象是什么?是顯示缺段?還是其他的現(xiàn)象?是否很有規(guī)律?比如缺段,所有的管子顯示6-9的時候所缺的段是否一樣的,如果是,請檢查是否電路連接問題,如果不是缺段,具體現(xiàn)象是什么?


具體代碼:

//本例子程序提供操作方法,僅供參考 // ******************************************************************* // Website: http://wch.cn // Email: tech@wch.cn // Author: TECH 2008.11.25 // *******************************************************************

//ATMEGA16 PC0 ------- CH423 SCL //ATMEGA16 PC1 ------- CH423 SDA

//ICCAVR下編譯

// ************************************** // 加載頭文件 // ************************************** #include #include

// ************************************** // CH423定義 // ************************************** #define CH423_SDA_OUT { DDRC |= (1<#define CH423_SDA_IN { PORTC |= (1<#define CH423_SDA_SET PORTC |= (1<#define CH423_SDA_CLR PORTC&=~(1<#define CH423_SDA ( PINC & (1<#define CH423_SCL_OUT { PORTC |= (1<#define CH423_SCL_SET PORTC |= (1<#define CH423_SCL_CLR PORTC &= ~(1<#define DELAY { NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP(); }

// ************************************** // 延時毫秒,不準 // ************************************** void mDelaymS( unsigned char ms ) // 延時毫秒,不準 { unsigned short i; while ( ms -- ) { for( i = 0; i != 3000; i++ ); } }

// ************************************** // BCD碼表 // ************************************** const unsigned char BCD_decode_tab[ 29 ] = { 0X3F, 0X06, 0X5B, 0X4F, 0X66, 0X6D, 0X7D, 0X07, 0X7F, 0X6F, 0X77, 0X7C, 0X58, 0X5E, 0X79, 0X71, 0x00, 0x46, 0x40, 0x41, 0x39, 0x0F, 0x08, 0x76, 0x38, 0x73, 0x80, 0xFF, 0x00 }; const unsigned char BCD_decode_tab_2[10] = { 0X28, 0XB5, 0XD5, 0XC9, 0X5D, 0X7D, 0XC4, 0XFD, 0XDD, 0XFC }; const unsigned char dp2 = 0X02; const unsigned char BCD_decode_tab_34[10] = { 0X41, 0XB3, 0XBA, 0X7A, 0XDA, 0XDB, 0XA8, 0XFB, 0XFA, 0XEB }; const unsigned char dp34 = 0X04; // ************************************** // I2C START // ************************************** void CH423_I2c_Start( void ) { CH423_SDA_SET; /*發(fā)送起始條件的數(shù)據(jù)信號*/ CH423_SDA_OUT; /* 設置SDA為輸出方向 */ DELAY; CH423_SCL_SET;/* 設置SCL為輸出方向 */ DELAY; CH423_SDA_CLR; /*發(fā)送起始信號*/ DELAY; CH423_SCL_CLR; /*鉗住I2C總線,準備發(fā)送或接收數(shù)據(jù) */ DELAY; }

// ************************************** // I2C STOP // ************************************** void CH423_I2c_Stop( void ) { CH423_SDA_CLR; CH423_SDA_OUT; /* 設置SDA為輸出方向 */ DELAY; CH423_SCL_SET; DELAY; CH423_SDA_SET; /*發(fā)送I2C總線結(jié)束信號*/ DELAY; CH423_SDA_IN; /* 設置SDA為輸入方向 */ DELAY; }

// ************************************** // I2C 寫一個字節(jié) // ************************************** void CH423_I2c_WrByte( unsigned char c ) //寫一個字節(jié)數(shù)據(jù) { unsigned char i; CH423_SDA_SET; CH423_SDA_OUT; /* 設置SDA為輸出方向 */ DELAY; for( i = 0; i != 8; i++ ) { if( c & 0x80 ) { CH423_SDA_SET; } else { CH423_SDA_CLR; } DELAY; CH423_SCL_SET; c <<= 1; DELAY; CH423_SCL_CLR; } CH423_SDA_IN; /* 設置SDA為輸入方向 */ DELAY; CH423_SCL_SET; DELAY; CH423_SCL_CLR; DELAY; }

// ************************************** // I2C 讀一個字節(jié) // ************************************** unsigned char CH423_I2c_RdByte( void ) //讀一個字節(jié)數(shù)據(jù) { unsigned char c, i; CH423_SDA_IN; /* 設置SDA為輸入方向 */ c = 0; for( i = 0; i != 8; i++ ) // 輸入8位數(shù)據(jù) { CH423_SCL_SET; DELAY; c <<= 1; if( CH423_SDA ) c++; // 輸入1位 CH423_SCL_CLR; DELAY; } CH423_SDA_SET; CH423_SDA_OUT; CH423_SCL_SET; // 發(fā)出無效應答 DELAY; CH423_SCL_CLR; DELAY; return(c); }

// ************************************** // CH423寫命令 // ************************************** void CH423_Write( unsigned short command ) //寫命令 { CH423_I2c_Start(); /*啟動總線*/ CH423_I2c_WrByte( (unsigned char)(command>>8) ); CH423_I2c_WrByte( (unsigned char)command ); /*發(fā)送數(shù)據(jù)*/ CH423_I2c_Stop(); /*結(jié)束總線*/ }

// ************************************** // CH423初始化 // ************************************** void CH423_Init( void ) { CH423_SCL_OUT; CH423_SDA_SET; CH423_SDA_OUT; }

void Clear( void )//清除顯示 { CH423_Write( 0x6000 ); CH423_Write( 0x6200 ); CH423_Write( 0x6400 ); CH423_Write( 0x6600 ); CH423_Write( 0x6800 ); CH423_Write( 0x6A00 ); CH423_Write( 0x6C00 ); CH423_Write( 0x6E00 ); CH423_Write( 0x7000 ); CH423_Write( 0x7200 ); CH423_Write( 0x7400 ); CH423_Write( 0x7600 ); CH423_Write( 0x7800 ); CH423_Write( 0x7A00 ); CH423_Write( 0x7C00 ); CH423_Write( 0x7E00 ); }

// ************************************** // 主函數(shù) // ************************************** void main( void ) { unsigned char count = 0; unsigned char dot = 0; unsigned char val; CH423_Init(); mDelaymS( 30 ); CH423_Write( 0x4800 | 0x17 );//啟用數(shù)碼管自動掃描功能 Clear();//清除顯示

for( ; ; ) { val = BCD_decode_tab[count] | dot; CH423_Write( 0x6000 | val ); //16位數(shù)碼管顯示 CH423_Write( 0x6200 | val ); CH423_Write( 0x6400 | val ); CH423_Write( 0x6600 | val ); CH423_Write( 0x6800 | val ); CH423_Write( 0x6A00 | val ); CH423_Write( 0x6C00 | val ); CH423_Write( 0x6E00 | val ); CH423_Write( 0x7000 | val ); CH423_Write( 0x7200 | val ); CH423_Write( 0x7400 | val ); CH423_Write( 0x7600 | val ); CH423_Write( 0x7800 | val ); CH423_Write( 0x7A00 | val ); CH423_Write( 0x7C00 | val ); CH423_Write( 0x7E00 | val ); if( count != 15 ) count++; else { count = 0; if( dot == 0 ) dot = 0x80; else dot = 0; } mDelaymS( 255 ); mDelaymS( 255 ); } while(1); }


BCD_decode_tab 只用了這一個 const unsigned char BCD_decode_tab[ 29 ] = { 0X3F, 0X06, 0X5B, 0X4F, 0X66, 0X6D, 0X7D, 0X07, 0X7F, 0X6F, 0X77, 0X7C, 0X58, 0X5E, 0X79, 0X71, 0x00, 0x46, 0x40, 0x41, 0x39, 0x0F, 0x08, 0x76, 0x38, 0x73, 0x80, 0xFF, 0x00 };


這是你們網(wǎng)站的源碼。代碼應該是沒錯的。 問題不是缺段,是出現(xiàn)亂碼。


您好: 出現(xiàn)亂碼可能是數(shù)據(jù)線上受到干擾或者是電源引腳處沒有接退藕電容等。 為了更詳細的了解及解決問題,您可以撥打我們的技術(shù)支持直撥電話025-52638373,或者留下號碼我們聯(lián)系您。


我也是這樣想,我的QQ號:48058265 msn:個人信息保護,已隱藏


麻煩您直接留電話給我們.我們會及時與您聯(lián)系.


這是我給另外家公司做的私活,所以平時上班不方便。還是QQ或者MSN聯(lián)系吧。 :)


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

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