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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5238|回復: 1
打印 上一主題 下一主題
收起左側

基于單片機電梯控制系統設計資料

[復制鏈接]
跳轉到指定樓層
樓主
ID:888341 發表于 2021-4-3 15:50 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
設計原理及單元模塊
3.1設計原理及方法
根據層次化設計理論,該設計問題自頂向下可分為單片機最小系統模塊、顯示模塊、開關控制模塊、電機驅動模塊、報警模塊,其系統框圖如圖所示。


圖3.1 電梯控制系統框圖
本次設計是采用開關控制實現上下到指定樓層,通過電機轉動帶動電梯箱上下運動,到達指定樓層。顯示模塊是顯示此時的樓層,報警模塊具有錯誤操作報警以及樓層到達的提示功能。
3.2單元模塊設計
3.2.1
單片機最小系統模塊
圖3.2.1單片機最小系統
單片機最小系統包括主芯片,復位電路和晶振脈沖產生電路。X1為12MHz晶振,與30Pf電容并聯,產生1us的脈沖信號作為單片機的“心臟”部分。復位電路是開關與10uf電容并聯組成的上電自動復位電路,在RST端為高電平時單片機清零,也即開關按下會產生清零信號。RP1為排阻,作為P0端的上拉電阻,接此原因是P0端口是由OC門組成。U1為數據輸入端口,通過電腦編程能將程序通過此接口燒錄入單片機中。



