找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

請教:單片機數(shù)碼管位選問題和3秒后執(zhí)行判斷的問題

查看數(shù): 3217 | 評論數(shù): 8 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時間: 2019-3-14 09:59

正文摘要:

我做一個根據(jù)液體壓力值進行電機相應的實驗。 當壓力小于8MPa時電機啟動,啟動3秒后壓力沒有上升就報警。 當壓力大于12MPa時電機停止。 暫時用一個指示燈來模擬電機。用可調(diào)電阻模擬壓力輸入。 程序如下: #i ...

回復

ID:491172 發(fā)表于 2019-3-15 10:28
從圖上可以看出,你p2.7是高電平,你這樣怎么能點亮二極管呢?應該是p2.7是低電平才對.
好好再想一想,重敲一下代碼!
ID:213173 發(fā)表于 2019-3-15 09:48
wtm_lxy 發(fā)表于 2019-3-15 08:47
非常感謝您的回復。
意思大概看懂了。
每計數(shù)500(延時多少?)就顯示一個數(shù)字

1.《每計數(shù)500(延時多少?)就顯示一個數(shù)字 》由于顯示程序被主程序調(diào)用,主循環(huán)周期基本固定,所以每計數(shù)500延時多少不確定,這只是看你的程序做的估計,實際調(diào)試時以數(shù)碼管不閃爍為準。一般在500us~2ms之間為宜。
2.邏輯與:&&,邏輯或:||,按位與:&、按位或:|。
P2&=0xf0;   //P2=P2&0xf0;   xxxx 0000
P2|=0xf7;    //P2=P2|0xf7;   xxxx 0111
ID:487930 發(fā)表于 2019-3-15 08:47
wulin 發(fā)表于 2019-3-14 17:12
/******************顯示采集的電壓**********************************/
//不影響P2高4位狀態(tài)的寫法
voi ...

非常感謝您的回復。
意思大概看懂了。
每計數(shù)500(延時多少?)就顯示一個數(shù)字
4個數(shù)字顯示完后,再循環(huán)。

順便請教一下:
P2&=0xf0;   //P2=P2&0xf0;   邏輯與,高4位不變,低4位清零
P2|=0xf7;    //P2=P2|0xf7;   邏輯或,相加,高4為置1,第4位為7
后面這句還是用邏輯與吧?保持高四位不變,只修改低4位的值
ID:487930 發(fā)表于 2019-3-15 08:23
zhb2004xp 發(fā)表于 2019-3-14 16:23
1、你設置了兩個LED,分別是P17和P27,沖突時自己造成的,和數(shù)碼管的位選沒有關系,因為你的位選是單獨設置 ...

1、不好意思,這個沖突應該是沒有的了。我修改了單片機中的程序引用目錄,忘記更新對應關系了,所以修改了程序?qū)嶋H上沒有生效。
2、定時器我試試看,還需要更努力的學習。

非常感謝您的回復。
ID:213173 發(fā)表于 2019-3-14 17:12
/******************顯示采集的電壓**********************************/
//不影響P2高4位狀態(tài)的寫法
void Display_Result(uint d)
{
        static uint count=0;
        static uchar i=0;
        if(++count>=500)//不影響其他程序運行的計數(shù)延時
        {
                count=0;
                P0=0x00;//消隱
                switch(i)
                {
                        case 0: P2&=0xf0;P2|=0xf7;P0=DSY_CODE[d%10];i++; break;
                        case 1: P2&=0xf0;P2|=0xfb;P0=DSY_CODE[d%100/10];i++; break;
                        case 2: P2&=0xf0;P2|=0xfd;P0=DSY_CODE[d%1000/100]|0x80;i++; break;
                        case 3: P2&=0xf0;P2|=0xfe;P0=DSY_CODE[d/1000];i=0; break;
                }
        }
}
ID:234075 發(fā)表于 2019-3-14 16:23
1、你設置了兩個LED,分別是P17和P27,沖突時自己造成的,和數(shù)碼管的位選沒有關系,因為你的位選是單獨設置的L1\L2\L3\L4而不是直接對P2的操作,所以P2的其他幾個IO口是可以正常使用的;
2、使用定時器中斷是最好的選擇,主函數(shù)中設置定時器中斷(暫不啟動)--循環(huán)檢測到壓力小于8MPa時電機啟動,同時啟動定時器開始計時--計時達到3秒且壓力沒有上升,則報警并停止中斷(累加計時變量清零)
。這樣的程序最好自己先畫一個流程圖,然后按照流程圖進行程序的設計。

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎勵!

查看全部評分

ID:487930 發(fā)表于 2019-3-14 12:14
本帖最后由 wtm_lxy 于 2019-3-14 15:44 編輯
wc86110 發(fā)表于 2019-3-14 11:04
程序上 P2 端口設置與 LED2 有沖突,位顯用 4 個就行

我把位選改成這樣了:L1=0;L2=1;L3=1;L4=1;   //P2=0xf7;  
但是D2還是 不常亮,不知道為什么?
ID:96682 發(fā)表于 2019-3-14 11:04
程序上 P2 端口設置與 LED2 有沖突,位顯用 4 個就行

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

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

快速回復 返回頂部 返回列表