欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2967|回復: 0
收起左側

利用c51單片機制作打地鼠游戲的電路程序PCB設計

[復制鏈接]
ID:771881 發(fā)表于 2021-7-31 14:18 | 顯示全部樓層 |閱讀模式
原理圖如下
123.png


pcb如下

456.png


單片機源程序如下:
  1. #include<reg51.h>

  2. typedef unsigned int u16;
  3. typedef unsigned char u8;

  4. #define GPIO_DIG P0
  5. #define GPIO_KEY P1

  6. sbit LSA=P2^5;
  7. sbit LSB=P2^6;
  8. sbit LSC=P2^7;

  9. u8 LedNumber;  //存放當前顯示LED序號
  10. u8 KeyValue;  //存放讀取到的鍵值
  11. u8 RightValue;  //存放當前計數值
  12. u8 code smg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  13.                                                          0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//存放數碼管字形碼
  14. u8 code led[]={0x0f,0x0e,0x0d,0x0c,0x0b,0x0a,0x09,0x08,
  15.                                                          0x07,0x06,0x05,0x04,0x03,0x02,0x01,0x00};//存放led字形碼

  16. void delay(u16 j)
  17. {
  18.                 while(j--);
  19. }

  20. void LedDisplay(u8 n)
  21. {
  22.                 u8 j;
  23.                 j=(16+7*n)%16;
  24.                 P2=(P2&0xf0)|led[j-1];
  25. }

  26. void Timer1Init()        
  27. {        
  28.                 TMOD|=0x10;
  29.           TH1=0Xfc;
  30.                 TL1=0x18;
  31.                 EA=1;
  32.                 TR1=1;
  33. }
  34. void Timer1() interrupt 3
  35. {
  36.                 static u16 i;
  37.                 TH1=0Xfc;
  38.                 TL1=0x18;
  39.           TR1=1;
  40.                 i++;
  41.                 if(i==1000)
  42.                 {
  43.                                 i=0;
  44.                                 LedNumber++;
  45.                                 if(LedNumber==16)
  46.                                 {
  47.                                                 LedNumber=0;
  48.                                 }
  49.                 }
  50. }

  51. void KEY_SCAN()
  52. {
  53.                 u8 a=0;
  54.                 GPIO_KEY=0X0f;
  55.                 if(GPIO_KEY!=0X0f)//檢查是否有鍵按下
  56.                 {
  57.                                 delay(1000);//延時10ms消抖
  58.                                 if(GPIO_KEY!=0X0f)//消抖后再次檢查是否有鍵按下
  59.                                 {
  60.                                                 //測試列
  61.                                                 switch(GPIO_KEY)
  62.                                                 {
  63.                                                                 case(0x07):KeyValue=0;break;
  64.                                                                 case(0x0b):KeyValue=1;break;
  65.                                                                 case(0x0d):KeyValue=2;break;
  66.                                                           case(0x0e):KeyValue=3;break;
  67.                                                 }
  68.                                                 //測試行
  69.                                                 GPIO_KEY=0xf0
  70.                                                 switch(GPIO_KEY)
  71.                                                 {
  72.                                                                 case(0x70):KeyValue=KeyValue;break;
  73.                                                                 case(0xb0):KeyValue=KeyValue+4;break;
  74.                                                                 case(0xd0):KeyValue=KeyValue+8;break;
  75.                                                           case(0xe0):KeyValue=KeyValue+12;break;
  76.                                                 }        
  77.                                                 if((Lednummer-1)==KeyValue)
  78.                                                 {
  79.                                                                 RightValue++;
  80.                                                 }
  81.                                                 while((a<50)&&(GPIO_KEY!=0Xf0))
  82.                                                 {
  83.                                                                 delay(1000);
  84.                                                                 a++;
  85.                                                 }
  86.                                 }
  87.                 }               
  88. }

  89. void DpyDisplay()
  90. {
  91.                 u8 j;
  92.                 u8 code RightValue[];
  93.                 RightValue[2]=RightValue/100;
  94.                 RightValue[1]=(RightValue%100)/10;
  95.                 RightValue[0]=RightValue%10;
  96.                 for(j=2;j>=0;j--)
  97.                 {
  98.                                 switch(j)
  99.                                 {
  100.                                                 case(2):
  101.                                                 LSA=1;LSB=0;LSC=0;break;
  102.                                                 case(1):
  103.                                                 LSA=0;LSB=1;LSC=0;break;
  104.                                                 case(0):
  105.                                                 LSA=0;LSB=0;LSC=1;break;
  106.                                 }
  107.                 P0=smg[RightValue[j]];
  108.                 delay(100);
  109.                 P0=0x00;
  110.                 }        
  111. }

  112. void Judge()
  113. {
  114.                
  115. }

  116. void (main)
  117. {
  118.                 while()
  119.                 {
  120.                                 GameInit();
  121.                                 Timer1Init();
  122.                                 while(1)
  123.                                 {               
  124.                                         if(LedNumber>=1)
  125.                                         {
  126.                                                         LedDisplay(LedNumber);
  127.                                         }
  128.                                 }
  129.                 }
  130. }
復制代碼
51hei.png
初學,如有錯誤,請大家多多指導,資料僅供參考:
pcb原理圖程序.7z (1.63 MB, 下載次數: 43)

回復

使用道具 舉報

無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表