|
電梯用到中斷,數(shù)碼管,和現(xiàn)實(shí)中電梯有相同的功能,考慮的應(yīng)該很全了
- /**************功能:電梯樓層的控制的顯示*******/
- #include<reg52.h>
- #define uchar unsigned char //宏定義
- sbit fmq=P3^6; //蜂鳴器的定義
- uchar pg=0, pf=0,g=9,p=0; //定義 pg存是數(shù)碼管顯示的數(shù)字 ,pf存按鍵返回的值
- uchar house_code[8]={0};
- uchar code dis_playd[11]={0xf9,0xa4,0xb0,0x99,0x92,0x82,
- 0xf8,0x80,0xfe,0xbf,0xf7}; //數(shù)組中存有"1~8"、"上-"、“中-”、 “下-”
- uchar code dis_playw[3 ]={0x7f,0xbf,0xdf}; //位選的三位
- uchar code key_defin[8 ]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,};//按鍵的編
- /**************函數(shù)聲明***************/
- void dis_up1();
- uchar keyscan();
- void dis_down1();
- /*************1ms延時(shí)函數(shù)*********************/
- void delay_1ms(uchar i)
- {
- uchar j=0;
- while(i--)
- for(j=0;j<115;j++)
- ;
- }
- /*************數(shù)碼管顯示*****************/
- void display(uchar k)
- {
- P2=dis_playw[0];
- P0=dis_playd[pg];
- delay_1ms(2);
- P0=0xff;
- P2=dis_playw[1];
- P0=dis_playd[k];
- delay_1ms(2);
- P0=0xff;
- }
- /***************數(shù)碼管中的延時(shí)*************/
- void delay_x1(int i)
- {
- uchar j=0;
- while(i--)
- {
- for(j=0;j<115;j++)
- {
- display(g);
- }
- }
- }
- /*******上升重按鍵掃描******/
- void delay_x(int i)
- {
- uchar j=0;
- while(i--)
- {
- for(j=0;j<115;j++)
- {
- display(g);
- if(P1!=0xf0)
- {
- delay_1ms(10);
- if(P1!=0xf0)
- {
- pf=keyscan();
- if(pf!=p&&pf!=pg)
- {
- dis_up1();
-
- }
- }
- }
- }
- }
- }
- /*******下降重按鍵掃描******/
- void delay_x2(int i)
- {
- uchar j=0;
- while(i--)
- {
- for(j=0;j<115;j++)
- {
- display(g);
- if(P1!=0xf0)
- {
- delay_1ms(10);
- if(P1!=0xf0)
- {
- pf=keyscan();
- if(pf!=p&&pf!=pg)
- {
- dis_down1();
- }
- }
- }
- }
- }
- }
- /**************產(chǎn)生1KHZ頻率聲音的函數(shù)**************/
- void beep(void)
- {
- fmq=0;
- delay_1ms(100);
- fmq=1;
- delay_1ms(100);
- }
- /*************線反轉(zhuǎn)法檢測 按下了哪一個(gè)鍵并返回?cái)?shù)值 **********/
- uchar keyscan()
- {
- uchar k1=0,k2=0,k=0,i=0,j=0;
- P1=0xf0;
- if(P1!=0xf0)
- {
- delay_1ms(20);
- if(P1!=0xf0)
- {
- k1=P1;
- P1=0x0f;
- k2=P1;
- k=k1|k2;
- for(i=0;i<16;i++)
- {
- if(k==key_defin[i])
- {
- j=i;
- return(j);
- }
- }
- while(P1!=0x0f)
- ;
- }
- }
- return(0);
- }
- /***********上升嵌套函數(shù) **************/
- void dis_up1()
- {
- while(pf>pg)
- {
- g=8;
- delay_x1(2);
- pg++;
- }
- g=9;
- display(g);
- beep();
- delay_x1(2);
- }
- /*********下降套函數(shù) ****************/
- void dis_down1()
- {
- while(pf<pg)
- {
- g=10;
- delay_x1(2);
- pg--;
- }
- g=9;
- display(g);
- beep();
- delay_x1(2);
- }
- /****************電梯上升函數(shù)**************/
- void dis_up()
- {
- P1=0xf0;
- while(p>pg)
- {
-
- g=8;
- delay_x(2);
- pg++;
- }
- g=9;
- display(g);
- beep();
- }
- /****************電梯下降函數(shù)**************/
- void dis_down()
- {
- while(p<pg)
- {
- g=10;
- delay_x2(2);
- pg--;
- }
- g=9;
- display(9);
- beep();
- }
復(fù)制代碼
余下自己下載
|
-
-
電梯程序.rar
2018-3-16 20:36 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
27.67 KB, 下載次數(shù): 41, 下載積分: 黑幣 -5
|