欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
基于STC12C5A60S2電梯控制模型設(shè)計
[打印本頁]
作者:
古笙閣
時間:
2021-6-18 20:47
標(biāo)題:
基于STC12C5A60S2電梯控制模型設(shè)計
這是我一個設(shè)計主題,也是一個單片機(jī)比賽的一個賽題,由于自己比較熟悉,很快就完成了這個設(shè)計。本次設(shè)計
都是我一個人完成的,程序的編寫,用AD畫出原理圖,完成設(shè)計文檔,
在這個過程中收獲了很多,只有自己經(jīng)過這個過程,就會有很大的收獲。
代碼如下:
#include "stc12c5a60s2.h"
#include "lcd12864.h"
#include "bjdj.h"
#include "stdio.h"
void key16();
sbit beep=P1^5;
sbit led=P1^6;
typedef unsigned char u8;
typedef unsigned int u16;
u8 dis1[]={"你好你好你好你好"};
u8floor=1,floor_new[9],flag_run,i,j=1,flag,ff,flag_tt,flag_jingbao,flag_jdq,num;
u16 ss, tt;
void Delayms(u16 n)
{
u16i,j;
for(i=0;i<n;i++)
{
for(j=845;j>0;j--);
}
}
void Timer0Init(void) //1毫秒@11.0592MHz
{
AUXR|= 0x80; //定時器時鐘1T模式
TMOD&= 0xF0; //設(shè)置定時器模式
TL0= 0xCD; //設(shè)置定時初值
TH0= 0xD4; //設(shè)置定時初值
TF0= 0; //清除TF0標(biāo)志
TR0= 1; //定時器0開始計時
EA=1;ET0=1;
}
void Timer() interrupt 1
{
if(flag==0){tt++;}
if(tt>=10000){flag_tt=1;tt=0;}
if(flag_jingbao==1)
{
ss++;
beep=0;led=0;
if(ss>=1000)
{
flag_jingbao=0;ss=0;beep=1;led=1;
}
}
key16();
}
void main()
{
lcd_init();
Timer0Init();
while(1)
{
sprintf(dis1,"當(dāng)前樓層:%d層",(int)(floor));
xianshi(dis1,0,0);
if(flag>0)
{
tt=0;
if(floor_new[j]>floor)
{
flag_jingbao=1; //關(guān)門提示
for(ff=1;ff<=(floor_new[j]-floor);ff++)
{
Step_Cor(45*12); //正轉(zhuǎn)
sprintf(dis1,"當(dāng)前樓層:%d層",(int)(floor+ff));
xianshi(dis1,0,0);
}
}
elseif(floor_new[j]<floor)
{
flag_jingbao=1; //關(guān)門提示
for(ff=1;ff<=(floor-floor_new[j]);ff++)
{
Step_Rev(45*12); //反轉(zhuǎn)
sprintf(dis1,"當(dāng)前樓層:%d層",(int)(floor-ff));
xianshi(dis1,0,0);
}
}
floor=floor_new[j];
j=j+1; //這個是電機(jī)能否進(jìn)行下一次轉(zhuǎn)動的條件
flag=flag-1; //要到了那一樓層才讓flag減減,不讓會提前的讓tt計數(shù)
P31=0;
flag_jingbao=1;
Delayms(1000); //出門的時間1秒 題目沒有講清楚,就都用的一秒,但是效果不明顯
P31=1;
}
if((flag_tt==1)&&(floor!=1)&&(flag==0))
{
tt=0;
if(floor>1)
{
flag_jingbao=1;
for(ff=1;ff<=(floor-1);ff++)
{
Step_Rev(45*12);
sprintf(dis1,"當(dāng)前樓層:%d層",(int)(floor-ff));
xianshi(dis1,0,0);
}
}
flag_jingbao=1;
Delayms(2000);
floor=1;
}
}
}
void key16()
{
u8temp;
P2=0xfe;temp=P2;temp&=0xf0;
if(temp!=0xf0)
{
Delayms(10);
switch(temp)
{
case(0xe0):tt=0;flag=flag+1;floor_new[++i]=1;break;
case(0xd0):tt=0;flag=flag+1;floor_new[++i]=2;break;
case(0xb0):tt=0;flag=flag+1;floor_new[++i]=3;break;
case(0x70):tt=0;flag=flag+1;floor_new[++i]=4;break;
}
while(temp!=0xf0)
{
temp=P2;
temp&=0xf0;
}
}
P2=0xfd;temp=P2;temp&=0xf0;
if(temp!=0xf0)
{
Delayms(10);
switch(temp)
{
case(0xe0):tt=0;flag=flag+1;floor_new[++i]=5;break;
case(0xd0):tt=0;flag=flag+1;floor_new[++i]=6;break;
case(0xb0):tt=0;flag=flag+1;floor_new[++i]=7;break;
case(0x70):tt=0;flag=flag+1;floor_new[++i]=8;break;
}
while(temp!=0xf0)
{
temp=P2;
temp&=0xf0;
}
}
P2=0xfb;temp=P2;temp&=0xf0;
if(temp!=0xf0)
{
Delayms(2);
switch(temp)
{
case(0xe0):tt=0;flag=flag+1;floor_new[++i]=9;break;
case(0xd0):tt=0;break;
case(0xb0):tt=0;break;
case(0x70):tt=0;break;
}
while(temp!=0xf0)
{
temp=P2;
temp&=0xf0;
}
}
P2=0xf7;temp=P2;temp&=0xf0;
if(temp!=0xf0)
{
Delayms(10);
switch(temp)
{
case(0xe0):tt=0;break;
case(0xd0):tt=0;break;
case(0xb0):tt=0;break;
case(0x70):tt=0;break;
}
while(temp!=0xf0)
{
temp=P2;
temp&=0xf0;
}
}
}
作者:
n3079737153
時間:
2022-5-10 18:34
我想跟你談一談關(guān)于你這個作品有關(guān)的
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1