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

QQ登錄

只需一步,快速開始

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

求STC15F104W的一個(gè)程序設(shè)計(jì)思路

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:594633 發(fā)表于 2020-4-1 16:48 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
哪位大佬能幫搞一個(gè)程序測(cè)試下硬件,小弟剛接觸單片機(jī),程序?qū)嵲谑歉悴欢畘 想搞一個(gè)程序研究下,謝謝各位~~

單片機(jī):STC15F104W

key1=P3^0;            //S1  按鍵
key2=P3^1;            //S2  備用按鍵
led1=P3^2;            //指示燈 綠色
led2=P3^3;            //指示燈 紅色  初始化為低電平
relay1=P3^4;         //繼電器1     
relay2=P3^5;        //繼電器2      

程序要求:
程序初始化后P3.3為低電平,其他默認(rèn)高電平。

1、P3.0由高變低(S1按下)——P3.4由高變低并保持2秒后再恢復(fù)到高并保持;P3.3由低變高并保持;P3.2間隔1秒低高輸出(LED1閃爍),30秒后低電平保持(LED1常亮);30秒內(nèi)重復(fù)S1按下無效,超過30秒才能有效。

2、P3.0由高變低(S1 30秒后再按下)——P3.5由高變低并保持2秒后再恢復(fù)到高并保持;P3.2由低變高并保持;P3.3間隔1秒低高輸出(LED2閃爍),30秒后低電平保持(LED2常亮);30秒內(nèi)重復(fù)S1按下無效,超過30秒才能有效。



-----------------
一個(gè)按鍵控制2個(gè)LED和2個(gè)繼電器。每30秒按鍵執(zhí)行1次相應(yīng)的動(dòng)作,30秒內(nèi)重復(fù)觸發(fā)無效。


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

使用道具 舉報(bào)

沙發(fā)
ID:584814 發(fā)表于 2020-4-1 18:54 | 只看該作者
你的思路已經(jīng)很清楚了,直接寫代碼就好。預(yù)祝順利。
回復(fù)

使用道具 舉報(bào)

板凳
ID:594633 發(fā)表于 2020-4-1 22:26 來自手機(jī) | 只看該作者
man1234567 發(fā)表于 2020-4-1 18:54
你的思路已經(jīng)很清楚了,直接寫代碼就好。預(yù)祝順利。

思路是有,這個(gè)代碼實(shí)在是弄不懂(=_=)
回復(fù)

使用道具 舉報(bào)

地板
ID:594633 發(fā)表于 2020-4-17 00:09 | 只看該作者
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int

sbit key =P3^0;                //開始結(jié)束按鍵
sbit LED1=P3^2;                //開始綠燈
sbit LED2=P3^3;               //停止紅燈
sbit relay =P3^4;      //開始繼電器
sbit relay1=P3^5;        //結(jié)束繼電器

uint count;//計(jì)時(shí)存儲(chǔ)器

void DelayMS(uint x)
{
        uchar i;
        while(x--);
        {
                for(i=0;i<120;i++);
        }
}

void init()
{
        
        TMOD=0x01;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;

        ET0 =1;
        TR0 =0;
        EA =1;
}

void main()
{
        relay1=1;
        relay=1;
        LED1=1;
        LED2=0;
        init();

        while (1)
        {
            if (key==0)//按鍵按下
            {
                    
                     TR0 =1;//啟動(dòng)定時(shí)器
           
            }
               
        }
}

void timer0()interrupt 1
{
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;

        count++;

        if (count ==1 && LED2==0)//到達(dá)設(shè)定時(shí)間
                {
                                relay =~relay;
                                DelayMS(50000);
                                relay =~relay;
                                       
                }

                if (count ==1 && LED1==0)
                {
                                relay1 =~relay1;
                                DelayMS(50000);
                                relay1 =~relay1;
                                       
                }
                       
                if (count <=450 && LED1==0)
                {
                        LED1=~LED1;
                        DelayMS(3000);
                            LED1=~LED1;
                        }
                else
                         {
                               LED2=~LED2;
                        DelayMS(3000);
                            LED2=~LED2;
                }

        if (count >=450)
                {
                           LED1=~LED1;
                           LED2=~LED2;
                            count =0;
                            TR0 =0;
                     }
                       
}


---------------------------------------------------------------------------------------------------------
把以上程序下載到STC15F104W里運(yùn)行不正常,LED不閃爍,始終常亮,搞不懂哪里問題。Proteus里仿真是正常的(這個(gè)程序仿真效果是2個(gè)指示燈切換顯示和原先要求不一樣,類似紅綠燈切換方式)。
下載程序的時(shí)候發(fā)現(xiàn)下載不進(jìn)去,始終再檢測(cè)。3.0和3.1口只接了開關(guān),沒有其他元件,后來發(fā)現(xiàn)3.4和3.5口要把限流電阻(控制三極管B極)拆掉才能下載……
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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