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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1243|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

我的單片機(jī)設(shè)計(jì),里面包含proteus仿真和程序代碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
簡易密碼鎖設(shè)計(jì),bug比較多

單片機(jī)源程序如下:
  1. /**************************************************************                                                  *
  2. 功能:通過軟件程序設(shè)置密碼,初始密碼為123456,當(dāng)按鍵按下之后  *
  3.           再按下確認(rèn)鍵,如果密碼正確,則綠燈亮,舵機(jī)旋轉(zhuǎn)90度,如果*
  4.           密碼錯(cuò)誤,紅燈亮,短暫延時(shí)后,數(shù)碼管清零,紅燈滅,重新輸*
  5.           入密碼。                                                                                                  *
  6. *//************************************************************/


  7. /****************************************************************/
  8.                                                                                                                                  
  9. #include <reg51.h>                                                                                                

  10. #define uchar unsigned char
  11. #define uint  unsigned int

  12. sbit P2_0 = P2^0;
  13. sbit P2_1 = P2^1;
  14. sbit P2_2 = P2^2;
  15. sbit P2_3 = P2^3;
  16. sbit P2_4 = P2^4;
  17. sbit P2_5 = P2^5;
  18. sbit P2_6 = P2^6;
  19. sbit P3_6 = P3^6;
  20. sbit LED_G = P3^0;
  21. sbit LED_R = P3^1;
  22. sbit beep = P3^7;

  23. uint tab[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
  24. uchar h,l,s,o,zhengque,m = 0,v = 1,w = 0,n = 1,keyval_0 ,keyval_1,keyval_2,keyval_3,
  25. keyval_4,keyval_5,keyval_6,keyval_7,keyval_8,keyval_9,keyval_10,keyval_11,keyval_12,
  26. keyval_13,keyval_14,keyval_15,keyval,temp = 0x01;


  27. void delay(uint z)
  28. {
  29.         uint x , y;
  30.         for(x = z ; x > 0 ; x--)
  31.                 for(y = 114 ; y > 0 ; y--);
  32. }
  33. //有參延時(shí)

  34. void key_scan1()
  35. {
  36.         
  37.     P1=0x0f;//檢測是哪一行有按鍵按下;
  38.     if(P1!=0x0f)
  39.     {
  40.         delay(10);
  41.         if(P1!=0x0f)
  42.         {
  43.                         beep = ~beep;
  44.             P1=0x0f;
  45.             switch(P1)
  46.             {
  47.                 case(0x0e):h=1;break;
  48.                 case(0x0d):h=2;break;
  49.                 case(0x0b):h=3;break;
  50.                 case(0x07):h=4;break;
  51.             }
  52.         }
  53.         P1=0xf0;//檢測是哪一列有按鍵按下
  54.         switch(P1)
  55.         {
  56.             case(0xe0):l=1;break;
  57.             case(0xd0):l=2;break;
  58.             case(0xb0):l=3;break;
  59.             case(0x70):l=4;break;
  60.         }
  61.         while(P1!=0xf0);//當(dāng)按鍵復(fù)位時(shí)  
  62.                
  63.                 w++;
  64.                 beep = ~beep;
  65.                
  66.                 //按一次第一個(gè)數(shù)碼管顯示,按兩次前兩個(gè)數(shù)碼管顯示......         
  67.     }
  68.         
  69. }

  70. void shuru()
  71. {

  72.         P2 = 0Xc0;
  73.         //P0 = 0XBF;
  74.         
  75.         while(v)
  76.         {
  77.                
  78.            key_scan1();
  79.            s = 5*h + l;//行列進(jìn)行線性運(yùn)算,通過判斷s的值來判斷對(duì)應(yīng)按鍵
  80.            switch(s)
  81.            {
  82.                            case(9):keyval = 0;keyval_0 = 0;break;
  83.             case(8):keyval = 1;keyval_1 = 1;break;                                                                        
  84.             case(7):keyval = 2;keyval_2 = 2;break;                        
  85.             case(6):keyval = 3;keyval_3 = 3;break;
  86.                         case(14):keyval = 4;keyval_4 = 4;break;                        
  87.                         case(13):keyval = 5;keyval_5 = 5;break;        
  88.             case(12):keyval = 6;keyval_6 = 6;break;
  89.             case(11):keyval = 7;keyval_7 = 7;break;
  90.                         case(19):keyval = 8;keyval_8 = 8;break;
  91.             case(18):keyval = 9;keyval_9 = 9;break;
  92.                         case(17):keyval = 10;keyval_10 = 10;break;
  93.             case(16):keyval = 11;keyval_11 = 11;break;
  94.             case(24):keyval = 12;keyval_12 = 12;break;
  95.             case(23):keyval = 13;keyval_13 = 13;break;
  96.                         case(22):keyval = 14;keyval_14 = 14;break;
  97.             case(21):keyval = 15;keyval_15 = 15;break;                           
  98.            }
  99.            
  100.            switch(w)
  101.            {
  102.                    case 1:        P2_0 = 1;P0 = tab[keyval];delay(100);P2_0 = 0;break;
  103.                 case 2:        P2_1 = 1;P0 = tab[keyval];delay(100);P2_1 = 0;break;
  104.                 case 3:        P2_2 = 1;P0 = tab[keyval];delay(100);P2_2 = 0;break;
  105.                 case 4:        P2_3 = 1;P0 = tab[keyval];delay(100);P2_3 = 0;break;
  106.                 case 5:        P2_4 = 1;P0 = tab[keyval];delay(100);P2_4 = 0;break;
  107.                 case 6:        P2_5 = 1;P0 = tab[keyval];delay(100);P2_5 = 0;break;               
  108.            }
  109.            if(P2_6 == 0)
  110.            delay(10);
  111.            if(P2_6 == 0)
  112.            v = 0;
  113.                            
  114.         }  //依次輸入密碼        
  115. }



  116. void main()
  117. {        
  118.         beep = 0;
  119.         shuru();
  120.         zhengque = ((keyval_1==1)&(keyval_2==2)&(keyval_3==3)&(keyval_4==4)&(keyval_5==5)&(keyval_6==6));//設(shè)置的密碼        
  121.         if(P2_6 == 0)
  122.         {
  123.                 delay(10);
  124.                 if(P2_6 == 0)         //確認(rèn)鍵按下時(shí),判斷密碼是否正確
  125.                 {
  126.                   if(zhengque)
  127.                   {
  128.                            LED_G = 0;
  129.                          delay(1000);
  130.                          LED_G = 1;
  131.                          EA = 1;
  132.                          IT0 = 1;
  133.                          TMOD = 0X01;
  134.                          TH0 = (60536%256);
  135.                          TL0 = (60536/256);
  136.                         while(n)
  137.                         {
  138.                                 P3_6 = 0;
  139.                         }                 
  140.                   }
  141.                   else
  142.                   {
  143.                   for(o = 0 ; o < 10 ; o++)
  144.                   {
  145.                           LED_R = 0;
  146.                         beep = ~beep;
  147.                         delay(300);
  148.                         LED_R = 1;
  149.                                                                         
  150.                         
  151.                         }
  152.                   }
  153.                 }
  154.         }                                            
  155. }
  156.         
  157. void timer0() interrupt 1  //定時(shí)器0控制舵機(jī)的PWM
  158. {
  159.         TH0 = (60536%256);
  160.         TL0 = (60536/256);
  161.         m++;
  162.         if(m == 5)
  163. {
  164.         P3_6 = 1;
  165.         m = 0;
  166.         n = 0;
  167. }
  168. }

  169. /*****************************************************************/

復(fù)制代碼

Keil代碼與Proteus仿真下載: 1.zip (116.53 KB, 下載次數(shù): 10)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 激情五月婷婷 | 爱爱免费视频 | wwww.8888久久爱站网 | 91精品国产色综合久久 | 欧美aⅴ片| 国产精品毛片一区二区三区 | 韩三级在线观看 | 天天精品在线 | 美女操网站 | 狠狠躁天天躁夜夜躁婷婷老牛影视 | 一区二区免费 | 狠狠干五月天 | 国产97人人超碰caoprom | 成人黄在线观看 | 国产精品一区二区无线 | 伊人春色成人网 | 91久久夜色 | 亚洲一区电影 | 精品亚洲二区 | 91久久综合亚洲鲁鲁五月天 | 国产免费一区二区 | 99精品国产一区二区青青牛奶 | 台湾a级理论片在线观看 | 欧美精品在线播放 | 久久久久国产 | 精品视频久久久久久 | 二区久久| 欧美色视频免费 | 亚洲国产成人精品女人久久久 | 日本欧美在线 | 亚洲一区二区在线播放 | 亚洲免费精品 | 夜夜操天天艹 | 成人久久久久久久久 | 国产精品久久久乱弄 | 97精品久久 | 日韩精品网站 | 西西裸体做爰视频 | 四虎影视一区二区 | 九九亚洲| 三级黄色片在线 |