熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
|
發(fā)布時(shí)間: 2018-11-9 16:17
正文摘要:用的普中科技C51 單片機(jī)開發(fā)板。 現(xiàn)在想實(shí)現(xiàn)AD轉(zhuǎn)換,我有一個(gè)直線電位計(jì),單片機(jī)通過AD轉(zhuǎn)換將電位計(jì)的數(shù)值顯示在動(dòng)態(tài)數(shù)碼管上,同時(shí)增加一個(gè)串口,從串口助手上發(fā)送1,單片機(jī)將當(dāng)前直線電位計(jì)的數(shù)值返回串口助手, ... |
15942379927 發(fā)表于 2018-11-13 15:38 你的意思 就是 我 把receiveData=='1' 這里的1 改成0x0a嗎?這樣可以,但是并沒有解決返回值是亂碼的問題。。 現(xiàn)在問題的原因找到了,就是Read_AD_Data(0xE4)返回的是數(shù)字,而串口傳過去的是字符串,所以就是亂碼了。但是我不知道怎么寫。。 我嘗試用數(shù)組把數(shù)字摘出來 ,一個(gè)一個(gè)傳 void Usart() interrupt 4 { u8 receiveData; u8 str[4]; u8 i; u8 j; if(RI == 1) { RI = 0;//清除接收中斷標(biāo)志位 receiveData=SBUF;//儲存接收到的數(shù)據(jù) for(j=1;j<5;j++) { if(receiveData=='1') { i=Read_AD_Data(0xE4); str[1]=i/1000+48; str[2]=i%1000/100+48; str[3]=i%1000%100/10+48; str[4]=i%1000%100%10+48; SBUF=str[j]; } else { SBUF=receiveData; } } } while(!TI); //等待發(fā)送數(shù)據(jù)完成 TI=0; //清除發(fā)送完成標(biāo)志位 } 但是這樣也不對。。。 |
guangshi_wq 發(fā)表于 2018-11-13 14:42 Read_AD_Data(0xE4) 這個(gè)里面就是0-4095,一共4096個(gè)數(shù),是我采直線電位計(jì)的返回值。。。現(xiàn)在確定就是中斷這塊的問題,而且是 Read_AD_Data(0xE4) 里面的數(shù)字和字符串之間的矛盾,如果我把 Read_AD_Data(0xE4) 改成48,那么串口助手上的返回值就是0。。。。但是現(xiàn)在關(guān)鍵是 不知道這里怎么處理。 |
| 你可以試一試用八位的碼去驗(yàn)證 比如說0x0a 是1 0x0b是2 。。。。。無非就是在case那里改一下 |
1貌似跟停止位重復(fù)了 ,串口分不清楚到底是數(shù)據(jù)位還是停止位 我的分析![]() |
|
SBUF=Read_AD_Data(0xE4); 沒有看見你的子涵數(shù)。不知道怎么調(diào)用啊。 |
| 為什么沒人來,能不能把這個(gè)貼子轉(zhuǎn)到問答區(qū)啊 |
| 沒人嗎?呃 |
Powered by 單片機(jī)教程網(wǎng)