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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

請問如何將源程序中單片機低電平輸出有效修改為高電平輸出有效?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:402677 發(fā)表于 2024-12-27 09:40 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式

以下是一個51單片機的交通信號紅綠燈源程序,試運行一切正常,但我想將原來的信號燈輸出端口東西紅燈(P3.4)、東西黃燈(P3.5)、東西綠燈(P3.3);南北紅燈(P3.2)、南北黃燈(P3.1)、南北綠燈(P3.0)這六個端口由原來的低電平輸出有效修改為高電平輸出有效(也就是將源程序中定義輸出端口低電平時點亮信號燈修改為輸出端口高電平時點亮信號燈),謝謝了!
以下是電路圖僅供參考:

以下是源程序:
#include <reg52.h>                 //調(diào)用單片機頭文件
#define uchar unsigned char  //無符號字符型 宏定義        變量范圍0~255
#define uint  unsigned int         //無符號整型 宏定義        變量范圍0~65535


sbit key4 = P3^7;                //按鍵IO口定義(狀態(tài)設(shè)置)

uchar menu_1;                            //設(shè)置不同參數(shù)的變量

char dx_s = 0,nb_s = 0;        //東西  南北 倒計時變量

sbit dx_red    = P3^4;            //東西紅燈IO口定義(pin1~p3.4)
sbit dx_green  = P3^3;                //東西綠燈IO口定義(pin8~p3.3)
sbit dx_yellow = P3^5;                //東西黃燈IO口定義(pin3~p3.5)

sbit nb_red    = P3^2;                //南北紅燈IO口定義(pin7~p3.2)
sbit nb_green  = P3^0;                //南北綠燈IO口定義(pin5~p3.0)
sbit nb_yellow = P3^1;                //南北黃燈IO口定義(pin6~p3.1)       

bit flag_1s = 0;          //1秒的變量
bit flag_500ms;                  //500毫秒的變量
bit flag_dx_nb = 0;   //東西南北模式
uchar dx_time = 20,nb_time = 35;   //東西、南北的時間
uchar flag_jdgz ;     //交通管制

/********************************************************************
* 名稱 : delay_1ms()
* 功能 : 延時1ms函數(shù)
* 輸入 : q
* 輸出 : 無
***********************************************************************/
void delay_1ms(uint q)
{
        uint i,j;
        for(i=0;i<q;i++)
                for(j=0;j<120;j++);
}

uchar i;
/***********************************************************************/
void display()
{
        for(i=0;i<4;i++)
        {               
                P0 = 0xff;                  //消隱
                           //位選
//段選          
                delay_1ms(3);                  //延時
        }
}

/*********************定時器0、定時器1初始化******************/
void time0_init()          
{
        EA  = 1;                   //開總中斷
        TMOD = 0X01;          //定時器0工作方式1
        ET0 = 1;                  //開定時器0中斷
        TR0 = 1;                  //允許定時器0定時
        TH0 = 0x3c;
        TL0 = 0xb0;     //50ms
}

/*********************交通燈處理函數(shù)*********************************/
void jiaotongdeng_dis()
{
        if(flag_1s == 1)           //1秒執(zhí)行一次里面的程序  
        {
                flag_1s = 0;
                if(flag_dx_nb == 0)           //南北綠燈時間
                {
                        dx_s --;                   //東西倒計時時間減1
                        nb_s --;                   //南北倒計時時間減1
                        if(dx_s == 5)
                                nb_s = 5;
                }
                if(flag_dx_nb == 1)           //東西綠燈時間
                {
                        dx_s --;                   //南北倒計時時間減1
                        nb_s --;                   //東西倒計時時間減1
                        if(nb_s == 5)
                                dx_s = 5;
                }
                if(dx_s <= 0)                  //倒計時時間為0切換東西 南北綠燈時間
                {
                        flag_dx_nb = ~flag_dx_nb;
                        if(flag_dx_nb == 1)         //東西時間
                        {
                                dx_s = dx_time;          
                                nb_s = dx_time + 5;
                        }
                        else                                  //南北時間
                        {
                                dx_s = nb_time + 5;       
                                nb_s = nb_time;          
                        }
                }
        }

/***********************南北時間*********************************/
        if(flag_dx_nb == 0)  
        {
                if(dx_s > 5)
                {
                        dx_red    = 0;     //東西紅燈亮
                        dx_green  =        1;           //東西紅燈滅
                        dx_yellow = 1;           //東西黃燈滅
                        nb_red    = 1;     //南北紅燈滅
                        nb_green  =        0;           //南北綠燈亮
                        nb_yellow = 1;           //南北黃燈滅

                }else if(dx_s <= 5)                 //當(dāng)小于5秒時  黃燈要閃了
                {
                        dx_red    = 0;     //東西紅燈滅
                        dx_green  =        1;           //東西紅燈滅
                        dx_yellow = 1;           //東西黃燈滅
                        nb_red    = 1;     //南北紅燈滅
                        nb_green  =        1;           //南北綠燈滅
                        if(flag_500ms == 0)           //黃燈閃爍
                        {
                                nb_yellow = 0;        //亮       
                        }
                        else
                        {
                                nb_yellow = 1;        //滅       
                        }
                }
        }
/***********************東西時間*********************************/
        if(flag_dx_nb == 1)  
        {
                if(nb_s > 5)
                {
                        dx_red    = 1;  //東西紅燈滅
                        dx_green  =        0;        //東西紅燈亮
                        dx_yellow = 1;        //東西黃燈滅
                        nb_red    = 0;  //南北紅燈亮
                        nb_green  =        1;        //南北綠燈滅
                        nb_yellow = 1;        //南北黃燈滅
                }else if(nb_s <= 5)                 //當(dāng)小于5秒時  黃燈要閃了
                {
                        dx_red    = 1;    //東西紅燈滅
                        dx_green  =        1;          //東西紅燈滅
                        nb_red    = 0;    //南北紅燈亮
                        nb_green  =        1;          //南北綠燈滅
                        nb_yellow = 1;          //南北黃燈滅
                        if(flag_500ms == 0)         //黃燈閃爍
                        {
                                dx_yellow = 0;//東西黃燈亮       
                        }
                        else
                        {
                                dx_yellow = 1;//東西黃燈滅       
                        }

                }
        }                       
}

