|
我想做一個(gè)簡(jiǎn)單模擬電梯上升與下降,并且有不同的燈亮
一共三個(gè)按鍵,一個(gè)上升,一個(gè)下降,一個(gè)暫停,
如果我不對(duì)燈的亮滅進(jìn)行賦值,那么三個(gè)按鍵每個(gè)都能滿足要求,
可是如果對(duì)燈進(jìn)行賦值,那么如果上升的時(shí)候我按下下降鍵,數(shù)碼管顯示就會(huì)清零,
想請(qǐng)大家?guī)臀医獯鹨幌虏⒏恼x謝!!!
仿真圖與代碼和HEX文件都在附件中。
RENCC%L{2ZMZ64$%PL_EK)2.png (279.29 KB, 下載次數(shù): 44)
下載附件
仿真圖
2019-6-6 15:18 上傳
單片機(jī)源程序如下:
- #include "reg51.h"
- sbit led1=P1^0;//紅燈表示下降
- sbit led2=P1^1;//綠燈表示上升
- sbit led3=P1^2;//黃燈表示暫停
- sbit key1=P3^0;
- sbit key2=P3^1;
- sbit stop=P3^7; //開始與暫停按鍵
- char a[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
- int q=0,w=0,i=0,j=0;
- void delay(unsigned int m)
- {
- int i,j;
- for(i=0;i<m;i++)
- for(j=0;j<125;j++);
- }
- void xianshi();
- void zanting();
- main()
- {
- EA=1;
- TMOD=0X11;
- TH0=15536/256;
- TL0=15536%256;
- TH1=15536/256;
- TL1=15536%256;
- ET1=1;
- IT0=1;
- EX0=1;
- IT1=1;
- EX1=1;
- ET0=1;
- TR0=0;
- TR1=0;
- led1=led2=led3=0;
- while(1)
- {
-
- xianshi();
- zanting();
- if(q>=3)
- {
- q=3;
- w=0;
- }
- if(q<0)
- {
- q=0;
- w=0;
- }
- }
- }
- void zanting()
- {
- if(stop==0)
- {
- delay(10);
-
- if(TR0==1)
- {
- TR0=0;
- }
- if(TR1==1)
- {
- TR1=0;
- }
-
- }
- }
- void xianshi()//樓層
- {
- key1=0;
- key2=1;
- P2=a[q];
- delay(11);
- key1=key2=1;
- key2=0;
- key1=1;
- P2=a[w];
- delay(11);
- key1=key2=1;
- }
- void shangsheng() interrupt 0
- {
- TR0=1;
- TR1=0;
-
- }
- void xiajiang() interrupt 2
- {
- TR1=1;
- TR0=0;
- }
- void dingshi0() interrupt 1
- {
- TH0=15536/256;
- TL0=15536%256;
- i++;
- if(i==20)
- {
- i=0;
- w++;
- led2=1;//上升時(shí)綠燈亮
- if(w==10)
- {
- w=0;
- q++;
- }
- }
- }
- void dingshi1() interrupt 3
- {
- TH1=15536/256;
- TL1=15536%256;
- i++;
- if(i==20)
- {
- i=0;
- w--;//下降時(shí)紅燈亮
- if(w==-1)
- {
- w=9;
- q--;
- }
- }
- }
復(fù)制代碼
|
-
-
新建文件夾.rar
2019-6-6 15:17 上傳
點(diǎn)擊文件名下載附件
18.2 KB, 下載次數(shù): 5
仿真圖與代碼
|