標(biāo)題: 51單片機(jī)如何同時(shí)控制數(shù)碼管和LCD [打印本頁(yè)]

作者: yyyddd    時(shí)間: 2018-4-20 15:28
標(biāo)題: 51單片機(jī)如何同時(shí)控制數(shù)碼管和LCD
怎么能同時(shí)使用他們兩個(gè)呢?光用數(shù)碼管動(dòng)態(tài)顯示就是正常的,加上LCD動(dòng)態(tài)顯示就不正常了,因?yàn)長(zhǎng)CD讀寫速度慢的原因我覺得,不知道該怎么解決,大神們誰(shuí)能解答一下
作者: oniy    時(shí)間: 2018-4-20 15:40
初步判斷,LZ  的程序 是: LED 亮; 延時(shí)5秒; LED 滅; 延時(shí)10秒; 數(shù)碼管 +1; 循環(huán)以上內(nèi)容;
作者: QIANLILI    時(shí)間: 2018-4-20 16:32
數(shù)碼管用74H595來(lái)驅(qū)動(dòng)(而且只占用3個(gè)IO口),不要直接用動(dòng)態(tài)方式驅(qū)動(dòng)。
作者: wulin    時(shí)間: 2018-4-20 17:46
這樣的功能很容易實(shí)現(xiàn),問(wèn)題是你的數(shù)碼管動(dòng)態(tài)顯示程序不合理,占用CPU時(shí)間太多,如果調(diào)度得好,再增加許多任務(wù)也不會(huì)互相干擾。
作者: 18270612091    時(shí)間: 2018-4-20 18:13
可以使用74HC573   鎖存器   把信號(hào)鎖存起來(lái)
作者: Jear    時(shí)間: 2018-4-20 18:24
74H595 74H573都可以
作者: zl2168    時(shí)間: 2018-4-20 20:49
本帖最后由 zl2168 于 2018-4-20 20:54 編輯

如果兩個(gè)都會(huì),拼起來(lái)不就是了?如果兩個(gè)都不會(huì),那就一個(gè)一個(gè)學(xué),然后拼起來(lái)!如果不會(huì)拼,說(shuō)明沒(méi)學(xué)好,那就繼續(xù)學(xué)!不會(huì)有現(xiàn)成答案,只有自己去拼。
作者: juzi    時(shí)間: 2018-4-20 21:16
跟硬件有關(guān)吧?I/O不夠用,如果I/O夠多就可以互相不受影響
作者: yzwzfyz    時(shí)間: 2018-4-20 22:36
主要是你不會(huì)合理地安排時(shí)序邏輯!
作者: staring    時(shí)間: 2018-4-20 23:03
換顆單片機(jī)試試,按理說(shuō)i/o口沒(méi)事就ok啊

作者: 笨笨兔    時(shí)間: 2018-4-21 11:06
說(shuō)明邏輯、時(shí)序你還沒(méi)有搞清楚。。。。。。
作者: cwcc    時(shí)間: 2022-11-1 16:25
zl2168 發(fā)表于 2018-4-20 20:49
如果兩個(gè)都會(huì),拼起來(lái)不就是了?如果兩個(gè)都不會(huì),那就一個(gè)一個(gè)學(xué),然后拼起來(lái)!如果不會(huì)拼,說(shuō)明沒(méi)學(xué)好,那 ...

兩個(gè)有沖突哥哥,別在這里張口沒(méi)學(xué)好沒(méi)學(xué)好

作者: STC莊偉    時(shí)間: 2022-11-4 11:25
STC8H4K64TLCD-45MHz-LQFP64,硬件LCD段碼驅(qū)動(dòng)顯示-硬件實(shí)時(shí)時(shí)鐘演示

可以從 STC-ISP V6.90T 以上版本的 ISP燒錄/輔助開發(fā)工具包一體化軟件的
//資料下載// 專欄 中下載 開源的 C語(yǔ)言代碼, 開源的原理圖   


作者: 七歲的鬼    時(shí)間: 2022-11-4 19:23
74H573 74H595
作者: 17303806905    時(shí)間: 2022-11-4 21:32
LED動(dòng)態(tài)顯示加鎖存器驅(qū)動(dòng)

作者: 568963ll    時(shí)間: 2022-11-5 17:07
74H5C3就可以了
作者: 蘇慶波    時(shí)間: 2022-11-6 16:16
可以使用74HC573   鎖存器   把信號(hào)鎖存起來(lái)
作者: yscbg    時(shí)間: 2022-11-6 21:28
程序結(jié)構(gòu)問(wèn)題,不能用delay掃描數(shù)碼管,用中斷掃描,每執(zhí)行中斷一次掃描一位,LCD驅(qū)動(dòng)在主循環(huán)執(zhí)行就不會(huì)干涉,例如8位掃描+鍵盤中斷
/*------------------------------------------------------------------------------
T0          中斷1         延時(shí)、顯示、鍵盤掃描          
------------------------------------------------------------------------------*/
void timer0(void) interrupt 1
        {       
                static uchar i,j,key_down,key_count;
                TH0 = 0xEE;
                TL0 = 0x12;
                P0=0x00;        //段碼關(guān)閉,避免影響鍵盤(避免位三極管飽和壓降大)
                i++;                        //生產(chǎn)速度計(jì)數(shù)       
                if(i==4)          //2.5ms*4=0.01s時(shí)基
                {   
                        i=0;
                        for(j=0;j<8;j++)//delay[0]-delay[6]每10ms周期減一到零為止
                        {
                                if(delay[j]!=0)
                                        {
                                                delay[j]--;
                                        }       
                        }
                }
                //鍵盤掃描(有按鍵按下后每周期固定P2輸出2.5ms間隔計(jì)數(shù)去抖)
                if(key_down!=8)
                {
                        P2=weim[key_down];           //輸出第一次按下的掃描碼
                        if(P2!=weim[key_down]) //檢測(cè)輸入跟輸出不同
                        {
                                if(key_count==8)           //如果小于8,計(jì)數(shù)+1
                                {
                                        key[key_down]=1;//否則,按鍵有效
                                }
                                else
                                        key_count++;
                        }
                        else   //檢測(cè)輸入跟輸出相同        key_num-- 到零
                        {
                                if(key_count!=0)        //計(jì)數(shù)不為零
                                        key_count--;
                                else
                                {
                                        key[key_down]=0;  //按鍵輸出置零
                                        key_down=8;                  //標(biāo)記置8新一輪每個(gè)檢測(cè)
                                }
                        }
                }
                else
                {
                        if(P2!=weim[wei]) //檢測(cè)輸入跟輸出不同
                                key_down=wei;          //做標(biāo)記=位碼
                }
                wei++;     
                //數(shù)碼管掃描
                if(wei==8)
                        wei=0;
                P2=weim[wei];   //置位碼
                if(wei!=point)           //斷碼加小數(shù)點(diǎn)處理
                        P0=duan[disp[wei]];
                else
                        P0=duan[disp[wei]]|0x80;
        }




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1