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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機寫的電梯程序

[復制鏈接]
ID:289947 發表于 2018-3-16 20:37 | 顯示全部樓層 |閱讀模式
電梯用到中斷,數碼管,和現實中電梯有相同的功能,考慮的應該很全了
  1. /**************功能:電梯樓層的控制的顯示*******/
  2. #include<reg52.h>
  3. #define uchar unsigned char                                                      //宏定義
  4. sbit fmq=P3^6;                                                                              //蜂鳴器的定義
  5. uchar pg=0, pf=0,g=9,p=0;                                                 //定義  pg存是數碼管顯示的數字 ,pf存按鍵返回的值         
  6. uchar house_code[8]={0};
  7. uchar code dis_playd[11]={0xf9,0xa4,0xb0,0x99,0x92,0x82,
  8.                                                   0xf8,0x80,0xfe,0xbf,0xf7};                 //數組中存有"1~8"、"上-"、“中-”、 “下-”
  9. uchar code dis_playw[3 ]={0x7f,0xbf,0xdf};                          //位選的三位
  10. uchar code key_defin[8 ]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,};//按鍵的編
  11. /**************函數聲明***************/
  12. void dis_up1();
  13. uchar keyscan();
  14. void dis_down1();
  15. /*************1ms延時函數*********************/
  16. void delay_1ms(uchar i)
  17. {
  18.         uchar j=0;
  19.         while(i--)
  20.                 for(j=0;j<115;j++)
  21.                 ;        
  22. }
  23. /*************數碼管顯示*****************/
  24. void display(uchar k)
  25. {        
  26.         P2=dis_playw[0];
  27.         P0=dis_playd[pg];
  28.         delay_1ms(2);
  29.         P0=0xff;
  30.         P2=dis_playw[1];
  31.         P0=dis_playd[k];
  32.         delay_1ms(2);
  33.         P0=0xff;
  34. }
  35. /***************數碼管中的延時*************/
  36. void delay_x1(int i)
  37. {
  38.         uchar j=0;
  39.         while(i--)
  40.         {        
  41.                 for(j=0;j<115;j++)
  42.                 {        
  43.                         display(g);
  44.                 }
  45.     }        
  46. }
  47. /*******上升重按鍵掃描******/
  48. void delay_x(int i)
  49. {
  50.         uchar j=0;
  51.         while(i--)
  52.         {        
  53.                 for(j=0;j<115;j++)
  54.                 {        
  55.                         display(g);
  56.                         if(P1!=0xf0)
  57.                         {
  58.                                 delay_1ms(10);
  59.                                 if(P1!=0xf0)
  60.                                 {
  61.                                         pf=keyscan();
  62.                                         if(pf!=p&&pf!=pg)
  63.                                           {
  64.                                                                    dis_up1();        
  65.                                                   
  66.                                           }
  67.                                 }
  68.                   }
  69.                 }
  70.     }        
  71. }
  72. /*******下降重按鍵掃描******/
  73. void delay_x2(int i)
  74. {
  75.         uchar j=0;
  76.         while(i--)
  77.         {        
  78.                 for(j=0;j<115;j++)
  79.                 {        
  80.                         display(g);
  81.                         if(P1!=0xf0)
  82.                         {
  83.                                 delay_1ms(10);
  84.                                 if(P1!=0xf0)
  85.                                 {
  86.                                         pf=keyscan();
  87.                                         if(pf!=p&&pf!=pg)
  88.                                           {
  89.                                                                 dis_down1();        
  90.                                           }
  91.                                 }
  92.                   }
  93.                 }
  94.     }        
  95. }        
  96. /**************產生1KHZ頻率聲音的函數**************/
  97. void beep(void)               
  98. {        
  99.         fmq=0;
  100.         delay_1ms(100);
  101.         fmq=1;
  102.         delay_1ms(100);        
  103. }
  104. /*************線反轉法檢測 按下了哪一個鍵并返回數值         **********/
  105. uchar keyscan()      
  106. {
  107.          uchar k1=0,k2=0,k=0,i=0,j=0;
  108.          P1=0xf0;
  109.          if(P1!=0xf0)
  110.          {
  111.                 delay_1ms(20);
  112.                 if(P1!=0xf0)
  113.                 {
  114.                          k1=P1;
  115.                          P1=0x0f;
  116.                          k2=P1;
  117.                          k=k1|k2;
  118.                          for(i=0;i<16;i++)
  119.                          {
  120.                                   if(k==key_defin[i])
  121.                                   {
  122.                                   j=i;
  123.                                   return(j);
  124.                                   }
  125.                          }        
  126.                          while(P1!=0x0f)
  127.                       ;
  128.                    }
  129.          }
  130.         return(0);        
  131. }
  132. /***********上升嵌套函數 **************/
  133. void dis_up1()                                 
  134. {        
  135.         while(pf>pg)
  136.         {
  137.                 g=8;
  138.                 delay_x1(2);
  139.                 pg++;
  140.         }
  141.         g=9;
  142.         display(g);        
  143.          beep();
  144.         delay_x1(2);        
  145. }  
  146. /*********下降套函數 ****************/
  147. void dis_down1()                                 
  148. {        
  149.         while(pf<pg)
  150.         {
  151.                 g=10;
  152.                 delay_x1(2);
  153.                 pg--;
  154.         }
  155.         g=9;
  156.         display(g);        
  157.          beep();
  158.         delay_x1(2);        
  159. }  
  160. /****************電梯上升函數**************/
  161. void dis_up()                                 
  162. {
  163.          P1=0xf0;
  164.         while(p>pg)
  165.         {
  166.         
  167.                 g=8;
  168.                 delay_x(2);
  169.                 pg++;
  170.         }
  171.         g=9;
  172.         display(g);
  173.         beep();
  174. }
  175. /****************電梯下降函數**************/
  176. void dis_down()                        
  177. {
  178.         while(p<pg)
  179.         {
  180.                 g=10;
  181.                 delay_x2(2);
  182.                 pg--;
  183.         }
  184.         g=9;
  185.         display(9);
  186.         beep();
  187. }
復制代碼

余下自己下載

電梯程序.rar

27.67 KB, 下載次數: 41, 下載積分: 黑幣 -5

回復

使用道具 舉報

ID:1 發表于 2018-3-17 01:24 | 顯示全部樓層
樓主能分享個原理圖嗎?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 视频1区2区 | 亚洲国产欧美日韩 | 伊人看片| 国产色婷婷精品综合在线手机播放 | 一级a爱片久久毛片 | 久草精品视频 | 亚洲成人精选 | 自拍视频一区二区三区 | 欧美视频一区 | 中文字幕久久精品 | 91久久精品国产91久久性色tv | 日韩三级在线 | 色婷婷狠狠 | 亚洲精品在线视频 | 啪啪精品| 欧美 视频 | 韩日有码 | 九九热在线观看视频 | 成人福利视频 | 久久精品国产久精国产 | 国产精品视频久久久 | 久青草影院 | 国产美女视频黄a视频免费 国产精品福利视频 | 精品视频一区二区三区在线观看 | 亚洲香蕉| 亚洲日韩中文字幕一区 | 日韩欧美黄色 | 国产视频2021 | 国产一区欧美 | 亚洲国产情侣自拍 | 中文字幕国产精品 | 国产一区二区三区久久 | 亚洲成人在线网 | 久久精品国产一区二区电影 | 亚洲一区二区三区久久久 | 午夜理伦三级理论三级在线观看 | 91精品国产91久久久久久最新 | 日韩电影a | 成人在线观看免费视频 | 欧美乱做爰xxxⅹ久久久 | 91久久久久久 |