熱門(mén): 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂(lè)園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2020-9-23 16:24
正文摘要:仿真lcd1602秒的十位是正常的,一到做實(shí)物,lcd1602顯示的秒十位就是亂碼。 在線求解 實(shí)物的秒的十位顯示錯(cuò)誤,成了;或者超過(guò)了6的各種奇怪亂碼 |
可能是讀出的時(shí)鐘數(shù)據(jù)沒(méi)有屏蔽掉無(wú)關(guān)的位。 |
原因:程序語(yǔ)句里是否含有中文字符,或者不可見(jiàn)字符,第二,通信異常,延遲不足也會(huì)產(chǎn)生,但是我更覺(jué)得是字符問(wèn)題 |
我估計(jì)你是用到時(shí)鐘芯片了。DS1302、1307等。 可能是讀取芯片數(shù)據(jù)沒(méi)有正確讀取出來(lái), 檢查一下程序是否正確?適當(dāng)加一點(diǎn)延時(shí)可能會(huì)有幫助。 數(shù)據(jù)線是否正確連接?數(shù)據(jù)線上加上拉電阻了嗎? |
兩個(gè)思路 讀取1302的時(shí)序適當(dāng)加點(diǎn)延時(shí),1302壞 換一片 讀取的數(shù)據(jù)可以通過(guò)發(fā)串口來(lái)測(cè)試 |
理論上你是在讀DS1302的時(shí)鐘,但是沒(méi)看到你這部分代碼 |
有DS1302等芯片嗎?IO線接對(duì)沒(méi),芯片確定正常?我以前遇過(guò)時(shí)鐘芯片不正常有類(lèi)似情況,99:00 |
檢查寫(xiě)的字符串有沒(méi)有結(jié)束符“\x00", |
除了使用不同參數(shù)的芯片外,無(wú)需修改延時(shí)數(shù)值 |
長(zhǎng)風(fēng)007 發(fā)表于 2020-9-23 17:12 這是lcd1602的程序,時(shí)序有問(wèn)題嗎? #include "LCD1602.h" //**************************************************** //MS延時(shí)函數(shù)(12M晶振下測(cè)試) //**************************************************** void LCD1602_delay_ms(unsigned int n) { unsigned int i,j; for(i=0;i<n;i++) for(j=0;j<123;j++); } //**************************************************** //寫(xiě)指令 //**************************************************** void LCD1602_write_com(unsigned char com) { LCD1602_RS = 0; LCD1602_delay_ms(1); LCD1602_EN = 1; LCD1602_PORT = com; LCD1602_delay_ms(1); LCD1602_EN = 0; } //**************************************************** //寫(xiě)數(shù)據(jù) //**************************************************** void LCD1602_write_data(unsigned char dat) { LCD1602_RS = 1; LCD1602_delay_ms(1); LCD1602_PORT = dat; LCD1602_EN = 1; LCD1602_delay_ms(1); LCD1602_EN = 0; } //**************************************************** //連續(xù)寫(xiě)字符 //**************************************************** void LCD1602_write_word(unsigned char *s) { while(*s>0) { LCD1602_write_data(*s); s++; } } void Init_LCD1602() { LCD1602_EN = 0; //設(shè)置為寫(xiě)狀態(tài) LCD1602_write_com(0x38); //顯示模式設(shè)定 LCD1602_write_com(0x0c); //開(kāi)關(guān)顯示、光標(biāo)有無(wú)設(shè)置、光標(biāo)閃爍設(shè)置 LCD1602_write_com(0x06); //寫(xiě)一個(gè)字符后指針加一 LCD1602_write_com(0x01); //清屏指令 } |
本帖最后由 長(zhǎng)風(fēng)007 于 2020-9-23 17:16 編輯 查一下你的顯示位,還有顯示的時(shí)間間隔。實(shí)物是有時(shí)序要求的! |
Hei002.jpg (61.75 KB, 下載次數(shù): 87)
可以參考一下這個(gè)圖
除了仿真使用的是89c52,實(shí)物使用的是89c54RD芯片以外,其余連接均和仿真一樣 |
你要搞清楚時(shí)序圖 ![]() //**************************************************** //寫(xiě)指令 //**************************************************** void LCD1602_write_com(unsigned char com) { LCD1602_RS = 0; //LCD1602_delay_ms(1); LCD1602_EN = 0; //<------ LCD1602_PORT = com; LCD1602_EN = 1; //<------ LCD1602_delay_ms(1); LCD1602_EN = 0; } //**************************************************** //寫(xiě)數(shù)據(jù) //**************************************************** void LCD1602_write_data(unsigned char dat) { LCD1602_RS = 1; //LCD1602_delay_ms(1); LCD1602_EN = 0; //<------ LCD1602_PORT = dat; LCD1602_EN = 1; LCD1602_delay_ms(1); LCD1602_EN = 0; } |
Powered by 單片機(jī)教程網(wǎng)