3.2.2 開關控制模塊
圖3.2.2 開關控制模塊
開關控制模塊采用4*4矩陣形式電路可以減少單片機接口的使用。寫鍵盤代碼時運用的是逐行掃描判斷鍵值按下與否。編程如下:
uchar key_scan(void)
{              uchar scode,recode;
              P1=0xf0;
              if((P1&0xf0)!=0xf0)
              {              delay1(2);
                            if((P1&0xf0)!=0xf0)//有鍵按下
                            {              scode=0xfe;//輔助變量,設定行
                                          while((scode&0x10)!=0)
                                          {              P1=scode;//將某一行設為0,從而判斷是否為該行
                                                        if((P1&0xf0)!=0xf0)
                                                        {              recode=P1&0xf0;//列碼
                                                                      scode=scode&0xf0;//行碼
                                                                      return(scode+recode);//按鍵坐標}
                                                        else    scode=(scode<<1)|0x01;//下一行判斷
}}}
              return 0;}
3.2.3電機驅動模塊
圖3.2.3電機驅動模塊
電機驅動采用L297環形計數分配器和L298大功率步進電機驅動器完成。本次設計采用步進電機,目的是方便智能控制,可實現調速功能。電機使用的是二相步進電機,由于僅用來實驗,所以電機采用5V電源供電即可,實際中必須使用大電壓來供電方能帶動重物(人等)。
環形分配器L297引腳圖如圖3.2.3-1:
圖3.2.3-1 L97引腳圖
L297功能介紹:
SYNC為斬波器輸出端,多個L297一起用時用此端口連接在一起共用一組時鐘振蕩;
HPME端為集電極開路輸出端;
A~D為四相輸入端;
INIH1,INIH2為控制A~D相驅動,此引腳為低電平時A~D相禁止輸入;
ENABLE端為使能輸入端,低電平阻止電機驅動;
RESET為復位端;
HALF/FULL為半角全角控制端,高電平時選擇半步輸入;
CLOCK為時鐘輸入端,控制電機速度;
CW/CCW為方向控制端;
OSC為斬波器頻率輸入端;
SEN1和SEN2為電流檢測端。
大功率步進電機驅動器L298引腳圖如圖3.2.3-2:
圖3.2.3-2 L298引腳圖
L298功能介紹:   
SENA和SENB為電流檢測端;
IN1~IN4為A~D相輸入控制端;
ENA和ENB為使能輸入端,低電平禁止輸入;
OUT1~OUT4為輸出端。
3.2.4顯示模塊
圖3.2.4顯示模塊
由于點陣和雙位數碼管耗電流較大,不能直接連接單片機IO口驅動其正常工作,所以加上鎖存器74HC573和顯示譯碼器CD4511驅動。其中利用CD4511模塊的另一作用是節省接口,因為本次設計外圍電路較多,單片機接口不夠,使用此驅動是必要的。
鎖存器74HC573引腳圖如圖3.2.4-1:
圖3.2.4-1 74HC573引腳圖
74HC573功能介紹:
D0~D7為輸入端;
Q0~Q7為輸出端;
OEN為輸出使能端,當其輸入為高電平時輸出關斷,輸入為低電平時輸出正常;
DEN為輸出輸入使能端,當此端口為高電平時,輸出跟隨D0~D7,當此端口為低電平時,輸出保持上一時刻的狀態;
顯示譯碼器CD4511引腳圖如圖3.2.4-2:
圖3.2.4-2 CD4511引腳圖
CD4511功能介紹:
A~D為輸入端;
QA~QG為輸出端;
LT為試燈輸入端,當此端口為低電平時,無論其他的狀態如何,始終輸出數字8,作為判斷數碼管的好壞端口使用;
LE/STB為滅燈輸入端,當此端口輸入低電平時數碼管滅,輸入高電平時數碼管正常顯示;
BI為動態消零信號輸入端,當此端口輸入低電平時且LT為高電平時,當輸入0000時,輸出0熄;
點陣的使用介紹:
點陣是8*8位的,相當于由64個LED組成,8個陽極控制端口,8個陰極控制端口;
數碼管的使用介紹:
數碼管是采用兩位共陰極數碼管,通過對a~g的編碼來顯示數字。
3.2.5報警模塊
圖3.2.5報警模塊
本設計采用8550三極管驅動蜂鳴器。當PO口送高電平時,三極管處于截止狀態,三極管Vce電壓約為VCC,蜂鳴器只有很少電流流過,沒法驅動其發聲。當PO口送低電平時,三極管處于飽和導通狀態,三極管Vce約為0.3V,蜂鳴器有較大電流流過,能驅動其報警發聲。
3.2.6電路總圖
圖3.2.6 電路總圖
由于protel99se內部元件不齊全,本次設計全部采用手工繪制元件庫以達到訓練的最佳效果。


4軟件模塊

圖4 程序流程圖
注:詳細程序見附錄二
5 PCB印刷版圖模塊
5.1 protel99se功能介紹
Protel99SE是應用于Windows9X/2000/NT操作系統下的EDA設計軟件,采用設計庫管理模式,可以進行聯網設計,具有很強的數據交換能力和開放性及3D模擬功能,是一個32位的設計軟件,可以完成電路原理圖設計,印制電路板設計和可編程邏輯器件設計等工作,可以設計32個信號層,16個電源--地層和16個機加工層。
5.2 PCB版圖
圖5.2.1非鍍銅版圖
在生成PCB之前,要進行元件的封裝。由于protel99se內部封裝不齊全,本次設計全部采用手工繪制封裝庫以達到最佳訓練效果。PCB布線規則是盡量使正面走線和反面走線成90度角,以達到最小干擾。
圖5.2.2鍍銅頂層圖樣
圖5.2.3 鍍銅底層圖樣
圖5.3.4 3D版圖正面
圖5.3.5 3D版圖背面

附錄一
元件清單
單片機源程序如下:
  1. #include"reg52.h"
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uchar DZ1[]={0x08,0x14,0x2a,0x08,0x08,0x08};
  5. uchar DZ2[]={0xbf,0xdf,0xef,0xf7,0xfd,0xfb};
  6. uchar DZ3[]={0x08,0x08,0x08,0x2a,0x14,0x08};
  7. uchar shuma[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09};
  8. uchar LC[]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,0xedb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77};//樓層編碼
  9. uchar key,dir,floor,zancun,s,x,p2;
  10. sbit DA=P0^0;
  11. sbit DB=P0^1;
  12. sbit DC=P0^2;
  13. sbit DD=P0^3;
  14. sbit w1=P0^4;//數碼管位選1
  15. sbit w2=P0^5;//數碼管位選2
  16. sbit wa=P0^6;//點陣陽極使能
  17. sbit wb=P0^7;//點陣陰極使能
  18. sbit EN=P3^0;//電機使能
  19. sbit CW=P3^1;//方向控制
  20. sbit CLOCK=P3^2;//速度控制
  21. sbit red=P3^3;//上鍵顯示
  22. sbit green=P3^4;//下鍵顯示
  23. sbit beep=P3^5;//報警
  24. void delay1(uchar z)
  25. {
  26.               uchar i,j;
  27.               for(i=z;i>0;i--)
  28.               for(j=110;j>0;j--);
  29. }
  30. void delay2(uchar z)
  31. {
  32.               uchar i,j;
  33.               for(i=z;i>0;i--)
  34.               {
  35.                             if(key==0)//減短代碼運行時間,使用更多時間掃描鍵盤
  36.                             break;
  37.                             else
  38.                             for(j=110;j>0;j--);
  39.               }
  40.             
  41. }
  42. uchar key_scan(void)
  43. {
  44.               uchar scode,recode;
  45.               P1=0xf0;
  46.               if((P1&0xf0)!=0xf0)
  47.               {
  48.                             delay1(2);
  49.                             if((P1&0xf0)!=0xf0)//有鍵按下
  50.                             {
  51.                                           scode=0xfe;//輔助變量,設定行
  52.                                           while((scode&0x10)!=0)
  53.                                           {
  54.                                                         P1=scode;//將某一行設為0,從而判斷是否為該行
  55.                                                         if((P1&0xf0)!=0xf0)
  56.                                                         {
  57.                                                                       recode=P1&0xf0;//列碼
  58.                                                                       scode=scode&0x0f;//行碼
  59.                                                                       return(scode+recode);//按鍵坐標
  60.                                                         }
  61.                                                         else
  62.                                                         scode=(scode<<1)|0x01;//下一行判斷
  63.                                           }
  64.                             }
  65.               }
  66.               return 0;
  67. }
  68. void display1(void)//上箭頭顯示
  69. {
  70.               uchar i,j;
  71.               for(i=0;i<1;i++)
  72.               {
  73.                             wa=1;
  74.                             P2=DZ1[i];
  75.                             for(j=500;j>0;j--);
  76.                             wa=0;
  77.                             wb=1;
  78.                             P2=DZ2[i];
  79.                             for(j=500;j>0;j--);
  80.                             wb=0;
  81.               }
  82. }
  83. void display2(void)//下箭頭顯示
  84. {
  85.               uchar i,j;
  86.               for(i=0;i<1;i++)
  87.               {
  88.                             wa=1;
  89.                             P2=DZ3[i];
  90.                             for(j=500;j>0;j--);
  91.                             wa=0;
  92.                             wb=1;
  93.                             P2=DZ2[i];
  94.                             for(j=500;j>0;j--);
  95.                             wb=0;
  96.               }
  97. }
  98. void shuxian(uchar z)//數碼管顯示
  99. {
  100.               uchar temp;
  101.               w1=0;
  102.               p0=shuma[z/10];
  103.               temp=P0;
  104.               P0=p0|temp;
  105.               w1=1;
  106.               w2=0;
  107.               p0=shuma[z%10];
  108.               temp=P0;
  109.               P0=p0|temp;
  110.               w2=1;
  111. }
  112. void init(void)//初始化
  113. {
  114.               dir=0;
  115.               w1=1;
  116.               w2=1;
  117.               wa=0;
  118.               wb=0;
  119.               floor=0;
  120.               zancun=1;
  121.               beep=1;
  122.               EN=0;
  123.               EA=1;
  124.               ET1=1;//T1中斷允許
  125.               TMOD=0x10;//T1的8位計數
  126.               TH1=(65536-50000)/256;
  127.               TL1=(65536-50000)%256;
  128. }
  129. void main(void)
  130. {
  131.               init();
  132.               while(1)
  133.               {
  134.                             key=key_scan();
  135.                             if(key!=0)
  136.                             {
  137.                                           delay2(10);
  138.                                           if(key!=0)
  139.                                           {
  140.                                                         TR1=1;
  141.                                                         switch(key)
  142.                                                         {
  143.                                                                       case LC[14]:
  144.                                                                       dir=1;//按鍵儲存上鍵值
  145.                                                                       break;
  146.                                                                       case LC[15]:
  147.                                                                       dir=2;//按鍵儲存下鍵值
  148.                                                                       break;
  149.                                                                       default break;
  150.                                                         }
  151.                                                         if(dir==1)
  152.                                                         {
  153.                                                                       shuxian(s);
  154.                                                                       display1();
  155.                                                                       if((zancun-floor)>=0)
  156.                                                                       {
  157.                                                                                     switch(key)
  158.                                                                                     {
  159.                                                                                                   case LC[0]:
  160.                                                                                                   floor=1;
  161.                                                                                                   break;
  162.                                                                                                   case LC[1]:
  163.                                                                                                   floor=2;
  164.                                                                                                   break;
  165.                                                                                                   case LC[2]:
  166.                                                                                                   floor=3;
  167.                                                                                                   break;
  168.                                                                                                   case LC[3]:
  169.                                                                                                   floor=4;
  170.                                                                                                   break;
  171.                                                                                                   case LC[4]:
  172.                                                                                                   floor=5;
  173.                                                                                                   break;
  174.                                                                                                   case LC[5]:
  175.                                                                                                   floor=6;
  176.                                                                                                   break;
  177.                                                                                                   case LC[6]:
  178.                                                                                                   floor=7;
  179.                                                                                                   break;
  180.                                                                                                   case LC[7]:
  181.                                                                                                   floor=8;
  182.                                                                                                   break;
  183.                                                                                                   case LC[8]:
  184.                                                                                                   floor=9;
  185.                                                                                                   break;
  186.                                                                                                   case LC[9]:
  187.                                                                                                   floor=10;
  188.                                                                                                   break;
  189.                                                                                                   case LC[10]:
  190.                                                                                                   floor=11;
  191.                                                                                                   break;
  192.                                                                                                   case LC[11]:
  193.                                                                                                   floor=12;
  194.                                                                                                   break;
  195.                                                                                                   case LC[12]:
  196.                                                                                                   floor=13;
  197.                                                                                                   break;
  198.                                                                                                   case LC[13]:
  199.                                                                                                   floor=14;
  200.                                                                                                   break;                                                                                                                                                                       
  201.                                                                                     }
  202.                                                                       }
  203.                                                                       else   //不符邏輯報警停止電機轉動
  204.                                                                       beep=0;
  205.                                                                       EN=0;
  206.                                                                       TR1=0;            
  207.                                                         }
  208.                                                         if(dir==0)
  209.                                                         {
  210.                                                                       shuxian(x);
  211.                                                                       display2();
  212.                                                                       if((zancun-floor)<=0)
  213.                                                                       {
  214.                                                                                     switch(key)
  215.                                                                                     {
  216.                                                                                                   case LC[0]:
  217.                                                                                                   floor=1;
  218.                                                                                                   break;
  219.                                                                                                   case LC[1]:
  220.                                                                                                   floor=2;
  221.                                                                                                   break;
  222.                                                                                                   case LC[2]:
  223.                                                                                                   floor=3;
  224.                                                                                                   break;
  225.                                                                                                   case LC[3]:
  226.                                                                                                   floor=4;
  227.                                                                                                   break;
  228.                                                                                                   case LC[4]:
  229.                                                                                                   floor=5;
  230.                                                                                                   break;
  231.                                                                                                   case LC[5]:
  232.                                                                                                   floor=6;
  233.                                                                                                   break;
  234.                                                                                                   case LC[6]:
  235.                                                                                                   floor=7;
  236.                                                                                                   break;
  237.                                                                                                   case LC[7]:
  238.                                                                                                   floor=8;
  239.                                                                                                   break;
  240.                                                                                                   case LC[8]:
  241.                                                                                                   floor=9;
  242.                                                                                                   break;
  243.                                                                                                   case LC[9]:
  244.                                                                                                   floor=10;
  245.                                                                                                   break;
  246.                                                                                                   case LC[10]:
  247.                                                                                                   floor=11;
  248.                                                                                                   break;
  249.                                                                                                   case LC[11]:
  250.                                                                                                   floor=12;
  251.                                                                                                   break;
  252.                                                                                                   case LC[12]:
  253.                                                                                                   floor=13;
  254.                                                                                                   break;
  255.                                                                                                   case LC[13]:
  256.                                                                                                   floor=14;
  257.                                                                                                   break;                                                                                                                                                                       
  258.                                                                                     }                                                                                   
  259.                                                                       }
  260.                                                                       else //不符邏輯報警停止電機轉動
  261. ……………………

  262. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

以上的Word格式文檔51黑下載地址:
基于單片機電梯控制系統設計.doc (1.38 MB, 下載次數: 55)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂3 踩
回復

使用道具 舉報

沙發
ID:513213 發表于 2021-7-16 08:24 | 只看該作者
比較完整的一個設計項目&資料
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: av大片在线观看 | 91色视频在线观看 | 久久久久久国产精品免费免费狐狸 | 国产真实乱全部视频 | av电影一区 | 成人免费在线观看视频 | 国产精品日韩欧美 | 欧美日韩高清在线观看 | 91国内外精品自在线播放 | 久久久久一区 | 久久久久久久久国产 | 色爱av| 国产不卡在线播放 | 精品国产一区二区国模嫣然 | 免费观看国产视频在线 | 欧洲一区视频 | 欧美激情在线一区二区三区 | 久草精品在线 | 日韩欧美二区 | 精品国产乱码久久久久久闺蜜 | 亚洲精品一区二区三区中文字幕 | 欧美亚洲综合久久 | 日韩av在线一区二区三区 | 黄视频免费观看 | 亚洲欧美一区在线 | 日韩手机视频 | www.888www看片| 365夜爽爽欧美性午夜免费视频 | 激情五月综合 | 国产亚洲精品一区二区三区 | 欧美激情久久久 | 午夜无码国产理论在线 | 久久精品视频网站 | 免费看一区二区三区 | 久久久精彩视频 | 色婷婷国产精品综合在线观看 | 欧美精品综合 | 精品久久影院 | 911精品美国片911久久久 | 中文字幕在线一区二区三区 | 日韩精品专区在线影院重磅 |