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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

我的單片機課設四路搶答器—含代碼,報告,仿真

  [復制鏈接]
跳轉到指定樓層
樓主
ID:208940 發表于 2017-6-7 20:08 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
這是我上個月的課設——四路搶答器
參考許多意見,
里面有課程設計報告,源代碼,multisim仿真圖和實物圖。
  1. //獨立鍵盤
  2. #include<reg52.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char

  5. sbit dula=P2^6;
  6. sbit wela=P2^7;
  7. sbit D1=P1^0;
  8. sbit D2=P1^1;
  9. sbit D3=P1^2;
  10. sbit D4=P1^3;
  11. sbit beep=P2^3;
  12. uchar code table[]={
  13. 0x3f,0x06,0x5b,0x4f,
  14. 0x66,0x6d,0x7d,0x07,
  15. 0x7f,0x6f,0x77,0x7c,
  16. 0x39,0x5e,0x79,0x71,0};

  17. uchar key,temp,daojishi=0x1e,x1=0,x2=0,x3=0,x4=0;
  18. bit begin,end,clear;
  19. unsigned int pp,qq;
  20. uchar a0=0;b0=0;c0=0;d0=0;e0=0;f0=3;

  21. void delay(uint z)
  22. {
  23.         uint x,y;
  24.         for(x=z;x>0;x--)
  25.                  for(y=110;y>0;y--);
  26. }

  27. void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f)
  28. {
  29.    dula=1;
  30.    P0=table[a];
  31.    dula=0;
  32.    P0=0xff;
  33.    wela=1;
  34.    P0=0xfe;
  35.    wela=0;
  36.    delay(5);
  37. /////////////   
  38.    dula=1;
  39.    P0=table[b];
  40.    dula=0;
  41.    P0=0xff;
  42.    wela=1;  
  43.    P0=0xfd;
  44.    wela=0;
  45.    delay(5);
  46. /////////////////
  47.    dula=1;  
  48.    P0=table[c];
  49.    dula=0;
  50.    P0=0xff;
  51.    wela=1;   
  52.    P0=0xfb;
  53.    wela=0;
  54.    delay(5);
  55. /////////////
  56.    dula=1;  
  57.    P0=table[d];
  58.    dula=0;
  59.    P0=0xff;
  60.    wela=1;   
  61.    P0=0xf7;
  62.    wela=0;
  63.    delay(5);
  64. // //////////////
  65.    dula=1;
  66.    P0=table[e];
  67.    dula=0;
  68.    P0=0xff;
  69.    wela=1;   
  70.    P0=0xef;
  71.    wela=0;
  72.    delay(5);
  73. /////////////  
  74.    dula=1;
  75.    P0=table[f];
  76.    dula=0;
  77.    P0=0xff;
  78.    wela=1;   
  79.    P0=0xdf;
  80.    wela=0;
  81.    delay(5);
  82. }
  83. void keyscan()
  84. {
  85.         //P3^0口按下,矩陣第一行,P3^0        
  86.                 P3=0xfe;
  87.                 temp=P3;
  88.                 temp=temp&0xf0;//如果按下了,那么肯定就和0xf0不相等了
  89.                 while(temp!=0xf0)//有鍵按下了,此時為真,進入循環
  90.                 {
  91.                         delay(5);//延時后,消除抖動;確認確實是有開關鍵按下了
  92.                         temp=P3;//重新讓temp讀取P3口
  93.                         temp=temp&0xf0;
  94.                         D1=1;D2=1;D3=1;D4=1;
  95.                         while(temp!=0xf0)
  96.                         {
  97.                                 temp=P3;//如果沒有這條語句,此時的temp值是與0xf0與完后的值。而下面case中是為了給對應的數碼管口顯示
  98.                                 switch(temp)
  99.                                 {
  100.                                         case 0xee:D1=0;key=1;x1++;      //0xee=11101110  看第一行的哪一列被按下去
  101.                                                 break;//檢測到是第一個按鍵被按下,就跳出這個while循環
  102.                                         case 0xde: D2=0; key=2;x2++; //11011110即第一行第二個按鍵按下之后顯示2;
  103.                                                 break;
  104.                                         case 0xbe:D3=0;key=3;x3++;
  105.                                                 break;
  106.                                         case 0x7e: D4=0;key=4; x4++;
  107.                                                 break;
  108.                                 }
  109.                                 //松手檢測
  110.                                 while(temp!=0xf0)//檢測是否松手,如果松手兩者相等,while條件為假,不執行。但是若是因為抖動,那么就讓temp重新與0xf0 AND
  111.                                {         
  112.                                          temp=P3;
  113.                                         temp=temp&0xf0;
  114.                                          beep=0;
  115.                                 }
  116.                                 // beep=1;//按鍵按下發出響聲,松開響聲停止
  117.                         }
  118.                 }
  119.                 P3=0xf7;//第四行
  120.                 temp=P3;
  121.                 temp=temp&0xf0;        
  122.                 while(temp!=0xf0)
  123.                 {
  124.                         delay(5);//確認確實有鍵按下去了
  125.                         temp=P3;
  126.                         temp=temp&0xf0;
  127.                         while(temp!=0xf0)
  128.                         {
  129.                                 temp=P3;
  130.                                 switch(temp)
  131.                                 {
  132.                                         case 0xe7:begin=1;
  133.                                                 break;
  134.                                         case 0xd7: clear=1;
  135.                                                 break;
  136.                                 
  137.                                 }
  138.                                 while(temp!=0xf0)
  139.                             {
  140.                                         temp=P3;
  141.                                         temp=temp&0xf0;
  142.                                          beep=0;
  143.                                 }
  144.                                 // beep=1;
  145.                         }
  146.                 }        
  147. }
  148. void main()
  149. {
  150.         TMOD=0x01;//設置定時器0為工作方式1
  151.         TH0=(65536-46080)/256;// 由于晶振為11.0592,故所記次數應為46080,計時器每隔50000微秒發起一次中斷。
  152.         TL0=(65536-46080)%256;//46080的來歷,為50000*11.0592/12
  153.         EA=1;//開總中斷
  154.         ET0=1;//開定時器0中斷
  155.         TR0=1;//啟動定時器        
  156.         
  157.         while(1)
  158.         {
  159.                 keyscan();
  160.                 if(key!=0&&key<5)
  161.                 {         
  162.                         if(!end)
  163.                          {
  164.                                 if(key)
  165.                                 {
  166.                                         end=1;
  167.                                         TR0=0;
  168.                                         pp=0;                                
  169.                                 }               
  170.                         }
  171.                         if(key!=0)        
  172.                         {
  173.                                 TR0=1;
  174.                                 if(pp==20)
  175.                                 {
  176.                                         pp=0;
  177.                                         daojishi--;                                       
  178.                                 }
  179.                                 e0=daojishi/10;
  180.                                 f0=daojishi%10;        
  181.                         }        
  182.                         if(!daojishi)               
  183.                                 key=0;
  184.                 }
  185.                 if(begin)
  186.                 switch(key)
  187.                         {
  188.                                 case 1:a0=x1;  if(x1>9) a0=9; break;//
  189.                                 case 2:b0=x2;  if(x2>9) b0=9; break;
  190.                                 case 3:c0=x3;  if(x3>9) c0=9; break;
  191.                                 case 4:d0=x4;  if(x4>9) d0=9; break;
  192.                         }  
  193.                         begin=0;         
  194.                 if(clear)
  195.                         {
  196.                         key=0;end=0;beep=1;
  197.                         daojishi=0x1e;clear=0;         
  198.                         e0=3;f0=0;P1=0xff;
  199.                         a0=x1;c0=x3;b0=x2;d0=x4;
  200.                         }
  201.                         display(a0,b0,c0,d0,e0,f0);                  
  202.         }
  203. }

  204. void time0() interrupt 1
  205. {        TH0=(65536-46080)/256;
  206.         TL0=(65536-46080)%256;
  207.         pp++;
  208. }
