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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于51單片機的搶答器制作,源程序,OLED顯示

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:142559 發(fā)表于 2016-10-13 12:07 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
基于51單片機的搶答器制作,源程序,OLED顯示
下載:
搶答器程序.zip (81.57 KB, 下載次數(shù): 38)

部分源程序:
  1. //              說明:
  2. //              ----------------------------------------------------------------
  3. //              GND    電源地
  4. //              VCC  接5V或3.3v電源
  5. //              D0   P1^0(SCL)
  6. //              D1   P1^1(SDA)
  7. //              RES  接P12
  8. //              DC   接P13
  9. //              CS   接P14-----本模塊片選腳已經(jīng)幫用戶接地,無需再接               
  10. //              ----------------------------------------------------------------
  11. //******************************************************************************/
  12. #include "REG52.h"
  13. #include "oled.h"

  14. #define uchar unsigned char
  15. #define uint unsigned int

  16. sbit s5 = P0^2;           //控制選手搶答
  17. sbit s1 = P0^6;
  18. sbit s2 = P0^5;
  19. sbit s3 = P0^4;
  20. sbit s4 = P0^3;
  21. sbit ggd = P1^5;

  22. sbit s8 = P1^6;           //移位
  23. sbit s6 = P0^0;           //加一分
  24. sbit s7 = P0^1;           //減一分

  25. sbit fengmingqi = P0^7;

  26. unsigned char code table[]={
  27. 0x3f,0x06,0x3f,0x5b,
  28. 0x3f,0x4f,0x3f,0x66};
  29. void dlayms(uint);
  30. unsigned char s1num;
  31. uint a = 0,b = 0,c = 0,d = 0;

  32. uchar code table1[]={
  33. 0xfe,0xfd,0xfb,0xf7,
  34. 0xef,0xdf,0xbf,0x7f};
  35. void delayms(uint xms)
  36. {
  37.         uint i,j;
  38.         for(i=xms;i>0;i--)
  39.                 for(j=110;j>0;j--);
  40. }


  41. void keyscan1()
  42. {        

  43.         if(s1==0)                        // 1號
  44.         {
  45.                 delayms(5);
  46.                 if(s1==0)
  47.                 {        
  48.                         P2=0;
  49.                         P3=1;
  50.                         OLED_ShowString(50,2,"*");
  51.                         OLED_ShowString(70,2," ");
  52.                         OLED_ShowString(90,2," ");
  53.                         OLED_ShowString(110,2," ");
  54.                         EA=0;
  55.                         fengmingqi=0;
  56.                         delayms(10);
  57.                         fengmingqi=1;
  58.                 }
  59.         }                        
  60.            if(s2==0)                                // 2號
  61.         {
  62.                 delayms(5);
  63.                 if(s2==0)
  64.                 {        
  65.                         P2=0;
  66.                         P3=1;
  67.                         OLED_ShowString(50,2," ");
  68.                         OLED_ShowString(70,2,"*");
  69.                         OLED_ShowString(90,2," ");
  70.                         OLED_ShowString(110,2," ");
  71.                         EA=0;
  72.                         fengmingqi=0;
  73.                         delayms(10);
  74.                         fengmingqi=1;                                
  75.                 }
  76.         }           
  77.    if(s3==0)                           //3號
  78.         {
  79.                 delayms(5);
  80.                 if(s3==0)
  81.                 {
  82.                         P2=0;
  83.                         P3=1;
  84.                         OLED_ShowString(50,2," ");
  85.                         OLED_ShowString(70,2," ");
  86.                         OLED_ShowString(90,2,"*");
  87.                         OLED_ShowString(110,2," ");
  88.                         EA=0;
  89.                         fengmingqi=0;
  90.                         delayms(10);
  91.                         fengmingqi=1;        
  92.                 }
  93.         }        
  94.    if(s4==0)                                // 4號
  95.         {
  96.                 delayms(5);
  97.                 if(s4==0)
  98.                 {
  99.                         P2=0;
  100.                         P3=1;
  101.                         OLED_ShowString(50,2," ");
  102.                         OLED_ShowString(70,2," ");
  103.                         OLED_ShowString(90,2," ");
  104.                         OLED_ShowString(110,2,"*");
  105.                         EA=0;
  106.                         fengmingqi=0;
  107.                         delayms(10);
  108.                         fengmingqi=1;
  109.                 }
  110.         }        
  111. }

  112.         
  113. void keyscan2()
  114. {           
  115. if(s8==0)                                   //移位
  116.         {
  117.                 delayms(5);
  118.                 if(s8==0)
  119.                 {        
  120.                         s1num++;
  121.                         while(!s1);
  122.                         if(s1num==1)
  123.                         {
  124.                                 delayms(5);
  125.                                 OLED_ShowString(40,4,"*");
  126.                         }
  127.                 }
  128.                         if(s1num==2)
  129.                         {
  130.                                 delayms(5);
  131.                                 OLED_ShowString(40,4," ");
  132.                                 OLED_ShowString(60,4,"*");

  133.                         }
  134.                         if(s1num==3)
  135.                         {
  136.                                 delayms(5);
  137.                                 OLED_ShowString(40,4," ");
  138.                                 OLED_ShowString(60,4," ");
  139.                                 OLED_ShowString(80,4,"*");
  140.                         }
  141.                         if(s1num==4)
  142.                         {
  143.                                 delayms(5);
  144.                                 OLED_ShowString(40,4," ");
  145.                                 OLED_ShowString(60,4," ");
  146.                                 OLED_ShowString(80,4," ");
  147.                                 OLED_ShowString(100,4,"*");
  148.                         }
  149.                         if(s1num==5)
  150.                         {
  151.                                 delayms(5);
  152.                                 s1num=0;
  153.                                 OLED_ShowString(40,4," ");
  154.                                 OLED_ShowString(60,4," ");
  155.                                 OLED_ShowString(80,4," ");
  156.                                 OLED_ShowString(100,4," ");
  157.                         }
  158.                         while(!s8);               
  159.         }

  160.                 if(s1num!=0)
  161.                 {                                                                   //加分
  162.                         if(s6==0)
  163.                         {
  164.                                 delayms(5);
  165.                                 if(s6==0)
  166.                                 {
  167.                                         while(!s6);
  168.                                         if(s1num==1)
  169.                                         {
  170.                                                 a++;
  171.                                                 OLED_ShowString(10,4,"+");
  172.                                                 OLED_ShowNum(30,6,a,3,14);
  173.                                                 if(a>=98)
  174.                                                         a=98;        
  175.                                         }
  176.                                         if(s1num==2)
  177.                                         {
  178.                                                 b++;
  179.                                                 OLED_ShowString(10,4,"+");
  180.                                                 OLED_ShowNum(52,6,b,3,14);
  181.                                                 if(b>=98)
  182.                                                         b=98;
  183.                                         }
  184.                                         if(s1num==3)
  185.                                         {
  186.                                                 c++;
  187.                                                 OLED_ShowString(10,4,"+");
  188.                                                 OLED_ShowNum(74,6,c,3,14);
  189.                                                 if(c>=98)
  190.                                                         c=98;
  191.                                         }
  192.                                         if(s1num==4)
  193.                                         {
  194.                                                 d++;
  195.                                                 OLED_ShowString(10,4,"+");
  196.                                                 OLED_ShowNum(96,6,d,3,14);
  197.                                                 if(d>=98)
  198.                                                         d=98;
  199.                                         }
  200.                                 }
  201.                         }
  202.                 if(s7==0)                                                                //減分
  203.                         {
  204.                                 delayms(5);
  205.                                 if(s7==0)
  206.                                 {
  207.                                         while(!s7);
  208.                                         if(s1num==1)
  209.                                         {        
  210.                                                 if(a>0)a--;
  211.                                                 OLED_ShowString(10,4,"-");
  212.                                                 OLED_ShowNum(30,6,a,3,14);
  213.                                         }
  214.                                         if(s1num==2)
  215.                                         {
  216.                                                 if(b>0)b--;
  217.                         
  218.                                                 
  219.                                                 OLED_ShowString(10,4,"-");
  220.                                                 OLED_ShowNum(52,6,b,3,14);
  221.                                         }
  222.                                         if(s1num==3)
  223.                                         {
  224.                                                 if(c>0)c--;
  225.                                                 OLED_ShowString(10,4,"-");
  226.                                                 OLED_ShowNum(74,6,c,3,14);
  227.                                         }
  228.                                         if(s1num==4)
  229.                                         {
  230.                                                 if(d>0)d--;
  231.                                                 OLED_ShowString(10,4,"-");
  232.                                                 OLED_ShowNum(96,6,d,3,14);
  233.                                         }
  234.                                 }
  235.                         }
  236.                   }
  237.         }
  238.          

  239. void  keyscan3()                  
  240. {
  241.         if(s5==0)
  242.         {
  243.                 delayms(5);
  244.                 if(s5==0)
  245.                 {
  246.                         
  247.                         EA=1;
  248.                         OLED_ShowString(50,2," ");
  249.                         OLED_ShowString(70,2," ");
  250.                         OLED_ShowString(90,2," ");
  251.                         OLED_ShowString(110,2," ");
  252.                         if(s1==1);
  253.                         if(s2==1);
  254.                         if(s3==1);
  255.                         if(s4==1);
  256.                 }
  257.         }
  258. }


  259.         

  260.          
  261. void main(void)
  262. {        
  263.                  ggd=0;
  264.                  TMOD=0X01;
  265.                 TH0=0xf4;
  266.                 TL0=0x48;
  267.                 EA=1;
  268.                 ET0=1;
  269.                 TR0=1;
  270.                 P3=0xef;
  271.                 OLED_Init();                        //初始化OLED  
  272.                 OLED_Clear();         
  273.                
  274.                 OLED_Clear();
  275.                 OLED_ShowCHinese(32,0,0);        //選
  276.                 OLED_ShowCHinese(48,0,1);        //手
  277.                 OLED_ShowCHinese(64,0,2);        //得
  278.                 OLED_ShowCHinese(80,0,3);        //分
  279.                
  280.                 OLED_ShowCHinese(0,2,5);        //編
  281.                 OLED_ShowCHinese(16,2,6);        //號
  282.                 OLED_ShowString(40,2,"1");
  283.                 OLED_ShowString(60,2,"2");
  284.                 OLED_ShowString(80,2,"3");
  285.                 OLED_ShowString(100,2,"4");        

  286.                  
  287.                 OLED_ShowCHinese(0,6,3);        //分
  288.                 OLED_ShowCHinese(16,6,4);        //數(shù)        
  289.                 OLED_ShowString(40,6,"0");
  290.                 OLED_ShowString(60,6,"0");
  291.                 OLED_ShowString(80,6,"0");
  292.                 OLED_ShowString(100,6,"0");   
  293.         while(1)
  294.         {
  295.                
  296.                 keyscan2();
  297.                 keyscan3();
  298.                
  299.                   
  300.         }

  301. }           

  302. int i = 0;
  303. void T0_time() interrupt 1
  304. {
  305.         
  306.         i++;
  307.         TH0=0xf4;
  308.         TL0=0x48;
  309.         if(i > 7)
  310.         {i = 0;}               
  311.         P2=table[i];
  312.     P3=table1[i];
  313.         keyscan1();
  314. }
復(fù)制代碼


評分

參與人數(shù) 1黑幣 +60 收起 理由
admin + 60 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美99久久精品乱码影视 | 青青草在线视频免费观看 | 国产一区二区三区 | 天天干天天干 | 国产一区二区三区不卡av | 韩国久久 | 欧美综合久久 | 在线一级片 | 亚洲xx在线 | 精品国产18久久久久久二百 | 天天玩天天干天天操 | 久久国产精品-国产精品 | 日韩视频一区二区 | 免费av手机在线观看 | 婷婷激情综合 | 成人午夜激情 | 中文字幕在线播放第一页 | 激情一区二区三区 | 男女羞羞网站 | 亚洲综合一区二区三区 | 日韩二区 | 天天综合久久网 | www.国产精品 | 午夜免费av| 最新日韩在线 | 少妇一级淫片免费播放 | 日韩中文字幕网 | 亚洲一区二区免费视频 | 久久久久亚洲视频 | 欧美在线视频网站 | 国产99久久精品 | 免费黄色录像视频 | 能看的av网站 | 日本成人在线观看网站 | 一区二区国产精品 | 日韩中文在线观看 | 免费a在线| 国产精品高清在线 | 激情毛片 | 在线视频一区二区 | 亚州av|