久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2384|回復: 1
收起左側

基于STC12C5A60S2電梯控制模型設計

[復制鏈接]
ID:940149 發表于 2021-6-18 20:47 | 顯示全部樓層 |閱讀模式
這是我一個設計主題,也是一個單片機比賽的一個賽題,由于自己比較熟悉,很快就完成了這個設計。本次設計
都是我一個人完成的,程序的編寫,用AD畫出原理圖,完成設計文檔,
在這個過程中收獲了很多,只有自己經過這個過程,就會有很大的收獲。

代碼如下:
#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;          //設置定時器模式
       TL0= 0xCD;         //設置定時初值
       TH0= 0xD4;         //設置定時初值
       TF0= 0;         //清除TF0標志
       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層",(int)(floor));
              xianshi(dis1,0,0);
              
              if(flag>0)
              {
                     tt=0;
                     
                     if(floor_new[j]>floor)
                     {
                            flag_jingbao=1;                                            //關門提示
                            for(ff=1;ff<=(floor_new[j]-floor);ff++)
                            {
                              Step_Cor(45*12);                                         //正轉
                                   sprintf(dis1,"當前樓層:%d層",(int)(floor+ff));
                                   xianshi(dis1,0,0);
                            }
                     }
                     elseif(floor_new[j]<floor)
                     {
                            flag_jingbao=1;                                             //關門提示
                            for(ff=1;ff<=(floor-floor_new[j]);ff++)
                            {
                              Step_Rev(45*12);                                          //反轉
                                   sprintf(dis1,"當前樓層:%d層",(int)(floor-ff));
                                   xianshi(dis1,0,0);
                            }
                     }                                
                     
                     floor=floor_new[j];
                     j=j+1;                                   //這個是電機能否進行下一次轉動的條件
                     
                     flag=flag-1;                                             //要到了那一樓層才讓flag減減,不讓會提前的讓tt計數
                     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層",(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;
              }
       }
}
回復

使用道具 舉報

ID:804436 發表于 2022-5-10 18:34 | 顯示全部樓層
我想跟你談一談關于你這個作品有關的
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 影音先锋中文字幕在线观看 | 久久精品亚洲成在人线av网址 | 精品久久久久久久久久久久久久久久久 | 久久久久国产精品免费免费搜索 | 亚洲国产高清在线 | 草草视频在线观看 | 四虎影院免费在线播放 | 免费性视频| 国产高清一区二区三区 | 天堂av中文在线 | 久久r久久 | 精精国产xxxx视频在线播放 | 久久伊人影院 | 亚洲精品乱码久久久久久黑人 | 91亚洲国产成人久久精品网站 | 一片毛片| 成人视屏在线观看 | 在线成人免费视频 | 视频一区二区三区四区五区 | 中文字幕一区二区三区在线乱码 | 国产一级毛片精品完整视频版 | 亚洲第一av | 欧美a√ | 免费看啪啪网站 | 午夜三区 | 超碰电影 | 国产成人啪免费观看软件 | 国产精品久久久 | 成人亚洲精品久久久久软件 | 亚洲第1页| 亚洲精品乱码 | 噜噜噜色网 | 一级毛片免费完整视频 | h视频在线免费 | 国产精品毛片一区二区在线看 | 国产九九九九 | 天天搞天天搞 | 2023亚洲天堂| 在线国产欧美 | 久久精品99国产精品 | 亚洲国产免费 |