復制代碼


都是自己原創的,希望大家多多指教。
有意見歡迎交流。

電子技術程設計報告.docx

1.7 MB, 下載次數: 332, 下載積分: 黑幣 -5

四路搶答器報告

評分

參與人數 1黑幣 +8 收起 理由
葉非夜 + 8

查看全部評分

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

使用道具 舉報

沙發
ID:89286 發表于 2017-6-8 08:50 | 只看該作者
thanks for sharing
回復

使用道具 舉報

板凳
ID:408531 發表于 2018-10-12 12:45 | 只看該作者

thanks for sharing
回復

使用道具 舉報

地板
ID:247623 發表于 2018-10-22 16:43 | 只看該作者
有沒有計分功能
回復

使用道具 舉報

5#
ID:435004 發表于 2018-12-1 19:22 | 只看該作者
感謝分享
回復

使用道具 舉報

6#
ID:459449 發表于 2019-1-1 22:23 | 只看該作者
求仿真圖畫板
回復

使用道具 舉報

7#
ID:468252 發表于 2019-1-14 23:14 | 只看該作者

應該是Proteus吧
回復

使用道具 舉報

8#
ID:137350 發表于 2019-11-23 09:59 | 只看該作者
感謝分享
回復

使用道具 舉報

9#
ID:792387 發表于 2020-6-29 08:22 | 只看該作者
請問這個下載了源碼到單片機中就可以運行嗎
回復

使用道具 舉報

10#
ID:860900 發表于 2020-12-15 20:24 | 只看該作者
thansk sharing
回復

使用道具 舉報

11#
ID:783603 發表于 2020-12-16 08:59 | 只看該作者
thanks for sharing
回復

使用道具 舉報

12#
ID:992517 發表于 2021-12-15 04:51 | 只看該作者

thanks for sharing
回復

使用道具 舉報

13#
ID:1102312 發表于 2023-12-15 18:07 | 只看該作者
求問板載STC89C52單片機能實現代碼功能不
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲美女网站 | 久久国产高清视频 | 国产亚洲精品精品国产亚洲综合 | 每日更新av| 日日摸日日碰夜夜爽亚洲精品蜜乳 | 国精久久 | 日韩高清中文字幕 | 天天激情综合 | 成年人视频在线免费观看 | 免费一区 | 毛片av免费在线观看 | 精品国产99 | 日韩在线观看中文字幕 | 久久精品国产久精国产 | 午夜私人影院在线观看 | 一区二区三区av | 亚洲狠狠 | 欧美成人影院 | 在线观看中文字幕视频 | 国产一区视频在线 | 日韩字幕 | 久久国产精品99久久久久久丝袜 | 中文日韩字幕 | 色综合99 | 成人性视频在线 | 日韩精品在线一区 | 亚洲精品免费看 | 成人小视频在线观看 | 国产精品国产精品国产专区不卡 | 成人黄色网址大全 | 欧美一区二区三区免费在线观看 | 毛片免费视频 | 国产精品久久久久久久久久久新郎 | 国产精品久久久久久吹潮 | 亚洲成人免费av | 免费一看一级毛片 | 国产精品2区 | 久久久精品一区二区 | 亚洲免费视频在线观看 | 亚洲一区二区久久 | 日韩有码一区 |