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

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

QQ登錄

只需一步,快速開始

搜索
查看: 3618|回復(fù): 2
收起左側(cè)

pc端控制的單片機(jī)交通燈程序Proteus仿真,供大家學(xué)習(xí)

[復(fù)制鏈接]
ID:764738 發(fā)表于 2020-6-5 12:52 | 顯示全部樓層 |閱讀模式
pc端控制交通燈,供大家學(xué)習(xí)
代碼如下
#include <reg51.h>
#include <uart.h>
unsigned char table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,
                       0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//數(shù)碼管共陽極顯示碼
//定義引腳
#define NBSEG P0
#define DXSEG P2
#define LIGHT P1
sbit NBWEI1=P3^4;
sbit NBWEI2=P3^5;
sbit DXWEI1=P3^6;
sbit DXWEI2=P3^7;
//定義變量
unsigned char t0count=0,second=0; //t0中斷次數(shù),秒數(shù)
unsigned char DXgreen=30;yellow=4;NBgreen=20;//綠燈和黃燈時(shí)間
unsigned char control=0;//0為自動(dòng)運(yùn)行,1為手動(dòng)或PC控制東西通行,2為南北通行
unsigned char state[8]={'#','S',0,0,0,0,0,'\0'};//存放狀態(tài)即#S東西綠燈時(shí)間,南北綠燈時(shí)間,黃燈時(shí)間和控制方式

//延時(shí)程序
void delayt()
{
  unsigned char i,j;
  for(i=0;i<50;i++)for(j=0;j<50;j++);
}
//T0中斷程序
void T0int() interrupt 1
{
   TH0=(65536-50000)/256;TL0=(65536-50000)%256;        //再計(jì)時(shí)50毫秒
   t0count++;
   if(t0count==20){t0count=0;second++;}
}