/********************獨立按鍵程序*****************/
uchar key_can;         //按鍵值

void key()         //獨立按鍵程序
{
        static uchar key_new;       //key_new  這個變量的功能是做按鍵松手檢測的
        key_can = 0;                //按鍵值還原成0
        if( key4 == 0)                        //有按鍵按下
        {
                delay_1ms(1);                     //按鍵延時消抖動
                if(key_new == 1)
                {                                         
                        key_new = 0;                //key_new = 0   說明按鍵已按下

                        if(key4 == 0)                //確認(rèn)是按鍵按下
                                key_can = 4;         //得到按鍵值
                }                       
        }
        else
                key_new = 1;         //key_new = 1   說明按鍵已經(jīng)松開了       
}

/********************設(shè)置函數(shù)*****************/
void key_with()
{
        if(key_can == 4)       //交通管制按鍵
        {
                flag_jdgz ++;
                if(flag_jdgz > 4)
                        flag_jdgz = 0;       
                if(flag_jdgz == 1)         //  全部亮紅燈
                {
                        dx_red    = 0;  //東西紅燈亮
                        dx_green  =        1;        //東西綠燈滅
                        dx_yellow = 1;        //東西黃燈滅
                        nb_red    = 0;  //南北紅燈亮
                        nb_green  =        1;        //南北綠燈滅
                        nb_yellow = 1;        //南北黃燈滅                       
                }
                if(flag_jdgz == 2)         //  東西紅燈  南北綠燈
                {
                        dx_red    = 0;  //東西紅燈亮
                        dx_green  =        1;        //東西綠燈滅
                        dx_yellow = 1;        //東西黃燈滅
                        nb_red    = 1;  //南北紅燈滅
                        nb_green  =        0;        //南北綠燈亮
                        nb_yellow = 1;        //南北黃燈滅                       
                }
                if(flag_jdgz == 3)         //  南北紅燈  東西綠燈
                {
                        dx_red    = 1;  //東西紅燈滅
                        dx_green  =        0;        //東西綠燈亮
                        dx_yellow = 1;        //東西黃燈滅
                        nb_red    = 0;  //南北紅燈亮
                        nb_green  =        1;        //南北綠燈滅
                        nb_yellow = 1;        //南北黃燈滅                       
                }
                if(flag_jdgz == 4)         //  南北黃燈閃  東西黃燈閃
                {
                        dx_red    = 1;  //東西紅燈滅
                        dx_green  =        1;        //東西綠燈滅
                        nb_red    = 1;  //南北紅燈滅
                        nb_green  =        1;        //南北綠燈滅
                }

        }
}

/********************************************************************
* 名稱 : main()
* 功能 : 實現(xiàn)燈的閃爍
* 輸入 : 無
* 輸出 : 無
***********************************************************************/
void main()
{
        time0_init();                  //定時器初始化程序
        dx_s = nb_time + 5;          //南北時間
        nb_s = nb_time ;          //東西時間
        while(1)
        {
                key();                           //按鍵函數(shù)
                if(key_can > 0)           //有按鍵按下
                        key_with();           //按鍵處理函數(shù)
                if((menu_1 == 0) && (flag_jdgz == 0))
                        jiaotongdeng_dis();           //交通燈處理函數(shù)

                if(flag_jdgz == 4)        //夜間模式
                        if(flag_500ms == 1)                //  南北黃燈閃  東西黃燈閃
                        {
                                flag_500ms = 0;
                                nb_yellow = ~nb_yellow;           //  東西黃燈閃
                                dx_yellow = ~dx_yellow;           //  東西黃燈閃
                        }       
                display();         //數(shù)碼管顯示函數(shù)
        }
}  

