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

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

QQ登錄

只需一步,快速開始

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

單片機(jī)信號(hào)燈程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:528461 發(fā)表于 2019-5-6 13:55 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include<reg51.h>
#include<rtx51tny.h>
#define uint unsigned int
#define uchar unsigned char

sbit con=P3^2;                 //存儲(chǔ)寄存器的時(shí)鐘輸入。

sbit snr=P2^2;                //上升沿時(shí)移位寄存器中的數(shù)據(jù)進(jìn)入存儲(chǔ)寄存器,         
sbit sng=P2^3;                    //下降沿時(shí)存儲(chǔ)寄存器中的數(shù)據(jù)保持不變。                                                         
sbit sny=P2^4;                    //應(yīng)用時(shí)通常將ST_CP置為低點(diǎn)平,
sbit ewr=P2^5;                    //移位結(jié)束后再在ST_CP端產(chǎn)生一個(gè)正脈沖更新顯示數(shù)據(jù)。                 
sbit ewg=P2^6;
sbit ewy=P2^7;

sbit KEY1 = P1^0;      
sbit KEY2 = P1^1;
sbit LA=P2^0;
sbit LB=P2^1;

uchar minute=0;
uchar hour=0;
uchar code DSY_DUAN[]={0x3f,0x06,0x5b,0x4f,0x66,
                                                0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char code tew[]={0x06,0x7f,0x06,0x07,0x06,0x7d,0x06, 0x6d,
                                                        0x06,0x66,0x06,0x4f,0x06,0x5b,0x06,0x06,
                                                        0x06,0x3f,0x3f,0x6f,0x3f,0x7f,0x3f,0x07,
                                                        0x3f,0x7d,0x3f,0x6d,0x3f,0x66,0x3f,0x4f,
                                                        0x3f,0x5b,0x3f,0x06,0x3f,0x3f,0x06,0x66,
                                                        0x06,0x4f,0x06,0x5b,0x06,0x06,0x06,0x3f,
                                                         0x3f,0x6f,0x3f,0x7f,0x3f,0x07,0x3f,0x7d,
                                                        0x3f,0x6d,0x3f,0x66,0x3f,0x4f,0x3f,0x5b,
                                                        0x3f,0x06,0x3f,0x3f,0x3f,0x4f,0x3f,0x5b,
                                                        0x3f,0x06,0x3f,0x3f};
                                             //東西方向數(shù)碼管倒計(jì)時(shí)段碼表
unsigned char code tsn[]={0x06,0x66,0x06,0x4f,0x06,0x5b,0x06,0x06,
                                                        0x06,0x3f,0x3f,0x6f,0x3f,0x7f,0x3f,0x07,
                                                        0x3f,0x7d,0x3f,0x6d,0x3f,0x66,0x3f,0x4f,
                                                        0x3f,0x5b,0x3f,0x06,0x3f,0x3f,0x3f,0x4f,
                                                        0x3f,0x5b,0x3f,0x06,0x3f,0x3f,0x06,0x7f,
                                                        0x06,0x07,0x06,0x7d,0x06,0x6d,0x06,0x66,
                                                        0x06,0x4f,0x06,0x5b,0x06,0x06,0x06,0x3f,
                                     0x3f,0x6f,0x3f,0x7f,0x3f,0x07,0x3f,0x7d,
                                                        0x3f,0x6d,0x3f,0x66,0x3f,0x4f,0x3f,0x5b,
                                                        0x3f,0x06,0x3f,0x3f};
                                            //南北方向數(shù)碼管倒計(jì)時(shí)段碼表
void delay(uint t)
{
   uchar i;
   while(t--);
   for(i=0;i>250;i++);
}


void job0() _task_ 0
{
    os_create_task(1);
        os_create_task(2);
        os_create_task(3);
        os_create_task(4);
        os_create_task(5);
        os_delete_task(0);
}
void job1() _task_ 1                  //十字路口數(shù)碼管倒計(jì)時(shí)部分
{         
        uchar i;
        SCON=0x00;                          //配置串口通信為方式0,八位同步移位寄存器
        con=0;                                  //con先拉低,后拉高
        while(1)
        {
           for(i=0;i<38;i++)             //每?jī)蓚(gè)數(shù)碼管倒計(jì)時(shí)部分共有76個(gè)段碼,
                                      //所以需要乘2才能到達(dá)下一個(gè)狀態(tài)。        
              {
                           SBUF=tsn[i*2];              //南北方向9-15數(shù)碼管掃描
                           while(!TI);
                           TI=0;                          //軟件清零部分;
                           SBUF=tsn[i*2+1];      //南北方向1-7數(shù)碼管掃描
                           while(!TI);
                           TI=0;
                        SBUF=tew[i*2];
                           while(!TI);
                           TI=0;               
                        SBUF=tew[i*2+1];
                           while(!TI);
                           TI=0;                      //接收完畢信號(hào);
                           con=1;                           //595芯片ST_CP端工作;
                           os_wait(K_IVL,10,0);       //延時(shí)100ms;
                           con=0;                           //595芯片ST_CP端停止工作;
          }
        }                  
}

void job2() _task_ 2
{
   while(1)
   {
                minute++;                    //分鐘加一
                if(minute==60)               //分鐘滿60;
                {
                        minute=0;                //分鐘清零;
                        hour++;                  //小時(shí)加一;
                        if(hour==60)             //小時(shí)滿60;
                        {
                                hour=0;              //小時(shí)清零;
                        }

                }
                os_wait(K_IVL,100,0);        //延時(shí)1s;
        }
}
void job3() _task_ 3                    //按鍵檢測(cè)
{
        while(1)
        {
                if(P1!=0xff)                //有鍵被按下;
                {
                        delay(10);

                        if(KEY1==0)                    //如果第一個(gè)鍵被按下,分鐘個(gè)位加一;
                        {
                                minute=minute%10+1;
                                if(minute==60)      //分鐘滿60清零
                                {
                                        minute=0;
                                }
                        }
                        else if(KEY2==0)        //如果第二個(gè)鍵被按下,小時(shí)個(gè)位加一;
                        {
                                hour=hour%10+1;
                                if(hour==60)        //小時(shí)滿60清零
                                {
                                        hour=0;
                                }
                        }
                        while(P1!=0xff);             //判斷抬起;   
                }
        }
}

void job4() _task_ 4                    //計(jì)時(shí)數(shù)碼管掃描程序
{
        while(1)
        {

                LA=1,LB=1;                            //P2口前兩個(gè)管腳輸入
                P0=DSY_DUAN[minute%10];                //分個(gè)
                delay(500);

                LA=1,LB=0;
                P0=DSY_DUAN[hour%10];           //時(shí)個(gè)
                delay(500);

                LA=0,LB=1;
                P0=DSY_DUAN[minute/10];
                delay(500);

                LA=0,LB=0;
                P0=DSY_DUAN[hour/10];
                delay(500);         
   }         
}

void job5() _task_ 5               //南北方向交通燈
{
   while(1)
   {
            snr=0;sng=1;sny=1;                                                           //南北紅,東西綠
         ewr=1;ewg=0;ewy=1;
         os_wait(K_IVL,150,0);

         snr=0;sng=1;sny=1;                                                           //南北紅,東西黃
         ewr=1;ewg=1;ewy=0;
         os_wait(K_IVL,10,0);
         snr=0;sng=1;sny=1;                                                           //南北紅,東西黃
         ewr=1;ewg=1;ewy=1;
         os_wait(K_IVL,10,0);
         snr=0;sng=1;sny=1;                                                           //南北紅,東西黃
         ewr=1;ewg=1;ewy=0;
         os_wait(K_IVL,10,0);
         snr=0;sng=1;sny=1;                                                           //南北紅,東西黃
         ewr=1;ewg=1;ewy=1;
         os_wait(K_IVL,10,0);

         snr=1;sng=0;sny=1;                                                           //南北綠,東西紅
         ewr=0;ewg=1;ewy=1;
         os_wait(K_IVL,150,0);

         snr=1;sng=1;sny=0;                                                           //南北黃,東西紅
         ewr=0;ewg=1;ewy=1;
         os_wait(K_IVL,10,0);
         snr=1;sng=1;sny=1;                                                           //南北黃,東西紅
         ewr=0;ewg=1;ewy=1;
         os_wait(K_IVL,10,0);
         snr=1;sng=1;sny=0;                                                           //南北黃,東西紅
         ewr=0;ewg=1;ewy=1;
         os_wait(K_IVL,10,0);
         snr=1;sng=1;sny=1;                                                           //南北黃,東西紅
         ewr=0;ewg=1;ewy=1;
         os_wait(K_IVL,10,0);

   }
        os_wait(K_IVL,100,0);   
}

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲视频一区 | 成人精品视频 | 爱爱免费视频 | 亚洲国产精品一区二区久久 | 欧美日韩在线一区二区三区 | 黄网站在线观看 | 亚洲一区二区在线 | aaa在线| 午夜黄色| 亚洲天堂一区 | 亚洲精品区| 久久久久久国产精品久久 | 亚洲精品大片 | 欧美精品久久久 | 欧美一区二区大片 | 国产一区久久 | 欧美999| 欧美色综合 | 欧美在线一区二区三区四区 | 毛片网在线观看 | 午夜男人免费视频 | 久久久91精品国产一区二区三区 | 久久精品性视频 | 久久国产精品99久久久久久丝袜 | 国产精品久久久久久久免费大片 | 国产九九九九 | 亚洲国产欧美91 | 男人天堂视频在线观看 | 亚洲综合无码一区二区 | 成人高清在线视频 | 91色啪| 久久久久久久久久久丰满 | 国产在线播 | 男人的天堂在线视频 | 国产亚洲精品久久情网 | 97国产一区二区精品久久呦 | 中文字幕精品一区二区三区精品 | 久久久精品久久久 | 国产精品高潮呻吟久久av黑人 | 草草视频在线观看 | 人人色视频|