void revset()
{
  if(revover==1)//如果接收有數(shù)據(jù),處理接收的數(shù)據(jù)
          {                         //*S35205,'35'為東本綠燈35秒,‘20’為南北綠燈20秒,5為黃燈5秒
                    //*C1,1控制東西通行,*C2南北通行,*C0自動(dòng)運(yùn)行。
                if(revbuf[1]=='S') {DXgreen=(revbuf[2]-'0')*10+revbuf[3]-'0';NBgreen=(revbuf[4]-'0')*10+revbuf[5]-'0';yellow=revbuf[6]-'0';}
                if(revbuf[1]=='C')control=revbuf[2]-'0';
                clearrevbuf();//清除接收緩沖區(qū)
                  state[2]=DXgreen/10+'0';state[3]=DXgreen%10+'0';        state[4]=NBgreen/10+'0';//再發(fā)送一次狀態(tài)數(shù)據(jù)
        state[5]=NBgreen%10+'0';state[6]=yellow+'0';                state[7]=control+'0';
        sendstring(state);//狀態(tài)有改變時(shí)再發(fā)送一次狀態(tài)數(shù)據(jù)
          }
}
void main()
{        
   UARTinit();
//T0中斷設(shè)置
   PS=1;
   EA=1;ET0=1; //允許中斷
   TMOD=0x21;//方式1,16位計(jì)時(shí)
   TH0=(65536-50000)/256;TL0=(65536-50000)%256;        //計(jì)時(shí)50毫秒
   TR0=1;//啟動(dòng)計(jì)時(shí)器T0

   state[2]=DXgreen/10+'0';state[3]=DXgreen%10+'0';        state[4]=NBgreen/10+'0';//運(yùn)行前發(fā)送一次狀態(tài)數(shù)據(jù)
   state[5]=NBgreen%10+'0';state[6]=yellow+'0';        state[7]=control+'0';
   sendstring(state); //運(yùn)行前發(fā)送一次狀態(tài)數(shù)據(jù)
   while(1)
   {         
      revset();second=0; DXSEG=0xff;NBSEG=0xff;//清屏
          if(control==0){//自動(dòng)運(yùn)行

                           //東西綠燈亮30秒,黃燈亮4秒,           紅燈亮24秒
                          //南北紅燈亮34秒,           綠燈亮20秒,黃燈亮4秒
                          LIGHT=0x21;
                          while(second<DXgreen){DXSEG=0xff;NBSEG=0xff;//清屏
                                                DXWEI2=1;DXWEI1=0;DXSEG=table[second%10];delayt();//顯示東西個(gè)位
                                                NBWEI1=0;NBWEI2=1;NBSEG=table[second%10];delayt();        //顯示南北個(gè)位
                                                                        DXSEG=0xff;NBSEG=0xff;  //清屏
                                                                        DXWEI2=0;DXWEI1=1;DXSEG=table[second/10];delayt(); //顯示東西十位
                                                                        NBWEI1=1;NBWEI2=0;NBSEG=table[second/10];delayt();  //顯示南北十位
                                                                         revset();if(control>0)break;//查看有沒有接收的數(shù)據(jù)并處理
                                                                         }
                          LIGHT=0x11;
                          while(second<(DXgreen+yellow)){DXSEG=0xff;NBSEG=0xff;//清屏
                                                                                     DXWEI2=1;DXWEI1=0;DXSEG=table[second%10];delayt();
                                                                                     NBWEI1=0;NBWEI2=1;NBSEG=table[second%10];delayt();
                                                                                         DXSEG=0xff;NBSEG=0xff;
                                                                                         DXWEI2=0;DXWEI1=1;DXSEG=table[0];        delayt();
                                                                                         NBWEI1=1;NBWEI2=0;NBSEG=table[second/10];delayt();
                                                                                         revset();if(control>0)break;//查看有沒有接收的數(shù)據(jù)并處理
                                                                                        } second=0;
                          LIGHT=0x0c;
                          while(second<NBgreen){DXSEG=0xff;NBSEG=0xff;
                                                                        DXWEI2=1;DXWEI1=0;DXSEG=table[second%10];delayt();
                                                                        NBWEI1=0;NBWEI2=1;NBSEG=table[second%10];delayt();
                                                                        DXSEG=0xff;NBSEG=0xff;
                                                                        DXWEI2=0;DXWEI1=1;DXSEG=table[second/10];delayt();
                                                                        NBWEI1=1;NBWEI2=0;NBSEG=table[second/10];delayt();
                                                                                        revset();if(control>0)break;//查看有沒有接收的數(shù)據(jù)并處理
                                                                                        }
                          LIGHT=0x0a;
                          while(second<(NBgreen+yellow)){DXSEG=0xff;NBSEG=0xff;
                                                         DXWEI2=1;DXWEI1=0;DXSEG=table[second%10];delayt();
                                                                                         NBWEI1=0;NBWEI2=1;NBSEG=table[second%10];delayt();
                                                                                     DXSEG=0xff;NBSEG=0xff;
                                                                                         DXWEI2=0;DXWEI1=1;DXSEG=table[second/10];delayt();
                                                                                         NBWEI1=1;NBWEI2=0;NBSEG=table[0];delayt();
                                                                                        revset();if(control>0)break;//查看有沒有接收的數(shù)據(jù)并處理
                                                                                        }second=0;
                }
                //下面兩行為PC控制
                if(control==1) LIGHT=0x21;//PC發(fā)送控制為1,讓東西通行
                if(control==2) LIGHT=0x0c;         //PC發(fā)送控制為2,讓南北通行
   }
}


567890oighjkl.png
567890oighjkl.png
fghjkll.png

2020春?jiǎn)纹瑱C(jī).rar

9.47 MB, 下載次數(shù): 26, 下載積分: 黑幣 -5

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:780940 發(fā)表于 2020-6-17 17:18 | 顯示全部樓層
程序怎么運(yùn)行不出來
回復(fù)

使用道具 舉報(bào)

ID:767080 發(fā)表于 2020-6-19 00:11 | 顯示全部樓層
哇塞,看著好厲害的樣子
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲成人免费 | 一区二区三区不卡视频 | 一区二区不卡视频 | 91精品国产综合久久久久久 | 国产一区二区在线观看视频 | 日韩精品免费一区二区夜夜嗨 | 精品久久久一区二区 | 黄色一级片免费 | 久草久草| 国产黄a三级三级三级看三级男男 | 理论片中文字幕 | 免费福利片 | 久久久综合视频 | 激情六月天 | 日韩欧美在线观看 | 国产精品久久久久久精 | 国产福利视频 | 亚洲精品一二三区 | 中文字幕免费高清 | 精品网站999www | 天天色小说 | 色综合天天综合网天天狠天天 | 超碰成人福利 | 日韩视频一区二区三区 | 亚洲免费播放 | 欧美激情综合五月色丁香 | 狠狠的日| 日本免费在线观看视频 | 成人久久av | 色综合小说 | 日本成人中文字幕 | 成人永久免费视频 | 69福利视频 | 中文国产字幕 | 亚洲手机在线 | 亚洲一区在线免费观看 | 亚洲 欧美 综合 | 成年人午夜视频 | 国产一级在线 | 日韩欧美在线视频观看 | 69成人网|