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

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

QQ登錄

只需一步,快速開(kāi)始

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

單片機(jī)鍵盤(pán)與按鍵中斷仿真實(shí)驗(yàn)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:300927 發(fā)表于 2018-10-18 19:06 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
4X4鍵盤(pán)(中斷方式),當(dāng)K1鍵按下后,首先使蜂鳴器響一聲,然后使LED1-LED8完成3種閃亮的花樣(自己定義),每一種花樣循環(huán)3次,然后周而復(fù)始。

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)源程序如下:
  1. #include <reg51.h>
  2. sbit P3_7=P3^7;
  3. sbit P3_3=P3^3;
  4. char key=0;
  5. char sign=0;

  6. void delay(long time)
  7. {
  8.         char i=0;
  9.         while(time--)
  10.         for(i=0;i<125;i++);
  11. }

  12. void delay1(long time)
  13. {
  14.         char i=0;
  15.         while(time--)
  16.         for(i=0;i<125;i++);
  17. }


  18. void onbuz()
  19. {
  20.         P3_7=1;
  21.         delay(100);
  22.         P3_7=0;
  23. }

  24. void kind1()
  25. {
  26.         char i=0;
  27.         char data1[2]={0x0f,0xf0};
  28.         for(i=0;i<2;i++)
  29.         {
  30.                 P0=data1[i];
  31.                 delay(200);
  32.         }
  33.         P0=0xff;
  34. }

  35. void kind2()
  36. {
  37.         char i=0;
  38.         char data2[4]={0x03,0x0c,0x30,0xc0};
  39.         for(i=0;i<4;i++)
  40.         {
  41.                 P0=data2[i];
  42.                 delay(200);
  43.         }
  44.         P0=0xff;
  45. }

  46. void kind3()
  47. {
  48.         char i=0;
  49.         char data3[4]={0x81,0x42,0x24,0x18};
  50.         for(i=0;i<2;i++)
  51.         {
  52.                 P0=data3[i];
  53.                 delay(200);
  54.         }
  55.         P0=0xff;
  56. }

  57. void run()
  58. {
  59.         char i;
  60.         while(sign==0)
  61.         {       
  62.                 onbuz();       
  63.                 for(i=0;i<3;i++)
  64.                 {
  65.                         kind1();
  66.                 }
  67.                 for(i=0;i<3;i++)
  68.                 {
  69.                         kind2();
  70.                 }
  71.                 for(i=0;i<3;i++)
  72.                 {
  73.                         kind3();
  74.                 }
  75.         }
  76. }
  77. void run1()
  78. {
  79.         char i;
  80.         while(sign==0)
  81.         {       
  82.                 onbuz();       
  83.                 for(i=0;i<3;i++)
  84.                 {
  85.                         kind1();
  86.                 }
  87.         }
  88. }
  89. void keyon() interrupt 0
  90. {
  91.         char num_l,num_h,num;
  92.         if(P1!=0xf0)
  93.         {
  94.                 delay1(100);
  95.                 if(P1!=0xf0)
  96.                 {
  97.                         P1=0xf0;
  98.                         num_h=P1^0xf0;
  99.                         P1=0x0f;
  100.                         num_l=P1^0x0f;
  101.                         num=num_h+num_l;
  102.                 }
  103.         }
  104.         P1=0xf0;
  105.         switch(num)
  106.                 {
  107.                         case 0x11:break;
  108.                         case 0x12:break;
  109.                         case 0x14:break;
  110.                         case 0x18:break;
  111.                         case 0x21:
  112.                                 key=num;
  113.                                 break;
  114.                         case 0x22:
  115.                                 key=num;
  116.                                 break;
  117.                         case 0x24:break;
  118.                         case 0x28:break;
  119.                         case 0x41:break;
  120.                         case 0x42:break;
  121.                         case 0x44:break;
  122.                         case 0x48:break;
  123.                         case 0x81:break;
  124.                         case 0x82:break;
  125.                         case 0x84:break;
  126.                         case 0x88:break;
  127.                 }
  128.         sign=0;       
  129. }          

  130. void keyoff() interrupt 2
  131. {
  132.         P0=0xff;
  133.         P1=0xf0;
  134.         sign=1;
  135. }

  136. void main()
  137. {
  138.         P3_7=0;
  139.         P1=0xf0;
  140.         EA=1;
  141.         EX0=1;
  142.         EX1=1;
  143.         TCON=0x05;
  144.         while(1)
  145.         {
  146.                 P1=0xf0;
  147.                 if(key==0x21)
  148.                 {
  149.                         run();
  150.                 }
  151.                 if(key==0x22)
  152.                 {
  153.                         run1();
  154.                 }
  155.         }
  156. }
復(fù)制代碼

所有資料51hei提供下載:
實(shí) 驗(yàn) 三.rar (61.47 KB, 下載次數(shù): 22)


評(píng)分

參與人數(shù) 1黑幣 +10 收起 理由
wyhnb + 10

查看全部評(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ù) 返回頂部 返回列表
主站蜘蛛池模板: 九九成人 | 日韩中文字幕一区二区 | 日韩精品极品视频在线观看免费 | 国产精品成人一区二区三区 | 亚洲第一av | 国产黄色网址在线观看 | 草久久 | www.日本在线 | 国产乱码精品一区二区三区忘忧草 | 碰碰视频 | 91婷婷韩国欧美一区二区 | 色婷婷在线视频 | 在线视频国产一区 | 欧美三级免费观看 | 一区二区电影 | 欧美激情 一区 | 午夜激情免费 | 色综合色综合网色综合 | 国产不卡在线播放 | www.色综合| 久草在线中文888 | 一区二区三区亚洲 | 99在线播放 | 中文字幕亚洲欧美 | 国产乱码精品一区二区三区五月婷 | 亚洲在线久久 | av大片在线观看 | 国产一区 在线视频 | 91精品国产91久久久久久丝袜 | www.亚洲国产精品 | 狠狠爱综合 | 亚洲精品一区国产精品 | 毛片一区二区 | 狠狠亚洲| 久久精品久久久久久 | 亚洲国产高清在线观看 | 毛片综合| 日韩欧美一区在线 | 亚洲国产精品一区二区三区 | 亚洲国产91 | 日日干日日 |