久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2105|回復(fù): 9
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)串行通信遇到 問(wèn)題,求大神指點(diǎn)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:429598 發(fā)表于 2019-6-8 11:34 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
單片機(jī)串口通信,通過(guò)電腦發(fā)送01,02。當(dāng)發(fā)送01時(shí)LED小燈亮,同時(shí)數(shù)碼管的顯示加1。發(fā)送02時(shí)小燈滅,數(shù)碼管不加。現(xiàn)在的問(wèn)題是,小燈能夠正常亮與滅,但數(shù)碼管不正常顯示。即傳輸數(shù)據(jù)沒(méi)問(wèn)題,但是數(shù)碼管會(huì)亂碼,數(shù)碼管使用的是共陽(yáng)。發(fā)送01,小燈亮,數(shù)碼管從0變到了8。問(wèn)題出在哪里?求大神指點(diǎn)
#include<reg51.h>
#define uchar unsigned char
sbit LED=P1^0;
unsigned char code  SMG[]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char cnt=0;
uchar recv_dat;
void RESV()interrupt 4
{       
        RI=0;
        recv_dat=SBUF;
        SBUF=recv_dat;
        while(TI==0);
        TI=0;
}


void main()
{

TMOD=0X20;
TH1=TL1=0XFD;
PCON=0X00;
SCON=0X50;
ES=1;
EA=1;
TR1=1;
while(1)
        {
        if(recv_dat==0x01)
                {
            LED=0;
                cnt++;               
                }                                                                                                            
        else  if(recv_dat==0x02)
                {
                LED=1;
                }
                 P0 =SMG[cnt];
       
        }          
}



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:554109 發(fā)表于 2019-6-8 12:35 | 只看該作者
我覺(jué)得很大可能性是你的硬件方面存在問(wèn)題。數(shù)碼管使用的位數(shù)也需要注意。一位數(shù)碼管和4位一體或者6位一體都不一樣的
回復(fù)

使用道具 舉報(bào)

板凳
ID:10947 發(fā)表于 2019-6-8 14:06 | 只看該作者
數(shù)碼管顯示數(shù)字,對(duì)應(yīng)的筆畫(huà)亮,哪幾個(gè)筆畫(huà)亮,是從哪里定義的?
回復(fù)

使用道具 舉報(bào)

地板
ID:517466 發(fā)表于 2019-6-8 15:45 | 只看該作者
你的程序也有問(wèn)題。對(duì)cnt沒(méi)有加以限制,串口發(fā)送0x01給單片機(jī)超過(guò)9次的時(shí)候,cnt>9了,數(shù)組越界。如果程序區(qū)內(nèi)相應(yīng)的下一個(gè)單元數(shù)據(jù)為0,會(huì)導(dǎo)致數(shù)碼管所有筆段全部被點(diǎn)亮。改成cnt=(cnt++)%10;不好嗎?
另外,recv_dat在被中斷程序中賦值以后,比如串口發(fā)了0x01,那么之后串口不發(fā)送任何數(shù)據(jù),recv_dat會(huì)一直保持0x01,這樣的結(jié)果是,在while循環(huán)中,if(recv_dat==0x01)會(huì)一直滿足條件,一直執(zhí)行cnt++;我覺(jué)得,你在完成if...else..處理中,最好加入recv_dat=0之類的清除處理,保證串口發(fā)來(lái)數(shù)據(jù)后,if...else中的處理被執(zhí)行一次。
回復(fù)

使用道具 舉報(bào)

5#
ID:517466 發(fā)表于 2019-6-8 15:47 | 只看該作者
if(recv_dat==0x01)
{
            LED=0;
            cnt=(cnt++)%10;
            recv_dat=0;
}
else  if(recv_dat==0x02)
{
                LED=1;
                recv_dat=0;
}
回復(fù)

使用道具 舉報(bào)

6#
ID:517466 發(fā)表于 2019-6-8 15:49 | 只看該作者
你現(xiàn)在的現(xiàn)象,很正常,由于0x01被保持,主循環(huán)處理很快從0到9,以至于你觀察不到數(shù)碼管的顯示過(guò)程。
回復(fù)

使用道具 舉報(bào)

7#
ID:293387 發(fā)表于 2019-6-8 18:46 | 只看該作者
定義一個(gè)全局變量flag,在串口發(fā)送中斷時(shí)置flag=1;在主函數(shù)里取判斷這個(gè)flag==1,并且清零。也就是檢測(cè)是否發(fā)生串口中斷。
回復(fù)

使用道具 舉報(bào)

8#
ID:519141 發(fā)表于 2019-6-8 19:29 | 只看該作者
首先if(recv_dat==0x01)這條語(yǔ)句會(huì)一直滿足,肉眼是看不出來(lái)數(shù)碼管的變化,你可以加兩條調(diào)試語(yǔ)句進(jìn)去查看數(shù)值的變化;
回復(fù)

使用道具 舉報(bào)

9#
ID:519141 發(fā)表于 2019-6-8 19:30 | 只看該作者
其次,你需要確認(rèn)數(shù)碼管的引腳定義或者硬件連線上有沒(méi)有問(wèn)題
回復(fù)

使用道具 舉報(bào)

10#
ID:93224 發(fā)表于 2019-6-9 17:27 | 只看該作者
這個(gè)不能只看程序的,還要看你的數(shù)碼管的具體電路
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 在线色网 | 888久久久 | 日韩国产免费观看 | 91在线一区 | 一区二区三区在线观看免费视频 | 国产高清视频 | 日韩1区| 99精品久久久久 | 国产98色在线 | 日韩 | 亚洲第一福利视频 | 久久精品69 | 免费激情av | 国产精品久久久久aaaa樱花 | 久久久精品网站 | 国产视频第一页 | 91看片免费| 亚洲一区在线日韩在线深爱 | 国产高清一二三区 | 日韩欧美成人一区二区三区 | 精品91久久 | www.youjizz.com日韩 | 97久久精品午夜一区二区 | 亚洲高清一区二区三区 | 91精品国产综合久久婷婷香蕉 | 情侣酒店偷拍一区二区在线播放 | 91免费版在线观看 | 国产一二区免费视频 | 国产精品毛片一区二区在线看 | 天天干狠狠 | 国产一区二区三区在线 | 国产一区二区观看 | 日一区二区三区 | 看片天堂 | 国产精品极品美女在线观看免费 | 青青久久av北条麻妃海外网 | 国产精品一区在线观看 | 91精品久久久久久久久中文字幕 | 激情五月综合 | 国产精品日韩欧美一区二区三区 | 国产激情在线 | 美女天天操 |