/*********************定時器0中斷服務(wù)程序************************/
void time0_int() interrupt 1  
{                                                  
        static  uchar value;                         //定時50ms中斷一次
        TH0 = 0x3c;
        TL0 = 0xb0;     //50ms
        value ++;
        if(value % 10 == 0)
                flag_500ms = ~flag_500ms;           //定時產(chǎn)生一個500毫秒的變量
        if(value >= 20)
        {
                value = 0;
                flag_1s = 1;         //定時產(chǎn)生一個1秒的變量
        }
}

交通信號紅綠燈燈~STC15F104E輸出低電平修改為高電平.png (40.75 KB, 下載次數(shù): 0)

將單片機原輸出低電平有效修改為輸出高電平有效

將單片機原輸出低電平有效修改為輸出高電平有效
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:860926 發(fā)表于 2024-12-27 15:13 | 只看該作者
把你所有燈的輸出,0改成1,1改成0,不就好了
回復(fù)

使用道具 舉報

板凳
ID:402677 發(fā)表于 2024-12-27 16:16 | 只看該作者
lzw991101 發(fā)表于 2024-12-27 15:13
把你所有燈的輸出,0改成1,1改成0,不就好了

我把東西南北的輸出狀態(tài)都取反了,但是不正常,不知哪個地方改的問題。
回復(fù)

使用道具 舉報

地板
ID:849913 發(fā)表于 2024-12-27 19:02 | 只看該作者
樓上說的很對 補充一下 驅(qū)動ULN2003 單片機的輸出模式改成推挽模式
回復(fù)

使用道具 舉報

5#
ID:420836 發(fā)表于 2024-12-28 02:56 | 只看該作者
檢查單片機的電流驅(qū)動能力是否小于LED的最小電流。
回復(fù)

使用道具 舉報

6#
ID:402677 發(fā)表于 2024-12-28 09:12 | 只看該作者
TTQ001 發(fā)表于 2024-12-28 02:56
檢查單片機的電流驅(qū)動能力是否小于LED的最小電流。

單片機輸出是通過ULN2003A驅(qū)動的
回復(fù)

使用道具 舉報

7#
ID:712097 發(fā)表于 2024-12-28 10:17 | 只看該作者
P3M0 = 0xff; P3M1 = 0x00; //P3口設(shè)置為推挽輸出
回復(fù)

使用道具 舉報

8#
ID:402677 發(fā)表于 2024-12-28 14:35 | 只看該作者
chxelc 發(fā)表于 2024-12-28 10:17
P3M0 = 0xff; P3M1 = 0x00; //P3口設(shè)置為推挽輸出

謝謝你
回復(fù)

使用道具 舉報

9#
ID:402677 發(fā)表于 2024-12-28 14:42 | 只看該作者
chxelc 發(fā)表于 2024-12-28 10:17
P3M0 = 0xff; P3M1 = 0x00; //P3口設(shè)置為推挽輸出

您好
請問"
P3M0 = 0xff; P3M1 = 0x00; //P3口設(shè)置為推挽輸出"
這條語句加到哪個位置呢?
我太菜了,不好意思!
回復(fù)

使用道具 舉報

10#
ID:402677 發(fā)表于 2024-12-28 15:04 | 只看該作者
chxelc 發(fā)表于 2024-12-28 10:17
P3M0 = 0xff; P3M1 = 0x00; //P3口設(shè)置為推挽輸出

您好,請問"P3M0 = 0xff; P3M1 = 0x00; //P3口設(shè)置為推挽輸出"這條語句添加到源程序中哪個位置呢?,我很菜哦!

STC15F104E IO口.jpg (121.76 KB, 下載次數(shù): 0)

STC15F104E  IO口.jpg
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: www.奇米| 国产精品久久久久久久久久久久 | 91视频网址 | 日韩视频免费看 | 欧美a级成人淫片免费看 | 欧美欧美欧美 | 亚洲一区二区三区四区五区中文 | 91麻豆精品一区二区三区 | 在线免费观看成人 | 狠狠操狠狠干 | 奇色影视| av大片在线 | 精品国产一区二区三区久久久四川 | 欧美一页 | 99精品欧美一区二区三区综合在线 | 国产高清一区 | 日韩精品1区2区 | 福利网址 | 秋霞a级毛片在线看 | 欧美 日韩 国产 成人 | 中文字幕第一页在线 | www.久| 免费网站国产 | 青青久在线视频 | 亚洲一区二区视频 | 亚洲a视频 | 亚洲欧美日韩精品久久亚洲区 | 午夜小视频免费观看 | 亚洲视频欧美视频 | 91久久| 精品一区二区久久 | 午夜精品久久久久久久久久久久久 | 高清成人av | 午夜成人免费视频 | 这里只有精品99re | 亚洲精品福利在线 | 国产91综合一区在线观看 | 日韩精品在线观看免费 | 自拍偷拍亚洲欧美 | 天天操夜夜操免费视频 | 99亚洲精品|