標(biāo)題:
路燈控制器的設(shè)計思路
[打印本頁]
作者:
19960922
時間:
2017-9-28 13:57
標(biāo)題:
路燈控制器的設(shè)計思路
路燈總控制器由單片機、蜂鳴器、8位數(shù)碼管、矩陣式鍵盤構(gòu)成;終端路燈控制器由一片單片機系統(tǒng)和8路流水燈構(gòu)成。路燈總控制器的鍵盤上定義一個開燈鍵、一個關(guān)燈鍵、一個確認(rèn)鍵。路燈控制指令的數(shù)據(jù)由2個字節(jié)組成,第1個字節(jié)表示操作哪盞燈,第2個字節(jié)表示開燈還是關(guān)燈。第1個字節(jié)哪一位為1表示對該位所代表的燈進行操作,第2個字節(jié)為0xff表示開燈,為0x00表示關(guān)燈。例如:假如被傳送的指令數(shù)據(jù)字節(jié)為0xff0xc0,表示打開第1、2兩盞燈;假如被傳送的指令數(shù)據(jù)字節(jié)為0x000x0f,表示關(guān)閉第5、6、7、8四盞燈。用戶使用方法:開燈(關(guān)燈)+燈編號+確認(rèn)鍵。假如要開第1盞燈,操作方法是按一下開燈鍵,再按1鍵,最后按確認(rèn)鍵。再如,關(guān)燈鍵+1+2+3+確認(rèn)鍵,即表示關(guān)閉第1、2、3盞燈,同時,數(shù)碼管上相應(yīng)的1、2、3位數(shù)碼管中間的g段亮起來,當(dāng)終端路燈控制器接收指令后,發(fā)回確認(rèn)信息。確認(rèn)信息指令:將主控端發(fā)送過來的數(shù)據(jù)原樣發(fā)送回主控端,即確認(rèn)信息與主控制器發(fā)出的信息一致。路燈總控制器接收確認(rèn)信息后在相應(yīng)數(shù)碼管顯示1或0表示開燈或關(guān)燈成功,同時蜂鳴器發(fā)出“嘀”的一聲。
作者:
漫步經(jīng)心
時間:
2017-9-28 16:51
思路很容易理清,但是實現(xiàn),很多細節(jié)就沒那么容易了
作者:
19960922
時間:
2017-9-29 12:42
有仿真圖以及程序嗎
作者:
19960922
時間:
2017-9-29 12:47
請問具體要如何做?
作者:
19960922
時間:
2017-10-20 14:07
#include<at89c51.h>
#define uint unsigned int
#define uchar unsigned char
uchar code led[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar num;
void delay(uchar x)
{
uchar y,z;
for(y=x;y>0;y--)
for(z=250;z>0;z--);
}
void display(uchar num)
{
P2_0=0;
P0=~led[num/10];
delay(5);
P2_0=1;
P2_1=0;
P0=~led[num%10];
delay(5);
P2_1=1;
}
void TAKE_SBUF(uchar dat)
{
ES=0;
SBUF=dat;
while(~TI);
TI=0;
ES=1;
}
void main()
{
SCON=0X90;
EA=1;
ES=1;
P2=0xff;
num=0;
if(P1_0==0)
TAKE_SBUF(num+1);
while(1)
{
}
}
void int0rupt() interrupt 4
{
uchar i;
num=SBUF;
if(num>99)
num=0;
for(i=200;i>0;i--)
display(num);
TAKE_SBUF(num+1);
RI=0;
}
作者:
19960922
時間:
2017-10-20 14:08
哪位可以幫我修改一下程序,謝謝
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1