標(biāo)題:
51單片機(jī)寫的電梯程序
[打印本頁(yè)]
作者:
h1007886499
時(shí)間:
2018-3-16 20:37
標(biāo)題:
51單片機(jī)寫的電梯程序
電梯用到中斷,數(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)法檢測(cè) 按下了哪一個(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
作者:
admin
時(shí)間:
2018-3-17 01:24
樓主能分享個(gè)原理圖嗎?
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1