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

QQ登錄

只需一步,快速開始

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

單片機(jī)P1擴(kuò)展端口的問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:242464 發(fā)表于 2018-11-6 10:37 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  請(qǐng)教論壇的高手 ,我用74hc373給P1擴(kuò)展了一個(gè)端口,EN接地LE接P3.1。程序運(yùn)行控制外設(shè)都正常,就是在上電的時(shí)候373的總是有數(shù)據(jù)輸出,造成外設(shè)誤動(dòng)。我在程序的初始化及相關(guān)的子函數(shù)里做了屏蔽但都沒有效果。不知各位是否遇到過(guò)。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:97554 發(fā)表于 2018-11-6 12:13 | 只看該作者
沒有程序,不知道是不是在開關(guān)機(jī)的時(shí)候該對(duì)373的11腳進(jìn)行一下操作,將373的輸出端鎖存的數(shù)據(jù)清空
回復(fù)

使用道具 舉報(bào)

板凳
ID:242464 發(fā)表于 2018-11-6 15:37 | 只看該作者
程序比較長(zhǎng)所以沒有上。不過(guò)我在程序的初始化及相關(guān)的子函數(shù)里已經(jīng)對(duì)373的11進(jìn)行過(guò)操作了。
#define ADC0809_bus P1      // DB0-DB7 :8位數(shù)據(jù)線
sbit cdxk=P3^1;              //電池充電許可(373的11腳)
sbit QDA=P1^3;
sbit QDB=P1^4;
sbit QDC=P1^5;
sbit dcsd=P1^6;
.......
lcd_showfull(0);                                           //清屏
        init6963(); //初始化
        m=ReadSet1302(0xdf);//讀取ARM諼甯齙緋中的數(shù)據(jù)
        if(m!=7)     //查看ARM中的數(shù)據(jù)是否為7
        Init_DS1302();       //初始化1302

        lcd_defcharacter8x16(0,0,1,2,tab2);//顯示    2-固定顯示
        lcd_defcharacter8x16(1,0,1,0,tab2);//顯示    0-固定顯示  
        lcd_defcharacter16x16(4,0,1,0,tab1);//顯示   年-固定顯示
        lcd_defcharacter16x16(8,0,1,1,tab1);//顯示   月-固定顯示
        lcd_defcharacter16x16(12,0,1,2,tab1);//顯示 日-固定顯示
        lcd_defcharacter16x16(15,0,1,3,tab1);//顯示 星-固定顯示
        lcd_defcharacter16x16(17,0,1,4,tab1);//顯示 期-固定顯示
        lcd_defcharacter16x16(21,0,1,20,tab1);//顯示 -固定顯示溫度計(jì)圖片
        lcd_defcharacter8x16(26,0,1,10,tab2);//顯示        -固定顯示小數(shù)點(diǎn).
        lcd_defcharacter16x16(28,0,1,21,tab1);//顯示 -固定顯示攝氏度圖片         
        lcd_defcharacter8x48(6,16,1,0,tab4);//顯示-固定顯示:(前兩點(diǎn))
        lcd_defcharacter8x48(13,16,1,0,tab4);//顯示-固定顯示:(后兩點(diǎn))
        lcd_defcharacter16x16(21,16,2,17,tab1);//顯示農(nóng)歷兩個(gè)字
       // lcd_defcharacter16x16(25,16,1,10,tab6);//顯示狗字
        lcd_defcharacter16x16(27,16,1,19,tab1);//顯示年字
              QDA=1;           //J5動(dòng)作給電池組充電
              QDB=1;
              QDC=1;
              dcsd=1;              //12伏送電關(guān)閉(單充送電關(guān)閉)
              delay1(20);
              cdxk=1;
              delay1(20);
              cdxk=0;
........
//模式選擇按鍵(進(jìn)入菜單程序)
//**************************
void Setkey()
{
                Set=1;
                if(Set==0)                  //菜單鍵按set為零
            {
                delay(30);
                if(Set==0)
                                {
                  count=count+1;         //Setkey按一次,count就加1
                          done=1;                         //進(jìn)入調(diào)整模式
                  while(!Set);      //等待Set為1
                                }
            }
              QDA=1;           //J5動(dòng)作給電池組充電
              QDB=1;
              QDC=1;
              dcsd=1;              //12伏送電關(guān)閉(單充送電關(guān)閉)
              delay1(20);
              cdxk=1;
              delay1(20);
              cdxk=0;

}

//**************************
//進(jìn)入充電模式選擇按鍵
//**************************
void jrcd()
{
                CDMS=1;
                if(CDMS==0)
            {
                delay(30);
                if(CDMS==0)
                                {
               
                          done1=1;                         //進(jìn)入充電模式
                  while(!CDMS);
                                }
            }
              QDA=1;           //J5動(dòng)作給電池組充電
              QDB=1;
              QDC=1;
              dcsd=1;              //12伏送電關(guān)閉(單充送電關(guān)閉)
              delay1(20);
              cdxk=1;
              delay1(20);
              cdxk=0;
}
這種形式的也用過(guò):
ADC0809_bus =0XFF
delay1(20);
              cdxk=1;
              delay1(20);
              cdxk=0;
回復(fù)

使用道具 舉報(bào)

地板
ID:94031 發(fā)表于 2018-11-6 15:43 | 只看該作者
上電可以馬上初始化74hc373,防止誤動(dòng)作。
回復(fù)

使用道具 舉報(bào)

