| 困擾我?guī)椎某绦蚪K于搞定了,前幾天我對(duì)AT24C02一直讀不準(zhǔn)確,找了N長時(shí)間的程序都沒有頭緒,后來在板哥的指點(diǎn)下,一下子明白了,原因很簡單,我在AT24C02_read()最后沒有加延時(shí), 主要還是對(duì)時(shí)序沒有控制好呀,用板哥的一句話是我們對(duì)器件的了解還不很熟,我現(xiàn)在也感到,一定要先了解了器件的特性,我們才能游刃有余把握住每一個(gè)容易疏忽的細(xì)節(jié),在這里,板哥確實(shí)教會(huì)了我好多東西,在我剛學(xué)單片機(jī)時(shí),他就對(duì)我說時(shí)序很重要,現(xiàn)在終于是看到了. 好了不羅嗦了,最后得出一點(diǎn),最好在每個(gè)讀寫結(jié)束時(shí)加個(gè)延時(shí),如果對(duì)時(shí)間要求不是很重要的話,加的長一點(diǎn)無所謂,如果要求比較高的話,那先加長延時(shí),然后慢慢的減. #include <reg51.h> #include <intrins.h> /*********************************LCD定義部分********************************/ //輸入方式設(shè)置 #define LCD_AC_AUTO_INCREMENT 0x06 //數(shù)據(jù)讀、寫操作后,AC自動(dòng)增一 #define LCD_AC_AUTO_DECREASE 0x04 //數(shù)據(jù)讀、寫操作后,AC自動(dòng)減一 #define LCD_MOVE_ENABLE 0x05 //數(shù)據(jù)讀、寫操作,畫面平移 #define LCD_MOVE_DISENABLE 0x04 //數(shù)據(jù)讀、寫操作,畫面不動(dòng) #define LCD_GO_HOME 0x02 //AC=0,光標(biāo)、畫面回HOME位 //設(shè)置顯示、光標(biāo)及閃爍開、關(guān) #define LCD_DISPLAY_ON 0x0C //顯示開 #define LCD_DISPLAY_OFF 0x08 //顯示關(guān) #define LCD_CURSOR_ON 0x0A //光標(biāo)顯示 #define LCD_CURSOR_OFF 0x08 //光標(biāo)不顯示 #define LCD_CURSOR_BLINK_ON 0x09 //光標(biāo)閃爍 #define LCD_CURSOR_BLINK_OFF 0x08 //光標(biāo)不閃爍 //光標(biāo)、畫面移動(dòng),不影響DDRAM #define LCD_LEFT_MOVE 0x18 //LCD顯示左移一位 #define LCD_RIGHT_MOVE 0x1C //LCD顯示右移一位 #define LCD_CURSOR_LEFT_MOVE 0x10 //光標(biāo)左移一位 #define LCD_CURSOR_RIGHT_MOVE 0x14 //光標(biāo)右移一位 //工作方式設(shè)置 #define LCD_DISPLAY_DOUBLE_LINE 0x38 //兩行顯示 #define LCD_DISPLAY_SINGLE_LINE 0x30 //單行顯示 #define LCD_CLEAR_SCREEN 0X01 //清屏 |