5#
ID:242464 發(fā)表于 2018-11-6 15:48 | 只看該作者
我在程序的初始化及相關(guān)的子函數(shù)里做了操作。
回復(fù)

使用道具 舉報(bào)

6#
ID:242464 發(fā)表于 2018-11-6 15:56 | 只看該作者
楊雪飛 發(fā)表于 2018-11-6 12:13
沒有程序,不知道是不是在開關(guān)機(jī)的時(shí)候該對(duì)373的11腳進(jìn)行一下操作,將373的輸出端鎖存的數(shù)據(jù)清空

我在程序的初始化及相關(guān)的子函數(shù)里做了操作,這是我做的操作的部分內(nèi)容:
sbit cdxk=P3^1;              //電池充電許可(373的11腳)
sbit QDA=P1^3;
sbit QDB=P1^4;
sbit QDC=P1^5;
sbit dcsd=P1^6;
#define ADC0809_bus P1      // DB0-DB7 :8位數(shù)據(jù)線
............
//**************************
//模式選擇按鍵(進(jìn)入菜單程序)
//**************************
void Setkey()
{
                Set=1;
                if(Set==0)                  //菜單鍵按set為零
            {
                delay(30);
                if(Set==0)
                                {
                  count=count+1;         //Setkey按一次,count就加1
                          done=1;                         //進(jìn)入調(diào)整模式
                  while(!Set);      //等待Set為1
                                }
            }
              QDA=1;           //J5動(dòng)作給電池組充電
              QDB=1;
              QDC=1;
              dcsd=1;              //12伏送電關(guān)閉(單充送電關(guān)閉)
              delay1(20);
              cdxk=1;
              delay1(20);
              cdxk=0;

}

//**************************
//進(jìn)入充電模式選擇按鍵
//**************************
void jrcd()
{
                CDMS=1;
                if(CDMS==0)
            {
                delay(30);
                if(CDMS==0)
                                {
               
                          done1=1;                         //進(jìn)入充電模式
                  while(!CDMS);
                                }
            }
              QDA=1;           //J5動(dòng)作給電池組充電
              QDB=1;
              QDC=1;
              dcsd=1;              //12伏送電關(guān)閉(單充送電關(guān)閉)
              delay1(20);
              cdxk=1;
              delay1(20);
              cdxk=0;
}
.........
main()
{
        lcd_showfull(0);                                           //清屏
        init6963(); //初始化
        m=ReadSet1302(0xdf);//讀取ARM諼甯齙緋中的數(shù)據(jù)
        if(m!=7)     //查看ARM中的數(shù)據(jù)是否為7
        Init_DS1302();       //初始化1302

        lcd_defcharacter8x16(0,0,1,2,tab2);//顯示    2-固定顯示
        lcd_defcharacter8x16(1,0,1,0,tab2);//顯示    0-固定顯示  
        lcd_defcharacter16x16(4,0,1,0,tab1);//顯示   年-固定顯示
        lcd_defcharacter16x16(8,0,1,1,tab1);//顯示   月-固定顯示
        lcd_defcharacter16x16(12,0,1,2,tab1);//顯示 日-固定顯示
        lcd_defcharacter16x16(15,0,1,3,tab1);//顯示 星-固定顯示
        lcd_defcharacter16x16(17,0,1,4,tab1);//顯示 期-固定顯示
        lcd_defcharacter16x16(21,0,1,20,tab1);//顯示 -固定顯示溫度計(jì)圖片
        lcd_defcharacter8x16(26,0,1,10,tab2);//顯示        -固定顯示小數(shù)點(diǎn).
        lcd_defcharacter16x16(28,0,1,21,tab1);//顯示 -固定顯示攝氏度圖片         
        lcd_defcharacter8x48(6,16,1,0,tab4);//顯示-固定顯示:(前兩點(diǎn))
        lcd_defcharacter8x48(13,16,1,0,tab4);//顯示-固定顯示:(后兩點(diǎn))
        lcd_defcharacter16x16(21,16,2,17,tab1);//顯示農(nóng)歷兩個(gè)字
       // lcd_defcharacter16x16(25,16,1,10,tab6);//顯示狗字
        lcd_defcharacter16x16(27,16,1,19,tab1);//顯示年字
              QDA=1;           //J5動(dòng)作給電池組充電
              QDB=1;
              QDC=1;
              dcsd=1;              //12伏送電關(guān)閉(單充送電關(guān)閉)
              delay1(20);
              cdxk=1;
              delay1(20);
              cdxk=0;
這種模式也用過(guò):
ADC0809_bus=0xff;
delay1(20);
              cdxk=1;
              delay1(20);
              cdxk=0;
回復(fù)

使用道具 舉報(bào)

7#
ID:387733 發(fā)表于 2018-11-6 19:10 | 只看該作者
OE引腳為輸出三態(tài)控制端,當(dāng)OE為高電平時(shí),輸出O0-O7呈高阻態(tài),因此可以在該引腳接一個(gè)阻容,使上電時(shí)保持高電平,確保初始化完成前沒有輸出
回復(fù)

使用道具 舉報(bào)

8#
ID:94031 發(fā)表于 2018-11-7 09:16 | 只看該作者
本帖最后由 xuyaqi 于 2018-11-7 10:38 編輯
LWB2005_2 發(fā)表于 2018-11-6 15:48
我在程序的初始化及相關(guān)的子函數(shù)里做了操作。

可以在硬件74hc373有關(guān)腳上加電容,延遲響應(yīng)一段時(shí)間,避過(guò)上電瞬間。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表